ssl/tsl 加密原理
对称加密
对称加密:即加密和解密用的都是同一个秘钥,主要优势就是速度比非对称加密快
非对称加密
非对称加密: 即加密和解密用的是不同的秘钥,例如:在服务端存在一对公钥和私钥,服务端将公钥发送给客户端,客户端在和服务端通信时,利用该公钥对信息进行加密,然后将加密后的信息发送给服务器,该信息只有服务器的私钥才能进行解密。
tsl/ssl 认证的加密方式
在tsl/ssl 加密过程中,采用的是非对称加密和对称加密的方式。
- 客户端将自身的tsl版本,支持的加密套件,和生成的随机数(称为随机数1)发送给服务端
- 服务端获取到客户端的信息后,会将服务器的tsl版本,所选择的加密套件和 服务端生成的随机数2发送给客户端,同时会将服务端证书,服务端公钥,发送给客户端
- 客户端拿到服务器公钥和随机数之后,会生成随机数3(预主秘钥)通过服务端发送过来的公钥进行加密,然后发送给服务端
- 服务端收到加密后的预主秘钥之后,会用服务端的私钥进行解密,这个过程就是tsl加密的非对称加密部分。
- 客户端和服务端此时都含有随机数1,随机数2,预主秘钥。会利用这个三个随机数生成一个会话秘钥,之后的通信中,就是用该会话秘钥对信息内容进行加密,这就是tsl/ssl 认证的对称加密部分。
应用场景
在日常生活当中,经常使用https进行访问对应的网站,在此过程中就使用了ssl/tsl加密的方式
- 以百度为例,百度想要使用https对网站信息进行加密,首先得去CA机构获取ca证书,证书中包含了百度的公钥和百度的域名,
- 服务端拿到ca证书后,将ca证书存储到服务器内,当浏览器对百度网站进行访问时,服务器会发送签名证书给客户端
- 客户端拿到签名证书后,会去CA机构去校验证书的可用性。
- 如果证书可用的话,使用证书中的公钥进行非堆成加密,将三个随机数利用公钥加密后发送给服务端
- 服务端拿到后进行解密,至此,客户端和服务端都包含三个随机数,使用该随机数生成一个秘钥
- 之后客户端和服务端在此时通话过程中都使用该秘钥进行解密解密信息