SSL 握手协议详解

RSA作为身份认证,ECDHE来交换加密密钥,AES/DES等作为加密。

如果RSA来加解密,那么身份认证后,直接用认证后的RSA公钥解密。不需要再额外交换加密密钥了。

相关报文:


报文类型


参数


hello_request



client_hello


版本、随机数、会话ID、密文族、压缩方法


server_hello


版本、随机数、会话ID、密文族、压缩方法


certificate


x.509V3证书链


server_key_exchange


参数、签名


certificate_request


类型、授权


server_done



certificate_verify


签名


client_key_exchange


参数、签名


finished


Hash值

A. 安全能力交换

建立的安全属性包括:协议版本、会话ID、密文族、压缩方法,同时生成并交换用于防止重放攻击的随机数。密文族参数包括密钥交换方法(Deffie-Hellman密钥交换算法、基于RSA的密钥交换和另一种实现在Fortezza chip上的密钥交换)、加密算法(AES,3DES、RC4、RC2、3DES等)、MAC算法(MD5或SHA-1)、加密类型(流或分组)等内容。

重放攻击(Replay Attacks)又称重播攻击、回放攻击或新鲜性攻击(FreshnessAttacks),是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。说白了就是黑客C在通信线路上进行信号采集,比如A发往B的。然后,黑客C将监听到的信息,再次发往B,这时B以为是A发过来的,所以就会误认为是A在和其进行通信。如果这些通信过程中,涉及到了账户信息,隐私,交易,黑客就会得到得到这些内容。

防止重放攻击:随机数是为了防止重放攻击。要求通信双方必须事先协商一个初始序列号,并协商递增方法,一般随机数。通信双方通过消息中的序列号来判断消息的新鲜性。并且通过以下带时间戳的提问与应答的方式。

(1.)  客户机向服务器发送client_hello报文,带随机数。SSL 客户端通过 Client Hello 消息将它支持的 SSL 版本、加密算法、密钥交换算法、MAC算法等信息发送给 SSL服务器。

(2.)  服务器向客户机回应server_hello报文带随机数。SSL 服务器发送服务端支持的 SSL 版本和加密套件,并通过 Server Hello消息通知给 SSL 客户端。

client:我想和你说悄悄话,我会的密钥交换算法有(ECDH,RSA等),加密算法有(AES,3DES、RC4、RC2、3DES等),摘要算法/MAC有(SHA,MD5)等。

Server:好的啊。我会的是这些。

Client hello 的内容

Server hello

B. 身份认证过程

(3.)在hello报文之后,如果服务器需要被认证,服务器通过SendCertificate将发送其证书

(4.)客户端需要检查以下内容来完成对服务器的认证来得到服务器域名和公钥等:

时间是否在证书的合法期限内;

签发证书的机关是否客户端信任的;

签发证书的公钥是否符合签发者的数字签名;

证书中的服务器域名是否符合服务器自己真正的域名。

(5.)服务器要求客户端发送客户端自己的证书,Certificate Request。客户端发送自己的证书。ResponseCertificate.

(6.)收到后,服务器验证客户的证书来得到客户端的域名和公钥等,如果没有通过则结束。如第4步

Server:这是我的身份证书(里面有我的名字和公钥),你检查下啊(certificate )。暂时不需要重新请求客户证书,不过我也要确认是是否你(一般不确认)。

Client:这是我的签名,证书等,你检查下。

B.  (加密算法确定)和密钥交换

如果加密算法采用RSA,那么不需要交换密钥了。如果是其他的,如AES,3DES等必须交换密钥。这个时候密钥交换一般是ECDHE等。以ECDHE为例子。

这个阶段是否还需要交换加密算法,我不确定。或许在第一阶段就确定了加密算法。假设加密算法是AES.

(7.)客户端生成一个随机数来生成PMS(Pre-master secret), 譬如ECDHE的A=a*G。并且用(8.) 服务端的RSA公钥加密传给服务端,服务端也生成一个随机数b,于是主密钥b*a*G。

(9.)服务端生成一个b来生成PMS(Pre-master secret) 譬如ECDHE的B=b*G。并且用客户端的RSA公钥加密传给客户端.

