常规加解密、摘要与门限算法的种类与应用
常规加解密、摘要与门限算法的种类与应用
日常开发里,「加密」常被当成万能词:HTTPS、密码存储、文件校验、接口签名……其实背后至少几类能力——保密(加解密)、完整性(摘要)、身份与密钥分发(非对称),以及密码机场景里常见的门限控制(秘密共享)。把种类拆开,比背一堆算法名更有用。
本文按摘要、对称、非对称(RSA / ECC)、门限秘密共享梳理常见算法,各从 原理 与 应用 两侧说明;末节简要带过后量子(PQC)。证书与信任链细节见此前的 PKI 体系结构与证书信任链。
先分清要解决的问题
| 目标 | 典型手段 | 一句话 |
|---|---|---|
| 保密 | 对称 / 非对称加密 | 没有密钥的人读不懂明文 |
| 完整性 | 摘要(哈希) | 内容被改过就能发现 |
| 认证 / 不可抵赖 | 签名、MAC | 证明「谁发的」或「双方共享密钥下的消息」 |
| 密钥分发 | 非对称、密钥协商 | 在不可信信道上建立共享密钥 |
| 门限控制 | 秘密共享(如 Shamir) | 任意不足门限的份额凑不出完整秘密 |
实务系统几乎总是组合使用:例如 TLS 用非对称做身份与握手,再用 AES 保护会话;Git / 软件包用摘要做完整性校验;密码机用门限分片管理主密钥/管理令牌。下文按算法族展开。
摘要算法:把任意长度变成固定指纹
原理:单向、抗碰撞的压缩函数
摘要(哈希)算法把任意长度输入映射成固定长度输出,例如 SHA-256 输出 256 bit。理想性质包括:
- 单向性:由摘要反推原文不可行
- 抗碰撞:很难找到两段不同输入得到同一摘要
- 雪崩效应:输入改一比特,输出面目全非
常见成员:
| 算法 | 输出长度 | 现状(工程视角) |
|---|---|---|
| MD5 | 128 bit | 已不适合安全场景;碰撞攻击成熟 |
| SHA-1 | 160 bit | 已不适合新系统;浏览器/CA 早已弃用 |
| SHA-256 / SHA-384 / SHA-512 | 256/384/512 bit | 当前主流默认 |
| SHA-3(如 SHA3-256) | 可变 | 备用族;与 SHA-2 结构不同 |
| BLAKE2 / BLAKE3 | 可变 | 性能友好,部分新协议在用 |
注意:摘要不是加密。摘要结果通常可公开;它不提供保密,只提供「指纹」。需要「既完整又带密钥认证」时,用 HMAC(如 HMAC-SHA256),而不是裸哈希密码或裸哈希接口参数。
密码存储则常用 慢哈希 / 密钥派生:bcrypt、scrypt、Argon2、PBKDF2 等——目标是故意变慢、抗暴力,与 SHA-256 直接存密码哈希不是同一类问题。
应用:校验、签名预处理、密钥派生
- 完整性校验:镜像 ISO、软件包、对象存储 ETag / Content-MD5(遗留)、Git 对象 ID
- 数字签名的输入:RSA / ECDSA 通常签的是消息摘要,而不是整段明文
- 证书与 PKI:证书指纹、OCSP / CRL 相关标识;算法选型影响整条信任链(见 PKI 文)
- TLS / 协议:握手 transcript 的哈希、HKDF 等密钥派生
- 去重与索引:内容寻址存储(CAS)用哈希当键——此处更关心唯一性与性能,安全抗碰撞要求因场景而异
选型建议:新系统默认 SHA-256(或按协议要求选 SHA-384/512);不要用 MD5/SHA-1 做安全相关校验。看到「SHA1 指纹」的遗留系统,应标为技术债并规划迁移。
AES:对称加密的主力
原理:一块共享密钥,同一算法加解密
对称加密里,加密与解密使用同一把密钥。AES(Advanced Encryption Standard)是分组密码:明文按固定块(128 bit)处理,密钥长度可选 128 / 192 / 256 bit。
仅有「算法」不够,还要选工作模式:
- GCM:目前最常见的认证加密(AEAD),同时提供保密与完整性
- CBC 等:老系统仍可见,需额外 MAC,误用风险更高
- ECB:几乎只适合教学反例,相同明文块产生相同密文块
安全边界很清晰:密钥保密 ≈ 安全。算法公开、实现开源都不减损安全性;真正要命的是密钥泄露、弱随机数、错误模式或明文密钥硬编码。
相对非对称,AES 的优势是快、适合大数据量;短板是通信双方必须先安全地共享密钥。
应用:磁盘、TLS 会话、应用层密封
- 全盘 / 卷加密:BitLocker、FileVault、LUKS 等底层常用 AES
- TLS 记录层:握手完成后,应用数据多由 AES-GCM(或 ChaCha20-Poly1305)保护
- 应用层:数据库字段加密、对象存储服务端加密、消息中间件 payload 密封
- 令牌与本地存储:部分框架用 AES 封装会话或敏感配置(仍须管好主密钥)
工程上真正难的往往不是「选 AES」,而是:密钥从哪来、存哪、如何轮换、谁有权限解密。跨网络首次建立共享密钥,就轮到非对称或密钥协商协议。
RSA:经典非对称体系
原理:大整数分解难解性
非对称体系使用 密钥对:公钥可公开,私钥仅持有者保管。RSA 的安全性建立在「大整数分解困难」之上:选取大素数 、,模数 ,再选定公开指数 与私钥指数 ,满足 ;公钥为 ,私钥含 (实现上常存 、 等便于加速的参数)。
两条主用途不要混:
- 加密:公钥加密 → 私钥解密(常用于封装一小段对称密钥,而非直接加密大文件)
- 签名:私钥签名 → 公钥验签(证明持有私钥且内容未被篡改;通常签摘要)
RSA 运算是模幂,相对 AES 慢一个数量级以上,密钥也更大。今日新建系统常见 2048 bit 起步,长期或高要求场景会看到 3072 及以上。直接用 RSA「加密整盘数据」既慢又不必要——标准做法是 RSA/ECC 传密钥,AES 传数据(混合加密)。
填充不可省:加密用 OAEP,签名用 PSS(或协议规定的方案)。裸 RSA 或陈旧 PKCS#1 v1.5 误用,是历史漏洞的温床。
应用:证书、签名、密钥封装
- TLS / HTTPS:早期可用 RSA 做密钥交换;现代套件里 RSA 证书更多承担 签名 角色,密钥协商常交给 ECDHE
- 证书与 PKI:大量服务器证、代码签名证仍是 RSA 公钥
- 代码签名、文档签名、邮件 S/MIME:用私钥证明发布者身份
- JWT / JWS 等:
RS256一类算法即「SHA-256 + RSA 签名」
常见坑:密钥过短、私钥进仓库、用同一密钥对既当加密又当签名且生命周期混乱、自定义「加密填充」。能调用系统或成熟库的高层 API,就不要自己拼模幂。
ECC:更短密钥、同等强度
原理:椭圆曲线离散对数
椭圆曲线密码(ECC)建立在曲线点群上的 离散对数问题 :已知基点 与标量倍点 ,反推标量 困难。运算是点的标量乘,同等安全强度下,密钥长度远短于 RSA——例如约 256 bit 的曲线强度,粗略对标数千 bit 的 RSA。
常见曲线与用途(点到为止):
- NIST P-256 等:TLS、证书生态里很常见
- X25519:密钥协商(Diffie–Hellman 变体)
- Ed25519:签名(EdDSA),实现简洁、性能好
更短的密钥意味着更小的证书、更快的握手,对移动端与高并发终止特别友好。代价是曲线与参数必须选自可信集合;「自己发明一条曲线」通常是事故预告。
应用:现代 TLS 与移动端的默认选择
- ECDHE:TLS 中提供前向保密的密钥协商(会话密钥泄露不回溯历史流量)
- ECDSA / EdDSA:证书签名、JWT(如
ES256)、SSH 主机密钥与用户密钥 - 与 RSA 的取舍:新系统优先 ECC(性能、体量);仍需兼容老客户端或既有 RSA 证书链时保留 RSA
证书里的「公钥算法」字段正是 RSA / ECC 等的落点;依赖方如何验证整条链,见 PKI 文。
门限与秘密共享:Shamir 等
日常说的 Shamir 秘密共享(Shamir's Secret Sharing, SSS),由 Adi Shamir 提出。它 不是 AES 那种加解密算法,也不是 RSA/ECC 那种公钥算法,而是 秘密共享(Secret Sharing) 方案;带「至少 t 份才能还原」约束时,常归入更广义的 门限密码 / 门限方案(Threshold Cryptography) 一类。
相邻概念别混:
| 名称 | 解决什么 |
|---|---|
| 秘密共享(如 Shamir) | 把一个秘密拆成 n 份,任意 t 份可还原;少于 t 份得不到秘密 |
| 门限签名 / 门限解密 | 多把私钥分片协作完成签名或解密,完整私钥可不在单点出现 |
| 普通备份拷贝 | 每份都是完整密钥——任一泄露即全盘失守,没有门限保护 |
原理:t-of-n 与多项式插值
Shamir 方案的直觉:在有限域上构造一条次数为 的随机多项式,把秘密放在常数项(或约定的求值点);给每人分发曲线上的一个点(份额)。任意 t 个点可唯一确定多项式从而还原秘密;少于 t 个点在信息论意义上得不到关于秘密的有效信息。
工程参数写作 t-of-n(或 m-of-n):例如 3-of-5,表示发 5 份管理份额,任意 3 份可合成,2 份不行。门限同时提供:
- 抗单点作恶:一个人拿不到完整主密钥 / 管理令牌
- 抗部分丢失:允许丢几份份额仍能恢复(只要还够 t 份)
份额本身仍须按敏感物料保管(分人、分地、分介质);算法只保证「不够门限合不成」,不代替物理与流程控制。
应用:密码机管理与密钥仪式
最典型的是 HSM / 密码机 与高保障密钥管理:
- 门限 token / 管理卡分发:设备初始化或密钥仪式(key ceremony)时,把主密钥、解封密钥或管理员权限拆成多份智能卡 / token,发给多名管理员;开机、解封、关键运维需凑齐门限
- 根密钥与 CA 仪式:根私钥或种子不由单人持有,降低内部威胁与单人失误面
- 系统解封:例如部分密钥管理系统用 Shamir 拆分 master key,集群启动需多位运维共同解封
与 AES/RSA 的关系:门限方案管的是 「谁有权拼出那把关键钥匙」 ;拼出之后,真正加密业务数据的往往仍是 AES,签名仍可能是 RSA/ECC。密码机里常见组合是:业务密钥在机内,管理权限用门限 token 控制出机/解封/双人复核。
PQC:面向量子时代的算法族
原理:换一套「难解问题」
若大规模容错量子计算机可用,Shor 算法将严重威胁 RSA 与 ECC 所依赖的数学问题。对称算法与哈希相对更稳:主要对策是 加长密钥 / 输出(例如 AES-256、更长摘要),而非整体换族。
后量子密码(PQC)改用被认为抗量子的问题(格、哈希签名等)。NIST 已推进标准化,工程上常听到的方向包括:
- ML-KEM(Kyber):密钥封装(KEM),用于协商/封装对称密钥
- ML-DSA(Dilithium)等:数字签名
过渡期常见 混合模式:经典算法(如 X25519)与 PQC KEM 并行,两者都破才危及会话——降低「标准未稳就单押一家」的风险。
应用:标准落地与迁移现实
- TLS / 证书:浏览器与部分 CDN、云厂商已在试验或灰度混合密钥交换;证书侧 PQC 签名与双证书链条仍在演进
- 工程代价:公钥与密文往往更大,握手体积与 CPU 上升;协议、硬件、HSM、合规清单都要跟着改
- 务实判断:存档期很长的机密(「现在截获、将来解密」)应优先评估;一般 Web 业务跟主流协议与供应商路线即可,不必自行实现 PQC 原语
PQC 是长期迁移题,不是明天把 RSA 全局替换的开关。先把摘要弃用 MD5/SHA-1、对称用 AEAD、非对称密钥长度与填充做对,收益更确定。
对照与选型:什么场景用什么
| 种类 | 代表 | 擅长 | 主要代价 |
|---|---|---|---|
| 摘要 | SHA-256 | 完整性、签名预处理、派生 | 不保密;MD5/SHA-1 勿用于安全 |
| MAC | HMAC-SHA256 | 共享密钥下的消息认证 | 需先有共享密钥 |
| 对称加密 | AES-GCM | 大宗数据保密 + 完整性 | 密钥分发与保管 |
| 非对称(RSA) | RSA-OAEP / RSA-PSS | 兼容广的加密封装与签名 | 慢、密钥大 |
| 非对称(ECC) | X25519 / Ed25519 / P-256 | 协商与签名,性价比高 | 曲线与生态选型 |
| 门限 / 秘密共享 | Shamir t-of-n | 多托管、抗单点、可容错恢复 | 流程与份额保管成本 |
| PQC | ML-KEM / ML-DSA 等 | 抗量子长期安全 | 体积与生态成熟度 |
典型流水线可以记成一句:
摘要保真 → 非对称认人 / 传钥匙 → 对称护航大数据;关键主密钥可用门限分片托管。
例如 TLS:证书(RSA/ECC 公钥 + 签名)证明服务器身份 → ECDHE(或混合 PQC)协商会话密钥 → AES-GCM 加密应用数据;全程多次用到 SHA 族哈希。密码机侧则另有一条管理链:Shamir 门限 token → 解封/授权 → 机内再用对称或非对称做业务运算。
小结
- 摘要解决「有没有被改过」;对称加密解决「大量数据怎么保密」;非对称解决「钥匙怎么分、身份怎么证」;门限秘密共享(如 Shamir)解决「不能让单人独掌完整秘密」。
- 新系统默认组合大致是:SHA-256(或协议指定)、AES-GCM、ECC(协商/签名);RSA 多出现在兼容与存量证书;HSM/密码机管理常见 t-of-n 分片。
- PQC 值得跟踪,但优先把经典算法用对:弃用 MD5/SHA-1、AEAD、足够的密钥长度与正确填充。