现代密码学是一个多层次、多技术的生态系统,旨在解决四大核心安全问题:机密性、完整性、真实性和不可否认性。
加密技术是现代信息安全的基石,主要分为三大类:对称加密、非对称加密 和 哈希函数。
一、对称加密
核心目标:保障机密性。
核心原理:加密和解密使用同一把密钥。发送方用密钥和算法将明文转为密文,接收方用同一把密钥和逆算法将密文还原为明文。其安全性完全依赖于密钥的保密性。
关键技术概念:
工作模式:如何用分组密码加密长消息。如ECB(不安全)、CBC、CTR、GCM等。
初始化向量:一个随机数,用于确保加密相同明文时产生不同的密文,提升安全性。
认证加密:同时提供机密性和完整性的模式,如GCM。是现代应用的标配。
主要算法:
AES
地位:全球最通用的对称加密标准,由NIST颁布,用于替代老旧的DES。
密钥长度:128位、192位、256位。
原理:基于置换-置换网络结构。对数据块进行多轮(10/12/14轮)的字节替换、行移位、列混淆和轮密钥加操作,使得密文与明文和密钥之间的关系变得极其复杂,实现混淆和扩散。
SM4
地位:中国国家标准(GB/T 32907-2016)的商业密码算法。
密钥/分组长度:128位。
轮数:32轮。
原理:采用非平衡Feistel结构。轮函数包含非线性变换和线性变换,操作单位32位,非常适合软件和硬件实现。其安全强度和性能与AES-128相当。
ChaCha20
地位:由Google推广的流密码,常用于移动设备和Web(TLS)。
密钥长度:256位。
原理:通过20轮(每轮4次QR操作)的加法、XOR和循环移位,从一个密钥和随机数生成密钥流,再与明文进行XOR得到密文。通常与Poly1305认证器搭配使用(ChaCha20-Poly1305),提供认证加密。
二、非对称加密
核心目标:解决密钥分发问题,实现身份认证和数字签名。
核心原理:使用一对数学上相关的密钥对(公钥和私钥)。用公钥加密的数据,只能由对应的私钥解密;用私钥签名的数据,可以用对应的公钥验证其真实性。
核心数学难题:其安全性建立在已知的数学计算难题上,如大整数分解问题、离散对数问题、椭圆曲线离散对数问题。
主要算法:
RSA
原理:基于大整数质因数分解的难度。公钥和私钥由一对大质数
(p, q)及其衍生数(n, e, d)构成。从公钥n反推私钥p和q在计算上不可行。用途:可用于加密和数字签名。但加密速度慢,通常仅用于加密对称密钥。
ECC & ECDSA
原理:基于椭圆曲线离散对数问题的难度。在椭圆曲线构成的数学群中,已知起点
G和终点K,求倍数k使得K = k * G是极其困难的。优势:提供相同安全等级下,密钥长度远小于RSA(256位ECC ≈ 3072位RSA),计算速度快,带宽要求低。
用途:密钥交换(ECDH)和数字签名(ECDSA)。
SM2
地位:中国国家标准(GB/T 32918-2016)的基于椭圆曲线的公钥密码算法。
原理:同样基于椭圆曲线离散对数问题,但采用了中国设计的特定椭圆曲线参数。
组成:是一个算法套件,包含数字签名、密钥交换和公钥加密方案。
优势:与ECDSA相比,在设计和实现上可能有不同的安全考量,并已纳入国际标准ISO/IEC 14888-3。
三、密码散列函数
核心目标:保障完整性,为数据生成独一无二的“数字指纹”。
核心原理:将任意长度的输入信息,通过压缩计算,变换成固定长度的输出(哈希值)。这是一个单向过程,无法从哈希值反推原始数据。
关键特性:确定性、抗碰撞性、雪崩效应。
主要算法:
SHA-256
地位:SHA-2家族中最常用的算法,是比特币和许多互联网协议的基础。
输出长度:256位。
原理:采用Merkle–Damgård结构。消息被填充分块后,每个块与当前的中间哈希值一起,通过一个包含64轮位运算的压缩函数进行迭代处理。
SM3
地位:中国国家标准(GB/T 32905-2016)的密码杂凑算法。
输出长度:256位。
原理:结构与SHA-256类似,也采用Merkle–Damgård结构,但压缩函数的设计不同(包含64轮步骤,每轮使用不同的布尔函数和常量)。其安全强度与SHA-256相当。
用途:常用于SM2数字签名算法中生成消息摘要。
四、密钥交换协议
核心目标:让通信双方在一个不安全的信道上,安全地协商出一把共享的对称密钥。
主要协议:
Diffie-Hellman
原理(经典DH):基于离散对数问题。双方交换由公开参数和各自私密指数计算出的结果,并利用对方的公开结果和自身的私密指数,独立计算出相同的共享密钥。
原理(ECDH):基于椭圆曲线离散对数问题的DH版本。是当前的主流选择,效率更高。
完美前向保密:如果每次会话都使用临时的密钥对进行ECDH交换,则即使服务器长期私钥未来泄露,过去的会话密钥也不会被破解。这是现代安全通信(如TLS)的最佳实践。
SM2密钥交换协议
原理:作为SM2算法套件的一部分,它定义了基于椭圆曲线的密钥交换流程,包含了身份信息等字段,可防止中间人攻击等。
五、综合应用:以HTTPS为例
现代安全协议(如TLS)是上述所有技术的集大成者。一次HTTPS连接建立过程如下:
Client Hello:客户端(浏览器)向服务器发送支持的密码套件列表(包含对称加密、非对称加密、哈希算法组合,如
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256)。Server Hello & Certificate:服务器选择一套算法,并将其SSL证书(包含SM2或RSA公钥)发送给客户端。
密钥交换:双方使用ECDHE(或SM2密钥交换)协议,交换临时公钥,并计算出只有双方知道的预备主密钥。此步骤提供了完美前向保密。
密钥派生:双方使用预备主密钥和握手过程中所有消息的哈希(使用SHA256或SM3),派生出后续通信使用的对称会话密钥。
加密通信:后续所有的应用数据都使用协商好的对称算法(如AES-128-GCM或SM4)和会话密钥进行加密和认证。
总结与对比
如何选择:
国际通用场景:通常采用
AES+ECDHE/RSA+SHA256的组合。中国合规场景:需采用
SM4+SM2+SM3的国密套件,以满足国家密码管理局的要求,广泛应用于政务、金融、医疗等领域。
未来挑战:量子计算对当前主流的RSA和ECC算法构成潜在威胁,后量子密码学正在积极研究中,未来可能会出现新的国密和国际标准来应对这一挑战。