首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >完整性受损-哈希修改

完整性受损-哈希修改
EN

Cryptography用户
提问于 2015-04-17 07:35:18
回答 2查看 905关注 0票数 2

我们都知道,HASHing是验证密码系统完整性的用户。我有个关于哈希的疑问。

假设中间攻击者操纵数据并使用相同的散列算法(因为哈希算法是通用算法)创建新哈希(通过在被操纵的数据上运行算法),并将其与被操纵的数据一起发送给receiver.when接收方,运行在被操纵数据上的算法,则得到相同的哈希(攻击者创建的哈希),尽管完整性将得到验证。但实际数据已被操纵/修改,完整性受到损害。

有可能吗?如果有可能,我们如何才能消除这个问题(解决同样的问题)?

EN

回答 2

Cryptography用户

发布于 2015-04-17 09:07:19

的确,散列是用来确保完整性的,但不是这样。

您的想法似乎是发送(msg, Hash(msg))。事实上,这是不安全的,因为你所描述的攻击。

第一步从你自己说的话开始:

散列算法是通用的算法。

这个名字不是统一的,而是公开的,它意味着任何人都知道它。而不是哈希算法,我们将使用一个MAC (维基百科:MAC),这是一个带有密钥的散列算法。一个很好的MAC结构是HMAC:HMAC(msg,key1,key2) = H( key1 || H(key2||msg) ),其中H是一个密码散列,而||是级联的。

如果我们阻止对手知道我们使用的密钥,他就不能在修改消息后重新计算MAC。所以现在我们只需要MAC密钥上的隐私,这是另一个挑战,你可以用密钥交换协议(通常是: Diffie-Hellman)来解决它,如果你有中间人身份验证,等等……

票数 6
EN

Cryptography用户

发布于 2015-04-21 02:07:53

通常,哈希本身并不是为了完整性而使用的,这正是您所述的原因。为了使它们更强大,我们使用发送方的private key对哈希进行加密。这样,任何拥有发件人的public key的人都可以解密哈希并根据消息的新哈希来检查它,但是中间人不能伪造它,因为他们没有发送者的private key

这叫做数字签名。

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

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

复制
相关文章

相似问题

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