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

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

原文地址:https://www.cnblogs.com/xinxianquan/p/11094384.html

时间: 2024-11-08 06:01:30

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

秘钥加密码的登录模式

应用场景:有时候我们要给远在北京或者国外的开发人员服务器的权限,为了保证服务器的安全性我们不想让他们知道服务器的root登陆密码,所以我们可以给他们用秘钥加密码的登陆模式. 原理:公钥加密 私钥解密.公钥和私钥是成对生成的,所以将私钥发给别人别人也能登陆 客户端ip:192.168.0.186 服务器ip:192.168.0.167 1.密钥认证的生成 [[email protected] .ssh]# ifconfig eth0 | awk  '/inet addr/{print }' ine

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

问题描述: 实现Linux秘钥和密码同时认证 解决方案: vim /etc/ssh/sshd_config 基本参数: PermitRootLogin yes #允许root认证登录 PasswordAuthentication yes #允许密码认证 RSAAuthentication yes #秘钥认证 PubkeyAuthentication yes 详细参数列表 [[email protected] ~]# cat /etc/ssh/sshd_config # $OpenBSD: ssh

利用OpenSSH实现基于秘钥的认证

利用OpenSSH实现基于秘钥的认证 SSH协议介绍:     SSH是Secure Shell的缩写,意思是安全的shell          目前版本有 ssh v1和ssh  v2:在目前工作中大多都使用ssh v2版,ssh  v1已经不安全,尽量不使用              ssh v1:基于CRC-----32做MAC(Message Authentication Code),不安全              ssh v2:基于双方主机的协商最安全的MAC的方式:基于DH算法做秘

openvpn 证书秘钥结合用户密码双重认证(1)服务器端设置

Openvpn 环境: 拓扑图: 出差人员win7 client 115.16.1.8/30 | 郑州站点------------互联网-------上海站点 内网:192.168.20.0   |         内网:192.168.10.0.24 | eth0 :   1.1.1.1/30 北京Open VPN(iptables) eth1:  192.168.0.1/24 | eth0:  192.168.0.100/24 公司内网 web server 希望屏幕前的你,能看懂O(∩_∩

openvpn 证书秘钥结合用户密码双重认证(2)客户端端设置

上接  openvpn 证书秘钥结合用户密码双重认证(1)服务器端设置 五.配置客户端-上海站点 1.安装软件 YUM可以使用互联网上的:建议使用一些邮件或者网盘的形式共享,还记得之前 VP服务器上缓存的软件包吗,当然也许两台机器环境不一样,依赖包可能不同,这根据自 己的情况定吧. $yum -y install openvpn 2.用你认为合适且安全的途径,把上海站点需要的CA证书.自己的证书和私钥等文件, 从VPN服务器那里搞过来,确保在以及目录里有这些文件. $sudo ls   /etc

ssh22端口和非22端口建立秘钥的使用方法

ssh链接: ssh [email protected] ssh -p 22222 [email protected] 输入密码登陆 ssh不用收入密码建立密钥 1.生成秘钥 [[email protected] logs]# ssh-keygenGenerating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no

秘钥认证用户自动控制

先上图 再上代码 #!/bin/bash  #author: QingFeng #qq: 530035210 #blog: http://my.oschina.net/pwd/blog  #自动添加秘钥认证用户 #缺省的配置如下 logdir=/data/log/shell          #日志路径 log=$logdir/shell.log            #日志文件  is_font=1                #终端是否打印日志: 1打印 0不打印  is_log=0   

基于秘钥的登录认证

ssh-keygen ssh-keygen 是Unix和类Unix计算机系统上的安全外壳(SSH)协议套件的标准组件,用于通过使用各种加密技术在不安全的网络上建立远程计算机之间的安全shell会话.ssh-keygen实用程序用于生成,管理和转换身份验证密钥. ssh-keygen能够使用三种不同的数字签字算法之一生成密钥. 在ssh-keygen工具的帮助下,用户可以为任何这些密钥类型创建密码(为了提供无人值守操作,密码可以保留为空,风险更高). 这些密钥与相关工具 GNU Privacy G

SSH HTTPS 公钥、秘钥、对称加密、非对称加密、 总结理解

DES: Digital Encryption Standard. Obsolete standard. 单密钥算法,是信息的发送方采用密钥A进行数据加密,信息的接收方采用同一个密钥A进行数据解密. 单密钥算法是一个对称算法. 算法好在加/解速度快,密钥量短,采用对称加密 DSA: Digital Signature Algorithm. based on discrete logarithms computation. 用于签名 RSA: RSA 是一种非对称加解密算法. RSA 与 DSA