【发布时间】:2016-07-07 05:01:44
【问题描述】:
在这里寻找理论讨论。我个人会(并将继续)使用 GPG 或仅使用 SCP 来简单地将文件获取到只有我可以解密或只有我可以下载的地方。仍然讨论以下内容的不足之处(以及不足之处)将有助于我的好奇心。
假设我想在本地加密一个文件,把它放到互联网上,以后可以抓取它。我想确保只有拥有特定密码/短语的人才能解密文件……而且我坚持使用一次性密码。
假设它仅用于加密消息一次,如果使用非常随机的密码(例如 Diceware)以可重复的方式为 pad 播种,这会不会有问题?在 python 中,我会做类似random.seed("hurt coaster lemon swab lincoln") 的事情,然后生成我的垫。我会使用相同的种子进行加密和解密。
到处都有关于此 Mersenne Twister RNG 不适合安全/加密目的的警告。我看到它有一个很长的周期,而且 IIUC,random.seed 允许我选择 16 个字节的不同种子 (Python: where is random.random() seeded?)。
我听说 OTP 中的数字应该是“真正随机的”,但即使有人看到我的 pad 的前 100 个字符,这对他们确定我的 RNG 的种子有多大帮助是(希望解码其余部分)?我想他们可以通过从每个可能的随机种子中生成填充并查看哪些匹配我的前 100 个随机字母来强制种子。不过,还是有不少随机种子可供尝试,对吧?
那么,这有多危险?有没有一种合理的方法可以通过查看序列的一点点来找出常见 RNG 生成的序列的种子?
【问题讨论】:
标签: python encryption random