对于OTP,我需要我能获得的‘最好’随机数据。
请检查我把PRNG堆在一起的想法是否只会使输出在统计上更好,而不会更糟?!
因此,以硬件USB为例,它使用一些“技术”来生成随机数据,数据看起来可能很随机--但我们可能永远不知道是否存在缺陷/后门/确定性等等。
我所建议的是从不同的制造商获得N个PRNG和以预先确定的顺序产生的XOR数据,例如,把它们放在一个袋子里,然后像彩票号码一样挑选它们。下面的n是3,但我可能会使用N=10
PRNG1 ⊕ PRNG2 ⊕ PRNG3 = Output如果任何PRNG是“有缺陷的”--假设它产生所有0位,这不是一个问题,因为XOR的输出并不比以前少--因此我们只能使数据更加随机/统一?
例如:
PRNG1 ⊕ 0 ⊕ PRNG3 = Still Random Output如果有缺陷的PRNG在一定程度上表现出任何随机性,那么它也会导致这种随机性。
例如,所有的0's,除了1位,似乎是随机的;
PRNG1 ⊕ 00010000 ⊕ PRNG3 = Still Random Output如果这是真的,那么应该可以将我自己的私有数据插入PRNG管道,比如通过AES传递的假日图片!只要没有人能够访问数据,就不重要了,它只能隐藏任何非随机性或不均匀性,减少不同PRNG制造商串通、共享技术或采取有缺陷或确定性方法的风险;
PRNG1 ⊕ PIC1 ⊕ PRNG2 ⊕ PIC2 ⊕ PRNG3 = Output发布于 2019-12-21 06:00:27
如果不同的PRNG是无关的,那么我认为是的,XOR任何具有随机位的比特流都会产生随机比特,所以如果您的输入PRNG是随机的,则输出是随机的(为了您的目的)。
从另一个角度来看,假设您的PRNG之一是带有随机密钥的AES-CTR,并且您设法用硬件PRNG实现了XOR的非随机输出,您实际上找到了一种打破AES的方法。这难道不是一个独立的成就吗?
这是陷阱。只有当不同的PRNG是不相关的,有不同的熵源、不同的算法等时,逻辑才会遵循。从不同的厂商获取硬件密钥并不能保证这一点。如果您使用的不同PRNG有某种关联,那么它们完全有可能“抵消”另一个PRNG,给您留下较少的随机输出。
https://crypto.stackexchange.com/questions/76547
复制相似问题