首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HMAC-SHA-256 vs SHA-512/256 vs截断SHA-512,用作MAC

HMAC-SHA-256 vs SHA-512/256 vs截断SHA-512,用作MAC
EN

Cryptography用户
提问于 2018-06-13 01:00:23
回答 1查看 4.6K关注 0票数 3

我正在研究三种共享秘密消息身份验证代码的选项:

  1. HMAC-SHA-256(秘密,有效载荷)
  2. 沙-512/256(secret+payload)
  3. SHA-512(secret+payload)截断为256位

选项1是最标准的选择。我正在考虑选项2,因为它在64位CPU上更快。我正在考虑选项3,因为SHA-512在编程语言库中比SHA-512/256更广泛可用。

备选方案2和3适合于MACs吗?是否有任何与安全有关的理由来选择一个而另一个呢?

澄清:我意识到一个好的HMAC-SHA-256的实现并不比SHA-256慢得多.我正在考虑选项2和3,因为SHA-512比64位计算机(链接)上的SHA-256更快。

背景:一些密码散列函数(如SHA-256和SHA-512)是“可扩展的长度”。这不一定是一个问题,因为正确使用哈希函数不应该受到该属性的影响。但是不能像MAC那样直接使用这种散列函数,因为在这种情况下,签名和输入都来自不受信任的源(长度扩展攻击)。

SHA-512/256是一个基于SHA-512的散列函数,不能扩展长度。(这类似于运行SHA-512,并且只使用前256位的输出,这也是不可扩展的。)我的问题是,这两个哈希函数是否可以直接用作MACs。

EN

回答 1

Cryptography用户

回答已采纳

发布于 2018-06-13 02:24:20

选项2和3适用于MAC,假设密钥的长度不是可变的(否则必须使用适当的填充,类似于KMAC中使用的填充)。以这种方式,它的行为类似于SHA-3,不需要将在通常的嵌套HMAC结构中运行。数字2和3实际上是相同的。唯一的区别是SHA-512/256使用的IV与普通截断的SHA-512不同。它们都提供了防范长度扩展攻击的保护。

请注意,您可以优化HMAC以减少对哈希的调用次数。与HMAC-SHA-256相比,任何良好的实施都不会对性能造成明显的损害。您也可以只使用一个名为包络MAC的旧结构执行单个SHA-256函数,该构造再次将密钥、消息和键连接在一起,并填充。

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

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

复制
相关文章

相似问题

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