浅谈 TLS 1.3
本文主要从TLS 1.3的优势、部署和时间发展线介绍了这种用于为计算机网络通信提供安全性的密码协议TLS。
上篇文章回顾:浅谈DHCP协议
TLS简介
按照维基百科的定义,TLS 是一种用于为计算机网络通信提供安全性的密码协议,其前身安全套接层(SSL)想必很多人都听说过。TLS 被广泛应用于基于 IP 的网络协议,如 HTTP、SMTP、FTP 等。最近几年内,Let's Encrypt 提供的免费证书服务、浏览器只对 HTTPS 站点启用 HTTP/2 和把未使用 HTTPS 而要求输入密码的网站标记为不安全等因素强力推动了 HTTPS 的部署,国际上 HTTPS 的部署率现已超过 50%。在各种因素的推动下,国内站点和应用也在大力推广 TLS 等密码协议的使用。
Figure 1: 数据来自谷歌 Transparency Report,2018年9月14日获取
TLS 1.3的优势
安全保护
TLS 1.3 移除了很多过时的密码学原型和功能(例如压缩、重协商),强制要求完美前向安全。TLS 1.2 支持了很多加密算法(包括 3DES、静态 DH 等),这导致了 FREAK、Logjam、Sweet32 等攻击的出现。TLS 1.3 缩紧了对加密原型的限制,避免了因服务器启用不安全的算法导致协议的安全性受到影响。在这方面的简化也使得运维和开发者配置 TLS 变得更容易,不再容易误用不安全的配置。
TLS 1.3 之前,整个握手环节都是没有加密保护的,这泄漏了很多信息,包括客户端和服务器的身份。TLS 1.3 对握手的绝大部分信息进行了加密,这保护了用户隐私,也在一定程度上防止了协议僵化问题。
性能提升
虽然电脑越变越快,但在互联网上传输数据耗费的时间依然受限于光速,所以两个节点间来回传输一次的时间(RTT)成为了限制协议性能的因素之一。TLS 1.3 只需要一个 RTT 就能完成握手,相比 TLS 1.2 省去了一个 RTT。并且 TLS 1.3 支持 “0-RTT” 模式,在该模式下客户端可以在握手的同时发送数据,极大地加快了页面的加载速度。TLS 1.3 还增加了 ChaCha20/Poly1305 支持,在不支持 AES 硬件指令的老设备上能提升加、解密性能。
TLS 1.3的部署
Tengine 2.2.2 / nginx 1.13.0 提供了 TLS 1.3 支持,和 OpenSSL 1.1.1 配合即可将网站升级到 TLS 1.3。在配置文件里将 TLSv1.3 加到 ssl_protocols 中就可以启用 TLS 1.3 支持了。Qualys 的 SSL 服务器测试[1]是很方便的 TLS 配置测试工具,可以很方便地检测公网站点的 TLS 配置及其安全性。
协议僵化问题
当一个互联网协议长时间不发生变化时,基于该协议开发的设备就可能无视其预留的变通手段而对其特性作出超出标准的假设,这就是协议僵化现象。在 TLS 1.3 的完善过程中,新的协议因协议僵化问题而不得不模拟老协议的一些行为,这大大拖慢了 TLS 1.3 标准化的进度。尽管在制定 TLS 1.3 标准时工作组针对很多实际测试时出现的问题进行了处理,但我们部署到线上环境还是需要注意可能出现的兼容性问题。
TLS 1.3发展时间线
2017年4月25日,nginx 1.13.0 发布,增加了 TLS 1.3 支持。
2018年3月21日,IESG 批准了 TLS 1.3 草案。
2018年4月17日,Chrome 66 默认开启了对 TLS 1.3 草案的支持。
2018年5月9日,Firefox 60 默认开启了对 TLS 1.3 草案的支持。
2018年8月10日,IETF 发布了 TLS 1.3 标准。
2018年9月11日,OpenSSL 1.1.1 (LTS) 版本发布,提供 TLS 1.3 支持。TLS 1.3 超过 TLS 1.0 成为 Cloudflare 上使用率排名第二的 TLS 版本。
2018年10月16日,Chrome 70 支持 TLS 1.3 正式标准。
2018年10月23日,Firefox 63 支持 TLS 1.3 正式标准。
参考资料
[1]https://www.ssllabs.com/ssltest/
[2]https://tools.ietf.org/html/rfc8446
[3]https://en.wikipedia.org/wiki/Transport_Layer_Security
[4]https://blog.mozilla.org/security/2018/08/13/tls-1-3-published-in-firefox-today/
[5]https://ietf.org/blog/tls13/
[6]https://kinsta.com/blog/tls-1-3/
本文首发于公众号“小米运维”,点击查看原文。
浅谈 TLS 1.3相关推荐
- Android应用安全开发之浅谈加密算法的坑
<Android应用安全开发之浅谈加密算法的坑> 作者:阿里移动安全@伊樵,@舟海 阿里聚安全,一站式解决应用开发安全问题 Android开发中,难免会遇到需要加解密一些数据内容存 ...
- 浅谈Service Mesh体系中的Envoy
摘要: 提到Envoy就不得不提Service Mesh,说到Service Mesh就一定要谈及微服务了,那么我们就先放下Envoy,简单了解下微服务.Service Mesh以及Envoy在Ser ...
- JackHttp -- 浅谈编码、加密(对称加密,非对称加密,Hash算法)
如果你还不清楚 JackHttp 是什么,请戳这里!!! JackHttp 是一个网络框架系列,为什么还要分享编码和加密呢?主要有如下几个原因: HTTP 在网络传输过程中是明文的. HTTP 在网络 ...
- 编程浅谈-以一个初出茅庐的Java程序员视角
编者是一个从事Java开发的普通软件攻城狮,迄今为止,粗粗算来不过刚刚进入编程的世界不过两年,但在这两年的光阴里,每当我抬头仰望星空(苦命加班)时脑海里总有这样一个疑问--"什么是编程&qu ...
- 浅谈华为如何实现区块链的安全隐私保护
摘要:区块链节点的租户隔离机制.安全合规性的国密算法支持机制以及范围可验证的同态加密机制下,华为区块链服务的增强安全特性浅谈. 1. 华为区块链服务安全特性介绍 本文介绍华为云区块链服务BCS(Blo ...
- 浅谈物联网安全威胁与挑战
浅谈物联网安全威胁与挑战 一:物联网行业发展现状 二:物联网安全挑战分析 2.1 传统产业参与多,安全基础薄弱 2.2 设备能力差异大,安全防护有短板 2.3 连接规模海量化,攻击影响易放大 2.4 ...
- 【技术分享】Android应用安全开发之浅谈加密算法的坑
<Android应用安全开发之浅谈加密算法的坑> 作者:阿里移动安全@伊樵,@舟海 阿里聚安全,一站式解决应用开发安全问题 Android开发中,难免会遇到需要加解密一些数据内容存到 ...
- Android安全开发之浅谈加密算法的坑
Android安全开发之浅谈加密算法的坑 作者:伊樵.舟海@阿里聚安全 Android开发中,难免会遇到需要加解密一些数据内容存到本地文件.或者通过网络传输到其他服务器和设备的问题,但并不是使用了加密 ...
- 浅谈iOS和Android后台实时消息推送的原理和区别
http://www.52im.net/thread-286-1-1.html 前言 iOS和Android上的实时消息推送差异很大,往小了说是技术实现的差异,往大了说是系统实现理念的不同.实时消息推 ...
最新文章
- C语言,C#,Java,JavaScript之强类型与弱类型
- flink批处理访问mysql_Flink 异步IO访问外部数据(mysql篇)
- windows下安装以及配置nginx
- CentOS6.5 gcc升级到4.8.2
- 利用信号进行进程之间的通信
- C++——OOP(Object-Oriented Programming) vs. GP(Generic Programming)
- 中望lisp加密 浩辰_浩辰CAD2010的VLISP接口加载贱人工具箱
- linux下RTNETLINK answers: File exists的解决方案 慎重
- 【转】论文阅读理解 - Panoptic Segmentation 全景分割
- web数据可视化(ECharts版)
- 问卷答题模板:包括单选,多选,以及图片模式
- (十一)openstack------块存储服务cinder,磁盘(卷)扩容,使用 NFS---后端存储
- 深度学习——核心思想
- 安卓app测试之流量监控
- IDaaS 服务的三大场景 B2E/B2C/B2B
- 栈的基本操作(C语言实现)
- linux 开启终端256色支持
- UG造型设计和模具设计的区别
- matlab生成组合,组合生成算法及matlab程序
- 设置gmail邮箱的smtp
热门文章
- 一篇文章带你了解抖音来客功能的使用方法和注意事项
- Java+SSH人力资源管理系统(含源码+论文+答辩PPT等)
- 图像常用的插值算法:最近邻插值、双线性插值和双三次插值算法
- Android 8.0一下热点启动
- A Crash Course on the Depths of Win32 Structured Exception
- Linux配置(一):临时修改主机名 | 永久修改主机名 | 详解
- 由《道德经》的理解,说下我的求道与守弱,无为以求有为
- netty——Channl的常用方法、ChannelFuture、CloseFuture
- 判断101-200之间有多少个素数,并输出所有素数
- 什么是SI,PI,EMC和RF