1.4 当信道不再可信:密码学的诞生
一封被拦截的楔形文字信件
让我们回到五千年前的美索不达米亚。
一个商人写了一封楔形文字信件,准备发给远方的合作伙伴。信件内容是:
"明天我将运送三袋小麦到你的城市,请准备好仓库接收。"
商人把信件交给一个信使,信使骑上驴子,踏上漫长的旅程。
几天后,信使在路上遇到了竞争对手。竞争对手贿赂信使,偷看了信件内容。
竞争对手看完后笑了:"原来他要运送小麦!明天我去他的仓库,提前把小麦买走,然后高价转卖。"
商人精心策划的商业计划,就这样泄露了。
第一次尝试:用方言暗语
商人很生气,决定保护自己的信件。
他的第一个办法是:用方言暗语。
商人的家乡有一个特殊方言,只有当地人才懂。他用方言来写商业信件:
"天王盖地虎"(方言:明天运小麦)
竞争对手拿到信件,看到"天王盖地虎",一脸茫然。这是什么意思?
但竞争对手很快找到了破解办法。他抓住了一个来自商人家乡的旅行者,逼问方言含义。旅行者在压力下透露了:"天王"就是"明天","盖地虎"就是"运小麦"。
方言暗语失效了。
失败原因:方言暗语是一种"语义隐藏"。隐藏的是含义,不是编码方式。只要有人能解释含义(比如被胁迫的旅行者),秘密就暴露了。
第二次尝试:用替换密码
商人没有放弃,他想出了第二个办法:替换密码。
替换密码的原理很简单:用不同的符号替换原始符号。
商人设计了这样一个替换表:
原始符号 → 替换符号
────────────
A → Z
B → Y
C → X
D → W
E → V
...(按照字母表反向替换)
用这个替换表,信件内容变成:
"明天我将运送三袋小麦到你的城市"
→ 用对应的楔形文字符号替换
→ 变成一串看起来毫无规律的符号
竞争对手拿到替换后的信件,看到一堆奇怪的符号,不知道什么意思。
商人以为自己成功了。
但竞争对手是个聪明人。他开始分析这些符号的频率:
- 某个符号出现次数最多,可能是最常用的字符
- 另一个符号总是在特定位置出现,可能是句子分隔符
- 通过比对已知语言的符号频率分布,逐步推断替换规则
经过几天的分析,竞争对手破解了替换密码。
失败原因:替换密码是一种"编码变换",但变换规则是固定的。固定的规则意味着可以被分析破解。只要收集足够的密文样本,就能推断出规则。
密码学的本质:编码变换与密钥
现在让我们定义一下密码学的核心概念。
加密是什么?
加密就是用编码变换来隐藏信息。
加密过程:
原始消息(明文) → 编码变换(加密) → 伪装消息(密文)
解密过程:
伪装消息(密文) → 解码变换(解密) → 原始消息(明文)
密钥是什么?
密钥就是控制编码变换的参数。
想象编码变换是一台机器。机器有输入(明文)、输出(密文)、控制面板(密钥)。
密钥决定了机器如何变换:
- 不同的密钥 → 不同的变换方式 → 不同的密文
- 同一个密钥 → 同样的变换方式 → 同样的密文
密钥的作用:
让编码变换"可配置"。发送者和接收者约定一个密钥,用这个密钥加密和解密。其他人即使知道编码变换的原理,但没有密钥,也无法解密。
这就是密码学的基本公式:
安全性 = 加密算法强度 × 密钥保密性
理想情况下:
- 加密算法是公开的(大家都知道怎么加密)
- 密钥是保密的(只有发送者和接收者知道)
这样,即使加密算法被分析,密钥仍然保密,消息仍然安全。
凯撒密码:最早的密钥化加密
公元前1世纪,罗马将军凯撒发明了一种简单的加密方法:凯撒密码。
凯撒密码的原理:
将字母表中的每个字母向后移动固定的位数。比如,移动3位:
原始:ABCDEFGHIJKLMNOPQRSTUVWXYZ
加密:DEFGHIJKLMNOPQRSTUVWXYZABC
用这个规则,"HELLO"变成"KHOOR"。
凯撒密码的关键创新:移动位数就是密钥。
如果密钥=3,字母向后移动3位。
如果密钥=5,字母向后移动5位。
如果密钥=10,字母向后移动10位。
不同的密钥产生不同的加密结果。
发送者和接收者只需要约定一个密钥(比如"移动7位"),就能加密和解密。
其他人即使知道是凯撒密码,但没有密钥,需要尝试26种可能的密钥,才能破解。
凯撒密码的意义:
它是最早的"密钥化加密"。密钥的概念从此进入密码学。
但凯撒密码有致命缺陷:
密钥只有26种可能(字母表长度)。用穷举法,很快就能破解。只需要尝试26次,就能找到正确的密钥。
密码学进化的两条路线
凯撒密码之后,密码学沿着两条路线进化:
路线一:增加密钥空间
凯撒密码的密钥只有26种可能。如果能增加密钥的可能值,穷举法就更难。
比如,维吉尼亚密码(16世纪):
维吉尼亚密码使用多个凯撒密码的组合。密钥是一个单词,比如"KEY"(K、E、Y三个字母)。
加密时,第一个字母用密钥K加密(移动10位),第二个字母用密钥E加密(移动4位),第三个字母用密钥Y加密(移动24位),第四个字母又用密钥K加密......循环使用密钥。
这样,密钥的可能值不是26种,而是26n种(n是密钥长度)。如果密钥长度是10,密钥空间是2610≈141万亿种可能。穷举法几乎不可能。
路线二:改变编码方式
凯撒密码是"替换密码"------每个字母替换成另一个字母。替换密码有一个共同弱点:字母频率不变。
比如,英文中"E"出现频率最高。如果"E"被替换成"X",那么密文中"X"出现频率最高。通过频率分析,可以推断替换规则。
维吉尼亚密码虽然增加了密钥空间,但如果密钥长度已知,仍然可以用频率分析破解。
解决办法:改变编码方式。
比如,Enigma密码机(20世纪初):
Enigma不是简单的替换。它使用复杂的机械结构,每个字母经过多个转轮的变换,同一个字母在不同位置会被替换成不同的字母。
这样,频率分析失效了。"E"在第一个位置可能变成"X",在第二个位置可能变成"Q",在第三个位置可能变成"M"。
Enigma密码机:机械加密的巅峰
20世纪30年代,德国军方开始使用一种名为"Enigma"的密码机。
Enigma的结构:
输入字母 → 第一转轮 → 第二转轮 → 第三转轮 → 反射器 → 第三转轮 → 第二转轮 → 第一转轮 → 输出字母
每个转轮内部有26个触点,随机连接。字母经过一个转轮,会被变换一次。三个转轮组合,加上反射器,产生极其复杂的变换。
更关键的是:转轮每次加密后会转动一个位置。这样,同一个字母在不同位置会被加密成不同的字母。
密钥包括:
- 转轮的选择(3个转轮,有5种可选,组合方式很多)
- 转轮的初始位置(每个转轮26种位置)
- 插板配置(额外增加复杂性)
密钥空间极其巨大,达到10^23级别。穷举法几乎不可能。
德国军方认为Enigma是"不可破解的"。
Enigma的破解:密码学的残酷真相
但Enigma最终被破解了。
破解者是英国密码分析团队,核心人物是数学家艾伦·图灵。
他们如何破解的?
不是穷举法,而是利用Enigma的弱点。
弱点一:反射器的设计
Enigma的反射器确保加密和解密使用同样的设置。这带来一个特性:一个字母永远不会被加密成自己。
比如,"A"永远不会被加密成"A"。这虽然听起来是个小问题,但它提供了重要的分析线索。
弱点二:已知的明文片段
德国军方有一些固定的消息格式,比如天气预报总是以特定短语开头。密码分析团队利用这些已知明文,推断密钥。
弱点三:操作员的失误
有些操作员没有按照规定随机选择密钥,而是使用简单的模式(比如AAA、ABC)。这些弱密钥更容易被破解。
图灵设计了"炸弹机"(Bombe),一种专门的机器来快速尝试可能的密钥配置。结合弱点分析,Enigma最终被破解。
Enigma破解的意义:
它揭示了一个残酷真相:任何固定的加密规则,最终都会被分析破解。
即使加密算法极其复杂,密钥空间极其巨大,只要规则是固定的,就有弱点。弱点可以被利用,最终破解。
密码学的现代原则
尽管密码学历经演进,但其基石早在Enigma之前就已奠定------现代密码学最核心的原则可以追溯到19世纪:
柯克霍夫原则(Kerckhoffs's principle,1883年提出):
即使系统的所有细节(除了密钥)都公开,系统仍然应该是安全的。
换句话说:
- 加密算法可以公开,大家都可以知道算法原理
- 但密钥必须保密,只有发送者和接收者知道
为什么这样设计?
理由一:算法公开意味着可以被审查
如果算法保密,只有少数人知道,那么算法可能有缺陷,但外人无法发现。
如果算法公开,全球的密码学家都可以审查。缺陷会被发现、修复、改进。
现代加密算法(如AES、RSA)都是公开的,经过了全球密码学家的审查。
理由二:密钥保密意味着可以更换
如果算法保密,算法一旦泄露,整个系统失效。
如果密钥保密,密钥泄露后,只需要更换密钥,系统仍然可用。
密钥可以定期更换,降低了泄露的风险。
理由三:密钥泄露的后果可控
如果算法保密,算法泄露意味着所有历史消息都被破解。
如果密钥保密,密钥泄露只影响用该密钥加密的消息。更换密钥后,新消息仍然安全。
现代密码学的核心矛盾
柯克霍夫原则定义了现代密码学的基本框架,但它也揭示了一个核心矛盾:
密钥必须保密,但密钥如何保密?
密钥是一串数据,它需要:
- 存储在某个地方
- 传递给接收者
- 在加密/解密过程中使用
这三个环节,每一个都可能泄露密钥。
存储泄露:
密钥存在哪里?如果存在软件里(如文件、数据库、内存),root权限可以读取。
传递泄露:
密钥如何传递给接收者?如果通过网络传递,可能被拦截。如果通过物理传递(如邮递),可能被偷看。
使用泄露:
密钥在使用过程中,可能被暴露。比如,内存中的密钥可能被恶意程序读取,或者被侧信道攻击(通过分析加密设备的功耗、时间等推断密钥)。
这三个环节的泄露风险,推动了密码学技术的演进:
- 密钥存储 → HSM(硬件安全模块)
- 密钥传递 → 密钥协商协议(如Diffie-Hellman)
- 密钥使用 → 安全实现(防止侧信道攻击)
本篇小结
今天我们讲述了密码学的诞生与演进。
密码学的本质是用编码变换隐藏信息,用密钥控制变换。
密码学从简单的替换密码(凯撒密码),进化到复杂的机械密码(Enigma),再到现代的数学密码(AES、RSA)。
但Enigma的破解揭示了一个残酷真相:任何固定的加密规则,最终都会被分析破解。
柯克霍夫原则定义了现代密码学的框架:算法公开,密钥保密。
但这引出了一个核心矛盾:密钥必须保密,但密钥如何保密?
密钥在存储、传递、使用三个环节都可能泄露。这个矛盾推动了密码学技术的演进,最终催生了HSM。
下一节,我们将讲述"信任的终极锚点"------从软件到硬件的进化。你会看到,人类如何把密钥关进一个物理隔离的"密室",从根本上解决密钥泄露问题。
【下集预告】
密钥是密码学的核心。
密钥泄露,密码学失效。
那么,密钥存在哪里最安全?
答案不是"加密存储"。加密存储密钥需要另一个密钥,循环下去,没有终点。
答案是:物理隔离。把密钥存在一个软件无法访问的地方------硬件安全模块(HSM)。
下一节,HSM登场。
📚 本文内容摘自本人的开源书《HSM技术书 - 从思想实验到安全基石》
一本从思想实验到安全基石的HSM技术书------深度解析PKCS#11标准与车载硬件安全模块的实战指南。
🔗 在线阅读/下载:hsm-book
bash
git clone https://github.com/Lularible/hsm-book.git
⭐ 如果对您有帮助,欢迎 Star 支持,也欢迎通过 GitHub Issues 交流讨论。