文章目录
HTTP为什么要加密:
HTTP的缺点:
1.通信使用明文传输(不加密),内容可能会被窃听。
2.不验证通信方的身份,因此有可能遭遇伪装。
3.无法证明报文的完整性,所以有可能已遭篡改。
对称加密(共享密钥加密):
加密和解密同用一个密钥的方式称为共享密钥加密,也称对称加密。
共享密钥加密存在的问题:
以对称加密的方式加密时,必须将密钥发给对方,但如何安全地将密钥发送给对方又成为了原问题。
因此对称加密不可行。
非对称加密(公开密钥加密):
公开密钥加密方式解决了对称加密的困难。
公开密钥加密使用一对非对称的密钥。
一把叫做公开密钥,一把叫做私有密钥。
公开密钥可以随意发布,私有密钥则不能让其他人知道。
使用公开密钥加密方式,发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密信息后,在使用自己的私有密钥进行解密。
这种方式不需要发送用来解密的私有密钥。
同时,只根据密文和公开密钥,想要破解出原文是非常困难的。因此数据正确性可以得到保障。
公开密钥加密存在的问题:
公开密钥加密也是存在问题的。
如何证明收到的公开密钥就是服务器发布的公开密钥呢?
也许,在公开密钥传输途中,真正的公开密钥已经被攻击者掉包了。
似乎又回到了原问题。
数字证书(公钥证书):
为了解决公开密钥加密存在的问题,可以使用由数字证书认证机构和其相关机关办法的公开密钥证书。
数字证书认证机构是客户端和服务器都可以信赖的第三方机构。
数字证书认证机构的业务流程:
1.服务器的运营人员向数字证书认证机构提出公开密钥的申请。
2.数字证书认证机构的工作人员在确认申请者身份后,会对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公钥证书后绑定在一起。
3.服务器会将这份由数字证书认证机构颁发的公钥证书发给客户端,以用于公开密钥加密通信。
4.客户端使用数字证书认证机构的公开密钥,对收到的证书上的数字签名进行验证,如果验证通过,那么说明以下两点:一是,认证服务器公开密钥的机构是真实有效的数字证书认证机构;二是,服务器的公开密钥是真实可信的。
数字证书存在的问题:
认证机关的公开密钥必须是正确的,这似乎又回到了原问题。
多数浏览器开发商发布版本时,会事先在内部植入常用认证机关的公开密钥,这样就不需要通过传输获取了。
混合加密方式:
公开密钥加密的处理速度比共享密钥加密慢。
HTTPS采用的是共享密钥加密和公开密钥加密并用的混合加密机制。
回顾共享密钥加密的问题:无法保证共享密钥的正确传输。
那么只需要先利用公开密钥加密方式交换密钥,之后的通信交换报文使用共享密钥加密方式即可。