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  (可选)

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

TLS1.3 认证和秘钥建立握手环节的分析的更多相关文章

  1. 《基于Scyther的秘钥建立协议设计》-------摘抄整理

    本篇论文额主要创新点:   利用Scyther软件,通过对一个不安全的秘钥建立协议逐步添加并验证安全属性,最终建立一个安全的秘钥建立协议. 通过形式化分析软件设计秘钥建立协议课可以提高协议设计效率,减 ...

  2. TLS握手秘钥套件分析

    1.为了弄清楚TLS1.3的内部结构,觉得有必要将TLS的整个结构从新整理一遍,方便后续在做握手协议的形式化分析的时候能够不遗漏每个加密和认证的的环节. TLS1.3不论文在协议内容上还是性能上都较之 ...

  3. ssh的秘钥认证

    ssh秘钥认证简述 通常我们会使用x-shell.putty.MobaXterm等支持ssh连接的工具去登录服务器进行管理,而执行ssh命令.scp命令等从一台服务器登录另外一台服务器的时候,通常需要 ...

  4. 克隆虚拟机+Linux互相登录+秘钥认证(四)

    1.虚拟机右键管理_克隆 修改虚拟机名称后完成! 2.开机启动虚拟机 随时保存快照 3.开启两台虚拟机,进行互相登录切换!(W命令查看系统负载) 补充: IP登录: ssh IP: 例如:ssh 19 ...

  5. Linux ssh服务开启秘钥和密码认证

    问题描述: 实现Linux秘钥和密码同时认证 解决方案: vim /etc/ssh/sshd_config 基本参数: PermitRootLogin yes #允许root认证登录 Password ...

  6. 云主机使用ansible出现秘钥认证问题

    使用ansible的时候,出现如下秘钥失效的问题: root@jumpserver ftp]# ansible web -m ping The authenticity of host 'web-00 ...

  7. VMware 12 与Centos 7建立共享文件夹 && vmware 15 pro过期激活秘钥

    1 vmware 15pro评估过期 网上找到的激活秘钥,激活密钥: YG5H2-ANZ0H-M8ERY-TXZZZ-YKRV8(亲试有效)UG5J2-0ME12-M89WY-NPWXX-WQH88U ...

  8. https的秘钥公钥以及之间的会话流程

      一 共享秘钥 1.1 概念 共享秘钥和我们生活中同一把锁的钥匙概念类似,对同一把锁来说,加锁时使用什么钥匙,解锁也必须使用同样的钥匙. 1.2 共享秘钥在HTTP传输中的缺点 以共享密钥方式加密时 ...

  9. SSH设置秘钥登录

    设置 SSH 通过密钥登录 我们一般使用 PuTTY 等 SSH 客户端来远程管理 Linux 服务器.但是,一般的密码方式登录,容易有密码被暴力破解的问题.所以,一般我们会将 SSH 的端口设置为默 ...

随机推荐

  1. bootstrap 自带字体颜色

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. Slf4j与log4j及log4j2、logbak的关系及使用方法

    Slf4j与log4j及log4j2的关系及使用方法 slf4j slf4j仅仅是一个为Java程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就比如JDBC一样,只是一种规则而已,所以单独 ...

  3. win10安装MySQL 8

    下载并解压MySQL Server(官方有MySQL Installer 8.0.13,但是我安装没有成功) 将MySQL Server的bin目录加入到系统变量Path中. 找一个my.ini文件放 ...

  4. linux如何查看mysql是否启动

    linux下有很多服务,今天就写一下如何查看服务是否启动,以mysql为例子 使用命令 # service mysqld status 或者 # service mysql status 命令来查看m ...

  5. 第七章 云原生生态的基石 Kubernetes

    7.1 Kubernetes架构 K8s的核心组件: etcd: 协同存储,负责保存整个集群的状态. API:资源操作的唯一入口. controller manager: 维护集群的状态,执行故障检测 ...

  6. 2019暑期北航培训—预培训作业-IDE的安装与初步使用(Visual Studio版)

    这个作业属于那个课程 2019北航软件工程暑期师资培训 这个作业要求在哪里 预培训-IDE的安装与初步使用(Visual Studio版) 我在这个课程的目标是 提高自身实际项目实践能力,掌握帮助学生 ...

  7. C++ 获取系统当前时间(日历时)

    获取系统当前时间(日历时) //Linux & C++11 #include <chrono> #include <ctime> using namespace std ...

  8. PAT(B) 1069 微博转发抽奖(Java)

    题目链接:1069 微博转发抽奖 (20 point(s)) 题目描述 小明 PAT 考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔 N 个人就发出一个红包.请你编写程序帮助他确 ...

  9. Docker 学习笔记(三):数据、网络、系统权限、docker-compose

    一.Docker 数据管理 Docker 持久化数据有两种方式: 使用数据卷:更安全,和主机耦合度低 将主机的目录挂载到容器中:更方便,主机和容器可以很方便地交换数据. 数据卷相关的命令: docke ...

  10. 火狐浏览器 访问所有HTTPS网站显示连接不安全解决办法

    当 Firefox 连接到一个安全的网站时(网址最开始为“https://”),它必须确认该网站出具的证书有效且使用足够高的加密强度.如果证书无法通过验证,或加密强度过低,Firefox 会中止连接到 ...