标准化下载完整性元数据的努力在哪里?(appcasting?)

标准化下载完整性元数据的努力在哪里?(appcasting?)

我一直在下载开源软件,但一直困惑于这样一个事实:一方面,有如此多的网站(阿帕奇MySQL) 通过 MD5 哈希值和/或数字签名提供下载完整性信息,特别是因为涉及可能容易受到黑客攻击的下载镜像站点,但这种下载完整性信息的格式是人可读的,而非机器可读的。

如果这些信息有标准格式,我会非常高兴,这样我就可以使用 Web 浏览器上的插件软件为我完成所有繁琐的工作,并生成结果日志文件,这样我就不必每次下载东西时都手动运行 md5 并完成所有这些额外的工作。看起来确实有人在设计这样的格式,例如“应用广播”(也可以看看这里这里这里以及看起来像原始博客的内容这里)...

...为什么这样的事情在开源社区中不那么普遍?要让这样的事情运转起来需要什么?

答案1

简而言之,有一种标准方法,称为应用程序签名。较长的答案会稍微复杂一些。

关于您的 MD5 哈希想法,至少有一个实验性的 Firefox 插件可以计算下载文件的哈希值。然后您可以手动比较它们。或者,许多网站提供带有其软件预先计算的哈希值的文本文件下载。然后您可以使用 强制检查md5sum -c < hash filename >。所有这些方法的问题在于,如果攻击者能够替换您下载的文件,他可能能够更改网站上列出的哈希值。

应用程序签名是解决此问题的官方方法。它使用公钥加密和证书颁发机构,其方式与网站 SSL 安全标准中使用的方式类似。它的工作原理是从证书颁发机构获取数字证书。任何人都可以验证此证书,并确保持有者的身份属实。它还可用于“签名”软件包,以确保软件包是由持有者制作的,并且不会被持有者以外的任何人以任何方式更改。

那么,为什么我们没有看到这些方法得到更好的采用呢?因为它们已经被广泛采用,而且在它们起作用时几乎看不见。如果签名默认可用,则主要操作系统和浏览器会使用这些签名。此外,主要的 Linux 发行版使用这些方法签署它们提供的软件包和更新。然而,对于较小的参与者来说,我们不太可能看到大规模采用。

这里的问题是黑客的贫穷和黑客的骄傲的结合。为了获得这些证书之一,您需要向其中一个证书颁发机构支付一大笔钱。如果他们不这样做,程序员仍然可以在没有任何 CA 批准的情况下签署自己的软件包。通过这样做,下载文件的用户可以确保只有证书持有者接触过特定的软件包,这符合您问题的完整性要求。

不幸的是,使用这样的“自签名”证书减少公众对你的软件的信心,而不是增加它。如果你自签名,操作系统/浏览器会抱怨高声当您尝试打开软件包时,声音会比完全未签名的文件更大。由于浏览器或操作系统不信任软件创建者,因此它认为您也不应该信任他们。

由此,黑客抱怨道:为什么有人应该更信任一些不知名的跨国证书颁发机构?他们做过什么来证明自己比其他人更值得信赖?

对于很多人来说,证书问题归根结底就是敲诈勒索:“付钱给我们 $$$ 来认证你,否则你的下载就成了二流产品”。这就是为什么除了最大的参与者之外,没有人采用应用程序签名的原因。

相关内容