目前,我正试图使用官方白皮书或它的名称在JS中编写blake3算法。
如果我没听错那么..。在7轮键控排列之后(在压缩函数的末尾),输出值的前半部分将与后半部分进行xor‘编辑,以得到新的上半部分。后半部分是用“h0. h7”编辑的,AFAIK是来自状态的链接值或键。
现在,如果我只有一个块,并将它在keyed_hash模式下散列,那么在压缩函数的末尾,输出块的最后8个值将是我的键,但是xor‘’ed使用压缩值,对吗?那基本上就是哈希了。如果我诚实的话会觉得有点不安全。这可能会暴露出关于钥匙的任何信息吗?尤其是在经过认证的加密方面?
发布于 2023-01-10 00:27:26
所以它才是安全的。没有它,您可以反转压缩函数并直接获得密钥。
相反,xor以与戴维斯-迈耶构造相同的方式防止反转。如果压缩函数足够好,以至于在键控时它的输出与随机没有区别,那么在最后对键进行xoring就不会给您提供任何有用的信息。
在特定的BLAKE3情况下,这已经被证明是安全的,前提是底层分组密码是理想的。
https://crypto.stackexchange.com/questions/103480
复制相似问题