我正在阅读PGP 文档,偶然发现了 Phil Zimmermann(PGP 的创建者)所写的部分,这激起了我的好奇心:
当我在 70 年代初上大学时,我设计了一个我认为是出色的加密方案。一个简单的伪随机数流被添加到明文流中以创建密文。这似乎会阻碍对密文的任何频率分析,即使是最足智多谋的政府情报机构也无法破解。我对自己的成就感到非常自鸣得意。
多年后,我在几本介绍性密码学文本和教程论文中发现了同样的方案。多好。其他密码学家也想过同样的方案。不幸的是,该方案是作为一个简单的家庭作业提出的,关于如何使用基本的密码分析技术来简单地破解它。我的绝妙计划就这么多。从这次卑微的经历中,我了解到在设计加密算法时很容易陷入错误的安全感。
什么技术能够轻松解密以这种方式编码的文本?它似乎几乎等同于一次性填充物(没有填充物是牢不可破的),前提是伪 RNG 足够复杂(周期比加密文本长得多;添加到每个字符的平均大小显着大于字符大小)和一个适当复杂的种子(所以你不能蛮力每颗种子)。
例如,使用Mersenne-Twister(周期为 2^19937 -1 ~ 4.3x10^6001 )和生成随机 256 位种子的密码;如果没有种子,它似乎是无法破解的。
或者他们是否生成了周期为 2^32 - 1 ~ 43 亿的简单随机数生成器(那是 70 年代;Mersenne Twister 直到 1990 年代中期才被发明);您可以在哪里暴力尝试 43 亿个随机种子中的每一个,并快速检查密文以查看是否出现字典单词或简单的频率分析(大量空格和 e)?