首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于scrypt HMAC存储格式,为什么要将散列的输入和散列本身运行到HMAC中?

对于scrypt HMAC存储格式,为什么要将散列的输入和散列本身运行到HMAC中?
EN

Cryptography用户
提问于 2015-10-07 18:49:14
回答 1查看 99关注 0票数 1

通常,如果主体是散列的,为什么要提供主体和散列作为HMAC的输入。相反,同样的安全性不是通过散列和只提供哈希作为HMAC的输入来实现的吗?

我看了看这里的文件。我还查看了答案在这里,它提供了对哪个字节用于哪个算法的详细描述。

这两个文档声明在计算HMAC字节时使用0到63作为输入。此外,在计算SHA-256散列字节时,使用0到47作为输入。

因为字节0到47的任何更改都会将字节48更改为63。为什么要为HMAC提供0到47字节的输入呢?如果HMAC使用48到63字节作为输入,安全性是否相同?

EN

回答 1

Cryptography用户

回答已采纳

发布于 2015-10-08 06:58:39

因为字节0到47的任何更改都会将字节48更改为63。为什么要为HMAC提供0到47字节的输入呢?如果HMAC使用48到63字节作为输入,安全性是否相同?

不,因为这是一个16字节的HMAC,即128位哈希,而不是48字节的实际值。HMAC有256位的安全性,而哈希的HMAC只有128位的预图像电阻和64位的碰撞电阻。

现在,这是否会导致实际的攻击,我不太确定。对哈希的碰撞攻击是可以实现的,但我不能立即看到攻击者从中受益。不过,如果要使用256位HMAC,则没有必要使用初始哈希来降低安全性。

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

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

复制
相关文章

相似问题

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