跳到主文
部落格全站分類:職場甘苦
SSL
协议实现过程分析
一、
协议基本介绍
安全套接层(
Secure Sockets Layer
,
)是网景公司(
Netscape
)在推出
Web
浏览器首版的同时,提出的协议。
采用公开密钥技术,保证两个应用间
通信的保密性和可靠性,
使客户与服务器应用之间的通信不被攻击者窃听。
可在
服务器和客户机两端同时实现支持,目前已成为互联网上保密通讯的工业标准,
现行
浏览器亦普遍将
Http
和
相结合,从而实现安全通信。此协议和其
继任者传输层安全(
Transport Layer Security
TLS
)是为网络通信提供安全及数
据完整性的一种安全协议。
与
在传输层对网络连接进行加密。
打开
Internet
选项可以看到使用的
SSL3.0
TLS1.0 TLS1.1 TLS1.2
协议。
二、
协议工作流程
(
一
)
建立握手连接目的
1.
身份的验证,
client
server
确认对方是它相连接的,
而不是第三方冒充
的,通过证书实现。
2.
交换
session
key
,用于连接后数据的传输加密和
hash
校
验。
二
简单的
握手连接过程
仅
Server
端交换证书给
client)
:
发送
Client Hello
,指定版本,随机数
(RN)
,所有支持的密码套件
(Cipher
Suites)
。
回应
Server Hello
,指定版本,
RN
,选择
Cipher Suites
,会话
ID(Session
ID)
,发送
Certificate
Server Hello Done
3.
Client
Client Key Exchange
,用于与
session key
4.
Change Cipher Spec
指示
从现在开始发送的消息都是加密
过的
5.
Finished
,包含了前面所有握手消息的
,可以让
验证
握手过程是否被第三方篡改
6.
过的。
7.
握手过程是否被第三方篡改,并且证明自己是
密钥的拥有者,即
证明自己的身份
三、
抓包分析
下面从抓包数据来具体分析这一过程并说明各部分数据的作用以及如实现
前面列出的握手的目标。
每一条消息都会包含有
Content Type,Version,Handshake Type
等信息。
Content
Type
通信处于哪个阶段,是握手
(Handshake)
,开始加密传输
(Change Cipher Spec)
还是正常通信
(Application)
等,我小组成员查阅相关资料,查
到下表:
Hex
Dec
0x14
20
0x15
21
Alert
0x16
22
Handshake
0x17
23
Application
Version
是
的版本,见下表
Major Version
Minor Version
Version Type
3
0
SSLv3
1
TLS 1.0
2
TLS 1.1
TLS 1.2
Handshake Type
是在
handshanke
阶段中的具体哪一步,见下表:
(例如:从下表可以看出
的
Code
为
01
,就是处于
ClientHello
阶段)
Description
HelloRequest
ServerHello
11
12
erverKeyExchange
13
CertificateRequest
14
ServerHelloDone
15
CertificateVerify
16
ClientKeyExchange
附带的数据随机数据
会在生成
时使用,
Cipher suite
列出了
支持的所有加密算法组合,可以看出每一组包含
种算法,一个是
非对称算法,
如
RSA
一个是对称算法如
DES
3DES
RC4
等,
一个是
Hash
算法,
MD5
SHA
会从这些算法组合中选取一组,作为本次
连接中使
用。
共
发
送
了
个
handshake
消
息
:Serverhello
ServerHelloDone3.server
的证书信息,
只包含
public key
将该
对应的
private key
保存好,用于证明
是该证书的实际拥有者,验证方法是:
随机生成
轉貼部落格
丘猴子 發表在 痞客邦 留言(0) 人氣()