`
xcxinghai
  • 浏览: 31717 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

SSL协议的握手过程

阅读更多

 

 
 

SSL-Security

SSL握手的目的

第一,客户端与服务器需要就一组用于保护数据的算法达成一致。

第二,它们需要确立一组由那些算法所使用的加密密钥。

第三,握手还可以选择对客户端进行认证。

SSL 握手概述

 1111111

SSL 握手概述

(1)客户端将它所支持的算法列表连同一个密钥产生过程用作输入的随机数发送给服务器。

(2)服务器根据从列表的内容中选择一种加密算法,并将其连同一份包含服务器公用密钥的证书发回给客户端。该证书还包含了用于认证目的的服务器标识,服务器同时还提供了一个作为密钥产生过程部分输入的随机数。

(3)客户端对服务器的证书进行验证,并抽取服务器的公用密钥。然后,再产生一个称做pre_master_secret 的随机密码串,并使用服务器的公用密钥对其进行加密。最后,客户端将加密后的信息发送给服务器。

(4)客户端与服务器端根据pre_master_secret 以及客户端与服务器的随机数值独立计算出加密和MAC 密钥。

(5)客户端将所有握手消息的MAC 值发送给服务器。

(6)服务器将所有握手消息的MAC 值发送给客户端。

那么,该过程达到了怎样的效果呢?

还记得我们的两个目标是什么吗?

第一个目标,就一组算法达成一致。确立一组加密密钥。第一和第二步实现了第一个目标。客户端告诉服务器它所支持的算法,而服务器选择其中的一种算法。当客户端收到了服务器在第二步所发的消息时,它也会知道这种算法,所以双方现在就都知道要使用什么算法了。

第二个目标,确立一组加密密钥是通过第二和第三步来实现的。在第2 步服务器向客户端提供其证书,这样就可以允许客户端给服务器传送密码。经过第3 步后,客户端与服务器端就都知道了pre_master_secret。客户端知道pre_master_secret 是因为这是它产生的,而服务器则是通过解密而得到pre_master_secret 的。注意,第3步是握手过程中的关键一步。所有要被保护的数据都依赖于pre_master_secret的安全。

原理非常简单:客户端使用服务器的公用密钥(从证书中抽取的)来加密共享密钥,而服务器使用其私用密钥对共享密钥进行解密。握手的剩余步骤主要用于确保这种交换过程的安全进行。然后在第4步,客户端与服务器分别使用相同的密钥导出函数(key derivationfunction,KDF)来产生master_secret,最后再次通过KDF 使用master_secret来产生加密密钥。

第 5 与第6 步用以防止握手本身遭受篡改。设想一个攻击者想要控制客户端与服务器所使用的算法。客户端提供多种算法的情况相当常见,某些强度弱而某些强度强,以便能够与仅支持弱强度算法的服务器进行通信。攻击者可以删除客户端在第1步所提供的所有高强度算法,于是就迫使服务器选择一种弱强度的算法。第5步与第6 步的MAC交换就能阻止这种攻击,因为客户端的MAC 是根据原始消息计算得出的,而服务器的MAC是根据攻击者修改过的消息计算得出的,这样经过检查就会发现不匹配。由于客户端与服务器所提供的随机数为密钥产生过程的输入,所以握手不会受到重放攻击的影响。这些消息是首个在新的加密算法与密钥下加密的消息。

因此,在此过程结束时,客户端与服务器已就使用的加密算法达成一致,并拥有了一组与那些算法一起使用的密钥。更重要的是,它们可以确信攻击者没有干扰握手过程,所以磋商过程反映了双方的真实意图。

 

握手消息

 22222

SSL 握手消息

第 1 步对应一条单一的握手消息,ClientHello。

第 2 步对应一系列SSL 握手消息,服务器发送的第一条件消息为ServerHello,其中包含了它所选择的算法,接着再在Certificate 消息中发送其证书。最后,服务器发送ServerHelloDone 消息以表示这一握手阶段的完成。需要ServerHelloDone 的原因是一些更为复杂的握手变种还要在Certificate 之后发送其他一些消息。当客户端接收到ServerHelloDone消息时,它就知道不会再有其他类似的消息过来了,于是就可以继续它这一方的握手。

第3步对应ClientKeyExchange 消息。

第5与第6 步对应Finished 消息。该消息是第一条使用刚刚磋商过的算法加以保护的消息。为了防止握手过程遭到篡改,该消息的内容是前一阶段所有握手消息的MAC值。然而,由于Finished 消息是以磋商好的算法加以保护的,所以也要与新磋商的MAC密钥一起计算消息本身的MAC 值。

对于想深入了解SSL协议的朋友,我向大家推荐《SSL与TLS.pdf》。

《SSL与TLS.pdf》

weixin

原创文章,转载请注明: 转载自成长的企鹅

本文链接地址: SSL协议的握手过程

关于我:成长的企鹅简介

 

分享到:
评论

相关推荐

    ssl握手协议

    为了便于更好的认识和理解SSL 协议,这里着重介绍SSL 协议的握手协议。介绍SSL协议双向认证的具体过程。

    SSL交互和握手过程

    SSL交互和握手过程 SSL消息按如下顺序发送: 1.Client Hello 客户发送服务器信息,包括它所支持的密码组。密码组中有密码算法和钥匙大小; 2.Server Hello 服务器选择客户和服务器都支持的密码组到客户。 3....

    HTTPS连接 解析 ssl

    详细介绍https连接的主要过程,ssl协议握手过程,解析传输数据

    SSL协议及其安全威胁分析

    SSL协议简介、握手过程、工作原理、及其面临的安全问题和安全威胁

    HTTPS协议详解(四):TLS:SSL握手过程1

    1、握手与密钥协商过程 2、会话缓存握手过程 3、重建连接

    SSL网络安全技术白皮书.docx

    协议安全机制 SSL协议实现的安全机制包括: 数据传输的机密性:利用对称密钥算法对传输的数据进行加密。 身份验证机制:基于证书利用数字签名方法对服务器和客户端进行身份验证,其中客户端的身份验证是可选的。 ...

    SSL_handshake_with_two_way_authentication_with_certificates

    HTTPS连接时,采用证书认证时的双向握手协议过程分析。

    网络安全协议(PPT-146页).pptx

    SMTP IP SSL TCP HTTP FTP 17 SSL协议—1 概况 SSL提供一个安全的"握手"来初始化一个TCP/IP连接 建立TCP"连接" SSL握手,建立SSL会话 完成客户端和服务器之间关于安全等级、密码算法、通信密钥的协商,以及执行对...

    用Wireshark简单分析HTTPS传输过程-抓包过程 - manjingliu的编程之旅 - CSDN博客1

    摘要视图订阅manjingliu的编程之旅在校学,认真学编程登录 | 注册登录 | 注册安全(38)76494次千里之外15篇221篇1篇1条三、开始监听htt

    wossl:OpenSSL对称算法、哈希校验、非对称算法、证书管理、SSL安全

    SSL检测:握手过程探测、协议/加密套件、SSL常见漏洞扫描。 开发环境: 基于Python2.7,具体依赖库请参考requirements或pip install -r requirements在线安装。 托管 官网: 码云: Github: 交流群:3

    面试:复习资料汇总

    SSL记录层协议(SSL记录协议)SSL握手协议(SSL握手协议)提供服务方和客户方相互认证 2.知识点总结 具体过程 双方协商SSL版本,加密算法,压缩算法 双方交换数字证书(认证过的公钥) 双方共识DH算法,分别产生...

    javasnmp源码-Interview-Notes:采访笔记

    握手3个包,ssl 握手9个包,一共12个包) - 默认端口:http 80,https 443 发散问题:ssl 怎么握手的? https 的加密过程 1. 客户端发起 HTTPS 请求 2. 服务端拿出配置好的一套 HTTPS 证书,(自己制作或组织申请) 3....

    网络安全简答题 2.docx

    14、什么是三次握手四次挥手?tcp为什么要三次.… 15、GET和POST的区别 16、Cookiesi和session区别 17、session的工作原理? 18、一次完整的HTTP请求过程 19、HTTPS和HTTP的区别 20、OS1的七层模型都有哪些? 21、...

    网络操作系统试卷及答案

    1.简述网络操作系统的主要特点? 2.为确保服务器的安全,写出Windows2003系统中推荐的安全审核事件?...3.在Web服务器的安全连接过程中,简述SSL握手协议的4个阶段? 4.什么是虚拟主机? 5.请简述DHCP的工作过程。

    TechnicalMap:Technical knowledge map 技术类知识相关图谱

    :handshake: 双向证书认证的SSL握手过程 SSL handshake with two way authentication with certificates :bar_chart: 数据结构与算法的时间/空间复杂度 Complexity of datastructure/algorithm :counterclockwise_...

    CCNA网络安全.doc

    A数据保密性 B 数据完整性 C访问控制服务 D 认证服务 填空题 2 安全套层SSL协议是在网络传输过程中,提供通信双方网络信息 保密性 和 可靠性 。由 SSL记录协议 和 SSL握手协议 两层组成。 4. P93 108 129 黑客...

    FEBlog:积累前端相关的文章,向高级前端出发

    使用wireSharp分析TLS握手过程 URI与URL傻傻分不清楚? Vue 简述VUE的响应式原理 抽丝剥茧般的阅读源码,将$nextTick()拉下神坛! 挖掘隐藏在源码中的Vue技巧! 分享:使用vue2.0开发移动端应用时遇到的坑与解决方法...

    详解HTTPS 的原理和 NodeJS 的实现

    握手流程 HTTPS链接的建立过程中涉及到服务器端证书、客户端证书(可选)、服务器端的非对称秘钥以及后续通信过程中使用的对称秘钥几个内容。 客户端对HTTPS的地址发出请求,并且将自己的SSL版本号等信息发送给...

    网络安全解答题.docx

    为了验证证书持有者是其合法用户(而不是冒名用户), SSL要求证书持有者在握手时相互交换数字证书,通过验证来保证对方身份的合法性。 宿舍里面机子可以上网,某台机子开机后不可以上互联网,但可以访问局域网共享资源...

    网络安全知识竞赛小测试--网络攻击技术.pdf

    一种病毒的名称 20、TCP SYN 泛洪攻击的原理是利用了( )[单选题] * A.TCP 三次握手过程(正确答案) B.TCP 面向流的工作机制 C.TCP 数据传输中的窗口技术 D.TCP 连接终止时的 FIN 报文 21、以下对 TCP 协议发起连接...

Global site tag (gtag.js) - Google Analytics