SSL/TLS协议


SSL/TLS协议
2019年7月29日
14:42
TLS 协议:

TLS名为传输层安全协议(Transport Layer Protocol),这个协议是一套加密的通信协议。它的前身是SSL协议(安全套接层协议,Secure Sockets Layer)。这两个协议的工作方式类似,但TLS协议针对SSL协议进行了一些改善。SSL/TLS协议利用加密的方式,在开放的互联网环境中实现了加密通信,让通信的双方可以安心的说悄悄话。



对称加密
这种加密方法是将原来的某种信息按照某个规律打乱。打乱的方式称为加密算法,而打乱过程中的参数就叫做密钥(cipher code)。
发出信息的人根据密钥来给信息加密,而接收信息的人利用相同的密钥,来给信息解密。就好像一个带锁的盒子。发送信息的人将信息放到盒子里,用钥匙锁上。而接受信息的人则用相同的钥匙打开。加密和解密用的是同一个密钥,这种加密称为对称加密(symmetric encryption)。


对称加密的不安全性:
如果一对一的话,那么两人需要交换一个密钥。理论上,如果密钥绝对安全,而且加密算法绝对复杂的话,对称加密是很难破解的。但通信双方很难绝对保证密钥的安全。一旦有其他人窃取到密钥,那么所有通信都变得不安全了。特别在一对多的话,如果共用同一套密钥,那么某一方通信的破解就意味着所有通信的破解。



非对称加密(asymmetric encryption):
对称加密的薄弱之处在于给了太多人的钥匙(人多不安全)。
此时,非对称加密就诞生了。

非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。


非对称加密算法实现机密信息交换的基本过程是:A生成一对密钥并将公钥公开,需要向A发送信息的其他角色使用该密钥(A的公钥)对机密信息进行加密后再发送给A;A再用自己私钥对加密后的信息进行解密。
反之亦然。
即使公钥被黑客截胡,没有密钥也是无法破解的。




SSL协议:
SSL协议同时使用了非对称和对称加密。它用对称加密算法来加密信息本身。但对于安全性比较脆弱的对称加密密钥,则采用非对称加密的方式来传输。

SSL协议分为客户端和服务器端。通信的核心步骤很简单:
1. 双方利用明文通信的方式确立使用的加密算法。
2. 利用非对称算法通信,交换一个密钥。
3. 该密钥用于对称加密算法,加密接下来的通信正文。


可以看到,SSL协议的关键是用一个非常安全的方式来交换一个对称密钥。交换的过程会比上面的描述更加复杂一些。
1. 客户发起请求时,除了说明自己支持的非对称加密算法,还会附加一个客户端随机数(client random)。
2. 服务器回复请求时,会确定非对称加密算法和哈希函数,并附上公钥。此外,服务器端还会在此次通信中附加一个服务器端随机数(server random)。
3. 客户端会产生第三个随机数(Premaster secret),然后利用服务器确定的非对称加密算法和公钥来加密这个随机数,再发送给服务器端。
4. 客户端用自己的私钥解密第三个随机数。
5. 这样,客户端和服务器端都知道了三个随机数。双方各自用商量好的哈希函数从三个随机数获得对称加密的密钥。

即使明文通信的时候,某些信息被窃听,但第三步的非对称加密通信部分可以保证窃听者无法完整的获得三个随机数。这样,窃听者还是不知道对称加密的密钥是什么。这样,对称加密的密钥就在一个安全的环境中获得了。为了进一步安全,服务器的公钥会包含在一个数字证书中发送给客户。这样,客户还可以通过数字证书来验证服务器的身份,以免服务器本身出现问题。



现在使用越来越广泛的HTTPS协议就是在SSL/TLS协议的基础上进行通信。HTTP协议在通信过程中要经过多重路由,很容易被窃听。经过SSL协议加密的信息就算被窃听,也只能被通信目的地的人解读,从而保证了信息的安全。

已使用 Microsoft OneNote 2013 创建。