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  )提供秘钥确认和握手的完整性

     

猜你喜欢

转载自www.cnblogs.com/xinxianquan/p/11065852.html