【发布时间】:2021-03-29 20:49:45
【问题描述】:
我想为大学任务处理 HMAC* 长度扩展攻击。 因此,我同时提供了一个 HMAC* 和相应的消息,并且想要附加另一个任意消息并在没有密钥的情况下重新计算 HMAC。 关于我们的讲座,这是可能的,也是非常常见的攻击场景。
我的问题是基于实现: 为了推动这种攻击,我需要用我已经拥有的现有 HMAC* 替换默认的 SHA256 起始值(h0 到 h7)。由于我没有钥匙,所以无法直接推入原始数据。
除了重新实现 SHA256 之外,还有其他方法可以让我在 python3 中替换这些起始值吗?
澄清
我有一个有效的 HMAC* h。 此外,还有一条消息 m 已被用于(连同密钥 k)来生成 h。 (h = SHA256(k || m))。
我的任务:我需要在 m 的基础上,在不知道 k 的情况下,找到一种方法来推导另一个 HMAC* h'。事实证明,新消息是 m' = m + pad(k||m) + a 和随机选择的 a。
进一步说明
*:对于“HMAC”,我不是指 RFC 2014 的标准。HMAC 通常“是一种特定类型的消息认证代码 (MAC),涉及加密散列函数和秘密加密密钥。” (维基百科.org/HMAC)。 在这种情况下,HMAC 计算为 h = SHA256(k || m) 其中 k 是密钥,|| 是连接和 m 是消息。
【问题讨论】:
-
那会是什么 HMAC 长度扩展攻击? HMAC 的“存在理由”是to avoid length extension attacks。除此之外,是什么让您认为需要更改起始值才能执行长度扩展攻击?
-
一般 API 不会提供这种功能,但您始终可以复制源代码并进行更改。
-
我终于通过移植一个 C 实现得到了它。其他方式可能会减少工作量,但通过这种方式,我了解到 SHA256 的工作原理非常好。我会尽快澄清问题中的问题。
标签: python-3.x cryptography sha256 hmac hashlib