`
xcxinghai
  • 浏览: 33829 次
  • 性别: 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/TLS协议中的一种身份验证机制,用于确保客户端和服务器之间的通信安全。本文将详细介绍SSL双向认证握手过程的每个步骤,并解释相关的数据结构和加密算法。 第一...

    ssl握手协议

    5. 如果服务器要求客户的身份认证(在握手过程中为可选),用户可以建立一个随机数然后对其进行数据签名,将这个含有签名的随机数和客户自己的证书以及加密过的“预主密码”一起传给服务器。 6. 如果服务器要求客户...

    SSL握手过程实例分析

    SSL握手过程实例分析 SSL(Secure Sockets Layer)是一种...SSL握手过程是SSL协议中最重要的一部分,通过对SSL握手过程的深入分析,我们可以更好地理解SSL协议的工作机理,并且可以更好地应用SSL协议在实际项目中。

    SSL交互和握手过程

    SSL握手过程是SSL/TLS协议的核心部分,它不仅协商加密算法、密钥等安全设置,还确保了数据传输的安全性。通过上述详细的步骤解释,我们可以了解到整个握手过程是如何确保通信双方在未受干扰的情况下建立安全连接的。...

    SSL协议详解.pdf

    1. **握手过程**: - 客户端发送ClientHello消息,其中包含客户端支持的SSL版本、加密算法等信息。 - 服务器响应ServerHello消息,选择双方都可以支持的最佳加密方案。 - 服务器发送证书消息,向客户端证明自己的...

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

    为了提高性能,TLS/SSL协议支持会话缓存。当客户端和服务器再次连接时,如果发现之前的会话存在于会话缓存中,可以跳过部分握手步骤,直接使用之前协商的密钥和参数,显著减少握手时间。 3. 重建连接 重建连接主要...

    SSL握手协议的研究

    在Java中,JSSE(Java Secure Socket Extension)提供了实现SSL协议的框架。开发者可以利用JSSE提供的API来处理SSL连接的创建和管理,包括自定义SSL上下文、信任管理器和密钥管理器等。例如,将USB Key融入JSSE,...

    JAVA实现SSL协议

    SSL协议由握手协议、记录协议、密码套件、证书和变更密码规格等组成,确保了数据的完整性和机密性。 **二、Java SSL包使用** 在Java中,`javax.net.ssl`包提供了实现SSL通信的核心类和接口,如`SSLSocketFactory`、...

    openssl实现ssl握手调试工具

    SSL握手是SSL协议的核心部分,它确保了客户端与服务器之间的安全连接建立。本教程将深入探讨如何使用开源工具OpenSSL来实现SSL握手调试,以及制作数字证书和进行加解密操作。 首先,OpenSSL是一个强大的安全套接层/...

    SSL协议详解

    总结,SSL协议是网络安全的重要组成部分,它通过复杂的握手过程和加密技术保障了数据的隐私和完整性。然而,随着技术的发展,SSL协议也面临着不断出现的新挑战,因此持续的安全评估和更新至关重要。

    ssl 协议简介 原理 过程

    ### SSL协议概述与原理 #### 一、SSL协议背景与演变 安全套接层(Secure Sockets Layer,简称SSL)是由网景公司(Netscape)于20世纪90年代初开发的一种网络安全协议。随着互联网的发展,尤其是电子商务的兴起,...

    SSL协议与SET协议分析

    5. **完成握手**:双方确认握手过程完成,并开始使用协商好的加密方式进行数据传输。 #### 二、SET协议解析 ##### 2.1 SET协议概述 SET(Secure Electronic Transaction)安全电子交易协议是由VISA和MasterCard两...

    论文研究-基于SSL协议的可信应用及实现.pdf

    在该论文中,作者分析了SSL协议在握手阶段的信任问题,并提出了在SSL握手过程中引入信任协商机制。该机制旨在解决因证书认证不足或不正确而引起的安全隐患。通过信任协商,可以在SSL握手阶段,更加灵活地验证参与...

    SSL的通信工作过程

    总的来说,SSL协议通过复杂的握手过程确保了通信双方的身份认证、密钥协商以及数据加密,从而提供了一个安全的通信环境,保护了用户的隐私和敏感信息。对于开发者来说,理解和掌握SSL的通信过程对于构建安全的网络...

    SSL协议的分析与应用

    3. **消息完整性**:通过使用散列函数,SSL协议可以检查数据在传输过程中的完整性,确保数据未被篡改。 4. **双向认证**(可选):除了服务器认证之外,SSL还支持客户端认证,这在某些需要高度安全性的场景中非常...

    SSL安全协议(中文版).zip

    3. **密钥交换**:在SSL握手过程中,通过公钥基础设施(PKI)实现安全的密钥交换。RSA等非对称加密算法用于在不安全的通道上安全地交换对称密钥。 4. **防止重放攻击**:SSL协议使用序列号和时间戳来防止数据包被...

    SSL连接建立过程分析

    建立 SSL 新连接是指应用程序与服务器之间建立新的 SSL 连接,包括与服务器握手、交换证书等过程。SSL 通信是指在 SSL 连接建立后,应用程序与服务器之间的安全数据传输过程。SSL 释放是指应用程序在结束 SSL 连接时...

    SSL协议的分析及实现

    ### SSL协议的分析及实现 #### 一、SSL协议简介 SSL(Secure Sockets Layer),即安全套接层协议,是一种用于确保客户端与服务器间通信安全的协议。自推出以来,SSL得到了广泛的采用,尤其是在保障Web安全方面发挥...

    TLS/SSL协议文档,简单易懂

    TLS/SSL 协议流程可以分为三个阶段:握手协议、记录协议和警报协议。 握手协议 握手协议是 TLS/SSL 协议的第一阶段,该阶段的主要目的是建立加密通道。在握手协议阶段,客户端和服务器之间将交换一些必要的信息,...

Global site tag (gtag.js) - Google Analytics