http存在三个弊端:无法保证消息的保密性,无法保证消息的完整性和准确性、无法保证消息来源的可靠性。为了解决上述问题诞生了https。
加密方法分为三种:对称加密、非对称加密、混合加密。HTTPS采用的是对称加密和非对称加密的混合加密方法。
对称加密
是一种需要对加密和解密使用相同密钥的加密算法,对称就是采用相同的密钥进行加密和解密。
密钥就是控制加密及解密过程的指令。
优缺点
优点:算法公开、计算量小、加密速度快、加密效率高。
缺点:密钥管理的安全性很低,由于加密和解密使用同一个密钥,在密钥发送的过程中可能会被第三方截取,这会导致第三方也可以破解密文。
非对称加密
该算法需要两个密钥:公开密钥和私有密钥。这两种密钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。
传输双方均有自己的一对密钥(也就是双方每方均有:公、私密钥一把,双方加起来共4把)
优缺点
优点:安全性高(比对称密钥安全性高很多),保密性较好,消除了用户交换密钥的需要。
缺点:算法复杂,加密解密的速度没有对称加密的快。
HTTPS的加密方式
结合对称加密+非对称加密这两种方式,用非对称加密的方式来传输对称加密过程中的密钥,采取对称加密的方式来传输数据。
服务器用明文的方式给客户端发送自己的公钥,客户端收到公钥之后,会生成一把密钥(对称加密用的),然后用服务器的公钥对这把密钥进行加密,之后再把密钥传输给服务器,服务器收到之后进行解密,最后服务器就可以安全得到这把密钥了,而客户端也有同样一把密钥,他们就可以进行对称加密了。
此过程并非绝对安全,可能会出现中间人截取服务器公钥并把自己的公钥传递给客户端,客户端在利用此公钥生成密钥后再次被中间人截取并解密,最后将自己的密钥传递给服务器。
证书
非对称加密之所以不安全是因为客户端不知道公钥是不是服务器的,此时就产生了数字证书来标识公钥。
网站在使用HTTPS前会向CA机构申领一份数字证书,在证书中含有持有者信息、公钥信息等,由此可以证明“该公钥对应该网站"。
数字签名
把证书原本的内容生成一份签名,对比证书内容与签名是否一致就可以判断是否被篡改,该签名就是数字签名。
浏览器验证过程
在上述加密和验证方式的双重保险下基本就能保证连接和数据交互是安全的。