流密码概念与 PRNG
了解流密码如何从种子生成密钥流
流密码概念与 PRNG 是 CoddyKit 上的免费 Cryptology Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cryptology Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cryptology Academy 课程共包含 4 节课。
欢迎
流密码根据密钥生成伪随机密钥流,并逐字节进行加密。本课将帮助您理解密钥流的工作方式,以及流密码安全所需的条件。
流密码模型
KeyGen(K, 随机数) → 密钥流 K1、K2、K3、...
Ci = Pi XOR Ki
Pi = Ci XOR Ki
加密和解密完全相同:将数据与密钥流进行 XOR。密钥流必须是伪随机的,并且绝不能重复使用。
PRNG 与 CSPRNG
PRNG(伪随机数生成器):输出是确定性的,但看起来像随机数据。它在密码学上并不安全——统计测试可以通过,但只要样本足够多,输出就可以被预测。
CSPRNG:在密码学上安全——即使拥有无限的计算资源,输出在计算上也无法与真正的随机数据区分。
安全要求
安全的流密码密钥流必须满足以下条件:
1. 在计算上无法与随机数据区分
2. 每一对(密钥、随机数)都产生不同的结果
3. 无法根据部分输出进行预测
4. 不可逆——无法从密钥流推导出密钥
线性同余生成器(不安全)
LCG:s(n+1) = (a × s(n) + c) mod m。许多 rand() 实现都使用它。它在密码学中完全不安全——只要知道少量输出,就可以通过数学方法推导出所有未来和过去的输出。
种子大小与安全性
流密码密钥流的安全性不会超过其种子(密钥)的安全性。无论生成多少密钥流,128 位密钥都只能提供 128 位安全性。种子是熵的来源。
同步式与自同步式
同步式:密钥流独立于明文和密文(RC4、ChaCha20)。自同步式:密钥流依赖之前的密文(CFB 模式)。丢失比特会使同步式密码失去同步。
密钥流生成架构
大多数现代流密码都采用以下架构:
1. 密钥 + 随机数 → 初始状态
2. 反复对状态应用置换函数
3. 将部分状态比特输出为密钥流
4. 递增计数器以生成下一个分组
AES-CTR 遵循这一模式。
eSTREAM 计划
eSTREAM 计划(2004—2008 年)对流密码进行了标准化。软件组入围算法包括:HC-128、Rabbit、Salsa20/12、SOSEMANUK。Salsa20 发展为 ChaCha20,后者如今已成为主流流密码。
密钥流重复使用:致命缺陷
流密码的首要禁忌:绝不能重复使用(密钥、随机数)。C1 XOR C2 = P1 XOR P2。多个使用相同 IV 的 WEP 数据包(IV 等价于密钥加随机数)因此可以被完全解密。
CTR 模式下的流密码与分组密码
AES-CTR 是一种被用作流密码的分组密码。专用流密码(ChaCha20)在软件环境中通常更快。在正确使用密钥和随机数的情况下,两者的安全属性相似。
快速检查
流密码重复使用(密钥、随机数)时,根本性的漏洞是什么?
回顾
您已经掌握流密码的基础知识。接下来,我们将深入学习 RC4——了解它的工作方式,以及导致其退出历史舞台的严重弱点。
常见问题解答
「流密码概念与 PRNG」课时是免费的吗?
是的 — 「流密码概念与 PRNG」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cryptology Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cryptology Academy 课程共包含 4 节课。
「流密码概念与 PRNG」这节课中我会学到什么?
了解流密码如何从种子生成密钥流 你通过在浏览器中直接运行的动手代码来练习 Cryptology Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cryptology Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cryptology Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「流密码概念与 PRNG」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cryptology Academy 课中编写并运行代码吗?
能。每节 Cryptology Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。