知识卡片
保密强度的六级递进及各自代价
内容
密码这类敏感信息的保密手段可以排成一条强度递增、代价也递增的阶梯,每 一级都在弥补上一级的具体弱点。以摘要代替明文只能防止密码原文被逆推,但 弱密码扛不住彩虹表批量枚举;加固定盐值再哈希能抵御已有彩虹表,但加密 结果被截获后依然能被拿去冒认(因为盐值不变、每次结果相同);把盐值变成 动态值能防冒认(每次结果不同,截获的结果用不了第二次),但协商动态盐值 本身的过程复杂,且只保护单次操作,难阻止对其他服务的重放;给服务加动态 令牌、在网关等公共位置统一校验,能防重放攻击,但代价是要在集群中分发 令牌信息,且依然挡不住链路被嗅探;启用HTTPS能同时防链路嗅探和重放,但 仍有客户端被攻破伪造根证书、服务端被攻破导致证书泄漏、证书吊销信息更新 不及时、TLS版本或密码学套件选用不当等剩余风险;要进一步压制这些剩余 风险,只能靠独立于客户端的物理设备(如银行U盾)、独立于网络的第二通道 (短信/邮件验证码)甚至物理隔离的专用网络。理论上确实存在”绝对安全”—— 香农证明的一次性密码本——但它要求提前把密钥安全送达对方,对互联网场景 没有可行性。这条阶梯提醒设计者:不存在免费的更高安全性,每一级都要用 额外的复杂度或运营成本去换。
结构图:
flowchart LR
A[摘要代替明文] -->|防弱密码彩虹表| B[加固定盐值]
B -->|防结果被截获冒认| C[动态盐值]
C -->|防对其他服务重放| D[动态令牌+网关统一校验]
D -->|防链路嗅探和重放| E[HTTPS]
E -->|防根证书伪造/证书泄漏等剩余风险| F[独立物理设备/第二通道/物理隔离网络]
参考来源
- 位置:《凤凰架构:构建可靠的大型分布式系统》第5章"架构安全性"
5.4.1节"保密的强度"(源文件:_epub-src对应OEBPS/Text/chapter67.xhtml)
- 结论依据:原文逐级列举六种保密手段及各自能防御、不能防御的具体风险,
并说明每一级安全强度提升都对应更多的工作量与算力消耗,直接支撑本卡片
的阶梯结构。
- 原始内容:以摘要代替明文……先加盐值再做哈希是应对弱密码的常用方法……
将盐值变为动态值能有效防止冒认……给服务加入动态令牌……启用HTTPS可以
防御链路上的恶意嗅探……你应该能对"更高安全强度同时也意味着更多代价"
有更具体的理解。