close

SSL

协议实现过程分析

 

一、

 

SSL

协议基本介绍

 

安全套接层(

Secure Sockets Layer

SSL

)是网景公司(

Netscape

)在推出

Web

浏览器首版的同时,提出的协议。

SSL

采用公开密钥技术,保证两个应用间

通信的保密性和可靠性,

使客户与服务器应用之间的通信不被攻击者窃听。

可在

服务器和客户机两端同时实现支持,目前已成为互联网上保密通讯的工业标准,

现行

Web

浏览器亦普遍将

Http

SSL

相结合,从而实现安全通信。此协议和其

继任者传输层安全(

Transport Layer Security

TLS

)是为网络通信提供安全及数

据完整性的一种安全协议。

TLS

SSL

在传输层对网络连接进行加密。

 

打开

Internet 

选项可以看到使用的

SSL3.0 

TLS1.0 TLS1.1 TLS1.2

协议。

 

 

 

二、

 

SSL

协议工作流程

 

 

(

)

 

SSL

建立握手连接目的

 

 

1.

 

身份的验证,

client

server

确认对方是它相连接的,

而不是第三方冒充

的,通过证书实现。

 

 

2.

 

client

server

交换

session 

key

,用于连接后数据的传输加密和

hash

验。

 

 

(

)

 

简单的

SSL

握手连接过程

 

(

Server

端交换证书给

client)

 

1.

 

client

发送

Client Hello

,指定版本,随机数

(RN)

,所有支持的密码套件

(Cipher 

Suites)

 

2.

 

server

回应

Server Hello

,指定版本,

RN

,选择

Cipher Suites

,会话

ID(Session 

ID) 

,发送

Certificate 

Server Hello Done

 

 

3.

 

Client

发送

Client Key Exchange

,用于与

server

交换

session key 

 

4.

 

Client

发送

Change Cipher Spec

指示

Server

从现在开始发送的消息都是加密

过的

 

 

5.

 

Client

发送

Finished

,包含了前面所有握手消息的

hash

,可以让

server

验证

握手过程是否被第三方篡改

 

 

6.

 

Server

发送

Change Cipher Spec

指示

Client

从现在开始发送的消息都是加密

过的。

 

7.

 

Server

发送

Finished

,包含了前面所有握手消息的

hash

,可以让

client

验证

握手过程是否被第三方篡改,并且证明自己是

Certificate

密钥的拥有者,即

证明自己的身份

 

 

三、

 

抓包分析

 

下面从抓包数据来具体分析这一过程并说明各部分数据的作用以及如实现

前面列出的握手的目标。

 

(

)

 

client

发送

Client Hello

 

 

 

 

每一条消息都会包含有

Content Type,Version,Handshake Type

等信息。

 

 

Content 

Type

指示

SSL

通信处于哪个阶段,是握手

(Handshake)

,开始加密传输

(Change Cipher Spec)

还是正常通信

(Application)

等,我小组成员查阅相关资料,查

到下表:

 

 

 

Hex 

Dec 

Type 

0x14 

20 

Change Cipher Spec 

0x15 

21 

Alert 

0x16 

22 

Handshake 

0x17 

 

23 

Application 

 

Version

TLS

的版本,见下表

 

 

Major Version 

Minor Version 

Version Type 

SSLv3 

TLS 1.0 

 

TLS 1.1 

TLS 1.2 

 

Handshake Type

是在

handshanke

阶段中的具体哪一步,见下表:

 

(例如:从下表可以看出

Handshake Type

Code

01

,就是处于

ClientHello

阶段)

 

 

Code 

Description 

HelloRequest 

ClientHello 

ServerHello 

11 

Certificate 

12 

erverKeyExchange 

13 

CertificateRequest 

14 

ServerHelloDone 

15 

CertificateVerify 

16 

ClientKeyExchange 

20 

Finished 

 

 

ClientHello

附带的数据随机数据

RN

会在生成

session key

时使用,

Cipher suite

列出了

client

支持的所有加密算法组合,可以看出每一组包含

3

种算法,一个是

非对称算法,

RSA

一个是对称算法如

DES

3DES

RC4

等,

一个是

Hash

算法,

MD5

SHA

等,

server

会从这些算法组合中选取一组,作为本次

SSL

连接中使

用。

 

(

)

 

server

回应

Server Hello

 

 

 

 

server

3

handshake 

:Serverhello

Certificate

ServerHelloDone3.server

发送

Certificate 

 

 

 

 

 

 

server

的证书信息,

只包含

public key

server

将该

public key

对应的

private key

保存好,用于证明

server

是该证书的实际拥有者,验证方法是:

client

 
 
 

随机生成

 
 
 
 
arrow
arrow
    全站熱搜

    丘猴子 發表在 痞客邦 留言(0) 人氣()