`
Jony.Hwong
  • 浏览: 116732 次
  • 来自: ...
社区版块
存档分类
最新评论

SSL 握手机制

阅读更多
都是些啥哦, 证书包含的是公钥, 私钥总是秘密的, 不会在网络上传播...

SSL 的握手过程通常是酱紫的, 可以看看RFC文档,写的很详细, 代码看 openssl , 应该算比较简单易懂, 自己写也不是非常麻烦...
1) Client->Server : ClientHello 通常包含这些东西..
  clientRand  : client 生成的随机数序列
  sessionID  : 用于session恢复的过程, 简化的SSL握手过程,在第一次的握手工程中服务器生成的..
  cipherSuiteList , CompressionMethodList : 客户端支持的加密算法和压缩算法列表

2) Server->Client :
    21) ServerHello : 通常包含这些东西..
    serverRand  : server 生成的随机数序列
    sessionID  : 如果 ClientHello.sessionID 在服务器端存在, 则服务器返回相同的 SessionID
                以提示这是一次简化的握手过程.
CipherSuite CompressionMethod : 服务器选择的加密算法和压缩算法

A: 不要求服务器鉴权的情况, 不能保证服务器是否伪装, 不安全, 现在可能很少遇到
  22) ServerKeyExchange 包含服务器公钥(没有证书)

  B: 要求服务器鉴权,不要求客户端证书的情况, 这种用的最多.
    22) Certificate : 服务器证书
  
  C: 要求服务器鉴权,要求客户端证书, 在安全性要求很高的场合使用, 比如网银啥的
    22) Certificate : 服务器证书
    23) CertificateRequest : 客户端证书请求
  
  2E) ServerHelloDone
  
3) Client->Server :
  A B )
    31) ClientKeyExchange    服务器公钥加密的 前主密文( PRE_MASTER_SECRET )
  C  )
    31) Certificate   客户端证书
    32) ClientKeyExchange 服务器公钥加密的 前主密文( PRE_MASTER_SECRET )
    33) CertificateVerify   客户端证书对之前握手数据的签名
  
  3E) Finish

4) Server->Client :
    41) ChangeCipherSpec  
    42) Finish

服务器用自己的私钥解密 ClientKeyExchange 中包含的加密的前主密文, 这样服务器和客户端就可以用相同的
参数( clientRand , serverRand , PRE_MASTER_SECRET ) 计算主密钥( MASTER_SECRET ) , 最后双方用同样的
算法对主密钥进行扩展(比如PRF啥的), 生成会话密钥( read_key , write_key , read_mac , write_mac )

session恢复,简化的握手过程:
1) Client->Server : ClientHello
2) Server->Client :
  21) ServerHello
  22) ChangeCipherSpec 密钥改变
  23) Finish
3) Client->Server
  31) ChangeCipherSpec
  32) Finish

客户端和服务器用相同的参数( ClientRand , ServerRand , 上次会话的主密钥 ) 计算此次会话的主密钥.
分享到:
评论

相关推荐

    openssl实现ssl握手调试工具

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

    wireshark ssl solution

    这个实验不仅要求学习者对Wireshark工具的操作有较为熟练的掌握,还要求对SSL握手机制有深入的理解。通过这种方式,学习者可以更全面地了解SSL协议是如何在实际网络环境中应用的,以及网络安全通信的具体实现细节。...

    SSL双向认证握手过程 非常详细

    SSL双向认证握手过程是SSL/TLS协议中的一种身份验证机制,用于确保客户端和服务器之间的通信安全。本文将详细介绍SSL双向认证握手过程的每个步骤,并解释相关的数据结构和加密算法。 第一步:ClientHello 在SSL...

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

    《HTTPS协议详解:TLS/SSL握手过程》 ...总结,TLS/SSL握手过程是HTTPS协议安全性的基础,通过复杂的协商和验证机制确保了通信的安全性。理解这一过程对于网络协议的分析和网络安全的维护具有重要意义。

    易语言SSL_Socket通信模块源码

    1. SSL握手:在源码中,可以看到SSL握手过程的实现,包括证书的交换、密钥的协商等。这些步骤是通过调用SSL库提供的API来完成的。 2. 数据传输:源码中定义了发送和接收数据的接口,这些接口会利用SSL库进行加密和...

    Android SSL证书验证原理

    本篇文章将深入探讨Android平台上的SSL证书验证原理,包括SSL证书交换流程、SSL握手与验证过程以及数字证书、公钥和密钥的管理。 #### 二、SSL证书交换流程 当Android应用尝试访问一个HTTPS站点时,会发起一个SSL...

    2018安卓面试题大全

    48. **HTTP协议与SSL握手机制** - HTTP是超文本传输协议,用于传输网页等文档。 - SSL/TLS协议用于加密数据传输,保障数据安全。 - 握手过程包括证书验证、密钥交换等步骤,确保双方建立安全连接。

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

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

    SSL工作原理详解

    1. **握手阶段**:客户端(如浏览器)和服务器端(如网站)之间建立连接时,会进行SSL握手。客户端首先向服务器发送一个“客户端握手消息”,包含支持的加密算法列表和随机数等信息。服务器回应“服务器握手消息”,...

    ssl客户端和服务端代码vc6

    服务器端代码则会涉及创建监听套接字、接受客户端连接、设置SSL上下文、加载本地证书和私钥、处理SSL握手请求以及处理客户端的加密数据等。 在VC6环境中,开发者需要熟悉Winsock编程接口,因为SSL是在TCP/IP之上...

    关于SSL和TLS的区别

    2. 安全机制:SSL 和 TLS 都使用加密技术来保护数据,但 TLSよりも安全。TLS 使用更强的加密算法和更好的密钥交换机制。 3. 认证机制:SSL 和 TLS 都支持服务器认证,但 TLS 也支持客户认证。TLS 的认证机制更加...

    SSL_handshake_with_two_way_authentication_with_certificates

    综上所述,双向认证下的SSL握手协议是一种更为严格的安全机制,它不仅要求服务器验证客户端的身份,也要求客户端验证服务器的身份,从而确保通信的安全性和可靠性。这种机制尤其适用于那些对安全性有极高要求的场景...

    实现Linux系统的SSL安全代理.pdf

    SSL记录协议定义了传输数据的格式,而SSL握手协议则利用SSL记录协议在服务器和客户端之间进行一系列的信息交换,以建立一个SSL加密的会话连接。 三、SSL协议的特点 SSL协议利用PKI技术架构,为网络传输安全提供了...

    ssl加密技术 方法 简介

    1. 握手协议:在通信开始前,客户端和服务器之间先进行SSL握手。这个过程包括互相交换SSL版本信息、加密算法选项、随机数,以及证书的交换。握手过程中,双方会协商出一个共享的秘密——会话密钥,用于后续的数据...

    ssl and tls essentials

    - SSL握手阶段:客户端和服务器通过交换信息来建立安全连接,包括版本号、加密算法列表、随机数等。 - 加密解密阶段:双方协商确定加密算法后,对数据进行加密传输。 - 会话密钥管理:为提高效率并确保安全性,...

    SSL双向认证

    SSL握手协议是SSL/TLS协议中的一项关键组件,它负责在客户端和服务器之间建立一个安全的连接。此过程涉及到一系列复杂的交互步骤,目的是为了确保双方能够达成一致的加密方式,并完成身份验证。 ##### 2.1 握手协议...

    用jsse定制SSL

    1. **减少握手次数**:通过Session Resumption或Session Caching,可以避免每次连接都进行完整的SSL握手,提高性能。 2. **选择合适的加密算法**:合理选择加密套件,平衡安全性与性能。 **七、HTTPS服务器配置** ...

    ssl.rar_openssl ssl通信_ssl

    6. **握手过程**:客户端和服务器通过`SSL_connect`(客户端)和`SSL_accept`(服务器)进行SSL握手。握手过程中会进行身份验证、协商加密算法等步骤,完成安全连接的建立。 7. **使用WSAAsyncSelect**:在Windows...

    linux网络编程之SSL.pdf

    SSL对象是通过SSL_accept函数创建的,这个函数负责执行SSL握手,建立加密通信。 在代码中,还使用了socketcreated、binded、beginlisten等打印语句,这些是程序的调试信息,帮助我们了解程序运行的状态。 最后,...

    SSL加密技术学习总结

    四、SSL加密机制 SSL采用非对称加密与对称加密相结合的方式。非对称加密用于密钥交换,对称加密用于数据传输。非对称加密速度较慢但安全性高,对称加密速度快但密钥分发困难,两者结合兼顾了效率和安全性。 五、...

Global site tag (gtag.js) - Google Analytics