首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HKDF随机抽取-盐还是不加盐?

HKDF随机抽取-盐还是不加盐?
EN

Cryptography用户
提问于 2022-01-06 02:08:12
回答 1查看 564关注 0票数 6

根据香港发展基金文件,使用salt有两个目的:域分离和随机性提取。

这个问题仅仅是为了随机性提取而需要一种盐。

香港发展基金文件指出:

一个盐值(即随机但非秘密的密钥).对于获得具有足够高熵的任意源的随机性的泛型提取器和KDF至关重要。

随机抽取与密钥推导文件(由香港发展基金文件连结)指出:

此外,对于SHA-1这样的单一(无键)函数,“单块”随机假设不适合于随机抽取的设置,因为没有一个函数(即使完全随机)能够从任意高熵输入分布中提取接近均匀的分布。这是这样的,因为一旦函数是固定的(即使是纯随机值),那么就会有高熵的输入分布被映射到输出的小子集。因此,随机抽取的可行方法是考虑由一组键索引的一系列函数(或集合)。当应用程序需要对输入进行散列以提取随机性时,则从该家族中选择一个随机元素(即函数),并将该函数应用于给定的输入。虽然可能有特定的输入分布与家族中的特定函数交互很差,但是一个好的随机抽取家族将使这个“坏事件”以极小的概率发生。最后一个问题是如何生成提取器使用的随机已知密钥。从技术上讲,这并不难,因为各方可以产生适当的随机性,但确切的细节取决于应用程序。例如,在前面讨论的DH密钥交换中,各方交换了清晰的随机选择的值,然后将这些值组合起来为提取器家族(例如HMAC-SHA1)生成单个密钥盐。

香港发展基金文件指出:

基于随机压缩函数的Merkle族用于设计许多流行的散列算法,如MD5、SHA-1和SHA-2.不是一个很好的统计提取器。这类家庭在任何分布上的输出,如果最后一个输入块是固定的,则在统计上是远远不一致的)

然后,它呼应了随机抽取与密钥推导文件中提出的观点:

正如我们在前面的章节中所强调的,泛型提取器,即那些在任意的高最小熵源上工作的,必须通过随机的,但不一定是秘密的密钥(或“盐类”)随机化。特别是,引理2的例子表明,对于每一个确定性抽取器,都有一个输出远不均匀的高熵源。

与这些说法相矛盾的是,我知道ECDH实现使用共享秘密EC组元素上的Keccak-256散列而不带盐分,但这可能是合理的,因为选择海绵结构散列可以减轻对Merkle-Damgard家族散列或B的担忧,理由是EC压缩点表示是足够一致的随机表示(与非ECDH中共享秘密的随机性的一致性相比)。

在什么情况下需要盐?(对于哪些类型的输入关键材料,以及哪些类型的HMAC-哈希函数)。

这些文件是否过时了,以及这些文件所提出的关于使用盐的关切是否通过对现代散列函数性质的深入研究而得到缓解?

EN

回答 1

Cryptography用户

回答已采纳

发布于 2022-01-07 13:31:40

术语在这里很重要。加密盐的主要目的是在重用过程中保护密码,避免杂凑预计算.所以是的,这提供了您的域分离。但是您的问题是从任意来源(包括设备)中提取随机性。

  1. NIST的SP800 90B“用于随机比特产生的熵源的建议”没有具体建议必须使用哪种类型的提取器或配置。您可以按照您的第一篇论文中的建议使用MD5。或滚动您自己的外来类型,只要您计算输出熵的偏差为< 2^{-64}
  2. 盐可以是公开的,因此它可以重复使用,因为它是众所周知的。请记住,您不是在保护密码,而是从提供信息熵源(诚然是不统一的)中提取,但始终是随机源。因此,通过输入熵流使盐析要求变得多余。
  3. 我不同意将最后一块固定为Merkle建筑意味着需要盐渍和HKDF。是的,它们证明了后续输出的不一致性,但在我看来,这是一个攻击场景。如果一个对手可以把所有的零块输入到你的提取器中,你需要更好地保护房间。在I/O熵计算中考虑到了简单的填充(通常是左边的Hash引理)。你的论文实际上也说明了这一点,促进了一个计算上的不可区分的论点。
  4. 商业TRNGs不专门随机加盐。在生产过程中,任何盐都会被重复使用。
  5. 哲学上,几乎所有的随机提取器都在初始化向量中嵌入了盐。查看SHA2实现中的大数字块。或者是Toeplitz矩阵。

所以我同意凯拉拉卡对你的评论。不需要盐。

票数 1
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/97980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档