如果我知道您打算安装的程序的哈希是d306c9f6c5.,如果我生成一些其他的哈希值为这个值的文件,我可能会造成各种各样的破坏。-来自https://nakamoto.com/hash-functions/
从理论上讲,如果您知道一个程序的哈希值,然后生成另一个哈希值为该值的文件,那么您能做什么呢?
发布于 2020-01-17 16:21:42
许多应用程序控制产品(也称为应用程序白名单)使用散列来标识已批准的可执行文件。如果复制已批准文件的散列,则在大多数情况下,这足以执行使用此类控件的应用程序。代码签名也依赖于文件哈希。
这些产品的安全性来源于两个方面:第一,很难产生预图像碰撞。(您建议的攻击是基于查找预图像冲突的。)
安全哈希算法预计将抵抗预图像碰撞。这一期望只能由经得起密码专家检验的数学证据来满足。有许多哈希算法没有已知的,实际的攻击。例如,SHA256,SHA512和SHA3。
现在,SHA1算法被废弃了,因为新技术和计算能力的增长结合在一起,使得它容易受到这种碰撞的影响。这种方法需要数千美元的计算(以散装云计算率计算),但对于资金充足的组织来说是可行的。
另一个使预图像攻击变得困难的因素是,您可能不知道目标选择的散列算法。基本上不可能为多个算法生成冲突。例如,您不能创建与另一个文件的MD5、SHA1和SHA256哈希同时冲突的文件。所以,你需要知道要瞄准哪种算法。
总之,如果您能够生成预图像冲突,就会产生严重的影响,但是哈希算法的设计正是出于这个原因使得这几乎是不可能的。
发布于 2020-01-18 15:32:24
所以有一个正确的可执行文件,其中包含一个与恶意文件相匹配的哈希码。除非我能说服你的电脑接受我的恶意文件,否则什么都不会发生。例如,如果您试图下载正确的可执行文件,而我设法让您下载恶意文件,那么您就有麻烦了。
如果使用企业备份系统,则通常会对文件使用校验和。因此,如果一个用户安装了恶意应用程序,并且是第一个备份它的用户,那么您的企业备份系统将存储恶意文件。如果其他人随后尝试备份正确的可执行文件,则不会因为匹配的校验和而复制任何内容。如果任何用户损坏了可执行文件并不得不从备份中恢复它,他或她就会得到恶意文件。
因此,仅用相同的哈希代码生成一个文件是不够的--您必须让我使用该文件。
https://security.stackexchange.com/questions/224144
复制相似问题