秘钥的产生过程
非对称加密
双方都有自己的私钥 公钥,双方都收到了对方 用(私+公)生成的秘钥,再用 对方的(私+公)秘钥+自己的私钥=新的秘钥 ,再用新的秘钥加密数据发送给对方
用两个秘钥来加密和解密,公钥是所有人都知道的,私钥只有持有方才有的秘钥。
非对称加密也叫做公钥加密
服务器上有成对的私钥/公钥,公钥给到客户端,客户端用公钥加密数据,只有服务器端的私钥才能解密。
TLS对称和非对称加密都有用到。
TCP三次握手
TLS握手过程
1、Client Hello(客户端发给服务器)
加密套件:16个不同的加密组合
TCP三次握手后 ,客户端发送了一个Cl.NET Hello 给服务器告诉服务器我支持那些加密套件,然后生成一个随机数(1)发送给服务器 。
2、Server Hello(服务器发送给客户端)
服务器的 Server Hello 响应报文里面会告诉客户端,服务端支持的TLS版本及选择的加密套件,并且服务器生成一个随机数(2)发送给客户端。随机数的作用?
3、Certificate(服务器发送给客户端)
服务器再发出一个响应来出示自己的证书,这样浏览器就可以对照自己的证书信任列表来确认这个服务器是否可信。
4、Server Key Exchange(服务器端发送)
服务器会把公钥发送给客户端
网银 服务器需要客户端的证书,这一步会发出请求。
5、Server Hello Done(服务器发送给客户端)
6、Client Key Exchange(客户端发出)
这一步是个重点也是难点,客户端会生成第三个随机数(3) 预主秘钥第三个随机数会用到刚刚收到的公钥进行加密,并把加密后的随机数发给服务器。就是Pubkey:显示的随机数
Change Cipher Spec
客户端告诉服务器以后就用商议好的秘钥来进行加密。
Encrypted Handshake Message
表示TLS协商已经灭有问题了,可以开始加密了。
7、Encrypted Handshake Message(服务器端发出)
这里表示TLS的握手已经成功了,可以给数据加密进行交换了。
TLS握手过程图
先用非对称加密生成会话密钥,会话密钥产生后使用对称加密来加密数据后传送(减少资源的消耗)。
对称加密 非对称加密 CA中心
非对称加密HTTPS(SSL2.0)
非对称加解密速率慢、效率低
非对称、对称混合加密的方式
这样也存在问题
https CA证书(解决中间人私发公钥、伪装身份问题)
SSL证书