第3章 现代密码学基础:Kerckhoffs原则、香农理论与安全性目标

说实话,刚入行密码学时,最容易犯的错就是觉得“算法保密才安全”。我见过不少团队,自己搞个加密算法,藏着掖着不敢公开,结果漏洞百出。这一章咱们就把密码学的三条腿给捋清楚——Kerckhoffs原则、香农理论、还有那个铁三角(机密性、完整性、可用性)。

3.1 Kerckhoffs原则——秘密全在钥匙上

Kerckhoffs原则是19世纪荷兰密码学家Auguste Kerckhoffs提出的,核心就一句话:密码系统的安全性不依赖于算法的保密,而应完全依赖于密钥的保密。说白了,算法公开给全世界看都没关系,只要密钥没泄漏,系统就安全。

我最早做金融加密项目时,客户坚持要求把加密方案藏起来。我说:“你藏得住一时,藏不住一世。算法一旦被逆向,整个系统就裸奔了。”后来他们听了建议,改用公开算法+AES-256密钥管理,审计也省心。

核心要点:

  • 算法公开可审查,漏洞更容易被发现
  • 密钥可控可更换,泄漏后能快速轮换
  • 降低“单点失败”风险——算法泄漏不等于数据泄漏

Kerckhoffs原则的“对手假设”很关键:攻击者知道你的全部设计,唯独不知道密钥。很多密码学比赛(比如NIST的AES选拔)都按这个原则来——算法全部公开,谁都能挑刺。

3.2 香农理论——信息论视角下的密码学

克劳德·香农在1949年发表了《保密系统的通信理论》,把密码学从艺术变成了科学。他提出了几个核心概念:

3.2.1 完美保密性

香农定义了“完美保密性”:给定密文,攻击者无法获得任何关于明文的额外信息。典型例子就是一次一密(One-Time Pad)。你想想看,密钥长度至少等于明文长度,且每个密钥只能使用一次——这在实际系统里几乎不可能实现。

注意:一次一密虽然理论上完美,但密钥分发和存储成本极高。我曾经评估过一个“安全聊天”产品,他们号称用了一次一密,结果密钥对是通过网络协商的……嗯,这不就相当于把门锁密码写在门上吗?

3.2.2 熵与冗余

香农熵衡量信息的不确定性。英文文本的熵大约是每字符1.5比特(因为字母有规律,比如“e”出现频率高)。密码系统就是要消除这种统计规律。比如替换密码为什么不安全?因为字母频率没变。流密码为什么高效?因为它用伪随机序列掩盖了明文统计特征。

概念描述我的理解
熵不确定性度量信息越随机,熵越高,破解越难
冗余多余信息明文有规律就容易被压缩,也容易被攻破
混乱明文与密文关系复杂化替换+置换,让攻击者找不到映射
扩散明文的微小变化扩散到整个密文像雪花效应,改一个比特后面全变

3.2.3 混乱与扩散

香农提出了两个设计原则:混乱和扩散。混乱就是让密钥和密文的关系复杂到令人发指;扩散就是让明文的每个比特影响到密文的多个比特。现代分组密码(比如AES)全都是基于这两个原则设计的。

个人经验:我调试过一段AES软件实现,发现S盒替换做得不错,但扩散轮数不够。结果一个明文块只改了一个比特,密文变化率只有30%——这种“半扩散”很容易被差分分析攻破。后来加了一圈,变化率直接冲到95%以上。

3.3 安全性目标——CIA三元组

密码学的三座大山:机密性(Confidentiality)、完整性(Integrity)、可用性(Availability)。每个目标都有对应的技术和常见误区。

3.3.1 机密性

确保信息不被未授权者获取。加密是主要手段。但要注意:机密性不等于安全性。我见过很多人以为“加密了就是安全的”——结果边信道攻击、侧信道攻击、甚至直接存密钥在明文配置文件里……

  • 对称加密:AES、SM4(国密)
  • 非对称加密:RSA、SM2、ECC
  • 密钥管理:KMS、HSM、密钥生命周期

3.3.2 完整性

确保信息没有被篡改。完整性靠哈希函数和消息认证码(MAC)。我做过一个支付协议审计,发现他们只用了SSL加密,但没有对业务报文做签名。攻击者虽然看不见内容,但可以尝试重放、截断、修改订单金额。幸好代码还没上线,我让他们加上了HMAC-SHA256。

常用完整性工具:

  • 哈希:SHA-256、SM3
  • MAC:HMAC、CMAC
  • 数字签名:RSA签名、SM2签名

3.3.3 可用性

系统在需要时能正常工作,不被拒绝服务攻击瘫痪。虽然密码学本身不直接解决DDoS,但密钥管理的“可用性”经常被忽略。我曾经遇到一个惨案:托管密钥的HSM集群断电,密钥恢复流程用了三天三夜,业务停了72小时。从那以后我习惯给每个关键系统配至少两个密钥备份策略。

三者关系与案例

CIA不是孤立的。一个安全的系统必须同时考虑三者。举一个典型电商场景:

用户下单场景:

  1. 机密性:用户银行卡信息用AES加密传输
  2. 完整性:订单金额+时间戳用HMAC保护,防止篡改
  3. 可用性:密钥有热备份,即使主HSM故障,备用HSM能在5秒内接管

你想想看,如果只加密不校验完整性,攻击者可以构造密文差别攻击;如果只校验不加密,敏感信息直接明文传输;如果密钥系统挂了,业务直接瘫痪。所以这三者缺一不可。

知识体系总览——一张图说清

下面这张SVG图把本章的核心关系串起来:Kerckhoffs原则是“底盘”,香农理论提供“理论工具”,CIA三元组是“目标”。三者的结合构成了现代密码学的根基。

现代密码学基础——知识体系 Kerckhoffs原则 香农理论 CIA安全目标 算法公开 密钥保密 完美保密(一次一密) 混乱与扩散 熵与冗余 机密性(加密) 完整性(MAC/签名) 可用性(密钥备份) 三者共同支撑现代密码系统设计 Kerckhoffs原则是“假设”,香农理论是“工具”,CIA是“目标”

一句话总结

Kerckhoffs原则告诉你怎么守门(钥匙在手里),香农理论教你如何构造锁(混乱+扩散),CIA定义了你到底保护什么(秘密、完整、可用)。这三者结合起来,才能做出靠谱的密码方案。下一次面试面试官问你“密码学基础有哪些”,你知道该怎么砍柴了吧?