https握手与密钥协商过程
https原理--RSA密钥协商算法
https原理--RSA密钥协商算法⼀、TLS握⼿过程HTTP 由于是明⽂传输,所谓的明⽂,就是说客户端与服务端通信的信息都是⾁眼可见的,随意使⽤⼀个抓包⼯具都可以截获通信的内容。
所以安全上存在以下三个风险:窃听风险,⽐如通信链路上可以获取通信内容,⽤户号容易没。
篡改风险,⽐如强制植⼊垃圾⼴告,视觉污染,⽤户眼容易瞎。
冒充风险,⽐如冒充淘宝⽹站,⽤户钱容易没。
HTTPS 在 HTTP 与 TCP 层之间加⼊了 TLS 协议,来解决上述的风险。
TLS 协议是如何解决 HTTP 的风险的呢?信息加密:HTTP 交互信息是被加密的,第三⽅就⽆法被窃取;校验机制:校验信息传输过程中是否有被第三⽅篡改过,如果被篡改过,则会有警告提⽰;⾝份证书:证明淘宝是真的淘宝⽹;可见,有了 TLS 协议,能保证 HTTP 通信是安全的了,那么在进⾏ HTTP 通信前,需要先进⾏ TLS 握⼿。
TLS 的握⼿过程,如下图:上图简要概述来 TLS 的握⼿过程,其中每⼀个「框」都是⼀个记录(record),记录是 TLS 收发数据的基本单位,类似于 TCP ⾥的 segment。
多个记录可以组合成⼀个 TCP 包发送,所以通常经过「四个消息」就可以完成 TLS 握⼿,也就是需要 2个 RTT 的时延,然后就可以在安全的通信环境⾥发送HTTP 报⽂,实现 HTTPS 协议。
所以可以发现,HTTPS 是应⽤层协议,需要先完成 TCP 连接建⽴,然后⾛ TLS 握⼿过程后,才能建⽴通信安全的连接。
事实上,不同的密钥交换算法,TLS 的握⼿过程可能会有⼀些区别(上图的握⼿过程是DHE密钥协商的过程,主要区别是DHE/ECDHE协商有server key exchange的握⼿过程,⽽RSA没有)。
这⾥先简单介绍下密钥交换算法,因为考虑到性能的问题,所以双⽅在加密应⽤信息时使⽤的是对称加密密钥,⽽对称加密密钥是不能被泄漏的,为了保证对称加密密钥的安全性,所以使⽤⾮对称加密的⽅式来保护对称加密密钥的协商,这个⼯作就是密钥交换算法负责的。
HTTPS传输协议的工作原理
HTTPS传输协议的工作原理HTTPS(Hypertext Transfer Protocol Secure)是一种通过计算机网络进行安全通信的传输协议。
它基于HTTP协议,通过使用加密机制来保证通信的安全性。
本文将介绍HTTPS传输协议的工作原理。
一、HTTPS的基本概念HTTPS的目标是提供一种安全加密的通信方式,以防止敏感信息被窃听、篡改或伪造。
它采用了SSL/TLS协议来加密通信数据,确保数据在传输的过程中不被破解。
二、HTTPS的工作原理HTTPS的工作原理可以分为三个阶段:握手阶段、密钥交换阶段和加密通信阶段。
1. 握手阶段握手阶段是HTTPS建立安全通信的第一步。
当客户端与服务器建立连接时,客户端发送一个加密套件列表给服务器,表示客户端支持的加密算法。
服务器从中选择一个加密套件,并生成一个公钥和私钥对。
2. 密钥交换阶段在密钥交换阶段,服务器通过将自己的公钥发送给客户端,完成密钥交换。
客户端使用服务器的公钥加密一个随机生成的对称密钥(Session Key),然后发送给服务器。
服务器收到加密后的对称密钥后,使用私钥解密,得到Session Key。
3. 加密通信阶段在握手阶段完成后,客户端和服务器都拥有了Session Key。
在加密通信阶段,客户端和服务器使用Session Key来对通信数据进行加密和解密。
客户端将要发送的数据使用Session Key加密,服务器收到后使用Session Key解密。
同样,服务器要发送的数据也会使用Session Key 加密,客户端收到后使用Session Key解密。
三、HTTPS的优势HTTPS相比于HTTP协议具有以下优势:1. 数据加密:HTTPS使用SSL/TLS协议对通信数据进行加密,保证数据在传输过程中不被窃听和篡改。
2. 安全验证:HTTPS使用数字证书对服务器进行身份验证,确保用户访问的是合法和安全的网站。
3. 支持完整性校验:HTTPS使用消息摘要算法对通信数据进行完整性校验,防止数据被篡改,保证通信的可靠性。
HTTPS原理TLS握手过程的详解
HTTPS原理TLS握手过程的详解HTTPS是一种用于确保网站安全传输的通信协议。
它基于TLS (Transport Layer Security)协议,通过加密和身份验证保护用户数据的隐私和完整性。
本文将详细解析HTTPS原理以及TLS握手过程。
一、HTTPS原理HTTPS的原理在于使用TLS协议实现对传输数据的保护。
TLS是一种基于公钥加密的通信协议,它提供了数据加密、密钥交换和身份认证等功能,确保数据在传输过程中不被窃取或篡改。
HTTPS在传输数据之前会进行TLS握手,确保客户端和服务器之间建立起安全的通信通道。
TLS握手过程如下所示。
二、TLS握手过程1. 客户端发起连接请求:客户端向服务器发送一个连接请求,请求建立一个安全的TLS连接。
2. 服务器回应:服务器收到客户端的连接请求后,返回一个数字证书。
数字证书内包含服务器的公钥以及其他相关信息,用于身份验证。
3. 客户端验证数字证书:客户端会验证服务器发送的数字证书的合法性和可信度。
这一步骤主要是确认服务器的身份是否真实可靠。
4. 客户端生成随机数:客户端生成一个随机数,并使用服务器的公钥对该随机数进行加密。
5. 客户端发送加密随机数:客户端将加密后的随机数发送给服务器,这个随机数将用于后续加密数据的密钥生成。
6. 服务器解密随机数:服务器使用自己的私钥对客户端发送的加密随机数进行解密,获取该随机数。
7. 客户端和服务器生成会话密钥:客户端和服务器使用各自持有的随机数,结合一些其他信息,生成一个对称密钥,用于进行后续数据的加密和解密。
8. TLS握手完成:至此,客户端和服务器完成了TLS握手过程,建立了一个安全通信的会话。
接下来的数据传输将使用会话密钥进行加密和解密。
三、总结HTTPS通过TLS握手过程确保了数据在传输过程中的安全性和完整性。
TLS握手过程中,客户端和服务器互相验证身份,协商加密算法,并生成一个用于加密和解密数据的会话密钥。
简单介绍TLS1.2握手和协商过程
简单介绍TLS1.2握手和协商过程
前言
随着物联网的发展,连接到互联网的设备数量呈指数增长,物联网信息安全越来越重要。
因此,TLS 逐渐成为物联网通讯的标配。
但是TLS 是加密传输,这给调试增加了一定的难度。
笔者最近工作中一直用到HTTPS,但是苦于wireshark 只能抓取HTTP 的明文数据包,无法抓取HTTPS 的数据包,于是就有了这篇文章,在RT-Thread 系统上,使用wireshark 抓取HTTPS 数据包.
简单介绍TLS1.2握手和协商过程
client hello
客户端向服务器发送tls 版本,加密方式,客户端随机数等。
server hello
服务器端返回协商信息的结果,包括使用的tls 版本,使用哪一种加密方式(cipher suite), 服务器的随机数(random_s)。
证书校验
客户端验证证书的合法性,如果验证通过才会进行后续通讯
client key exchange
客户端发送协商密钥发送给服务端
server change cipher spec
服务器通知客户端以后使用此协商密钥进行加密
hangshake message finish
客户端接收服务器发送的握手消息,验证通过后,握手完成。
此后的通讯都采用协商密钥和加密算法通讯。
设备端解密https数据包
查阅文档得知,wireshark 支持将tls 会话中使用的密钥保存到外部文件中,供wireshark。
SSLTLS协议中的握手过程详解
SSLTLS协议中的握手过程详解SSL/TLS协议中的握手过程详解SSL/TLS(安全套接层/传输层安全)协议是一种用于保护网络通信安全的加密协议。
在网络传输中,客户端和服务器之间的握手过程是建立安全通信的基础。
本文将详细解释SSL/TLS协议中的握手过程,以帮助读者更好地理解和应用该协议。
1. 握手协议介绍握手协议是SSL/TLS协议的重要组成部分,用于验证服务器的身份,并协商加密算法和密钥。
握手协议的主要目的是建立安全通道,确保通信的保密性、完整性和可信性。
2. 握手过程概述SSL/TLS握手过程包括以下步骤:2.1 客户端发送ClientHello在握手开始时,客户端向服务器发送ClientHello消息,包含了支持的SSL/TLS版本、加密算法和压缩方法等信息。
此消息允许服务器选择合适的参数进行后续握手协商。
2.2 服务器发送ServerHello服务器收到ClientHello消息后,选择合适的加密算法和相关参数,并向客户端发送ServerHello消息。
ServerHello消息包含服务器选择的SSL/TLS版本、加密算法和密钥等信息。
2.3 服务器发送Certificate服务器发送Certificate消息,将服务器的公钥证书发送给客户端。
客户端可以使用该证书验证服务器的身份,并获取服务器的公钥用于后续的密钥协商。
2.4 服务器发送ServerKeyExchange(可选)在某些情况下,服务器可能会发送ServerKeyExchange消息,用于向客户端发送临时公钥或其他参数,以供密钥协商使用。
这一步骤并非必需,只有在服务器需要向客户端提供额外信息时才会发送。
2.5 服务器发送ServerHelloDone服务器发送ServerHelloDone消息,通知客户端握手过程的结束。
客户端接收到该消息后,即可开始验证服务器的证书和进行密钥协商。
2.6 客户端发送ClientKeyExchange客户端生成一个随机的PreMaster Secret,并使用服务器的公钥加密,并将其发送给服务器,即ClientKeyExchange消息。
HTTPS原理与密钥交换
HTTPS原理与密钥交换HTTPS(Hypertext Transfer Protocol Secure)是一种通过计算机网络进行安全通信的协议。
它采用了传输层安全协议(TLS,Transport Layer Security)来加密数据传输,保障信息的机密性和完整性。
本文将介绍HTTPS的原理及其密钥交换过程。
一、HTTPS原理HTTPS的安全性主要通过两个方面来保障:加密和身份认证。
通过加密,HTTPS能够防止传输的数据在传输过程中被窃听或篡改。
而通过身份认证,HTTPS能够确保对方的身份合法,防止中间人攻击。
HTTPS的加密过程主要包括以下几个步骤:1. 客户端向服务器发起连接请求,并请求建立安全连接。
2. 服务器返回公钥证书,公钥证书中包含了服务器的公钥和相关身份信息。
3. 客户端验证公钥证书的合法性。
它会检查证书的签发机构是否可信,以及证书的有效期等信息。
4. 客户端使用服务器的公钥加密一个随机生成的对称密钥,称为会话密钥。
5. 客户端将加密后的会话密钥发送给服务器。
6. 服务器使用私钥解密收到的密文,获取会话密钥。
7. 双方使用会话密钥进行对称加密通信,保障数据传输的机密性和完整性。
二、密钥交换过程密钥交换是HTTPS建立安全连接的一个重要步骤。
一般来说,密钥交换的方式有两种:对称密钥交换和非对称密钥交换。
1. 对称密钥交换对称密钥交换指的是在建立连接时,双方使用相同的密钥来进行加密和解密。
这种方式的优点是计算量相对较小,加密解密速度较快。
然而,对称密钥交换的一个重要问题是如何安全地传输密钥。
如果在传输过程中被窃听,那么密钥就会被泄漏,从而导致连接的不安全。
2. 非对称密钥交换非对称密钥交换采用了公钥加密和私钥解密的方式。
在此方式下,每个实体都有一对密钥,包括公钥和私钥。
公钥可以自由发布,而私钥则是保密的。
当一个实体想要与另一个实体进行通信时,可以使用对方的公钥进行加密,然后再用自己的私钥解密。
https 协议的工作原理是什么?
https 协议的工作原理是什么?
HTTPS(超文本传输安全协议)是HTTP(超文本传输协议)的安全版本,它在传输数据时使用SSL/TLS协议为数据通信提供加密,确保数据的安全性和完整性。
HTTPS的工作原理可以分为以下几个步骤:
1.TCP连接:首先,浏览器与服务器建立一个TCP连接,为HTTPS通信提供基础的传输通道。
2.SSL/TLS握手:
•密钥交换:浏览器向服务器发送一个“Client Hello”消息,包含浏览器支持的加密算法列表、一个客户端生成的随机数等信息。
服务器回应一个“Server Hello”消息,选定一个浏览器也支持
的算法和一个服务器生成的随机数。
•服务器认证:服务器发送其SSL证书,包含公钥、证书颁发机构(CA)等信息。
浏览器通过预装的CA列表验证证书的有效性。
•密钥生成:根据协商的加密算法,浏览器和服务器分别生成会话密钥用于后续的数据加密通信。
3.加密通信:完成握手过程后,客户端与服务器开始使用协商的密钥对数据进行加密,然后进行数据交换。
这确保了传输过程中数据的机密性和完整性。
4.数据传输:客户端和服务器使用对称加密算法加密通信内容,保证信息传输的安全性。
每次请求都会使用SSL/TLS协议对数据进行加密和解密。
5.会话结束:任何一方都可以发起关闭通信会话的请求,随后双方完成最后的数据传输,释放资源,结束HTTPS会话。
总结来说,HTTPS通过SSL/TLS协议在客户端与服务器之间建立一个加密的通道,确保数据在传输过程中的安全性和完整性。
这包括了密钥交换、服务器认证、数据加密等步骤,有效地保护了数据不被中间人攻击和窃听。
https原理--ECDHE密钥协商算法
https原理--ECDHE密钥协商算法HTTPS 常⽤的密钥交换算法有两种,分别是 RSA 和 ECDHE 算法。
其中,RSA 是⽐较传统的密钥交换算法,它不具备前向安全的性质,因此现在很少服务器使⽤的。
⽽ ECDHE 算法具有前向安全,所以被⼴泛使⽤。
我在上⼀篇已经介绍了,这⼀篇就介绍 ECDHE 算法。
⼀、离散对数ECDHE 密钥协商算法是 DH 算法演进过来的,所以我们先从 DH 算法说起。
DH 算法是⾮对称加密算法,因此它可以⽤于密钥交换,该算法的核⼼数学思想是离散对数。
这⾥简单提⼀下它的数学公式。
离散对数是「离散 + 对数」的两个数学概念的组合,所以我们先来复习⼀遍对数。
要说起对数,必然要说指数,因为它们是互为反函数,指数就是幂运算,对数是指数的逆运算。
举个栗⼦,如果以 2 作为底数,那么指数和对数运算公式,如下图所⽰:那么对于底数为 2 的时候, 32 的对数是 5,64 的对数是 6,计算过程如下:对数运算的取值是可以连续的,⽽离散对数的取值是不能连续的,因此也以「离散」得名,离散对数是在对数运算的基础上加了「模运算」,也就说取余数,对应编程语⾔的操作符是「%」,也可以⽤ mod 表⽰。
离散对数的概念如下图:上图的,底数 a 和模数 p 是离散对数的公共参数,也就说是公开的,b 是真数,i 是对数。
知道了对数,就可以⽤上⾯的公式计算出真数。
但反过来,知道真数却很难推算出对数。
特别是当模数 p 是⼀个很⼤的质数,即使知道底数 a 和真数 b ,在现有的计算机的计算⽔平是⼏乎⽆法算出离散对数的,这就是 DH 算法的数学基础。
1.DH 密钥协商算法认识了离散对数,我们来看看 DH 算法原理。
Diffie-He llman 算法,简称DH 算法,是Whitfield Diffie 和Martin Hellman 在1976 年公布的⼀个公开密钥算法,它的历史⽐RSA 公开密钥算法更悠久。
HTTPS原理的密钥交换过程
HTTPS原理的密钥交换过程HTTPS(Hypertext Transfer Protocol Secure)是一种通过计算机网络进行安全通信的协议。
它基于传输层安全协议(TLS)或安全套接字层(SSL),通过使用加密算法来保护数据在网络传输过程中的安全性。
在HTTPS中,密钥交换是确保通信安全的关键步骤之一。
本文将介绍HTTPS的密钥交换过程和相关原理。
1. 密钥交换的重要性密钥交换的目的是确保通信双方可以安全地建立共享密钥,以保护数据的机密性和完整性。
在传统的HTTP协议中,数据是明文传输的,容易被攻击者窃听、篡改或伪造。
而HTTPS通过密钥交换过程,能够确保通信双方的身份验证和数据的加密,大大提高了通信的安全性。
2. HTTPS密钥交换过程HTTPS的密钥交换过程主要包括以下几个步骤:2.1. 客户端请求通信双方是客户端(浏览器)和服务器。
首先,客户端发起一个与服务器的HTTPS请求,请求中包含了一个建立安全通信的要求。
2.2. 服务器证书服务器向客户端发送一个经过数字证书机构(CA)签名的数字证书。
数字证书中包含了服务器公钥和其他相关信息,客户端可以通过该证书验证服务器的身份。
2.3. 客户端验证客户端收到服务器的数字证书后,会对证书进行验证。
验证包括检查证书的有效性、CA的信任链和证书中的相关信息等。
如果验证通过,客户端会继续执行密钥交换过程。
2.4. 生成临时会话密钥在验证服务器的身份后,客户端会生成一个临时的会话密钥(session key)。
这个会话密钥是用于加密和解密通信数据的对称密钥,有效期只在当前会话中。
2.5. 会话密钥加密客户端将生成的临时会话密钥使用服务器的公钥进行加密,并将加密后的会话密钥发送给服务器。
2.6. 会话密钥解密服务器收到客户端发送的加密的会话密钥后,使用自己的私钥进行解密,还原出会话密钥。
2.7. 完成密钥交换服务器和客户端都拥有了相同的会话密钥,可以使用该密钥进行后续的数据加密和解密操作。
HTTPS原理的密钥协商过程
HTTPS原理的密钥协商过程在今天的网络通信中,为了保障数据的安全性,HTTPS协议成为了各大网站广泛使用的加密传输协议。
而HTTPS的核心技术之一便是密钥协商过程。
本文将详细介绍HTTPS原理的密钥协商过程。
一、HTTPS协议简介HTTPS(Hypertext Transfer Protocol Secure)是一种通过计算机网络进行安全通信的协议。
HTTPS基于HTTP协议,通过使用SSL/TLS协议(Secure Sockets Layer/Transport Layer Security)在应用层和传输层之间加入了一层安全层,以确保数据在传输过程中的机密性和完整性。
二、密钥协商的重要性在HTTPS通信中,密钥协商是确保通信双方建立安全连接的关键步骤。
密钥协商的目标是让通信双方安全地生成和交换密钥,以便进行加密和解密操作。
只有通信双方都持有合适的密钥,才能保证数据在传输过程中的保密性。
三、HTTPS密钥协商过程HTTPS密钥协商过程可以分为三个主要步骤:客户端发送协议版本和随机数、服务器选择密钥并发送、客户端验证密钥并生成会话密钥。
1. 客户端发送协议版本和随机数客户端首先向服务器发送一个Client Hello消息,其中包括具体的协议版本、加密套件列表和一个随机数。
协议版本用来指定所采用的TLS协议版本;加密套件列表是一组支持的加密算法和密钥交换算法的集合;随机数是一个由客户端生成的随机数,用于在协商过程中生成密钥。
2. 服务器选择密钥并发送服务器收到Client Hello消息后,会从中选择一个加密套件和密钥交换算法。
服务器会生成一个随机数作为Server Hello消息的一部分,并使用选择的密钥交换算法生成服务器的公私钥对。
服务器将公钥和随机数一同发送给客户端。
3. 客户端验证密钥并生成会话密钥客户端收到Server Hello消息后,首先验证服务器的证书的有效性。
如果证书有效,客户端会生成一个随机数作为生成会话密钥的一部分。
SSL协议(HTTPS)握手、工作流程详解(双向HTTPS流程)
SSL协议(HTTPS)握⼿、⼯作流程详解(双向HTTPS流程)SSL协议的⼯作流程:服务器认证阶段:1)客户端向服务器发送⼀个开始信息“Hello”以便开始⼀个新的会话连接;2)服务器根据客户的信息确定是否需要⽣成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含⽣成主密钥所需的信息;3)客户根据收到的服务器响应信息,产⽣⼀个主密钥,并⽤服务器的公开密钥加密后传给服务器;4)服务器恢复该主密钥,并返回给客户⼀个⽤主密钥认证的信息,以此让客户认证服务器。
⽤户认证阶段:在此之前,服务器已经通过了客户认证,这⼀阶段主要完成对客户的认证。
经认证的服务器发送⼀个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从⽽向服务器提供认证。
从SSL 协议所提供的服务及其⼯作流程可以看出,SSL协议运⾏的基础是商家对消费者信息保密的承诺,这就有利于商家⽽不利于消费者。
在电⼦商务初级阶段,由于运作电⼦商务的企业⼤多是信誉较⾼的⼤公司,因此这问题还没有充分暴露出来。
但随着电⼦商务的发展,各中⼩型公司也参与进来,这样在电⼦⽀付过程中的单⼀认证问题就越来越突出。
虽然在SSL3.0中通过数字签名和数字证书可实现浏览器和Web服务器双⽅的⾝份验证,但是SSL协议仍存在⼀些问题,⽐如,只能提供交易中客户与服务器间的双⽅认证,在涉及多⽅的电⼦交易中,SSL协议并不能协调各⽅间的安全传输和信任关系。
在这种情况下,Visa和 MasterCard两⼤信⽤卡公组织制定了SET协议,为⽹上信⽤卡⽀付提供了全球性的标准。
SSL协议的握⼿过程 为了便于更好的认识和理解 SSL 协议,这⾥着重介绍 SSL 协议的握⼿协议。
SSL 协议既⽤到了公钥加密技术(⾮对称加密)⼜⽤到了对称加密技术,SSL对传输内容的加密是采⽤的对称加密,然后对对称加密的密钥使⽤公钥进⾏⾮对称加密。
这样做的好处是,对称加密技术⽐公钥加密技术的速度快,可⽤来加密较⼤的传输内容,公钥加密技术相对较慢,提供了更好的⾝份认证技术,可⽤来加密对称加密过程使⽤的密钥。
HTTPS原理HTTPS的安全握手与密钥协商
HTTPS原理HTTPS的安全握手与密钥协商HTTPS原理是指通过使用加密通信协议HTTPS来传输数据,并确保数据的完整性、机密性和安全性。
HTTPS是基于HTTP协议的安全版本,其主要的安全机制是使用SSL/TLS协议对通信进行加密。
HTTPS的安全握手是指在建立连接时,客户端和服务器之间进行的一系列握手过程,以确保双方都可以安全地进行通信。
下面将详细介绍HTTPS的安全握手和密钥协商的过程。
1. 客户端向服务器发起连接请求时,服务器会返回一组公钥和证书。
证书是由受信任的证书机构签发的,用于验证服务器的身份和公钥的有效性。
2. 客户端会验证服务器返回的证书是否合法。
它会检查证书中的签名,以及证书中包含的服务器的域名是否与请求的域名一致。
如果验证失败,客户端会给出警告或者中断连接。
3. 客户端生成一个随机的对称密钥(称为会话密钥),然后使用服务器的公钥对该会话密钥进行加密,并将加密后的会话密钥发送给服务器。
4. 服务器使用自己的私钥对接收到的加密的会话密钥进行解密,得到原始的会话密钥。
5. 客户端和服务器使用会话密钥来加密和解密后续的通信内容。
这样,即使有人截获了通信内容,也无法解密其中的内容,保证了通信的机密性。
通过以上的安全握手过程,HTTPS确保了通信的安全性。
但是,为了保证密钥的安全,HTTPS还需要进行密钥协商的过程。
密钥协商是指在安全握手的过程中,双方协商出一个对称密钥用于后续的通信加密。
常见的密钥协商方式有以下两种:1. RSA密钥交换:客户端使用服务器的公钥加密会话密钥,并发送给服务器。
服务器使用自己的私钥进行解密得到会话密钥。
2. Diffie-Hellman密钥交换:客户端和服务器都生成一对公钥和私钥。
在握手过程中,他们通过相互交换公钥,并使用自己的私钥和对方的公钥计算出一个相同的会话密钥。
通过以上的密钥协商过程,客户端和服务器都能得到相同的会话密钥,用于后续的通信加密和解密。
SSLTLS握手过程中的密钥交换
SSLTLS握手过程中的密钥交换SSL/TLS握手过程中的密钥交换SSL/TLS是一种用于保护网络通信安全的协议。
在SSL/TLS握手过程中,密钥交换是其中一个重要的步骤。
本文将介绍SSL/TLS握手过程以及密钥交换的原理和方法,以加深对其工作原理的理解。
1. SSL/TLS握手过程概述SSL/TLS握手过程是建立加密通信连接的关键步骤。
其主要目的是确保通信双方的身份验证,并生成用于加密通信的会话密钥。
下面是简要的握手过程概述:1) 客户端发起连接请求,向服务器发出"ClientHello"消息。
2) 服务器响应,返回"ServerHello"消息,其中包含会话密钥的加密算法和协商参数。
3) 服务器发送数字证书,以便客户端验证服务器身份。
4) 客户端验证证书有效性,如果验证通过则生成一个随机数,用作后续会话密钥的一部分。
5) 客户端使用服务器的公钥加密后的预备密钥发送给服务器。
6) 服务器使用私钥对预备密钥进行解密,生成会话密钥。
7) 客户端和服务器根据握手阶段协定的加密算法和协商参数,生成加密密钥等。
8) 握手完成,双方开始使用会话密钥进行加密通信。
2. 密钥交换的原理和方法密钥交换是SSL/TLS握手过程中最重要的步骤之一。
其目的是确保客户端和服务器能够安全地生成会话密钥,以保证后续通信的机密性和完整性。
下面介绍几种常见的密钥交换方法:2.1 RSA密钥交换RSA密钥交换是一种非对称加密算法,它使用公钥和私钥对进行加密和解密。
在RSA密钥交换方法中,服务器的RSA公钥用于加密预备密钥,客户端使用服务器的公钥加密后的预备密钥发送给服务器。
服务器使用私钥对预备密钥进行解密,生成会话密钥。
2.2 DH密钥交换DH(Diffie-Hellman)密钥交换是一种基于离散对数的非对称加密算法。
在DH密钥交换方法中,客户端和服务器通过交换数学参数和公共密钥来生成会话密钥。
SSLTLS握手协议
SSLTLS握手协议SSL/TLS握手协议SSL/TLS(Secure Sockets Layer/Transport Layer Security)协议是一种用于保护网络通信安全的加密协议。
在HTTPS、SMTPS和FTPS等应用中被广泛使用。
而SSL/TLS的握手协议则是在通信开始前双方进行身份验证、密钥交换和协商通信参数等重要步骤的协议。
1. 简介SSL/TLS握手协议是建立SSL/TLS安全通信的第一个阶段,确保了通信双方的身份认证,并协商出一致的加密算法和通信参数。
它由多个子协议组成,包括握手协议和更高层次的记录协议。
握手协议主要负责协商和密钥交换,而记录协议则负责对数据进行分割、压缩和加密。
2. 握手过程2.1 客户端Hello握手开始时,客户端发送一个ClientHello消息给服务器,该消息包含有支持的TLS版本、加密算法、压缩算法等信息。
客户端还会生成一个随机数用于后续的密钥交换。
2.2 服务器Hello服务器收到客户端的ClientHello消息后,选择一个与客户端所支持的加密算法和TLS版本相匹配的配置,并向客户端发送一个ServerHello消息。
服务器也会生成一个随机数用于密钥交换。
2.3 密钥交换服务器向客户端发送ServerHello消息后,服务器和客户端之间进行密钥交换。
密钥交换的方式包括以下几种:- RSA密钥交换:服务器生成一个公私钥对,将公钥发送给客户端,客户端使用该公钥加密一个随机数,发送给服务器,服务器利用私钥解密得到该随机数,然后双方都使用该随机数计算出共享密钥。
- Diffie-Hellman密钥交换:服务器和客户端都生成自己的公私钥对,然后双方交换各自的公钥,并根据对方的公钥生成共享密钥。
这种方式在安全性上更加可靠。
- 基于预共享密钥的密钥交换:在某些情况下,双方事先共享一个密钥,可以直接使用该密钥进行握手,提高效率。
2.4 服务器证书验证服务器在握手过程中,会向客户端发送一个包含SSL/TLS证书的ServerHello消息。
HTTPS协议的安全握手过程
HTTPS协议的安全握手过程HTTPS(Hypertext Transfer Protocol Secure)是一种基于HTTP的加密传输协议,能够通过安全的套接字层(SSL/TLS)提供对网络通信的保护。
HTTPS的安全握手过程是建立安全连接的关键步骤,本文将对其进行详细解析。
一、加密套件协商在进行握手之前,客户端和服务器需要协商使用的加密套件。
客户端根据自身支持的加密算法和密钥长度向服务器发送加密套件列表。
服务器选择一个匹配的套件进行后续的加密通信。
二、协议版本协商客户端向服务器发送支持的TLS协议版本列表。
服务器选择一个最高的协议版本作为双方之间进行加密通信的协议版本。
三、生成临时密钥在协商完加密套件和协议版本之后,客户端和服务器都会生成一个临时密钥。
客户端生成一个称为PreMaster Secret的随机值,使用服务器公钥进行加密,并发送给服务器。
服务器使用自己的私钥解密PreMaster Secret,然后双方都使用这个值生成会话密钥。
四、身份验证在生成临时密钥之后,服务器需要验证客户端的身份。
服务器向客户端发送一个称为数字证书的文件,其中包含了服务器的公钥和其他相关信息。
客户端收到数字证书后,首先验证证书的合法性,包括证书的签名、有效期等。
然后使用证书中的公钥对生成的PreMaster Secret进行加密,并传输给服务器。
五、生成会话密钥服务器收到客户端加密的PreMaster Secret后,使用自己的私钥解密,得到相同的会话密钥。
客户端和服务器都使用这个会话密钥进行后续的加密通信。
六、握手结束握手过程至此结束,客户端和服务器都拥有了相同的会话密钥,可以使用对称加密算法对通信的数据进行加密和解密。
之后的数据传输将通过加密套件中规定的加密算法和密钥长度进行安全保护。
总结:HTTPS协议的安全握手过程非常关键,它确保了数据传输的保密性和完整性。
通过加密套件协商、协议版本协商、生成临时密钥、身份验证以及生成会话密钥等步骤,客户端和服务器能够建立起安全的通信连接。
HTTPS握手过程详解
HTTPS握手过程详解HTTPS(HyperText Transfer Protocol Secure)是一种用于在Internet 上安全传输数据的通信协议。
它是在HTTP协议基础上加入了SSL/TLS协议来保证数据传输的安全性和完整性。
本文将详细解析HTTPS的握手过程,包括Client Hello、Server Hello、握手协议和建立安全连接等。
HTTPS握手过程主要涉及客户端和服务器之间的协商和验证,确保双方建立起安全的通信连接。
下面将详细介绍每个步骤。
首先,客户端发送一个Client Hello消息到服务器,该消息包含了客户端支持的协议版本、加密算法以及随机数等信息。
服务器收到Client Hello后,会回应一个Server Hello消息。
服务器在Server Hello消息中告知客户端选择的协议版本、加密算法以及一个服务器生成的随机数。
然后服务器还会发送一个服务器证书,包含服务器的公钥和相关信息。
接下来是握手协议阶段,客户端会验证服务器证书的合法性。
客户端使用一组已知的证书颁发机构(CA)的公钥来解密服务器证书,然后验证该证书的完整性、有效期和中间人攻击等。
如果验证失败,客户端会终止连接。
如果验证成功,客户端会生成一个用于后续密钥交换的临时公私钥对,并将公钥发送给服务器。
服务器端同样生成一个临时的公私钥对,然后将公钥发送给客户端。
服务器收到客户端发送的公钥后,使用自己的私钥进行解密,获取到客户端生成的临时会话密钥。
至此,客户端和服务器都拥有了一份共同的对称密钥(session key),用于加密和解密后续的通信内容。
接下来,客户端发送一个Finished消息给服务器,该消息使用对称密钥对之前所有握手信息的哈希结果进行加密。
服务器收到该消息后进行解密和验证哈希结果,如果验证通过,则发送一个Finished消息给客户端。
最后,握手过程完成,客户端和服务器正式建立起安全连接。
从此之后,客户端和服务器之间的所有数据通信都将使用对称密钥进行加密和解密。
https握手与密钥协商过程
https握手与密钥协商过程https握手与密钥协商过程基于RSA 握手和密钥交换的客户端验证服务器为示例详解握手过程。
1.client_hello客户端发起请求,以明文传输请求信息,包含版本信息,加密套件候选列表,压缩算法候选列表,随机数,扩展字段等信息,相关信息如下:支持的最高TSL协议版本version,从低到高依次SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2,当前基本不再使用低于TLSv1 的版本;客户端支持的加密套件cipher suites 列表,每个加密套件对应前面TLS 原理中的四个功能的组合:认证算法Au (身份验证)、密钥交换算法KeyExchange(密钥协商)、对称加密算法Enc (信息加密)和信息摘要Mac(完整性校验);支持的压缩算法compression methods 列表,用于后续的信息压缩传输;随机数random_C,用于后续的密钥的生成;扩展字段extensions,支持协议与算法的相关参数以及其它辅助信息等,常见的SNI 就属于扩展字段,后续单独讨论该字段作用。
2.server_hello+server_certificate+sever_hello_done(a) server_hello, 服务端返回协商的信息结果,包括选择使用的协议版本version,选择的加密套件cipher suite,选择的压缩算法compression method、随机数random_S等,其中随机数用于后续的密钥协商;(b)server_certificates, 服务器端配置对应的证书链,用于身份验证与密钥交换;(c) server_hello_done,通知客户端server_hello 信息发送结束;3.证书校验客户端验证证书的合法性,如果验证通过才会进行后续通信,否则根据错误情况不同做出提示和操作,合法性验证包括如下:证书链的可信性trusted certificate path,方法如前文所述;证书是否吊销revocation,有两类方式离线CRL 与在线OCSP,不同的客户端行为会不同;有效期expiry date,证书是否在有效时间范围;域名domain,核查证书域名是否与当前的访问域名匹配,匹配规则后续分析;4.client_key_exchange+change_cipher_spec+encrypted_handshake_message(a) client_key_exchange,合法性验证通过之后,客户端计算产生随机数字Pre-master,并用证书公钥加密,发送给服务器;(b) 此时客户端已经获取全部的计算协商密钥需要的信息:两个明文随机数random_C 和random_S 与自己计算产生的Pre-master,计算得到协商密钥;enc_key=Fuc(random_C, random_S, Pre-Master)(c) change_cipher_spec(交换_密码_模式),客户端通知服务器后续的通信都采用协商的通信密钥和加密算法进行加密通信;(d) encrypted_handshake_message(加密握手消息),结合之前所有通信参数的hash 值与其它相关信息生成一段数据,采用协商密钥session secret 与算法进行加密,然后发送给服务器用于数据与握手验证;5.change_cipher_spec+encrypted_handshake_message(a) 服务器用私钥解密加密的Pre-master 数据,基于之前交换的两个明文随机数random_C 和random_S,计算得到协商密钥:enc_key=Fuc(random_C, random_S, Pre-Master);(b) 计算之前所有接收信息的hash 值,然后解密客户端发送的encrypted_handshake_message,验证数据和密钥正确性;(c) change_cipher_spec, 验证通过之后,服务器同样发送change_cipher_spec 以告知客户端后续的通信都采用协商的密钥与算法进行加密通信(d) encrypted_handshake_message, 服务器也结合所有当前的通信参数信息生成一段数据并采用协商密钥session secret 与算法加密并发送到客户端;6.握手结束客户端计算所有接收信息的hash 值,并采用协商密钥解密encrypted_handshake_message,验证服务器发送的数据和密钥,验证通过则握手完成;7.加密通信开始使用协商密钥与算法进行加密通信。
SSLTLS握手过程
SSLTLS握手过程SSL/TLS握手过程SSL/TLS(Secure Sockets Layer/Transport Layer Security)是一种常用的加密传输协议,它在网络通信中起到了保护数据安全的重要作用。
而SSL/TLS握手过程是建立SSL/TLS连接时必经的步骤,本文将详细介绍该过程的各个阶段。
1. 客户端发送ClientHello消息:在SSL/TLS握手的第一步,客户端首先向服务器发送一个ClientHello消息,该消息包含了客户端支持的密码套件、SSL/TLS协议版本以及其他一些相关信息。
客户端会生成一个随机数作为该消息的一部分,用于后续的密钥交换。
2. 服务器回复ServerHello消息:接收到客户端的ClientHello消息之后,服务器会选择一个与客户端支持的密码套件匹配的密码套件,并生成一个随机数。
然后,服务器会向客户端发送一个ServerHello消息,该消息包含了服务器选择的密码套件、SSL/TLS协议版本以及服务器生成的随机数。
3. 服务器发送证书:在完成ServerHello消息的发送后,服务器会将自己的证书发送给客户端。
该证书包含了服务器的公钥以及其他相关信息。
客户端在收到证书后,会对证书进行验证,以确保该证书是由受信任的证书颁发机构签发的,并且服务器的域名与证书中的域名匹配。
4. 客户端生成密钥和随机数:在验证服务器的证书后,客户端会生成一个随机数。
同时,客户端还会根据之前收到的服务器公钥,生成一个用于加密通信的会话密钥,并使用服务器公钥对该会话密钥进行加密。
该加密后的会话密钥将在后续的通信中被用来对数据进行加密和解密。
5. 客户端发送密钥交换消息:客户端在生成好会话密钥之后,会将该会话密钥通过一个密钥交换消息发送给服务器。
客户端还会附加一些其他的信息,用以进行密钥协商。
6. 服务器解密会话密钥:服务器在接收到密钥交换消息后,会使用自己的私钥对加密的会话密钥进行解密,从而得到客户端生成的会话密钥。
HTTPS原理的握手过程
HTTPS原理的握手过程在网络通信中,HTTPS(Hypertext Transfer Protocol Secure)是一种安全的传输协议,用于保护数据的完整性和隐私。
它通过使用SSL (Secure Sockets Layer)或TLS(Transport Layer Security)协议,在客户端和服务器之间建立安全的加密连接。
而HTTPS的加密过程中涉及到握手过程,本文将介绍HTTPS握手过程的原理。
HTTPS握手过程的原理如下:1. 客户端向服务器发出连接请求,请求建立HTTPS连接。
2. 服务器收到连接请求后,返回服务器证书给客户端。
服务器证书包含了公钥和其它相关信息。
3. 客户端收到服务器证书后,首先会验证证书的合法性和有效性。
验证的过程包括查看证书是否过期、是否被撤销,以及验证证书颁发机构的可信度等。
4. 客户端生成一个随机数,称为"Pre-master secret",并使用服务器证书中的公钥对其进行加密。
然后,将加密后的"Pre-master secret"发送给服务器。
5. 服务器使用私钥对接收到的加密的"Pre-master secret"进行解密,得到"Pre-master secret"。
6. 客户端和服务器根据预定的加密算法,分别使用"Pre-master secret"、客户端和服务器随机生成的数字称为"Client Random"和"Server Random",计算出一个对称加密密钥,称为"Master Secret"。
7. 客户端和服务器使用"Master Secret"对之后的通信进行加密和解密。
8. 握手过程完成后,客户端向服务器发送加密后的请求,服务器接收到请求后进行解密并处理。
HTTPS原理中的握手过程
HTTPS原理中的握手过程在网络通信中,HTTPS是一种通过加密和身份验证保护数据传输的通信协议。
它基于HTTP协议,并使用TLS/SSL协议进行加密。
而在HTTPS协议中,握手过程是确保通信安全性的重要步骤之一。
一、基本概念1. SSL/TLS协议SSL(Secure Sockets Layer,安全套接字层)和TLS(Transport Layer Security,传输层安全)协议是用于保护网络通信的协议。
SSL是TLS的前身,TLS是对SSL进行了改进和升级。
2. 握手过程握手过程用于建立通信的安全性。
在HTTPS通信中,客户端和服务器通过握手过程来协商加密算法、创建加密密钥,并进行身份验证。
二、握手过程的具体步骤1. 客户端发起握手请求客户端向服务器发送一个握手请求,表明它希望与服务器建立安全连接。
2. 服务器回应握手请求服务器收到客户端的握手请求后,发送一个回应,包含服务器证书、支持的加密算法和其它相关信息。
3. 客户端验证服务器证书客户端接收到服务器回应后,首先会验证服务器证书的有效性。
这包括通过证书链验证证书的颁发机构是否可信,并检查证书的有效期。
4. 客户端生成用于加密的密钥客户端验证服务器证书无误后,开始生成用于加密通信的对称密钥。
这个密钥将在后续的通信中被使用。
5. 客户端将密钥进行加密,并发送给服务器客户端使用服务器的公钥对生成的密钥进行加密,然后将加密后的密钥发送给服务器。
6. 服务器解密并获取密钥服务器收到客户端发送的加密密钥后,使用自己的私钥进行解密,得到用于加密通信的对称密钥。
7. 握手完成,通信加密握手过程完成后,双方使用握手阶段协商好的对称密钥进行加密通信,保证了数据在传输过程中的安全性。
三、握手过程的安全性保障1. 证书验证客户端通过验证服务器证书的有效性,确保通信的对方是合法的服务器,防止中间人攻击。
2. 密钥交换客户端和服务器通过公钥加密和私钥解密的方式安全地交换密钥,保证了密钥在传输过程中不被窃取。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
https握手与密钥协商过程https握手与密钥协商过程基于RSA 握手和密钥交换的客户端验证服务器为示例详解握手过程。
1.client_hello客户端发起请求,以明文传输请求信息,包含版本信息,加密套件候选列表,压缩算法候选列表,随机数,扩展字段等信息,相关信息如下:支持的最高TSL协议版本version,从低到高依次SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2,当前基本不再使用低于TLSv1 的版本;客户端支持的加密套件cipher suites 列表,每个加密套件对应前面TLS 原理中的四个功能的组合:认证算法Au (身份验证)、密钥交换算法KeyExchange(密钥协商)、对称加密算法Enc (信息加密)和信息摘要Mac(完整性校验);支持的压缩算法compression methods 列表,用于后续的信息压缩传输;随机数random_C,用于后续的密钥的生成;扩展字段extensions,支持协议与算法的相关参数以及其它辅助信息等,常见的SNI 就属于扩展字段,后续单独讨论该字段作用。
2.server_hello+server_certificate+sever_hello_done(a) server_hello, 服务端返回协商的信息结果,包括选择使用的协议版本version,选择的加密套件cipher suite,选择的压缩算法compression method、随机数random_S等,其中随机数用于后续的密钥协商;(b)server_certificates, 服务器端配置对应的证书链,用于身份验证与密钥交换;(c) server_hello_done,通知客户端server_hello 信息发送结束;3.证书校验客户端验证证书的合法性,如果验证通过才会进行后续通信,否则根据错误情况不同做出提示和操作,合法性验证包括如下:证书链的可信性trusted certificate path,方法如前文所述;证书是否吊销revocation,有两类方式离线CRL 与在线OCSP,不同的客户端行为会不同;有效期expiry date,证书是否在有效时间范围;域名domain,核查证书域名是否与当前的访问域名匹配,匹配规则后续分析;4.client_key_exchange+change_cipher_spec+encrypted_handshake_message(a) client_key_exchange,合法性验证通过之后,客户端计算产生随机数字Pre-master,并用证书公钥加密,发送给服务器;(b) 此时客户端已经获取全部的计算协商密钥需要的信息:两个明文随机数random_C 和random_S 与自己计算产生的Pre-master,计算得到协商密钥;enc_key=Fuc(random_C, random_S, Pre-Master)(c) change_cipher_spec(交换_密码_模式),客户端通知服务器后续的通信都采用协商的通信密钥和加密算法进行加密通信;(d) encrypted_handshake_message(加密握手消息),结合之前所有通信参数的hash 值与其它相关信息生成一段数据,采用协商密钥session secret 与算法进行加密,然后发送给服务器用于数据与握手验证;5.change_cipher_spec+encrypted_handshake_message(a) 服务器用私钥解密加密的Pre-master 数据,基于之前交换的两个明文随机数random_C 和random_S,计算得到协商密钥:enc_key=Fuc(random_C, random_S, Pre-Master);(b) 计算之前所有接收信息的hash 值,然后解密客户端发送的encrypted_handshake_message,验证数据和密钥正确性;(c) change_cipher_spec, 验证通过之后,服务器同样发送change_cipher_spec 以告知客户端后续的通信都采用协商的密钥与算法进行加密通信(d) encrypted_handshake_message, 服务器也结合所有当前的通信参数信息生成一段数据并采用协商密钥session secret 与算法加密并发送到客户端;6.握手结束客户端计算所有接收信息的hash 值,并采用协商密钥解密encrypted_handshake_message,验证服务器发送的数据和密钥,验证通过则握手完成;7.加密通信开始使用协商密钥与算法进行加密通信。
注意:(a) 服务器也可以要求验证客户端,即双向认证,可以在过程2要发送client_certificate_request 信息,客户端在过程4中先发送client_certificate与certificate_verify_message 信息,证书的验证方式基本相同,certificate_verify_message 是采用client的私钥加密的一段基于已经协商的通信信息得到数据,服务器可以采用对应的公钥解密并验证;(b) 根据使用的密钥交换算法的不同,如ECC 等,协商细节略有不同,总体相似;(c) sever key exchange 的作用是server certificate 没有携带足够的信息时,发送给客户端以计算pre-master,如基于DH 的证书,公钥不被证书中包含,需要单独发送;(d) change cipher spec 实际可用于通知对端改版当前使用的加密通信方式,当前没有深入解析;(e) alter message 用于指明在握手或通信过程中的状态改变或错误信息,一般告警信息触发条件是连接关闭,收到不合法的信息,信息解密失败,用户取消操作等,收到告警信息之后,通信会被断开或者由接收方决定是否断开连接。
会话缓存握手过程为了加快建立握手的速度,减少协议带来的性能降低和资源消耗(具体分析在后文),TLS 协议有两类会话缓存机制:会话标识session ID 与会话记录session ticket。
session ID 由服务器端支持,协议中的标准字段,因此基本所有服务器都支持,服务器端保存会话ID以及协商的通信信息,Nginx 中1M 内存约可以保存4000个session ID 机器相关信息,占用服务器资源较多;session ticket 需要服务器和客户端都支持,属于一个扩展字段,支持范围约60%(无可靠统计与来源),将协商的通信信息加密之后发送给客户端保存,密钥只有服务器知道,占用服务器资源很少。
二者对比,主要是保存协商信息的位置与方式不同,类似与http 中的session 与cookie。
二者都存在的情况下,(nginx 实现)优先使用session_ticket。
握手过程如下图:注意:虽然握手过程有1.5个来回,但是最后客户端向服务器发送的第一条应用数据不需要等待服务器返回的信息,因此握手延时是1*RTT。
1.会话标识session ID(a) 如果客户端和服务器之间曾经建立了连接,服务器会在握手成功后返回session ID,并保存对应的通信参数在服务器中;(b) 如果客户端再次需要和该服务器建立连接,则在client_hello 中session ID 中携带记录的信息,发送给服务器;(c) 服务器根据收到的session ID 检索缓存记录,如果没有检索到货缓存过期,则按照正常的握手过程进行;(d) 如果检索到对应的缓存记录,则返回change_cipher_spec 与encrypted_handshake_message 信息,两个信息作用类似,encrypted_handshake_message 是到当前的通信参数与master_secret的hash 值;(f) 如果客户端能够验证通过服务器加密数据,则客户端同样发送change_cipher_spec 与encrypted_handshake_message 信息;(g) 服务器验证数据通过,则握手建立成功,开始进行正常的加密数据通信。
2.会话记录session ticket(a)如果客户端和服务器之间曾经建立了连接,服务器会在new_session_ticket 数据中携带加密的session_ticket 信息,客户端保存;(b) 如果客户端再次需要和该服务器建立连接,则在client_hello 中扩展字段session_ticket 中携带加密信息,一起发送给服务器;(c) 服务器解密sesssion_ticket 数据,如果能够解密失败,则按照正常的握手过程进行;(d) 如果解密成功,则返回change_cipher_spec 与encrypted_handshake_message 信息,两个信息作用与session ID 中类似;(f) 如果客户端能够验证通过服务器加密数据,则客户端同样发送change_cipher_spec与encrypted_handshake_message 信息;(g) 服务器验证数据通过,则握手建立成功,开始进行正常的加密数据通信。
重建连接重建连接renegotiation 即放弃正在使用的TLS 连接,从新进行身份认证和密钥协商的过程,特点是不需要断开当前的数据传输就可以重新身份认证、更新密钥或算法,因此服务器端存储和缓存的信息都可以保持。
客户端和服务器都能够发起重建连接的过程,当前windows 2000 & XP 与SSL 2.0不支持。
1.服务器重建连接服务器端重建连接一般情况是客户端访问受保护的数据时发生。
基本过程如下:(a) 客户端和服务器之间建立了有效TLS 连接并通信;(b) 客户端访问受保护的信息;(c)服务器端返回hello_request 信息;(d) 客户端收到hello_request 信息之后发送client_hello 信息,开始重新建立连接。
2.客户端重建连接客户端重建连接一般是为了更新通信密钥。
(a) 客户端和服务器之间建立了有效TLS 连接并通信;(b) 客户端需要更新密钥,主动发出client_hello 信息;(c) 服务器端收到client_hello 信息之后无法立即识别出该信息非应用数据,因此会提交给下一步处理,处理完之后会返回通知该信息为要求重建连接;(d) 在确定重建连接之前,服务器不会立即停止向客户端发送数据,可能恰好同时或有缓存数据需要发送给客户端,但是客户端不会再发送任何信息给服务器;(e) 服务器识别出重建连接请求之后,发送server_hello 信息至客户端;(f) 客户端也同样无法立即判断出该信息非应用数据,同样提交给下一步处理,处理之后会返回通知该信息为要求重建连接;(g) 客户端和服务器开始新的重建连接的过程。