HTTP的缺点
HTTP主要又如下几点不足:
- 通信使用明文(不加密),内容可能会被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以有可能已遭篡改
HTTPS
HTTP+加密+认证+完整性保护=HTTPS
HTTPS并非是应用层的一种新协议,只是HTTP通信接口部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)协议代替而已。HTTPS其实就是身披SSL协议这层外壳的HTTP。
相互交换密钥的公开密钥加密技术
SSL采用一种叫做公开密钥加密的加密处理方式。
加密和解密都会用到密钥。没有密钥就无法对密码解密,反过来说,任何人只要持有密钥就能解密了。
- 共享密钥加密
加密和解密同用一个密钥的方式称为共享密钥加密,也被叫做对称密钥加密。
以共享密钥方式加密时必须将密钥也发给对方,但是密钥也面临着通信安全问题。 - 使用两把密钥的公开密钥加密
公开密钥加密方式使用一对非对称的密钥。一把叫做私有密钥,一把叫做公开密钥。私有密钥不能让其他任何人知道,而公开密钥则可以随意发布,任何人都可以获得。
使用公开密钥加密方式,发送密文的一方使用对方的公开密钥进行加密,对方收到被加密的信息后,再使用自己的私有密钥进行解密。利用这种方式,不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听而盗走。 - HTTPS采用混合加密机制
公开密钥加密更加安全,共享密钥加密方式处理速度更快
结合两种加密方式,HTTPS采用两者并用的混合加密机制。
在交换密钥环节保证安全性使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式。
证明公开密钥正确性的证书
无法证明公开密钥本事是否是货真价实的公开密钥也不行,因为公开密钥在传输途中,可能已经被攻击者给替换掉了。
为了解决上述问题,可以使用由数字证书认证机构(CA,Centificate Authority)和其相关机关颁发的公开密钥证书。
数字证书认证机构的业务流程:
1)服务器的运营人员向数字证书认证机构提出公开密钥的申请
2)数字证书认证机构在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名
3) 分配已签名的公开密钥并将其放入公钥证书后绑定在一起
4)服务器会将这份由数字证书认证机构颁发的公钥证书发送给客户端,以进行公开密钥方式通信。
5)接到证书的客户端可使用数字证书认证机构的公开密钥,对那张证书上的数字签名进行验证
为什么不一直使用HTTPS
HTTPS存在一些问题,当使用SSL时,它的处理速度会变慢。
SSL的慢分两种。一种是指通信慢。另一种是指由于大量消耗cpu及内存等资源,导致处理速度慢。
与纯文本通信相比,加密通信会消耗更多的CPU及内存资源。如果每次通信都加密,会消耗相当多的资源。
所以,如果是非敏感信息则使用HTTP通信,只有在包含个人信息等敏感数据时,才利用HTTPS加密通信。