Http协议采用明文传输,所以有很大的安全隐患 常见的提高安全性的方法是:对通信内容进行加密后再进行传输。
常见的加密方式有:
不可逆:
单向散列函数:MD5,SHA
可逆:
对称加密:DES,3DES,AES等
非对称加密:RSA
其他:
混合密码系统,
数字签名,
证书
如何防止被窃听?
单向散列函数,如何加密解密数据?
常见的几种单向散列函数:
MD5,MD4
产生128bit的散列值
SHA-1
产生160bit的散列值
SHA-2
SHA-265,SHA-384,SHA-512,散列值长度分别是256bit,384bit,512bit
对称加密
非对称加密
在非对称加密中会生成公钥和私钥,公钥用来加密,私钥用来解密,正如它的名字一样,公钥是公开的,而私钥只有接收者自己知道。
如何解决秘钥配送问题
在使用对称加密的过程中,一定会遇见秘钥配送问题
此时,使用非对称加密,由消息的接收者将公钥发送给消息的发送者,发送者使用公钥加密数据,发送给接收者,接收者再使用私钥来解密消息,此时就可以保证数据的安全性。
但是,非对称加密的加密解密过程是比较缓慢的,而往往用户传递的数据是比较庞大的,这样的话就会大大的降低性能。而对称加密的加密解密速度比非对称加密的速度快,此时便产生了一种混合密码系统。
混合密码系统
对称加密的缺点
不能很好地解决密钥配送问题(密钥会被窃听)
非对称加密的缺点
加密解密速度比较慢
混合密码系统:
是将对称加密和非对称加密的优势相结合的方法 解决了非对称加密速度慢的问题 并通过非对称加密解决了对称加密的密钥配送问题 网络上的密码通信所用的 SSL/TLS都运用了混合密码系统
混合密码加密解密流程:
发送过程(加密过程)
① b先生成一对公钥、私钥
② b把公钥共享给a
③ a随机生成一个会话密钥(临时密钥)
④ a用会话密钥加密需要发送的消息(使用的是对称加密)
⑤ 用 b的公钥加密会话密钥(使用的是非对称加密)
⑥ a把第④、⑤步的加密结果,一并发送给b
接收过程(解密过程)
① 利用自己的私钥解密会话密钥(使用的是非对称加密算法进行解密)
② 利用会话密钥解密发送过来的消息(使用的是对称加密算法进行解密)
然而新的问题来了,如何确定信息是否被篡改
解决方案:数字签名
数字签名的过程:
- a给b发消息,b先生成一对公钥,私钥
- 首先b将公钥发给a
- a随机生成一个会话秘钥(临时秘钥)
- a使用临时秘钥加密需要发送的消息(对称加密)
- a再使用公钥将临时秘钥加密(非对称加密)
- a生成一对公钥,私钥
- a重新生成一个临时秘钥,将数据加密后再用私钥加密(非对称加密生成签名)
- a将3,4,6步加上自己的公钥一起发送给b
解密过程
- b使用自己的私钥解密信息
- b再使用a的公钥解密签名生成信息
- b将签名生成的信息和自己私钥解密的信息对比,若相同则数据没有被篡改。 数字签名仅仅只能识别信息是否被篡改,而不能保证机密性
公钥的合法性
如果遭到了中间人的攻击,那么公钥可能是伪造的, 如何验证公钥的合法性。
证书
密码学中的证书,全称叫公钥证书(Public-key Certificate,PKC),跟驾驶证类似
里面有姓名、邮箱等个人信息,以及此人的公钥
并由认证机构(Certificate Authority,CA)施加数字签名
CA就是能够认定“公钥确实属于此人”并能够生成数字签名的个人或者组织
有国际性组织、政府设立的组织
有通过提供认证服务来盈利的企业
个人也可以成立认证机构