zoukankan      html  css  js  c++  java
  • TLS1.3 认证和秘钥建立握手环节的分析

    1、ClientHello 中的参数

    ClientHello---{   Random_C 、extension }   在 extension中的扩展中包含 ( supported_version 、 supported_groups、 signatureschemlist、key_shared )

     2、服务器接收到之后需要选择支持的最高版本协议,秘钥分发算法和选择的公钥,加密签名算法、以及random_S、session_id 回复 serverHello,算出自己前主秘钥,紧接着使用自己选择的加密方式加密发送一个 Encryption_Extension报文,接着服务器加密发送CA证书与数字签名,然后等待客户端的回复 Finished

    3、客户端收到服务器的 SeverHello报文之后,计算前主秘钥,解密接下来收到的文件,验证其正确性,如果存在问题,发送警告报文,然后终端此次握手。重新建立握手,如果正确加密发送Finished 报文,之后可以发送加密的数据报文。

    4、服务器计算主秘钥,收到Finished报文之后,加密发送Finished 报文,然后握手成功,可以选择新的会话 tickets报文 

    第二部分:

    对TLS 1.3的RCF文档部分重新进行整一遍

     1.2 Major Difference from TLS1.2

          传统的加密算法被精简了,剩下的都是有关认证加密的关联

        客户端和服务端,服务读研收到客户端的ClientHello之后,响应客户端发送ServerHello ,如果选择(EC)DHE 秘钥建立方法,ServerHello包含 “key_share”的扩展  但是如果选择的是PSK秘钥建立ServerHello中包含“pre_shared_key”扩展,表明客户端提供的PSKs被选择,注意实现方式可以同时选择 ( EC)DHE 和 PSK两种方式。当选择两种方式的时候两个扩展都应该包括

    握手协议的作用:

         握手协议的作用是协议安全参数的连接,握手消息提供给记录层,

    第三部分:

    TLS1.3的握手优化

        Client发送 ClientHello , extension中携带支持的椭圆曲线类型,且对自己支持的椭圆曲线类型计算公钥(POINT),公钥放在extension中的 keyshare中

        Server端回复 ServerHello和 certificate等,server选择的椭圆曲线参数,然后乘以椭圆曲线的base point得到公钥 (POINT),然后提取CLientHEllo中的key_share拓展中对应的公钥,计算主密钥。公钥(POINT)放在ServerHEllo的key_share扩展中。Client收到Server的公钥(POINT)之后计算主密钥。

    第四部分:  TLS1.3的全握手

    1、client发送CLientHello  携带的信息如下:

    •      支持的加密套件 (和TLS1.2版本的信息是一样的)
    •      support_versions扩展。包含自己支持的TLS协议版本号(TLS1.2没有)
    •      support_group扩展,表示自己支持的椭圆曲线类型
    •      key_share 扩展,包含Support_group中各椭圆曲线对应的 public key,key_share中的椭圆曲线必须出现在support_group中。(TLS1.2中没有)

    2、Server发送SeverHello 携带信息如下:

           support_version 扩展,包含自己从Client的Support_version中选择的TLS协议的版本号,(之前TLS1.2没有)

           key_share扩展,包含自己选中的椭圆曲线,以及自己计算出来的公钥(之前TLS1.2没有)

    3、Sever 发送 Change cipher Spec (允许不发送,在这一步中我们直接不做处理)

    4、Server端发送 Encrypted  Extension (加密)

        ServerHello 之后必须立刻发送  Encryption Extension ,这是第一个被加密的数据,和秘钥协商没有关系(之前TLS1.2没有)

    5、Server端发送 Certificate(加密)

        这个报文和之前的协议没有太大的差别,唯一的是证书链中的每个证书后面都有一个 extension(双向认证)

    6、server端发送certificate verify(加密)

            certificate verify 生成的额逻辑是当前所有的握手报文解析签名

    7、Server端回复Finished (加密)

    8、客户端发送 Change Cipher Spec (允许不发送 ,在实验中我们不添加这一步)

    9、Client发送加密的Finished

    10、Server 发送 new Session  Ticket  (可选)

     其实上面的说法还是不够,全面,后续还要对参与的参数等 从新分析   之后开始对协议形式化的分析 。所以现在还是卡在这部分的分析上面 

      

  • 相关阅读:
    英语中的一个月几天的表示法
    深圳梧桐山游记
    linux中创建文件和文件夹
    linux中~和/的区别
    linux中的--和-的区别
    linux中vi和vim的区别
    基本数据类型大小和范围
    洛谷 [AHOI2001]质数和分解
    codevs 1115 开心的金明--01背包
    codevs 1080 线段树练习--用树状数组做的
  • 原文地址:https://www.cnblogs.com/xinxianquan/p/11094384.html
Copyright © 2011-2022 走看看