HTTP + 加密 + 认证 + 完整性保护 = HTTPS
协议栈:
首先看下HTTP和HTTPS的协议栈:
从协议上看HTTPS并不是一种全新的应用层协议,本质就是HTTP + SSL(Transport LayerSecurity),过去HTTP直接要和TCP进行通信,现在HTTP要先经过SSL,再由SSL和TCP进行通信。使用了SSL协议后,HTTP就具有了HTTPS的加密,证书,完整性保护。
这里要说明一点,SSL协议是完全独立于HTTP的,其他应用层的协议例如SMTP等都可以和SSL协议搭配,目前SSL协议是应用最广泛的网络安全技术。
加密技术
- 对称加密
加密和解密都使用同一个密钥的方式称为对称加密。
安全性问题:以对称加密的方式加密时必须把密钥给到对方。但是如何安全的转交呢, 转交的过程如果被监听密钥可能落到了攻击者手里,就失去了加密的意义。 - 非对称加密
和对称加密只使用一个密钥相比,非对称加密使用两种密钥,一种是私有密钥,这个密钥不发放给任何人,只能自己解密的时候使用。另外一种是公开密钥,可以发放给任何人。
具体通信过程如下:
(1)发送密文的一方使用对方的提供的公开密钥进行加密
(2)收到密文的一方使用自己的私有密钥对密文进行解密
通过这样的方式就不会担心密文被攻击者盗走了,解密用到的私有密钥是不会进行发送的。同时公开密钥 + 密文 想要解密是非常困难的。
相比对称加密,非对称加密也是存在一些问题的,例如:
(1)处理速度慢 - 混合加密
首先非对称加密通过增加一种密钥解决了对称加密安全性问题,保证了密文不会被攻击者解密成功,换个角度思考,对称加密如果能保证公开密钥不会被截获是可以安全的进行数据通信,混合加密技术本质就是 使用非对称加密保证公开密钥安全进行交换 + 对称加密进行数据通信。
具体通信过程如下:- 使用非对称加密方式安全地交换后续通信过程中使用对称加密所使用的公开密钥
- 确保交换的密钥是安全的后,使用对称加密的方式进行通信
加密技术的安全性缺陷
加密技术最大的安全性缺陷:无法证明公开密钥本身就是货真价实的公开密钥,如果开始通信阶段,公开密钥被攻击者替换,密文就会泄漏。未来能够解决这个问题,可以使用数字证书认证机构和其相关机关颁布的公开密钥证书。
认证证书
数字证书认证机构是作为第三方存在的。首先看下证书的业务流程
(1)服务器运营人员向数字认证机构提出公开密钥的申请
(2)数字证书认证机构在判明提出申请者的身份后,会对已申请的公开密钥进行数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公钥证书后绑定在一起。
(3)服务器讲认证机构颁发的公钥证书发送给客户端,以进行非对称加密的方式通信。
(4)客户端接受到证书后,使用数字认证机构的公开密钥进行公钥证书的数字签名验证,确认服务商公开密钥的真实性
第四步这里认证机关的公开密钥必须安全地转交给客户端。使用通信的方式是很难做到的,因此很多浏览器开发商发布版本的时候,事先在浏览器内置认证机构的公开密钥。