网站模板免费下载网页模板,新开网络游戏排行,姑苏网站制作,营销展示型网站模板传统的 TLS 握手基本都是使用 RSA 算法来实现密钥交换的#xff0c;在将 TLS 证书部署服务端时#xff0c;证书文件其实就是服务端的公钥#xff0c;会在 TLS 握手阶段传递给客户端#xff0c;而服务端的私钥则一直留在服务端。
在 RSA 密钥协商算法中#xff0c;客户端会…传统的 TLS 握手基本都是使用 RSA 算法来实现密钥交换的在将 TLS 证书部署服务端时证书文件其实就是服务端的公钥会在 TLS 握手阶段传递给客户端而服务端的私钥则一直留在服务端。
在 RSA 密钥协商算法中客户端会生成随机密钥并使用服务端的公钥加密后再传给服务端。根据非对称加密算法公钥加密的消息仅能通过私钥解密这样服务端通过私钥解密后双方就得到了相同的密钥再用它加密应用消息。
总流程图如下 TLS 第一次握手 客户端首先会发一个「Client Hello」消息消息里面有客户端使用的 TLS 版本号、支持的密码套件列表以及生成的随机数Client Random这个随机数会被服务端保留它是生成对称加密密钥的材料之一。 TLS 第二次握手 当服务端收到客户端的「Client Hello」消息后会确认 TLS 版本号是否支持和从密码套件列表中选择一个密码套件以及生成随机数Server Random。
接着返回「Server Hello」消息消息里面有服务器确认的 TLS 版本号也给出了随机数Server Random然后从客户端的密码套件列表选择了一个合适的密码套件。
然后服务端为了证明自己的身份会发送「Server Certificate」给客户端这个消息里含有数字证书。
随后服务端发了「Server Hello Done」消息目的是告诉客户端我已经把该给你的东西都给你了本次打招呼完毕。 客户端验证证书 一个数字证书通常包含了
公钥持有者信息证书认证机构CA的信息CA 对这份文件的数字签名及使用的算法证书有效期其他额外信息
数字证书的作用是用来认证公钥持有者的身份以防止第三方进行冒充。
服务端的证书都是由 CA Certificate Authority证书认证机构签名的CA 具有极高的可信度所以由它来给各个公钥签名信任的一方签发的证书那必然证书也是被信任的。
签名的作用可以避免中间人在获取证书时对证书内容的篡改。 TLS 第三次握手 客户端验证完证书后认为可信则继续。
接着客户端就会生成一个新的随机数 (pre-master)用服务器的 RSA 公钥加密该随机数通过「Client Key Exchange」消息传给服务端。
服务端收到后用 RSA 私钥解密得到客户端发来的随机数 (pre-master)。
至此客户端和服务端双方都共享了三个随机数分别是 Client Random、Server Random、pre-master。
于是双方根据这三个随机数生成会话密钥Master Secret它是对称密钥用于对后续的 HTTP 请求/响应的数据加解密。
生成完「会话密钥」后然后客户端发一个「Change Cipher Spec」告诉服务端开始使用加密方式发送消息。
然后客户端再发一个「Encrypted Handshake MessageFinishd」消息把之前所有发送的数据做个摘要再用会话密钥加密一下让服务器做个验证验证加密通信「是否可用」和「之前握手信息是否有被中途篡改过」。 TLS 第四次握手 服务器也是同样的操作发「Change Cipher Spec」和「Encrypted Handshake Message」消息如果双方都验证加密和解密没问题那么握手正式完成。
最后就用「会话密钥」加解密 HTTP 请求和响应了。 RSA 算法的缺陷 使用 RSA 密钥协商算法不支持前向保密。
因为客户端传递随机数用于生成对称加密密钥的条件之一给服务端时使用的是公钥加密的服务端收到后会用私钥解密得到随机数。所以一旦服务端的私钥泄漏了过去被第三方截获的所有 TLS 通讯密文都会被破解。
为了解决这个问题后面就出现了 ECDHE 密钥协商算法我们现在大多数网站使用的正是 ECDHE 密钥协商算法。