`

SSL工作流程,握手过程

    博客分类:
  • ssl
 
阅读更多

SSL协议的工作流程

      服务器认证阶段:1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;4)服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。
      用户认证阶段:在此之前,服务器已经通过了客户认证,这一阶段主要完成对客户的认证。经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证。
      从SSL 协议所提供的服务及其工作流程可以看出,SSL协议运行的基础是商家对消费者信息保密的承诺,这就有利于商家而不利于消费者。在电子商务初级阶段,由于运作电子商务的企业大多是信誉较高的大公司,因此这问题还没有充分暴露出来。但随着电子商务的发展,各中小型公司也参与进来,这样在电子支付过程中的单一认证问题就越来越突出。虽然在SSL3.0中通过数字签名和数字证书可实现浏览器和Web服务器双方的身份验证,但是SSL协议仍存在一些问题,比如,只能提供交易中客户与服务器间的双方认证,在涉及多方的电子交易中,SSL协议并不能协调各方间的安全传输和信任关系。在这种情况下,Visa和 MasterCard两大信用卡公组织制定了SET协议,为网上信用卡支付提供了全球性的标准。

SSL协议的握手过程   

      为了便于更好的认识和理解 SSL 协议,这里着重介绍 SSL 协议的握手协议。SSL 协议既用到了公钥加密技术(非对称加密)又用到了对称加密技术,SSL对传输内容的加密是采用的对称加密,然后对对称加密的密钥使用公钥进行非对称加密。这样做的好处是,对称加密技术比公钥加密技术的速度快,可用来加密较大的传输内容, 公钥加密技术相对较慢,提供了更好的身份认证技术,可用来加密对称加密过程使用的密钥。
      SSL 的握手协议非常有效的让客户和服务器之间完成相互之间的身份认证,其主要过程如下:
  ①客户端的浏览器向服务器传送客户端 SSL 协议的版本号,加密算法的种类,产生的随机数,以及其他服务器和客户端之间通讯所需要的各种信息。

  ②服务器向客户端传送 SSL 协议的版本号,加密算法的种类,随机数以及其他相关信息,同时服务器还将向客户端传送自己的证书。

  ③客户利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是否过期,发行服务器证书的 CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,通讯将断开;如果合法性验证通过,将继续进行第四步。

  ④用户端随机产生一个用于后面通讯的“对称密码”,然后用服务器的公钥(服务器的公钥从步骤②中的服务器的证书中获得)对其加密,然后将加密后的“预主密码”传给服务器。

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

  ⑥如果服务器要求客户的身份认证,服务器必须检验客户证书和签名随机数的合法性,具体的合法性验证过程包括:客户的证书使用日期是否有效,为客户提供证书的CA 是否可靠,发行CA 的公钥能否正确解开客户证书的发行 CA 的数字签名,检查客户的证书是否在证书废止列表(CRL)中。检验如果没有通过,通讯立刻中断;如果验证通过,服务器将用自己的私钥解开加密的“预主密码 ”,然后执行一系列步骤来产生主通讯密码(客户端也将通过同样的方法产生相同的主通讯密码)。

  ⑦服务器和客户端用相同的主密码即“通话密码”,一个对称密钥用于 SSL 协议的安全数据通讯的加解密通讯。同时在 SSL 通讯过程中还要完成数据通讯的完整性,防止数据通讯中的任何变化。

  ⑧客户端向服务器端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知服务器客户端的握手过程结束。

  ⑨服务器向客户端发出信息,指明后面的数据通讯将使用的步骤⑦中的主密码为对称密钥,同时通知客户端服务器端的握手过程结束。
  ⑩SSL 的握手部分结束,SSL 安全通道的数据通讯开始,客户和服务器开始使用相同的对称密钥进行数据通讯,同时进行通讯完整性的检验。

双向认证 SSL 协议的具体过程

  ① 浏览器发送一个连接请求给安全服务器。

  ② 服务器将自己的证书,以及同证书相关的信息发送给客户浏览器。

  ③ 客户浏览器检查服务器送过来的证书是否是由自己信赖的 CA 中心所签发的。如果是,就继续执行协议;如果不是,客户浏览器就给客户一个警告消息:警告客户这个证书不是可以信赖的,询问客户是否需要继续。

  ④ 接着客户浏览器比较证书里的消息,例如域名和公钥,与服务器刚刚发送的相关消息是否一致,如果是一致的,客户浏览器认可这个服务器的合法身份。

  ⑤ 服务器要求客户发送客户自己的证书。收到后,服务器验证客户的证书,如果没有通过验证,拒绝连接;如果通过验证,服务器获得用户的公钥。

  ⑥ 客户浏览器告诉服务器自己所能够支持的通讯对称密码方案。

  ⑦ 服务器从客户发送过来的密码方案中,选择一种加密程度最高的密码方案,用客户的公钥加过密后通知浏览器。

  ⑧ 浏览器针对这个密码方案,选择一个通话密钥,接着用服务器的公钥加过密后发送给服务器。

  ⑨ 服务器接收到浏览器送过来的消息,用自己的私钥解密,获得通话密钥。

  ⑩ 服务器、浏览器接下来的通讯都是用对称密码方案,对称密钥是加过密的。

  上面所述的是双向认证 SSL 协议的具体通讯过程,这种情况要求服务器和用户双方都有证书。单向认证 SSL 协议不需要客户拥有 CA 证书,具体的过程相对于上面的步骤,只需将服务器端验证客户证书的过程去掉,以及在协商对称密码方案,对称通话密钥时,服务器发送给客户的是没有加过密的(这并不影响 SSL 过程的安全性)密码方案。这样,双方具体的通讯内容,就是加过密的数据,如果有第三方攻击,获得的只是加密的数据,第三方要获得有用的信息,就需要对加密的数据进行解密,这时候的安全就依赖于密码方案的安全。而幸运的是,目前所用的密码方案,只要通讯密钥长度足够的长,就足够的安全。这也是我们强调要求使用 128 位加密通讯的原因。

分享到:
评论

相关推荐

    SSL交互和握手过程

    ### SSL交互和握手过程详解 #### 一、概述 安全套接层(Secure Sockets Layer,简称SSL)是一种用于在互联网上提供安全通信的技术。它主要用于保护网站与用户之间的数据传输,确保敏感信息如信用卡号和个人信息等...

    ssl握手协议

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

    SSL握手协议的研究

    全流程握手是SSL连接建立的完整过程,适用于客户端和服务器首次建立连接的情况。这一过程主要包括以下几个步骤: 1. **Client Hello**:客户端发送一个Client Hello消息,包含它支持的最高SSL/TLS版本、随机数、...

    ssl通讯流程

    在实际应用中,`web安全通信.vsd`可能是一个Visio绘图文件,它可能详细展示了SSL通讯流程的各个步骤,包括上述的握手过程、密钥交换和加密通讯等环节,帮助理解SSL协议的工作原理。通过这样的图形化工具,开发者可以...

    ssl 详解过程交互

    SSL协议的工作流程主要包括以下几个步骤: 1. 握手阶段:客户端与服务器互相发送握手信息,包括版本信息、加密套件列表、随机数等,以便协商共同支持的加密算法和协议版本。 2. 证书交换:服务器发送其数字证书,...

    ssl 协议简介 原理 过程

    #### 四、SSL协议的工作流程 1. **握手阶段:** 客户端与服务器通过握手协议交换证书、协商加密算法和密钥等信息,确保双方使用相同的加密算法和密钥进行后续通信。 2. **密钥交换:** 双方基于协商好的算法生成...

    Android SSL证书验证原理

    2. **SSL握手与验证**:握手过程中涉及的类较多,每个类都扮演着特定的角色。例如,`OpenSSLSocketImpl`负责与OpenSSL库交互,而`SSLSession`则负责存储握手的结果。特别地,身份验证是由`checkServerTrusted`函数...

    Qt实现的SSL通信客户端和服务器

    4. 执行SSL握手过程,验证服务器的证书。 5. 安全地读写数据。 在提供的文件中,"sslserver"可能是一个实现了SSL服务器的示例代码,"securesocketclient"可能是SSL客户端的代码。"sslcert"文件可能包含了服务器的...

    SSL&TLS协议簇加解密流程

    SSL/TLS协议的加解密流程确保了数据在传输过程中的安全,防止中间人攻击和其他类型的网络安全威胁。同时,它的灵活性允许适应不断变化的安全需求和技术发展,例如支持新的加密算法和更强的密钥交换机制。然而,随着...

    安全套接字SSL协议的工作原理

    SSL协议的工作流程包括三个主要部分:握手协议、记录协议和警报协议。握手协议负责初始化安全连接,包括交换证书、协商加密算法和建立会话密钥。记录协议则负责将应用层的数据分割成块,进行加密和MAC(Message ...

    SSL服务器 客户端

    在这个主题中,我们将深入探讨SSL服务器和客户端的工作原理,以及SSL握手过程。 1. **SSL服务器**:服务器是提供Web服务的一方,通常是一个Web服务器如Apache或Nginx。SSL服务器负责提供数字证书,该证书包含服务器...

    ssl_java.zip

    6. 在`SSLSocket`上开启握手过程,这会执行SSL的完整握手流程,包括证书交换。 在实际应用中,可能还需要考虑证书过期、证书链验证等问题,以及处理可能出现的SSL异常。例如,`CertificateException`、`...

    ssl_tls协议RFC5246文档_ssl_ssl标准文档_

    在SSL/TLS协议的工作流程中,首先进行握手过程。这个过程包括以下步骤: 1. 客户端发起连接请求,向服务器发送“ClientHello”消息,其中包含支持的协议版本、加密套件和随机数。 2. 服务器回应“ServerHello”消息...

    SSL加密技术学习总结

    总结来说,SSL加密技术是现代互联网安全的基础,它通过证书、加密算法和安全握手过程确保了数据的安全传输。了解并掌握SSL/TLS的工作原理和最佳实践,对于维护网络安全至关重要。在日常网络应用中,正确配置和使用...

    SSL_handshake_with_two_way_authentication_with_certificates

    在传统的SSL/TLS握手过程中,通常只有服务器会提供证书以证明自己的身份,而客户端则不会进行类似的验证。但在某些高安全性要求的应用场景下,比如银行系统或者企业内部网络,往往会采用双向认证的方式增强安全性。 ...

    VC工程,ssl通讯socket,服务端和客户端,简单易懂。

    在本文中,我们将深入探讨如何使用Visual C++(VC)进行SSL通信,主要基于OpenSSL库来实现Socket服务器和...这个过程涉及了SSL的握手协议、证书管理和Socket编程,对于理解和实现安全的网络应用具有重要的实践价值。

    Java中SSLSocket应用教程和代码

    - **握手过程**:建立连接时,客户端和服务器会进行SSL握手,其中包括证书交换、加密算法协商等步骤。 - **数据传输**:握手完成后,双方就可以通过加密的通道交换数据了。 - **关闭连接**:当通信结束时,双方会...

    SSL证书在线生成系统源码

    SSL证书在线生成系统源码是实现网站安全的重要工具,它基于公钥基础设施(PKI)原理,用于在互联网上建立安全的...对于开发者来说,理解这些知识点并熟悉系统的工作流程,将有助于构建或优化自己的SSL证书管理平台。

    ssl.zip_ssl_ssl linux

    这份“SSL安全协议(中文版).doc”文档将深入解析SSL的工作流程和关键技术,对于学习和实施SSL通信安全具有很高的参考价值。通过阅读和学习这份文档,你可以更好地理解如何保护网络通信,避免数据泄露,确保用户隐私...

    SSL高级编程程序源代码

    6. `SSL_accept()` 或 `SSL_connect()`:执行握手过程。 7. `SSL_read()` 和 `SSL_write()`:读取和写入加密的数据。 8. `SSL_shutdown()`:终止SSL连接。 通过分析和学习这些源代码,你可以深入理解SSL协议的内部...

Global site tag (gtag.js) - Google Analytics