什么是真正的随机性,以及为什么它是整个现代密码学的基础
想象你在设计一种保护国家机密的密码。你发明了一个出色的算法,能把消息变成无法读懂的噪声。但有一个问题:密钥——既能加密又能解密的数字“万能钥匙”。
如果攻击者能够预测或猜出你的密钥,你所有精巧的算法都将一文不值。这就像装了一扇带密码锁的防盗门——却把密码设成“1234”。
这时就轮到熵登场了——它是衡量真正随机性的尺度。生成密钥时的熵越高,密钥就越不可能被预测。你的安全不取决于算法有多复杂,而取决于密钥有多不可预测。
计算机本质上是确定性的——它严格按照指令行事。如果你让计算机“想一个随机数”,它会运行一个数学公式,得到的结果只是看起来随机。
软件中大多数“随机”数都是伪随机序列。它们从一个“种子”开始,按照数学公式生成。只要知道种子和公式,就能复现整个序列。
真正的随机性来自物理过程:晶体管噪声、鼠标移动、两次按键之间的时间间隔、放射性衰变。这些过程从根本上无法预测。
熵是不确定性的度量。在密码学中:随机源的熵越高,攻击者对未来的值了解得就越少。
“密钥生成中心”游戏使用异或(XOR)运算。它是密码学中最有用的运算之一,其思想很简单:
简单地说:两个值不同时结果为 1,相同时结果为 0。
在密码学中,异或有一个独特的性质:把数据与密钥做异或,再把结果与同一个密钥做一次异或,就会得到原来的数据!
| 消息 | XOR | 密钥 | = | 密文 |
|---|---|---|---|---|
| 0101 | XOR | 1100 | = | 1001 |
| 1001 | XOR | 1100 | = | 0101 |
在我们的游戏中,我们用异或来组合多个熵源:鼠标的 X、Y 坐标和当前时间。单个熵源也许并不完全随机,但它们组合在一起就产生了真正的不可预测性。
在“密钥生成中心”模拟中,你将:
你不只是阅读关于随机性的内容——而是亲手创造它。你会看到现实世界中的物理动作如何变成数字保护,并理解为什么熵是密码学中最宝贵的资源。
工业级的密钥生成系统会利用多种熵源:
半导体噪声、电阻热噪声、约翰逊噪声——无法预测的物理过程
现代系统利用量子效应,例如光子的自发辐射或电子隧穿
按键之间的时间、鼠标移动、视网膜图案——这些都会增加不可预测性
网络数据包的到达时间、硬件中断、硬盘活动
真实系统通常会结合多种方法:
异或运算凭借以下性质,非常适合密码学:
密钥生成的工业标准:
历史上曾多次出现因熵不足而导致的安全事件:
现在你已经理解了什么是熵以及密码密钥是如何生成的,正是亲手生成一个的好时机!
在游戏中,你会亲眼看到鼠标的移动如何变成密码保护