根据香港发展基金文件,使用salt有两个目的:域分离和随机性提取。
这个问题仅仅是为了随机性提取而需要一种盐。
香港发展基金文件指出:
一个盐值(即随机但非秘密的密钥).对于获得具有足够高熵的任意源的随机性的泛型提取器和KDF至关重要。
随机抽取与密钥推导文件(由香港发展基金文件连结)指出:
此外,对于SHA-1这样的单一(无键)函数,“单块”随机假设不适合于随机抽取的设置,因为没有一个函数(即使完全随机)能够从任意高熵输入分布中提取接近均匀的分布。这是这样的,因为一旦函数是固定的(即使是纯随机值),那么就会有高熵的输入分布被映射到输出的小子集。因此,随机抽取的可行方法是考虑由一组键索引的一系列函数(或集合)。当应用程序需要对输入进行散列以提取随机性时,则从该家族中选择一个随机元素(即函数),并将该函数应用于给定的输入。虽然可能有特定的输入分布与家族中的特定函数交互很差,但是一个好的随机抽取家族将使这个“坏事件”以极小的概率发生。最后一个问题是如何生成提取器使用的随机已知密钥。从技术上讲,这并不难,因为各方可以产生适当的随机性,但确切的细节取决于应用程序。例如,在前面讨论的DH密钥交换中,各方交换了清晰的随机选择的值,然后将这些值组合起来为提取器家族(例如HMAC-SHA1)生成单个密钥盐。
香港发展基金文件指出:
基于随机压缩函数的Merkle族用于设计许多流行的散列算法,如MD5、SHA-1和SHA-2.不是一个很好的统计提取器。这类家庭在任何分布上的输出,如果最后一个输入块是固定的,则在统计上是远远不一致的)
然后,它呼应了随机抽取与密钥推导文件中提出的观点:
正如我们在前面的章节中所强调的,泛型提取器,即那些在任意的高最小熵源上工作的,必须通过随机的,但不一定是秘密的密钥(或“盐类”)随机化。特别是,引理2的例子表明,对于每一个确定性抽取器,都有一个输出远不均匀的高熵源。
与这些说法相矛盾的是,我知道ECDH实现使用共享秘密EC组元素上的Keccak-256散列而不带盐分,但这可能是合理的,因为选择海绵结构散列可以减轻对Merkle-Damgard家族散列或B的担忧,理由是EC压缩点表示是足够一致的随机表示(与非ECDH中共享秘密的随机性的一致性相比)。
在什么情况下需要盐?(对于哪些类型的输入关键材料,以及哪些类型的HMAC-哈希函数)。
这些文件是否过时了,以及这些文件所提出的关于使用盐的关切是否通过对现代散列函数性质的深入研究而得到缓解?
发布于 2022-01-07 13:31:40
术语在这里很重要。加密盐的主要目的是在重用过程中保护密码,避免杂凑预计算.所以是的,这提供了您的域分离。但是您的问题是从任意来源(包括设备)中提取随机性。
所以我同意凯拉拉卡对你的评论。不需要盐。
https://crypto.stackexchange.com/questions/97980
复制相似问题