一、由于HTTP
有以下安全性问题:
使用明文进行通信,内容可能会被窃听。
不验证通信方的身份,通信方的身份有可能遭遇伪装。
无法证明报文的完整性,报文有可能遭篡改。
HTTPS协议
对HTTP协议进行了升级,HTTPS协议首先让 HTTP
先和 SSL(Secure Sockets Layer)
通信,再由 SSL
和 TCP
通信,也就是说 HTTPS
使用了隧道进行通信。通过使用 SSL
,HTTPS
具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。
二、HTTPS协议的工作原理
1.用户通过浏览器请求https
网站,服务器收到请求,选择浏览器支持的加密和hash
算法,同时返回数字证书给浏览器,包含颁发机构、网址、公钥、证书有效期等信息。
2.浏览器对证书的内容进行校验,如果有问题,则会有一个提示警告。否则,就生成随机秘钥X
,同时使用证书中的公钥进行加密,并且发送给服务器。
3.服务器收到之后,使用私钥解密,得到随机秘钥X
,然后使用随机秘钥X
对网页内容进行加密,返回给浏览器。
4.浏览器则使用随机秘钥X
和之前约定的加密算法进行解密,得到最终的网页内容。
三、加密方式
上述HTTPS协议通过公钥和私钥的方式对通信内容的加密属于非对称加密。
非对称密钥加密,又称公开密钥加密(Public-Key Encryption
),加密和解密使用不同的密钥。公开密钥所有人都可以获得,通信发送方获得接收方的公开密钥之后,就可以使用公开密钥进行加密,接收方收到通信内容后使用私有密钥解密。非对称密钥除了用来加密,还可以用来进行签名。因为私有密钥无法被其他人获取,因此通信发送方使用其私有密钥进行签名,通信接收方使用发送方的公开密钥对签名进行解密,就能判断这个签名是否正确。
优点:可以更安全地将公开密钥传输给通信发送方。
缺点:运算速度慢。
对称密钥加密
对称密钥加密(Symmetric-Key Encryption
),加密和解密使用同一密钥。密钥一旦被他人获取将无法保证数据不被窃取。
优点:运算速度快。
缺点:无法安全地将密钥传输给通信方。