最近在看公司的SSL协议实现,现将其流程总结如下:
步骤解释如下:
1.
client -> ClientHello
-> server。
(1). ClientHello
消息体 = Client.Version
(客户端协议版本)+ClientHello.Timestamp(
客户端时间戳)
+ClientHello.Random
(客户端随机数)+会话sessionID
+CipherSpecs
(client支持的算法集)+Certificate.SerialNumber(
服务器证书序列号)。
2.
server -> ServerHello
-> client。
(1).
server创建会话session ID
,缓存ClientHello.Timestamp
与ClientHello.Random
,根据CipherSpecs
的支持加密集合和server
自己支持的加密集合选择本次会话的加密算法集CipherSuite
。
(2).ServerHello
消息体 = Server.Version(
服务器协议版本号)
+ServerHello.Timestamp
(服务器时间戳)+ServerHello.Random(
服务器随机数)
+sessionID
(服务器会话)+CipherSuite
(本次会话指定的加密算法)+ServerCertificate(
服务器公钥证书)
。
(3).如要验证client身份,发送CertificateRequest
。
3.
client -> ClientKeyExchange
-> server
(1). client缓存ServerRNS(服务器随机数)
、ServerCertificate(服务器证书)
+sessionID
(服务器会话)+CipherSuite
(本次会话指定的加密算法集)
,生成客户端随机数(ClientRNC)。
(2). 用
客户端协议版本号+
随机数
生成客户端预主密钥premaster secret [PMS
],
使用
服务器证书公钥
加密 (PMS
+
ServerRNC
}
。
(3). 如果服务器发送CertificateRequest
按顺序连接,使用客户端的私钥签名,在CertificateVerify
中发送这个签名。
(4). 发送ChangeCipherSpec
声明切换到加密信道传输
。
(5). 用(PMS,ServerRNS,ClientRNC)计算客户端主密钥master secret[MS
]
,生用MS成信道验证的Finished
消息。将Finished
之前发出的和接收到消息(不包括Finished
本身)的二进制数据,按照顺序连接后,使用MS
做PRF
签名。
4.
server ->
ChangeCipherSpec
-> client
(1).
server使用私钥解密并取出{PMS
,RNC}
。使用PMS
、RNC
、RNS
计算MS
。
(2).
生成服务器的预主密钥premaster secret2 [PMS2
]
。使用PMS2
、RNC
、RNS
生成服务器主密钥master
secret2 [MS2
]
,在会话中保存MS2
作为传输密钥。
(3).
如果有ClientCertificate
,验证相关信息。验证客户端的Finished
信息。如果错误,返回标准失败信息。
(4).
生成服务器的Finished
,将Finished
之前发出的和接收到消息(不包括Finished
本身)的二进制数据,按照顺序连接后,使用MS
做PRF
签名。
(5).
回传客户端消息 = ServerKeyExchange[用MS对称加密(PMS2)]
+确认加密算法集ChangeCipherSpec
+发送自己的Finished
消息。
5.
client收到server信息后:
(1).
验证服务器的Finished
消息。如失败,切断当前连接。
(2).
根据协商好的对称加密算法,使用本地保存的MS
解ServerKeyExchange
。使用PMS2
、RNC
、RNS
生成MS2
作为session
密钥。在缓存中保存RNS2
。
- 大小: 97.5 KB
分享到:
相关推荐
TLS/SSL 协议流程可以分为三个阶段:握手协议、记录协议和警报协议。 握手协议 握手协议是 TLS/SSL 协议的第一阶段,该阶段的主要目的是建立加密通道。在握手协议阶段,客户端和服务器之间将交换一些必要的信息,...
### SSL协议与SET协议分析 #### 一、SSL协议详解 ##### 1.1 SSL协议概述 SSL(Secure Socket Layer)安全套接层协议是由Netscape公司在1994年设计并推出的加密协议,旨在为互联网上的数据传输提供安全保护。SSL...
SSL协议的工作流程包括三个主要部分:握手协议、记录协议和警报协议。握手协议负责初始化安全连接,包括交换证书、协商加密算法和建立会话密钥。记录协议则负责将应用层的数据分割成块,进行加密和MAC(Message ...
SSL/TLS协议的核心流程包括以下几个步骤: 1. **Client Hello**:客户端向服务器发送Hello消息,包含随机数(用于后续密钥生成)、支持的加密算法和压缩方法等信息。 2. **Server Hello**:服务器回应Hello消息,...
#### 四、SSL协议的工作流程 1. **握手阶段:** 客户端与服务器通过握手协议交换证书、协商加密算法和密钥等信息,确保双方使用相同的加密算法和密钥进行后续通信。 2. **密钥交换:** 双方基于协商好的算法生成...
SSL 握手协议 SSL 握手协议是 SSL 协议的核心组件之一,它负责客户端和服务器之间的身份认证和加密通信。在 SSL 握手协议中,客户端和服务器之间进行了多次交互,以确保身份认证和加密通信的安全性。 SSL 握手协议...
SSL V3.0是SSL协议的第三个版本,发布于1996年,其设计目标包括建立安全连接、保证互操作性和可扩展性,并尽可能提高效率。 SSL协议主要由两层构成: 1. **SSL记录层协议**:这是SSL协议的基础,它负责对高层协议...
SSL协议的工作流程包括服务器认证阶段和用户认证阶段,这两个阶段确保了双方身份的真实性。然而,SSL协议存在的问题在于它只提供双方认证,对于多方电子交易场景下的安全性和信任关系协调不足。为解决这个问题,SET...
本文将深入探讨SSL/TLS协议的核心概念、工作流程以及其在RFC5246中的规定。 SSL/TLS协议的主要目标是提供数据的机密性、完整性和身份验证。它通过使用公钥基础设施(PKI)和数字证书来实现这些目标。PKI允许用户...
SSL(Secure Sockets Layer)协议是互联网上广泛使用的安全协议,用于在客户端和服务器之间建立安全的通信...尽管翻译可能存在不准确之处,但基本概念和流程仍能清晰传达,对于研究和实现SSL协议的人员具有一定的价值。
SSL协议流程包括握手阶段,其中涉及证书交换、密钥协商等步骤,确保双方的身份验证和通信安全。SSL协议在电子商务中广泛应用于HTTPS,为在线支付提供安全保障。 SET(安全电子交易)协议是针对信用卡在线支付设计的...
SSL协议流程包括握手阶段,双方协商加密算法,验证服务器身份,并建立共享的秘密,这个秘密用于后续的对称加密通信,以提高效率。 SET协议则是针对信用卡在线支付设计的,旨在提供比SSL更高的安全级别。SET协议不仅...
【SSL协议的工作流程】 SSL协议的建立通常包含以下六个步骤: 1. **连接建立**:客户端向服务器发送一个随机的“hello”消息,包含客户端支持的SSL版本和加密算法列表。 2. **密码交换**:服务器回应并选择一个...
SSL协议包含握手协议、记录协议、密钥交换协议等多个子协议,其中握手协议用于建立安全连接,记录协议则处理实际的数据传输。 在Qt中,实现SSL通信主要依赖于`QTcpSocket`和`QSslSocket`类。`QTcpSocket`是基础的...
实验过程中,学生将深入理解SSL协议的工作流程,掌握数字证书的申请、颁发、安装和管理,以及Web服务器的SSL配置。这有助于提高他们对网络安全和隐私保护的认识,对于IT行业的实际操作技能培养具有重要意义。
SSL协议由两部分子协议组成:SSL握手协议和SSL记录协议。SSL的主要目标是提供数据的私密性、确认性和可靠性,确保在网络传输过程中的数据安全。 7.1 SSL协议概述 SSL协议的位置在应用层和传输层之间,主要负责在...
SSL协议由两部分组成:SSL握手协议和SSL记录协议。 **7.1 SSL协议概述** SSL协议在互联网的七层模型中工作于会话层,其目的是为网络通信创建一个安全的通道。这个通道具备私密性、确认性和可靠性三个特点,确保数据...