the*_*les 8 security digital-certificate digital-signature tampering
我想知道在确定文件是否被篡改时,我可以在多大程度上依赖文件上的数字签名(又名 Verisign、Simantec 等的数字证书)。
假设我想要下载一个应用程序版本,该版本不再位于原始开发人员的网站上,而是可在 cnet、oldapps.com 或 filehippo 等第三方网站上找到。我通常会搜索旧的论坛条目,其中有人列出了 MD5 或 SHA1 哈希签名,看看它们是否与我下载的条目上的哈希相匹配。这仅适用于软件广泛传播的真正大型开发人员。
我想知道验证文件的数字签名是否是确保文件来自开发人员并且未被第三方更改的另一种可靠方法?
我要问的是:如果黑客用恶意代码注入已经签名的 DLL 或 EXE,有效地更改了文件的哈希值,是否会破坏数字签名,因为签名嵌入了某种摘要?或者签名完全不受影响?
我决定使用实证方法来回答我自己的问题,而不是听从数字认证机构的说法。
我设计了一个实验,使用十六进制编辑器修改 wdksetup.exe(来自 Microsoft 网站的签名 WDK Web 安装程序)的副本,并研究数字签名如何受到影响。我将 1byte 一直替换为 25KB,并且每次替换时都会生成一个新副本。我还使用 ResourceHacker 添加了一个图标组,这为文件添加了额外的 400KB。
结果:
替换 1 个单字节将更改文件的 SHA1 摘要,但也会导致其签名检查失败。签名仍然存在,但不会通过任何检查。如果您将文件发送到 VirusTotal,如果您转到属性并单击签名上的详细信息,或者如果您尝试运行它并查看发布者行,您将收到通知,该签名不好。1 个单字节。杰出的!
话虽这么说,我强调签名并没有丢失(即使我进行了高达 25KB 的替换),因此当您转到“文件属性”时,仍然会有一个“数字签名”选项卡,并且仍然会显示“Microsoft”。这是非常具有误导性的,您必须小心不要在那里结束检查,因为无论签名是否有效,该选项卡仍然存在。为了确保您有一个好的签名,您必须选择签名并单击详细信息。然后您将看到一个对话框,告诉您该签名是否有效。这描述了我在 Windows 7 中观察到的行为,我没有方便的 8 或 10 副本来查看属性对话框的行为方式。
对文件进行大量大小更改将导致签名被完全破坏。
(编辑:我很好奇大小的影响。我在 250mb 文件上重复了 1 字节替换实验,得到了相同的结果。我也很好奇大小是否会影响计算摘要时发生冲突的可能性。我做了一个3.5GB DVD iso 中的 1 字节替换导致不同的 MD5 和 SHA1 哈希值。)
| 归档时间: |
|
| 查看次数: |
4850 次 |
| 最近记录: |