HSM技术精讲(1.4):当信道不再可信——密码学的诞生

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 交流讨论。

相关推荐
@insist1231 小时前
信息安全工程师-数据库安全全体系解析与最佳实践
数据库·安全·软考·信息安全工程师·软件水平考试
修己xj2 小时前
打造你的私人电子书王国:Talebook 项目全面介绍
开源
冬奇Lab4 小时前
一天一个开源项目(第104篇):CLI-Anything - 让所有软件变成 AI 代理可调用的命令行接口
人工智能·开源·资讯
KivenMitnick7 小时前
LovelyERes:AWD适用的蓝队综合工具
运维·安全·网络安全
zt1985q8 小时前
本地部署开源内容管理系统 Typemill 并实现外部访问
运维·服务器·开源
Hical_W9 小时前
C++ Web 框架性能实测(Benchmark)
c++·开源
OpenTiny社区10 小时前
2026 OpenTiny NEXT 产品调研启动!
前端·开源·github
蹦哒10 小时前
浏览器AI对话插件开发【开源】
人工智能·ai·开源
珊瑚海80010 小时前
鸿蒙 App 性能测试实战:一行代码生成专业可视化报告
开源