zoukankan      html  css  js  c++  java
  • TLS1.3 握手过程特性的整理

    1、密码协商

      TLS协议中,密码协商的过程中Client在ClientHello中提供四种option

        第一:client 支持的加密套件列表,密码套件里面中能出现Client支持的AEAD算法或者HKDF哈希对,

       第二:  Supported_group 的扩展和 Key_share的 扩展,其中Supported_groups这个扩展表明了Client支持的(EC)DHE group 而 key_share 扩展表明了Client包含一些或者全部(EC)DHE共享。

       第三: signature_agrorithms 签名算法和 signature_algorithms_cert这个扩展展示了具体的签名算法   signature_algorithms 这个扩展展示了Client可以支持哪些签名算法,signature_algorithms_cert这个扩展展示了具体的证书签名算法

      第四: pre_shared_key 预共享秘钥和 pre_key_exchange_modes扩展,预共享秘钥扩展包含了Client可以识别的堆成秘钥标识 , psk_key_exchange_modes扩展表明了可能可以和psk一起使用的的秘钥交换模式。

     2、TLS协议中的两大主要组成部分

    握手协议:

      握手协议主要处理通信双方之间认证的所有流程,包括秘钥协商,参数协商、建立共享秘钥。握手洗衣被设计用来抵抗篡改,如果连接未受到攻击,则活动攻击者不应该强制对方协商不同的参数

    记录协议:

      使用有握手协议建立的参数来保护通信双方的流量,记录协议将流量分成一系列的记录,美衣伊阁记录独立的使用秘钥保护机密性

    3、TLS1.3 支持的基本秘钥交换模式

          (EC)DHE 基于有限域或椭圆曲线的Diffe-Hellman、     PSK-only    、PSK with(EC)DHE

    4、下面是TLS1.3 握手协议的过程

      Client                                           Server

    Key  ^ ClientHello
    Exch | + key_share*
         | + signature_algorithms*
         | + psk_key_exchange_modes*
         v + pre_shared_key*       -------->
                                                      ServerHello  ^ Key
                                                     + key_share*  | Exch
                                                + pre_shared_key*  v
                                            {EncryptedExtensions}  ^  Server
                                            {CertificateRequest*}  v  Params
                                                   {Certificate*}  ^
                                             {CertificateVerify*}  | Auth
                                                       {Finished}  v
                                   <--------  [Application Data*]
         ^ {Certificate*}
    Auth | {CertificateVerify*}
         v {Finished}              -------->
           [Application Data]      <------->  [Application Data]

     +表示在以前标注的消息中发送的值得注意扩展

    *表示 可选的或者依赖一定条件的消息/扩展 ,不总是发送

    () 表示消息从 Client-early-traffic_serect 导出的秘钥保护  

    {} 表示使用一个[sender]handshake_traffic-serect 导出的秘钥保护

    []表示消息使用 [sender]_application_trafic_serect_N导出的秘钥保护

       握手可以被认为是三个阶段:

         第一个阶段是 :   秘钥交换---- 建立共享秘钥数据并选择密码参数,在这个阶段之后所有的数据都会被加密,

         第二个阶段:   server参数  : 建立其他的握手参数 (Client是否被认证, 应用层协议支持等)

         第三个阶段  : 认证Server (并选择性的认证Client  )提供秘钥确认和握手的完整性

         

  • 相关阅读:
    mac下面xcode+ndk7配置cocos2dx & box2d的跨ios和android平台的游戏教程
    如何在macox下面配置集成ios和android游戏教程
    Cocos2d-x win7 + vs2010 配置图文详解(亲测)
    cocos2d-x学习资源汇总(持续更新。。。)
    我常用的iphone开发学习网站[原创]
    「C」关键字、标识符、注释、内存分析、数据、常量、变量
    「Foundation」集合
    「Foundation」字符串
    「Foundation」结构体
    「OC」block 和 protocol
  • 原文地址:https://www.cnblogs.com/xinxianquan/p/11065852.html
Copyright © 2011-2022 走看看