![ubuntu 软件包(deb 文件)只有 md5sum 是安全的吗?](https://linux22.com/image/1098173/ubuntu%20%E8%BD%AF%E4%BB%B6%E5%8C%85%EF%BC%88deb%20%E6%96%87%E4%BB%B6%EF%BC%89%E5%8F%AA%E6%9C%89%20md5sum%20%E6%98%AF%E5%AE%89%E5%85%A8%E7%9A%84%E5%90%97%EF%BC%9F.png)
以下问题的背景介绍
(因此这个问题对更多人来说更有用)
在Ubuntu/debian 风格的软件包(*.deb 文件)有一个名为的文件
/DEBIAN/md5sums
,其内容如下形式:
212ee8d0856605eb4546c3cff6aa6d35 usr/bin/文件1 4131b66dc3913fcbf795159df912809f 路径/到/文件2 8c21de23b7c25c9d1a093607fc27656a 路径/到/文件3 c6d010a475366e0644f3bf77d7f922fd 文件 4 的路径/到/位置/
我假设此文件将用于检查软件包附带的文件是否已损坏。由于文件名为“/DEBIAN/md5sums”,我假设路径+文件名前的十六进制数是MD5 消息摘要算法包文件的哈希值。
现在所有感兴趣的人都知道 MD5 哈希值很久以前就被破解了。因此,完全有可能更改包中文件的内容(例如恶意更改),但文件仍然具有相同的 MD5 哈希值(例如,参见概念验证“预测获胜者....”)。
问题
考虑到以上信息,我想知道以下内容:
假设我在 Ubuntu 系统中安装了一个包。这是DEBIAN/md5sums
确保数据未被篡改的唯一方法吗?
回答这个问题我认为可以帮助弄清以下问题:
- 整个 deb 包是否也经过哈希处理(为此设置哈希值),以便有另一种方式确保收到的文件是“安全的”/“未被篡改的”
- 如果有其他方法
DEBIAN/md5sums
可以确保文件的完整性,那么 *.deb 包中包含的文件到底是什么? - Ubuntu 是否使用比 SHA-1 和 MD5“更少损坏”的存储库/包系统哈希?
不幸的是我也不知道。
任何可以阐明问题(甚至只是一个子问题)的回应都非常受欢迎
更新
(1) https://help.ubuntu.com/community/Repositories/Ubuntu#Authentication_Tab似乎表明(正如我所希望的那样)存在一些公钥/私钥 gpg 密钥(用于保护存储库和软件包系统)免受攻击。不过,链接位置的信息并不多。它几乎没有提到软件包系统的安全方面。无论如何,我认为链接已经表明问题的答案将是“不 - 至少存储库中的 deb 软件包 - 也受到... 的保护”。希望有人能提供一些见解来回答这个问题。
(2) 这个问题似乎也与 Ubuntu 软件包系统中的“安全性”有关。所以我只是在这里添加它,以便如果有人想弄清楚这个问题,它会有所帮助:为什么提议的 BADSIG(在 apt-get 更新上)修复是安全的?
答案1
Ubuntu 发布了一份使用 RSA 密钥签名的清单。清单列出了单独的Packages
索引文件,每个文件都带有 MD5、SHA-1 和 SHA-256 哈希值。每个Packages
文件都列出了单独的.deb
文件,带有 MD5、SHA-1 和 SHA-256 哈希值。
为了进行验证,apt 使用它支持的最佳哈希值,该哈希值由它正在下载的存档发布。对于 Ubuntu 存档,这是 SHA-256。
因此,Ubuntu 系统上安装软件包的整个过程受到 RSA 和 SHA-256 的保护。
dpkg 中存在的 MD5 保护实际上仅适用于意外损坏,而对于保护安装路径则没有必要。
您可能对该debsums
包感兴趣,但由于它使用 MD5,因此它也仅适用于检查意外损坏。
如果您想检查系统是否遭到恶意修改,那么这些工具并不适合您。您需要让系统离线,然后对照之前的记录、原始包文件或由此生成的安全哈希进行检查。
请注意,由于成功的恶意修改可能只是将软件包降级为安全更新之前的软件包,因此检查所有已安装的软件包文件是否与原始文件匹配可能也不够。
答案2
我希望这是一个评论,但我无法将其放入框中,所以我将其放在这里。
是的,md5 在密码学上已经被破解,但这并不意味着它是一种糟糕的通用哈希算法。修改文件以使其具有相同的哈希值非常困难,而使用特定的恶意更改来做到这一点几乎是不可能的。从您引用的示例来看,(预测获胜者)请参见:
“首先,这些文档被精心准备为有效的 PDF 文档,并包含一个隐藏的图像对象,其中包含足够数量的随机位。然后,根据上面显示的菱形结构,计算出 11 个选择前缀碰撞,并将其放置在隐藏图像对象中的正确位置。这样,十二个文档就变成了 MD5 多重碰撞。”
所做的就是用随机数据使哈希值匹配。该技术还远不能将特定的恶意代码添加到文件并让哈希值对齐而不会破坏它或使文件被更改变得显而易见(我不知道 apt 是否能做到这一点,但许多文件哈希值都附带了文件大小,以增加不可检测的哈希冲突的难度)。
答案3
md5 并未“被破解”。他们发现的是一种精心制作原始消息和具有相同哈希值的修改后消息的方法。不可能获取未经过特殊制作以用于篡改(正确文件)的原始消息,并以保留其 md5sum 的方式对其进行修改。