第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)全都是基于这两个原则设计的。
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不是孤立的。一个安全的系统必须同时考虑三者。举一个典型电商场景:
用户下单场景:
- 机密性:用户银行卡信息用AES加密传输
- 完整性:订单金额+时间戳用HMAC保护,防止篡改
- 可用性:密钥有热备份,即使主HSM故障,备用HSM能在5秒内接管
你想想看,如果只加密不校验完整性,攻击者可以构造密文差别攻击;如果只校验不加密,敏感信息直接明文传输;如果密钥系统挂了,业务直接瘫痪。所以这三者缺一不可。
知识体系总览——一张图说清
下面这张SVG图把本章的核心关系串起来:Kerckhoffs原则是“底盘”,香农理论提供“理论工具”,CIA三元组是“目标”。三者的结合构成了现代密码学的根基。
一句话总结
Kerckhoffs原则告诉你怎么守门(钥匙在手里),香农理论教你如何构造锁(混乱+扩散),CIA定义了你到底保护什么(秘密、完整、可用)。这三者结合起来,才能做出靠谱的密码方案。下一次面试面试官问你“密码学基础有哪些”,你知道该怎么砍柴了吧?