网络数据安全

569 阅读10分钟

信息安全涉及信息的保密性、可用性、完整性和可控性。保密性就是保证信息不泄漏给未经授权的人;可用性就是保证信息以及信息系统确实为授权使用者所用;完整性就是抵抗对手的主动攻击,防止信息被篡改;可控性就是对信息以及信息系统实施安全监控。综合起来说,就是要保障电子信息的有效性。

“数据”是组成信息的基本元素之一,数据安全是信息安全的“核安全”。通过保证数据的安全,从而可实现保证信息安全。

本文主要讲解对数据进行主动保护的几种常用的密码算法。

Base64

是基于64个可打印字符(A~Z , a~z , 0~9,+,/、再加上作为垫字的=,实际有65个字符)来表示二进制数据的表示方法。

应用

计算机中的字节共有256个组合,对应就是 ASCII 码,而 ASCII 码的 128~255 之间的值是不可见字符。而在网络上传输数据时,往往要经过多个路由设备,由于不同的设备对字符的处理方式有一些不同,那些不可见字符就有可能被处理错误。所以就先把数据先做一个 Base64 编码,变成可见字符,这样出错的可能性就大降低了。

编码原理

  1. 将二进制3个字节归成一组,共24位,再拆分成4组,每组6位;
  2. 统一在6位二进制前补两个0凑足8位;
  3. 将补0后的二进制转为十进制;
  4. 从Base64编码表获取十进制对应的Base64编码;

实例:编码Man的结果为TWFu 截屏2021-09-08 上午1.41.23.png Base64索引表 截屏2021-09-08 上午1.42.21.png

处理过程

  1. 转换时,将3字节的数据,先后放入一个24位的缓冲区中,先来的字节占高位。
  2. 若数据不足三个字节,则剩下的位用0补足。每次取出6个位,按照其值选择查表选择对应的字符作为编码后的输出。
  3. 不断进行,直到全部输入数据转换完成。
  4. 若原数据长度不是3的倍数时,剩下1个输入数据,则在编码结果后加个=;剩下2个输入数据,则在编码结果后加2个=

截屏2021-09-08 上午1.42.49.png

特点

  • 可以将任意数据进行Base64编码.
  • 所有的数据都能被编码为并只用65个字符就能表示的文本文件。
  • 对文件或字符串进行Base64编码后将比原始大小增加33%。
  • 能够逆运算
  • 不够安全,但却被很多加密算法作为编码方式

信息安全原则及面临的威胁

信息安全原则

  1. 在网络上"不允许"传输用户隐私数据的"明文"
  2. 在本地"不允许"保存用户隐私数据的"明文" 信息安全面临的威胁
  • 机密性(被窃听,秘密泄露)
  • 完整性(篡改,信息被修改)
  • 认证(伪装,伪装成通信双方)
  • 不可否认性(否认,事后不承认是自己发送的)

0.png

常用加密方式

单向散列函数

单向散列函数也称为消息摘要函数、哈希函数或者杂凑函数。

单向散列函数输出的散列值又称为消息摘要或者指纹

特点

  1. 对任意长度数据散列得到定长的散列值
  2. 消息不同,则散列值一定不同
  3. 消息相同,则散列值一定相同
  4. 散列计算速度快,非常高效
  5. 具备单向性,无法逆推计算

散列函数的应用

  1. 搜索:多个关键字,先对每个关键字进行散列,然后多个关键字进行或运算,如果值一致则搜索结果一致。
  2. 版权:对文件进行散列判断该文件是否是正版或原版的。
  3. 文件完整性验证:对整个文件进行散列,比较散列值判断文件是否完整或被篡改。 经典算法
  • MD5:产生128bit的散列值。
  • SHA-1:产生160bit的散列值。
  • SHA-2:SHA256、SHA384、SHA512,分别产生256bit、384bit、512bit的散列值。

对称加密

特点

  1. 加密/解密使用相同的密钥

  2. 是可逆的 2.png 经典算法

  3. DES:数据加密标准,是一种将64bit的明文加密生成64bit的密文,但每隔7bit会设置一个用于错误检查的bit,因此密钥长度实质上是56bit。目前已经可以在短时间内被破解,所以不建议使用。

  4. 3DES:使用3个密钥,对消息进行:密钥1加密+密钥2解密+密钥3加密, 若3个密钥相同,则结果与普通的 DES 是等价的。目前还被一些银行等机构使用,但处理速度不高,安全性逐渐暴露出问题。

  5. AES:取代DES 成为新标准的一种对称加密算法,的密钥长度有128、129、256bit三种,目前已经逐步取代DES、3DES ,成为首选的对称加密算法。一般来说,我们也不应该去使用任何自制的密码算法,而是应该使用AES,它经过了全世界密码学家所进行的高品质验证工作。 密码算法可以分为分组密码和流密码两种

  6. 分组密码:每次只能处理特定长度的一组数据的一类密码算法。一个分组的bit数量就称之为分组长度。DES和3DES的分组长度都是64bit。即每次只能加密64bit的明文,并生成64bit的密文。AES的分组长度有128bit、192bit和256bit可以选择。

  7. 流密码:对数据流进行连续处理的一类算法。流密码中一般以1bit、8bit或者是32bit等作为单位俩进行加密和解密。 ECB分组模式

