2

是否有将摘要放入被摘要文件的算法?

换句话说,是否有算法或库,或者是否有可能对包含在被散列/摘要的文件中的文件进行散列/摘要。出于显而易见的原因,这将很方便,例如内置 ISO 的摘要。我试过用谷歌搜索“MD5 注入”和“文件中的文件摘要”之类的东西。没有运气(可能有充分的理由。)

不确定它是否在数学上是可能的。似乎您可以遍历文件,但是您必须对最后一点进行暴力破解(假设摘要是文件或对象中的最后一件事。)

谢谢,陈兹

4

3 回答 3

4

在有限的意义上是可能的:

非加密安全哈希

您可以使用不安全的散列来做到这一点,例如 CRC 校验和系列。

麦克林的gzip奎因

Caspian Maclean创建了一个gzipquine,它会自行解压。由于 Gzip 格式包含未压缩数据的 CRC-32 校验和(请参阅此处的规范),并且未压缩数据等于文件本身,因此该文件包含其自己的哈希。所以这是可能的,但 Maclean 没有指定他用来生成它的算法:

理论上这很简单,但是我使用的帮助程序位于出现故障的硬盘上,而且我还没有建立一个新的工作 linux 系统来运行它们。特别是手动解决校验和将非常乏味。

Cox's gzip,tar.gz和 ZIP quines

Russ Cox又创建了 3 个 Gzip、.和 ZIP 格式的 quinestar.gz ,并在一篇出色的文章中详细描述了他是如何创建它们的。这篇文章介绍了他如何嵌入校验和:蛮力——</p>

第二个障碍是 zip 档案(和 gzip 文件)记录未压缩数据的 CRC32 校验和。由于未压缩的数据是 zip 存档,因此校验和的数据包括校验和本身。所以我们需要找到一个值 x,这样将 x 写入校验和字段会导致文件校验和到 x。递归反击。

CRC32 校验和计算将整个文件解释为一个大数字,并在您使用特定类型的除法将该数字除以特定常数时计算余数。我们可以努力建立适当的方程并求解x。但坦率地说,我们今天已经解决了一个令人讨厌的递归难题,足够了。x只有四十亿种可能性:我们可以编写一个程序依次尝试每种可能性,直到找到一个可行的方法。

他还提供了生成文件的代码

(另请参阅仅包含自身的 Zip 文件?

加密安全摘要

使用加密安全的散列函数,如果不破坏散列函数(特别是安全摘要应该使其“无法生成具有给定散列的消息”)或应用蛮力,这应该是不可能的。

但是这些哈希值比 32 位长得多,正是为了阻止这种攻击。所以你可以编写一个蛮力算法来做到这一点,但除非你非常幸运,否则你不应该期望它在宇宙结束之前完成。

MD5坏了,所以可能更容易

MD5 算法被严重破坏,选择前缀冲突攻击已经可行(如在 Flame 恶意软件的伪造证书中使用的那样;参见http://www.cwi.nl/news/2012/cwi-cryptanalist-discovers-new- cryptographic-attack-variant-in-flame-spy-malwarehttp://arstechnica.com/security/2012/06/flame-crypto-breakthrough/)。我不知道你实际上想要做什么,但很有可能它是可能的。这可能是一个开放的研究问题。

例如,这可以使用选择前缀原像攻击来完成,选择等于所需哈希的前缀,以便将哈希嵌入文件中。原像攻击比碰撞攻击更难,但在这方面已经取得了一些进展。请参阅是否有任何已发表的研究表明对 MD5 的原像攻击迫在眉睫?.

也可以找到 MD5 的固定点;插入摘要本质上是相同的问题。有关讨论,请参阅md5sum 包含总和本身的文件?.

相关问题:

于 2012-09-15T00:41:59.210 回答
3

这样做的唯一方法是,如果您定义文件格式,以便哈希仅适用于不包含哈希的文件部分。

但是,在文件中包含散列(如内置到 ISO 中)会破坏散列的整体安全优势。您需要从不同的通道获取哈希并将其与您的文件进行比较。

于 2010-02-03T17:51:10.690 回答
0

不,因为这意味着散列必须是自身的散列,这是不可能的。

于 2010-02-03T17:41:00.387 回答