Web技术(三):TLS 1.2/1.3 加密原理(AES-GCM + ECDHE-ECDSA/RSA)

本文深入探讨了TLS(Transport Layer Security)1.2和1.3版本的加密原理,包括对称加密算法AES-GCM和非对称密钥交换算法ECDHE-ECDSA/RSA。重点讲述了TLS如何通过非对称加密协商对称密钥,以及如何结合数字签名和MAC确保数据的完整性和认证。此外,还讨论了TLS报文结构、密钥交换与身份验证过程,以及密码套件的选择,以增强网络通信的安全性。
摘要由CSDN通过智能技术生成

前言

前篇博客:图解HTTP中谈到,HTTP/1.1 协议默认是以明文方式传输数据的,这就带来三个风险:窃听风险、伪装风险、篡改风险。HTTP 协议自身没有加密机制,但可以通过和 TLS (Transport Layer Security) / SSL (Secure Socket Layer) 的组合使用,加密 HTTP 的通信内容,借助 TLS / SSL 提供的信息加密功能、完整性校验功能、身份验证功能保障网络通信的安全,与 TLS / SSL 组合使用的 HTTP 被称为 HTTPS(HTTPSecure),可以说 HTTPS 相当于身披 SSL / TLS 外壳的 HTTP。
HTTPS协议分层模型
近几年,网络安全问题越来越受重视,国内外各大互联网公司比如Google、Baidu、Facebook等,都在不谋而合地开始大力推行 HTTPS,为鼓励全球网站的 HTTPS 实现,一些互联网公司都提出了自己的要求:

  • Google 已调整搜索引擎算法,让采用 HTTPS 的网站在搜索中排名更靠前;
  • 从 2017 年开始,Chrome 浏览器已把采用 HTTP 协议的网站标记为不安全网站;
  • 苹果要求 2017 年 App Store 中的所有应用都必须使用 HTTPS 加密连接;
  • 当前国内炒的很火热的微信小程序也要求必须使用 HTTPS 协议;
  • 新一代的 HTTP/2 协议的支持需以 HTTPS 为基础。

因此,我们要开发网络应用,也应该跟上全网 HTTPS 的潮流,使用 HTTPS 协议为我们的数据安全上一把锁。前一篇博客已经详细介绍了 HTTP 协议,下面重点介绍网络安全通信协议 TLS / SSL。

一、TLS 加密原理

SSL(Secure Socket Layer) / TLS(Transport Layer Security) 是独立于 HTTP 的协议,所以不光是 HTTP 协议,其他运行在应用层的 SMTP 和 Telnet 等协议均可配合 SSL / TLS 协议使用,可以说 SSL / TLS 是当今世界上应用最为广泛的网络安全技术。

Netscape 开发了原始的 SSL 协议,SSL 1.0 因为存在严重的安全缺陷从未公开发布,SSL 2.0于 1995年发布,但其中仍包含许多安全缺陷,于是在1996年发布了SSL 3.0。随着加密与解密安全攻防战的博弈,SSL 协议的安全性逐渐满足不了需求,SSL 2.0 在 2011 年被RFC 6176弃用,SSL 3.0 于 2015 年被RFC 7568弃用。

TLS 1.0 在 1999 年发布于RFC 2246中,TLS 1.0 和 SSL 3.0 之间的差异并不显著(TLS 1.0 等同于 SSL 3.1),改名主要是为了和Netscape撇清关系(SSL协议由Netscape主导开发),表示一个新时代的来临(TLS协议由 IETF 进行标准化)。

随着网络攻击技术的发展,TLS 加密算法也需要进行升级,TLS 1.1 于 2006 年在RFC 4346中定义,TLS 1.2 于 2008 年在RFC 5246中定义,并于2011年在RFC 6176中完成优化,最新版本的TLS 1.3 于 2018 年在RFC 8446中定义。早在2018年10月,苹果、谷歌、微软和Mozilla就联合宣布,将在2020年3月弃用TLS 1.0和TLS 1.1(当你读到本篇博客时,TLS 1.0和TLS 1.1 已经被弃用),由于 TLS 1.3 才发布没多久,未来几年内 TLS 1.2 将成为网络安全协议的主流(HTTP/2协议便使用TLS 1.2+版本作为安全加密层)。
SSL/TLS协议发布时间与网站支持率对比

1.1 TLS 信息加密

早在几千年前,人们就有了对信息加密的需求和实践,最初人们只是将完整信息隐藏,后来将字符进行移位变换处理以隐藏原来的意思(可以参考博客:谍战中的古典密码学)。随着上世纪计算机的诞生和数学的进步,将有效信息编码为二进制数据,并对这些二进制数据进行数学运算处理的现代密码学获得了飞速发展(可以参考博客:区块链中的现代密码学)。

