首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SHA256哈希可塑性

SHA256哈希可塑性
EN

Cryptography用户
提问于 2020-06-04 06:20:19
回答 1查看 250关注 0票数 1

SHA-256明文可以延展性吗?例如:

给定y = hash(x),攻击者能否找到z以便z = hash(f(x))。在这里,f()可能是在消息中添加一个后缀、一个异或操作或任何其他数学转换。

我知道在Merkle结构中有一个已知的延展性弱点:

给定hash(x)=y,查找hash(x\mathbin\| s)=y' ( \mathbin\|表示级联)的方法非常简单。攻击者不需要知道x是什么。这也被称为长度扩展攻击。

除了长度扩展攻击之外,还有其他已知的SHA256哈希可伸缩性示例吗?例如,给定hash(x)=y,我可以在不知道x是什么的情况下找到哈希(x \oplus s)的输出吗?

编辑:一位同事向我提供了这个链接:哪种类型的哈希函数提供了哈希摘要的不可扩展性?,但我不认为这能详细回答我的问题.

EN

回答 1

Cryptography用户

回答已采纳

发布于 2020-06-04 17:53:08

我相信,如果您在SHA256哈希压缩操作上做了一个看似合理的假设,那么您可以证明SHA256唯一的可延展性就是长度扩展攻击。

这个合理的假设是,对于一个固定的输入状态,那么消息块和输出状态之间的映射就像一个随机oracle 1。

在此假设下,假设在SHA-256填充之后的消息M_0是序列N_0,而消息M_1 = f(M_0)是SHA-256填充之后的序列N_1,我们假设M_1没有M_0作为前缀(如果是,那么这是一个长度扩展攻击)。

如果M_0没有M_1作为前缀,那么我们可以表明,在SHA-256块的整数数之后,N_0N_1不同;此时,SHA-256哈希压缩操作将它们的状态映射为随机值,在此之后,后一个SHA-256哈希压缩操作将继续将状态映射到随机值,因此输出将有效地是随机的(因此不能从另一个随机值中计算一个)。

而且,如果M_0确实使用M_1作为前缀(尝试的攻击是“长度缩短攻击”),那么N_0可以使用N_1作为前缀;如果是这样,则M_0处理的中间状态不能由最终的M_0输出值(实际上是随机的)来确定,N_0没有N_1作为前缀,那么前面的推理就适用了。

这个论点有点手舞足蹈,我相信它的本质是正确的.

1:请注意,我们不能假设整个哈希压缩操作都是随机的甲骨文,因为我们知道,给定消息块M和增量\delta,我们可以使用S_1 = \text{Compress}( S_0, M )S_1 = S_0 + \delta找到输入和输出状态S_0S_1;这表明哈希压缩操作本身与随机oracle是不同的。

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

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

复制
相关文章

相似问题

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