ECB模式的全称为Electronic CodeBook模式。又成为电子密码本模式。特点:

  1. 使用ECB模式加密的时候,相同的明文分组会被转换为相同的密文分组。
  2. 类似于一个巨大的明文分组→密文分组的对照表。 3.png CBC分组模式

CBC模式全称为Cipher Block Chainning模式(密文分组链接模式|电子密码链条),特点:

  • 在CBC模式中,首先将明文分组与前一个密文分组进行XOR运算,然后再进行加密。 4.png

非对称加密

非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey),公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密

特点

  1. 使用公钥加密,使用私钥解密(解决密钥配送问题)
  2. 公钥是公开的,私钥保密
  3. 加密处理安全,但是性能极差 5.png 经典算法—RSA

RSA 原理

  1. 求N,准备两个质数p和q,N = p x q
  2. 求L,L是p-1和q-1的最小公倍数。L = lcm(p-1,q-1)
  3. 求E,E和L的最大公约数为1(E和L互质)
  4. 求D,E x D mode L = 1 RSA加密小实践
  5. p = 17,q = 19 =>N = 323
  6. lcm(p-1,q-1)=>lcm(16,18)=>L= 144
  7. gcd(E,L)=1 =>E=5
  8. E乘以几可以mode L =1? D=29可以满足
  9. 得到公钥为:E=5,N=323
  10. 得到私钥为:D=29,N=323
  11. 加密 明文的E次方 mod N = 123的5次方 mod 323 = 225(密文)
  12. 解密 密文的D次方 mod N = 225的29次方 mod 323 = 123(明文)

混合密码系统

  • 对称加密的缺点:不能很好地解决密钥配送问题(密钥会被窃听)
  • 非对称加密的缺点:加密解密速度比较慢
  • 混合密码系统:是将对称加密非对称加密的优势相结合的方法。 解决了非对称加密速度慢的问题;并通过非对称加密解决了对称加密的密钥配送问题;网络上的密码通信所用的 SSL/TLS 都运用了混合密码系统。

会话密钥(session key) ,为本次通信随机生成的临时密钥,作为对称加密的密钥,用于加密消息,提高速度。

加密步骤(发送消息)

  1. 首先,消息发送者要拥有消息接收者的公钥
  2. 随机生成一个会话密钥,用会话密钥加密需要发送的消息(对称加密)
  3. 用消息接收者的公钥,加密会话密钥(非对称加密)
  4. 将2、3步生成的加密结果,一并发给消息接收者 发送出去的内容包括:
  5. 用会话密钥加密的消息(加密方法:对称加密)
  6. 用公钥加密的会话密钥(加密方法:非对称加密) 解密步骤(收到消息)
  7. 消息接收者用自己的私钥解密出会话密钥
  8. 再用第1步解密出来的会话密钥,解密消息

数字签名

想象以下场景:A发给B的内容有可能是被篡改的,或者有人伪装成A发消息给B,或者就是A发的,但A否认 。如何确定这段消息的真实性?如何识别篡改、伪装、否认?——数字签名

数字签名原理

消息发送者

  1. 对"消息"进行散列得到 "消息摘要"
  2. 使用自己的私钥对"消息摘要" 加密(数字签名)
  3. 把数字签名附着在"报文"的末尾一起发送给接收方 消息接收者
  4. 对"消息" 进行散列得到 "报文摘要"
  5. 使用公钥对"数字签名" 解密
  6. 对结果进行匹配 6.png 如果有人篡改了消息内容或签名内容,签名验证失败,证明内容被篡改了 。数字签名的作用不是为了保证机密性。

数字签名的作用

  1. 确认消息的完整性
  2. 识别消息是否被篡改
  3. 防止消息发送人否认

数字证书

如果遭遇了中间人攻击,那么公钥将可能是伪造的,所以需要使用数字证书来验证公钥的合法性。

说到证书,首先联想到的是驾驶证、毕业证、英语四六级证等等,都是由权威机构认证的。

密码学中的证书,全称叫公钥证书(Public-key Certificate,PKC),跟驾驶证类似,里面有姓名、邮箱等个人信息,以及此人的公钥,并由认证机构(Certificate Authority,CA)施加数字签名。

CA 就是能够认定“公钥确实属于此人”并能够生成数字签名的个人或者组织,有国际性组织、政府设立的组织,有通过提供认证服务来盈利的企业,个人也可以成立认证机构。

数字证书的内容包含:公钥、认证机构的数字签名。