(10.)客户端收到B后,用自己的随机数a*B = a*b*G 得到主密钥。

Client:我们的暗号规则确定

Server:定为江湖规则1吧

Client:用这个(生成的随机数)去找到暗号的密码本吧

Server:生成随机数,发给客户端去找到暗号密码本

各自认证通过。

C.       握手结束,开始数据通信

Client:我给你发暗号了

Server:我给你会暗号了。

时间: 2024-09-29 00:52:56

SSL 握手协议详解的相关文章

SSL/TLS 协议详解

SSL(Secure Sockets Layer,安全套接层),及其继任者 TLS(Transport Layer Security,传输层安全)是为网络通信提供安全及数据完整性的一种安全协议.TLS与SSL在传输层对网络连接进行加密. 为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听. SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持.SSL协议可分为两层: 

SSL/TLS协议详解

   SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层.SSL通过互相认证.使用数字签名确保完整性.使用加密确保私密性,以实现客户端和服务器之间的安全通讯.该协议由两层组成:SSL记录协议和SSL握手协议. TLS:(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性.该协议由两层组成:TLS记录协议和TLS握手协议. SSL (Secure Socket La

SSL握手过程详解

转载自http://xeseo.blog.163.com/blog/static/5632431620132843532672/ 1. 客户端发送一个Hello消息给服务器,该消息包含以下参数: * 客户端支持的SSL的版本列表 * 客户端所支持的加密算法列表 * 随机数 ClientHello.random 2.1 服务器端回应一个Hello消息给客户端,该消息包含以下内容: * 握手期间使用的SSL的版本 * 握手期间将使用的密钥交换算法 (Deffie-Hellman算法,基于RSA的密钥

https SSL协议详解(转)

https协议详解 SSL (Secure Socket Layer) HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 https协议详解      HTTPS以保密为目标研发,简单讲是HTTP的安全版.其安全基础是SSL协议,因此加密的详细内容请看SSL.全称Hypertext Transfer Protocol over Secure Socket Layer.       它是一个URI scheme,句法类同http:体系.它使用了H

(转)HTTP协议详解

HTTP协议详解 一.概念 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器. HTTP协议,即超文本传输协议(Hypertext transfer protocol).是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议. HTTP协议是用于从WWW服务器传输超文本到本地

SSL/TLS 原理详解

本文大部分整理自网络,相关文章请见文后参考. SSL/TLS作为一种互联网安全加密技术,原理较为复杂,枯燥而无味,我也是试图理解之后重新整理,尽量做到层次清晰.正文开始. 1. SSL/TLS概览 1.1 整体结构 SSL是一个介于HTTP协议与TCP之间的一个可选层,其位置大致如下: tls-ssl-_tcp-ip_protocol.png SSL:(Secure Socket Layer,安全套接字层),为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(En

SSL/TLS原理详解与WCF中的WS-Security

SSL/TLS作为一种互联网安全加密技术 1. SSL/TLS概览 1.1 整体结构 SSL是一个介于HTTP协议与TCP之间的一个可选层,其位置大致如下: SSL:(Secure Socket Layer,安全套接字层),为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会被截取.当前版本为3.0.它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输.SSL协议位于TCP/IP协议与各种应

DHCP协议详解

DHCP协议详解 定义:DHCP(Dynamic Host Configuration Protocol)动态主机配置协议,主要作用是为局域网内的主机自动分配IP地址.DCHP工作在应用层,是BOOTP(Bootscrap Protocol)的一种扩展,使用UDP协议进行运输,UDP67和UDP68端口分别作为DHCPServer和DHCP Client的服务端口.DHCP协议内容在RFC2131中定义,而DHCP Options在RFC2132中定义. DHCP的4次握手 测试方法:为了抓到D

HTTP协议详解以及URL具体访问过程

1.简介 1.1.HTTP协议是什么? 即超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准.从网络参考模型来看,它是属于应用层.它规定了计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器. 简单的来说,它就是基于应用层一个规范一个标准!通讯双发都需要遵守这一准则,这就是http协议! 1.2.http简史