我正在深入研究 apt,并且对安全性有疑问。也许你可以帮助我并提供答案。
A) 据我所知,如果 apt 从某种来源下载软件包,它会验证该软件包在传输过程中是否被篡改。这意味着:一旦 apt 收到该软件包(并将其提供给安装),其完整性就已经得到确认。
B) 据我所知,每个 apt 软件包内部都包含软件包本身中存储的每个文件的校验和。此校验和文件本身已签名。这意味着:在 apt 安装软件包时,所有(内部)软件包文件也都已根据这些校验和进行了检查。
很明显,A) 是必需的。我的问题是:为什么是 B)?这不是有点“太”安全了吗?别误会我的意思:这里的安全性不能太低,但我想知道:这不是有点过分了吗?假设发行版存储库维护得相当好,B) 的检查就没有必要了,不是吗?或者反过来:如果过程 A) 已经确认了包的完整性,为什么过程 B) 还要再次验证完整性?
请不要误会:我并不是质疑这里使用的安全基础设施。我只是试图了解它的各个方面,尤其是这个安全基础设施试图解决的威胁。
答案1
您可以.deb
从不做“A”的来源获取文件。在解压软件包时,安装程序“不知道”软件包来自哪里,并使用每个文件的校验和来确保完整性。
答案2
安全,是一个历史领域,很难面面俱到。
A. 作为包安装前进行验证。
B. 安装后作为文件进行验证(立即或将来,它不再是一个包)。
顺便说一下,Debian 和 Ubuntu 计算不同类型的校验和。那不只是为了方便。