文章目录
- http的缺点
- 对称加密+非对称加密
- 数字签名+数字证书验证身份
- 数字摘要+数字签名验证内容的完整性
- 总结
http的缺点
http是超文本传输协议,使用http协议进行通信有如下缺点:
- http没有提供任何数据加密机制,数据通信使用明文通信,相当于数据在网络中裸奔,内容可能会被中间人监听。
- 在和对方通信的时候,没有验证对方的身份,可能遭遇对方伪装通信方的情况。
- http在接收数据报文的时候,没有进行完整性的验证,接收到的内容可能是被中间人篡改过的。
https针对这三个问题增加了对应的安全机制
对称加密+非对称加密
首先是针对http明文通信,https混合加密的方法对通信的数据进行加密。
-
所谓混合加密就是既使用了对称加密的方式也使用了非对称加密的方式
对称加密只有一种秘钥,双方进行通信前要协商好这个秘钥,一方用该秘钥加密数据,另一方用相同的秘钥解密,它的优点是加密解密速度快,缺点是一方秘钥泄漏,加密信息就不安全了。 -
非对称加密就是有两种秘钥,一个是公钥,一个是私钥。数据发送前,接收方先把公钥给发送方,然后发送方用公钥加密数据,发给接收方,接收方接收到后用私钥解密。优点是公钥可以公开,安全性比对称加密好,缺点是加密解密速度慢,效率低。
因此https采用了混合加密的方式:通信双方采用非对称加密的方式来交换之后用来加密解密的对称秘钥,然后之后的数据通信就使用对称秘钥来进行加密和解密
数字签名+数字证书验证身份
https使用数字摘要+数字签名+数字证书的机制来验证身份。这个数字证书只有网络中一些权威的CA机构才能颁发。
服务端要上线的时候,首先要去申请一个证书,需要提供服务端的相关信息,比如企业的基本信息,域名,公钥等。CA机构拿到服务端的信息时,首先根据企业的基本信息,通过单向的哈希函数生成一段固定长度的密文,生成的密文叫做数字摘要,也叫数字指纹。然后将数据摘要通过CA机构自己独有的私钥进行加密,生成数字签名(这个数字签名也是使用了非对称加密的技术,用私钥加密,用公钥解密,全世界只有CA机构才能加密生成这样的数字签名),将数字签名,明文的企业信息(包含公钥)放在一起,作为数字证书颁发给企业的server端。
server端要和client通信的时候,只需要把证书交给client即可,里面存放有明文的公钥,client拿到证书后,要先验证对方的身份——使用CA机构的公钥解密,得到数据摘要1,然后将明文的企业信息(包含公钥),通过和CA机构生成数字摘要一样的哈希算法生成数字摘要2,对比两个数字摘要,只要相等,就可以确定两件事情:当前的server端是经过CA机构认证的正规的server端,同时公钥也是server端发过来的,没有被篡改过。之后就client就可以放心用公钥来加密对称秘钥,进行后续的数据通信了。
数字摘要+数字签名验证内容的完整性
https还使用了数字摘要的技术来验证接收到的内容是否完整,即是否被中间人篡改过。
https解决这个问题就是使用数字摘要和数字签名的技术,就和前面提到的一样,发送方将要发送的内容通过单向哈希算法生成数字摘要,然后使用自己的私钥加密生成数字签名,发送到对方手里后(通过对称秘钥加密传输的,不用说),接收方用发送方的公钥解密生成数字摘要1,然后对明文数据内容用相同的哈希算法生成数字摘要2,对比两个数字摘要,如果相等就是没有被修改,如果不等就是被修改了。
总结
http是直接与网络层的tcp协议通信的。而https在http的基础上加入了SSL协议(安全套接字层协议)通信时首先与SSL进行通信,再由SSL来与TCP进行通信,正是因为由SSL的存在,才使得https具备了加密,身份认证,完整性检测等功能。