http协议的安全问题

202 阅读4分钟

Http协议采用明文传输,所以有很大的安全隐患 常见的提高安全性的方法是:对通信内容进行加密后再进行传输。

常见的加密方式有:

不可逆:

单向散列函数:MD5,SHA

可逆:

对称加密:DES,3DES,AES等

非对称加密:RSA

其他:

混合密码系统,

数字签名,

证书

如何防止被窃听?

屏幕截图 2022-03-06 132830.png

单向散列函数,如何加密解密数据?

常见的几种单向散列函数:

MD5,MD4

产生128bit的散列值

SHA-1

产生160bit的散列值

SHA-2

SHA-265,SHA-384,SHA-512,散列值长度分别是256bit,384bit,512bit

对称加密

屏幕截图1.png

非对称加密

屏幕截图2.png 在非对称加密中会生成公钥和私钥,公钥用来加密,私钥用来解密,正如它的名字一样,公钥是公开的,而私钥只有接收者自己知道。

如何解决秘钥配送问题

在使用对称加密的过程中,一定会遇见秘钥配送问题

屏幕截图3.png 此时,使用非对称加密,由消息的接收者将公钥发送给消息的发送者,发送者使用公钥加密数据,发送给接收者,接收者再使用私钥来解密消息,此时就可以保证数据的安全性。

但是,非对称加密的加密解密过程是比较缓慢的,而往往用户传递的数据是比较庞大的,这样的话就会大大的降低性能。而对称加密的加密解密速度比非对称加密的速度快,此时便产生了一种混合密码系统。

混合密码系统

对称加密的缺点

不能很好地解决密钥配送问题(密钥会被窃听)

非对称加密的缺点

加密解密速度比较慢

混合密码系统:

是将对称加密和非对称加密的优势相结合的方法 解决了非对称加密速度慢的问题 并通过非对称加密解决了对称加密的密钥配送问题 网络上的密码通信所用的 SSL/TLS都运用了混合密码系统

混合密码加密解密流程:

发送过程(加密过程)

① b先生成一对公钥、私钥

② b把公钥共享给a

③ a随机生成一个会话密钥(临时密钥)

④ a用会话密钥加密需要发送的消息(使用的是对称加密)

⑤ 用 b的公钥加密会话密钥(使用的是非对称加密)

⑥ a把第④、⑤步的加密结果,一并发送给b

接收过程(解密过程)

① 利用自己的私钥解密会话密钥(使用的是非对称加密算法进行解密)

② 利用会话密钥解密发送过来的消息(使用的是对称加密算法进行解密)

然而新的问题来了,如何确定信息是否被篡改

解决方案:数字签名

数字签名的过程:

  1. a给b发消息,b先生成一对公钥,私钥
  2. 首先b将公钥发给a
  3. a随机生成一个会话秘钥(临时秘钥)
  4. a使用临时秘钥加密需要发送的消息(对称加密)
  5. a再使用公钥将临时秘钥加密(非对称加密)
  6. a生成一对公钥,私钥
  7. a重新生成一个临时秘钥,将数据加密后再用私钥加密(非对称加密生成签名)
  8. a将3,4,6步加上自己的公钥一起发送给b

解密过程

  1. b使用自己的私钥解密信息
  2. b再使用a的公钥解密签名生成信息
  3. b将签名生成的信息和自己私钥解密的信息对比,若相同则数据没有被篡改。 数字签名仅仅只能识别信息是否被篡改,而不能保证机密性

公钥的合法性

如果遭到了中间人的攻击,那么公钥可能是伪造的, 如何验证公钥的合法性。

证书

密码学中的证书,全称叫公钥证书(Public-key Certificate,PKC),跟驾驶证类似

里面有姓名、邮箱等个人信息,以及此人的公钥

并由认证机构(Certificate Authority,CA)施加数字签名

CA就是能够认定“公钥确实属于此人”并能够生成数字签名的个人或者组织

有国际性组织、政府设立的组织

有通过提供认证服务来盈利的企业

个人也可以成立认证机构