Cryptography 低熵散列的XORed CSPRNG字节的熵是多少?

Cryptography 低熵散列的XORed CSPRNG字节的熵是多少?,cryptography,entropy,Cryptography,Entropy,假设我从CSPRNG中提取256位,并假设它是完美的256位熵。这叫兰德 然后假设我使用ASCII文本“password”的sha256。称之为散列 现在我们使用XOR rand和hash。称之为混合 混合的熵比兰德的熵小吗 如果有,有没有计算熵的公式 下面的例子:作为兰德和弱_散列函数的混合熵是多少 #/usr/bin/python3 导入hashlib,操作系统 def main(): rand=int(os.uradom(32.hex(),16) 弱_hash=int(hashlib.sh

假设我从CSPRNG中提取256位,并假设它是完美的256位熵。这叫兰德

然后假设我使用ASCII文本“password”的sha256。称之为散列

现在我们使用XOR rand和hash。称之为混合

混合的熵比兰德的熵小吗

如果有,有没有计算熵的公式

下面的例子:作为兰德和弱_散列函数的混合熵是多少

#/usr/bin/python3
导入hashlib,操作系统
def main():
rand=int(os.uradom(32.hex(),16)
弱_hash=int(hashlib.sha256(b'password').digest().hex(),16)
混合=(“%064x”%(随机数^weak_散列))
印刷品(混合)
main()

您正在描述一次性键盘。如果密钥流:CSPRNG的输出是完全随机的,那么密文也将与随机密文无法区分

当然,CSPRNG的输出不是完全随机的。但是,如果CSPRNG具有足够的熵,那么您将拥有与流密码相同的安全性,流密码模仿一次性pad


因此,只要CSPRNG没有进入以前遇到的状态,输出(
mixed
)将与CSPRNG一样随机。这基本上只有在熵源失败的情况下才会发生。

AIUI如果XOR的一个输入具有完美的熵,那么输出也具有完美的熵。若你们有弱输入的四位信息,那个么你们就不能对XORed输出的这四位说什么。