我使用XOR one-time pad将自制的python脚本用于私有本地存储。密钥文件是使用python的“随机”内置模块提供的PRNG生成的。由于PRNG中种子的大小是有限的,因此可能的种子的数量也是有限的,因此引入了一个针对计算工具不断增强的功能的抵御暴力攻击的弱点。如果我每两个字节随机改变种子(例如),我会增加脚本的强度吗?脚本变慢了,但在我的情况下这不是问题。
使用的函数: SystemRandom().randint(0,255)
发布于 2019-11-22 01:11:58
SystemRandom -这是可选的,可能不存在-根据the documentation使用操作系统的随机数生成器,它具有not changed for Python3。
由于PRNG中种子的大小受到限制,因此可能的种子的数量也是有限的,因此引入了一个针对计算工具不断增强的能力的针对暴力破解攻击的弱点
这是不正确的,因为SystemRandom还依赖于操作系统收集的熵。任何种子通常被混合()到状态中,并因此被添加到随机数生成器收集的熵中。
但是,请注意文档中的以下内容:
因此,seed()和jumpahead()方法不起作用,将被忽略。
因此,将种子添加到熵池似乎是不可能的,即使添加种子通常是由运行时/库支持的。
顺便说一句,文档中完全不清楚SystemRandom([seed])调用中的初始种子发生了什么,但您似乎并没有使用它。
请注意,您说您可以每隔2个字节“随机更改种子”。如果种子确实是真正随机的,那么您可能希望将其用作OTP。如果你的随机流的质量取决于不同的随机数流的随机性,那就有些奇怪了。
幸运的是,在大多数系统上,系统的随机数生成器是安全的,无论您是否自己播种它。
OTP几乎从来都不是正确的答案。请尝试使用流密码,如ChaCha20。
https://stackoverflow.com/questions/58980272
复制相似问题