本系列主要整理计算机网络知识。本节介绍TLS/SSL的工作原理和HTTPS的优缺点。
散列函数hash:常见的散列函数有MD5、SHA1、SHA256。该函数的特点是单向不可逆,对输入数据非常敏感,输出的长度固定,任何数据的修改都会改变散列函数的结果,可以用于防止信息篡改并验证数据的完整性;
对称加密:双方使用同一个密钥对数据进行加密和解密。但是对称加密存在一个问题,就是如何保证密钥传输的安全性,因为密钥还是会通过网络传输的,一旦密钥被其他人获取到,那么整个加密过程就毫无作用了。
非对称加密:拥有两个密钥,一个公钥,一个私钥。公钥是公开的,私钥是保密的,用私钥加密的数据,只有对应的公钥才能解密。我们可以将公钥公布出去,任何想和我们通信的客户, 都可以使用我们提供的公钥对数据进行加密,这样我们就可以使用私钥进行解密,这样就能保证数据的安全了。但是非对称加密有一个缺点就是加密的过程很慢,因此如果每次通信都使用非对称加密的方式的话,反而会造成等待时间过长的问题。
举个容易理解的例子:小青和小红是好朋友,经常会说一些悄悄话,但是小黑看不过去,就想知道他们说的是什么,所以就开始偷听。小青有一个私有的颜色,是青色,全世界只有他有,同样,小红也有一种红色,也只有他有,他们约定,都要结合黄色,所以小黑就听到了黄色。
然后小青用青色和黄色混在一起,得到绿色,小红用红色和黄色混在一起,得到了橙色,然后,他们把各自混合的新颜色给了对方。此时,小黑又知道了他们交换了什么颜色,所以,小黑又有了绿色和橙色。
此时,神奇的地方来了,小青把得到的橙色和独有的青色混合成了棕黄色,小红把得到的绿色和独有的红色混合也成了棕黄色。那此时,棕黄色就是他们之间的密钥了,而这个密钥是小黑不知道怎么弄出来的,最后这个密钥只有小红和小青知道。
(1)首先由客户端向服务器发送使用的协议的版本号、一个随机数和可以使用的加密方法。
(2)服务器端收到后,确认加密的方法,也向客户端发送一个随机数和自己的数字证书。
(3)客户端收到后,首先检查数字证书是否有效,如果有效则再生成一个随机数,并使用证书中的公钥对随机数加密,然后发送给服务器,并且还会提供一个前端所有内容的hash值供服务器端检验。
(4)服务器端接收后,使用自己的私钥对数据解密,同时向客户端发送一个前面所有内容的hash值供客户端检验。
(5)这时候双方都有了三个随机数,按照之前所约定的加密方法,使用这三个随机数生成一把密钥,以后双方通信前,就使用这个密钥对数据进行加密后再传输。