本文是对原理的阐述,不涉及具体的加密流程
缘起
http由于是明文传输,在传输敏感信息的时候是很不安全的,所以要对传输的信息进行加密。
对称加密
容易想到的加密方式是对称加密,即采用对称密钥进行加密,但是在服务端往客户端发送密钥的时候,由于也是明文的,这个密钥也会被黑客获取到,所以若是采用对称加密的方式就需要对密钥传输过程进行加密。
非对称加密
非对称加密的特点是有一对公钥和私钥,公钥加密的内容只有私钥才能解密,私钥加密的内容也只有公钥才能加密。
服务端把公钥传给客户端,这一步由于也是明文的,黑客也可以获取到公钥,由于公钥只能解密私钥加密的内容,所以黑客虽然能通过公钥获取服务器发送的内容,但他看不到客户端发送的数据。安全系数比对称加密高了一点。
中间人攻击
有这么一种情况,黑客在获取到公钥之后,把他自己的公钥传给客户端,客户端把这个公钥加密的内容在传给服务端的时候再次被黑客拦截到,黑客用自己的密钥解密,然后再用拦截到的公钥加密把数据发给服务端,这就是中间人攻击。
证书
所以说直接用非对称加密也是不安全的,需要解决公钥被替换的问题。就像出来用证书,证书会有一个公钥和私钥,私钥给服务器,公钥给客户端。服务器把公钥用证书的私钥加密之后再发送给客户端,客户端受到之后先用证书的公钥进行解密,就能获取到公钥了,即使在通信过程中被黑客拦截到,由于黑客没有证书的公钥,也是没有办法获取到通信用的公钥。
这也不是绝对安全的,证书的公钥和密钥也是存在泄露的风险。
混合加密
由于非对称加密计算量大,效率不高,就想出了另外一种加密方式,只通过非对称加密传输对称密钥,之后的通信使用对称密钥进行加密,就解决了安全和传输效率问题。
总结
实现上述加密的协议就是TLS/SSL。
另外要注意一点这里的密钥是密码学中的密钥,是加密算法的参数。生活中的密码是口令。
参考:
https://halfrost.com/cipherkey/
https://www.ruanyifeng.com/blog/2014/02/ssl_tls.html
https://juejin.cn/post/6844903584073515016
http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html













网友评论