现代密码学根据密钥不同,可以分为对称密钥加密法和非对称密钥加密法,二者区别对比如下:

类别 对称密钥加密法 非对称密钥加密法
特点 加密和解密使用相同的的密钥 加密和解密使用成对的公钥和私钥,
可以使用公钥解密私钥解密(信息加密),
也可以使用私钥加密公钥解密(数字签名)
优点 加密和解密的效率高(比非对称加密效率高几百倍),适合大数据量加解密 不需要交换密钥,安全性更强,还可用于身份认证
缺点 双方需要交换密钥,密钥的安全无法保证 加密和解密的效率低(只有对称加密效率的几百分之一),不适合大数据量加解密
常用算法 DES、3DES、IDEA、AES RSA、DSA、ECC、Diffie-Hellman

从上面的对比可以看出,Web的数据量还是比较大的,对Web数据信息进行加密适合选择对称密钥加密法。但对称密钥加密法有个缺陷,通信双方需要交换密钥,密钥的安全没法得到保证,这就需要借助非对称密钥加密法来交换密钥了。TLS 也正是采用类似的策略,通过非对称密钥加密法来交换会话密钥,通过对称密钥加密法来加密信息。
TLS混合密钥加密过程
我们先看对Web信息加密使用的对称密钥加密法,按照加密方式不同可以将对称密码分为两大类:序列密码(流密码) 和分组密码(块密码),二者的区别对比如下:

类别 序列密码 / 流密码 分组密码 / 块密码
特点 以最小单位比特作为一次加解密的操作元素,采用设计好的算法对明文数据流进行加密与解密操作 将明文分为若干长度固定的组块(长度不足的组块按特定格式填充),以每个组块作为一次加解密的操作元素,采用设计好的算法对明文数据组块进行加密与解密操作
优点 速度快,便于硬件实现,错误传播较轻 统计特性优良,修改敏感
缺点 统计混乱不足,修改不敏感 速度慢,错误传播严重
常用算法 WEP、RC4、ChaCha20 DES、3DES、IDEA、AES

流密码算法是以“一次性密码本“为雏形演变出来的加密算法,一次性密码本算法很重要的一个特性就是密钥使用的”一次性“,流密码算法安全性的关键也在于绝不第二次使用相同的密钥,这就需要能产生大量的随机数。流密码使用伪随机数发生器产生一次性密钥流,可以说流密码的安全性取决于伪随机数发生器的性能,高性能的伪随机数发生器(一个硬件模块)也可以构建出强度较高的流密码算法。我们一般使用的计算机并没有专门提供高性能的伪随机数发生器硬件模块,所以使用流密码算法的比较少(流密码算法便于硬件实现,一般在专门设计有伪随机数发生器的平台上使用),更常用的是分组密码算法。

分组密码的每个组块加解密类似于流密码,每个组块的长度可以作为衡量加密强度的一个指标,现在一般采用128位、192位、256位的组块长度(需要平衡加密强度与加密效率,随着处理器计算能力提升也会同步提升加密强度)。DES(Data Encryption Standard)是1977年美国联邦信息处理标准(FIPS)种所采用的一种对称密码(3DES是其三重加密增强版),目前已能在短时间内被破解。现在推荐使用的对称加密算法是AES(Advanced Encryption Standard),该算法是在2001年通过全世界范围内公开竞争方式选拔出来的,Rijndael 算法最终力压群雄被美国国家标准技术研究所(NIST)选定为AES标准。

分组密码的关键特性是每个组块都使用不同的组块密码,这些组块密码可以有相关性,也即后一组的密码可以通过前一组的密码迭代而来(分组密码靠迭代关系降低了对伪随机数发生器的性能需求)。根据分组密码迭代方式的不同,产生了多种不同的分组密码模式,常见的有五种模式ECB、CBC、CFB、OFB、CTR。这五种分组密码模式就不一一介绍了,这里主要介绍两种常用的模式:CBC(Cipher Block Chaining mode)和CTR(Counter mode),二者的主要区别对比如下:
CBC与CTR分组密码模式对比

类别 CBC(Cipher Block Chaining mode) CTR(Counter mode)
特点 首先将明文分组与前一个密文分组进行XOR异或运算,然后再进行加密;加密第一个分组时,使用一个随机产生的初始化向量 IV(Initialization Vector)来代替前一个密文分组<
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流云IoT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值