CSRNG生成的随机数是否与该数字的SHA哈希相当安全?我知道RNG生成的数字看起来是随机的,并不一定是随机的。例如,在一个范围内的1,2^256,数字100可能是随机选择,但它是不安全的,所以它需要改变。
然而,一个看起来随机的数字的SHA256散列与任何其他结果一样,有相同的机会成为100。这是否意味着伪随机数的SHA256散列在安全性方面较差?
发布于 2022-10-13 16:26:49
CSRNG生成的随机数是否与该数字的SHA哈希相当安全?
安全性不是单个参数。同等安全,在什么要求下,在什么范围下,在什么前提下?
我知道RNG生成的数字看起来是随机的,并不一定是随机的。
随机数代可能不会产生不可预测的输出,但是一个种子良好的CSPRNG,一个加密安全的随机数生成器--当然--应该这样做。
例如,在一个范围内的1,2^256,数字100可能是随机选择,但它是不安全的,所以它需要改变。
当安全生成任何元素时,都与下一个元素一样安全。
请注意,SHA-256生成256位,这可能在之后被解释为一个数字,尽管我们通常假设它在[0, 2^{256})范围内。
然而,一个看起来随机的数字的SHA256散列与任何其他结果一样,有相同的机会成为100。
“看上去是随机的”不是一个好的假设。43573405478350可能“看上去是随机的”,但它永远不会产生100的值。
CSPRNG和加密安全散列(如SHA-256 )应该具有相同的概率,以便在种子良好时生成特定的数字。
这是否意味着伪随机数的SHA256散列在安全性方面较差?
如前所述,这主要取决于输入。许多CSPRNG实际上是建立在哈希算法之上的。在安全性方面添加另一个散列迭代可能不会有多大作用,当然,假设您至少要给它提供256位。
https://crypto.stackexchange.com/questions/102227
复制相似问题