文章目录
前言
通讯过程中具备四个特效,才可以任务是“安全”的,这四个特性是:
机密性 完整性 身份认证 不可否认
一、TLS基础
SSL/TLS 发展史
- SSL 1.0 仅是网景内部版本,由于严重Bug,从未公开发布
- SSL 2.0 发布于1995年2月,同样存在一些安全漏洞,已于2011年废弃
- SSL 3.0 发布于1996年,经过完全重新设计,也是一度广泛使用的版本,但由于易遭臭名昭著的POODLE攻击,同样在2015年已被废弃
- TLS 1.0,发布于1999年1月,为协议从网景移交到IETF后的第一个版本,该版本变化并不大,已于2020年被废弃
- TLS 1.1,发布于2006年4月,修复了安全漏洞,增强加密强度,同样于2020年被废弃
- TLS 1.2,发布于2008年8月,强化了支持的算法包,增加了扩展定义,也是目前的使用的主流版本
- TLS 1.3,发布于2018年8月,在强化安全性的同时,引入了0-RTT模式,降低了传输延迟,增强了传输性能
加密套件(cipher suite)
示例: ECDHE-RSA-AES256-GCM-SHA384
秘钥交换算法+签名算法+对称加密算法+摘要算法
openssl
对称加密
对称加密,就是指加密和解密时使用的秘钥都是同一个。
TLS有多种对称加密算法可供选择,比如 RC4、DES、3DES、AES、ChaCha20等,但是前三种算法被认为是不安全的,通常禁止使用,目前常用的版本有AES和ChaCha20。
加密分组
对称算法还有一个“分组模式”的概念,它可以让算法用固定长度的秘钥加密任意长度的密文。
最早的ECB,CBC,CFB,OFB等几组分组模式,都陆续被发现有安全漏洞,所以现在基本都不使用了。最新的分组模式被称为AEAD,在加密的同时增加了认证的功能,常用的是GCM,CCM,Poly1305。
非对称加密
所谓非对称,是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。把密钥分为公钥和私钥,公钥是公开的所有人都可以认领,私钥是保密的只有一个人知道。
非对称加密算法主要有:
(1)RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;
(2)DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准);
(3)ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学。
秘钥交换算法
现在主流的服务器和浏览器在握手阶段都已经不再使用RSA,改用ECDHE, 而在TLS1.3中,已经明确废除RSA和DH。
RSA秘钥交换算法
缺点: 没有前向保密性
有黑客长期收集混合加密系统收发的所有报文,如果加密系统使用服务器证书里的RSA做秘钥交换,一旦私钥泄露和被破解(巨型计算机),那么黑客能够使用私钥破解出之前的报文的“Pre-Master”。
DH秘钥交换算法
它可以让双方在完全没有对方任何预先信息的条件下,通过不安全信道创建起一个秘钥。
ECDH秘钥交换
DH秘钥交换协议使用椭圆曲线后的变种,成为ECDH,优点是比DH计算速度快,同等条件下秘钥更短。
ECC, 椭圆曲线密码学
摘要算法
摘要算法主要是实现完整性,也就是常说的散列函数,哈希函数。
可以把摘要算法理解成一种特殊的压缩算法,他能够将任意长度数据“压缩”成固定长度,而且是独一无二的“摘要”字符串。就好像是给这段数据生成了一个数字“指纹”。
常用的摘要算法有MD5、SHA1、SHA256、SHA512等
数字签名
加密算法结合摘要算法,我们的通讯过程可以说是比较安全了。但是还有漏洞,就是通讯的两个端点。黑客可以伪装成网站窃取信息;也可以伪装成用户,向网址发送支付,转账等消息。网站没法确认你的身份。
现实生活中,解决身份认证的手段是签名和印章,在TLS中,用非对称加密的“私钥”,再加上摘要算法,就可以实现“数字签名”,实现“身份认证”和“不可否认”。
数字签名的原理很简单,就是把公钥私钥的用法反过来,之前是公钥加密,私钥解密,现在是私钥加密,公钥解密。
因为非对称加密的效率太低,所以私钥只加密原文的摘要,这样运算量小很多,而且得到的数字签名也很小。
数字证书和CA
数字证书是一种电子文档,用于证明数字身份的合法性。它通常包含持有者的公钥、证书颁发机构的签名以及持有者的相关信息,如姓名、电子邮件地址和组织等。数字证书的主要作用是验证数字身份,确保通信安全和数据完整性。通过使用数字证书,可以防止网络攻击者窃取敏感信息或假冒身份。
CA(证书颁发机构)是负责发放、管理和撤销数字证书的第三方机构。CA的作用是验证证书持有者的身份,并为其签发数字证书。通过使用CA签名的数字证书,可以确保只有真正的证书持有者才能使用其公钥进行加密或解密操作。
证书类型
- 域名验证(domain validated, DV)证书
- 组织验证 (organization validated, OV)证书
- 扩展验证 (extended validation, EV)证书,(金融类,地址栏可以显示名称)
小结
- 对称加密只使用一个秘钥,运算速度快,秘钥必须保密,无法做到安全的秘钥交换,常用的有AES和ChaCha20;
- 非对称加密使用两个秘钥,公钥和私钥,公钥可以任意的分发而私钥保密,解决了秘钥交换的问题,但是速度慢,常用的有RSA和ECC;
- 把对称加密和非对称加密结合得到了“又快又好”的混合加密,也就是TLS使用的加密方式。
- 摘要算法用来实现完整性,能够为数据生成独一无二的“指纹”,常用的算法是SHA-2;
- 数字签名是私钥对摘要的加密,可以由公钥解密后验证,实现身份认证和不可否认。
- 公钥的分发需要使用数字证书,必须由CA的信任链验证,否则就是不可信的。
- 证书的格式遵循X509 V3标准,有两种编码方式,一种是二进制的DER,另一种是ASCII码的PEM。
- Let’s Encrypt是著名的免费CA,它颁发DV证书,而且出于安全目的有效期只有90天,但是可以通过Certbot工具自动续订。