在 Ubuntu Linux 中安装程序的一种简单方法是在终端中键入命令,但我怎么知道该程序来自受信任的来源而不是来自危险的地方?例如,如果我正在安装 ClamAV,我怎么知道 ClamAV 来自 www.clamav.net 或安全的地方而不是来自恶意来源?我的意思是,黑客可以做一些事情来重定向命令,使其从虚假站点获取软件,对吗?
在 Ubuntu 中,`sudo apt-get install (package name)` 的可信度如何?
信息安全
恶意软件
隐私
保护
安全浏览过滤器
2021-08-16 00:22:02
2个回答
与许多设计良好的系统一样,Debian 的包系统有纵深防御:多层,每一层都可以验证。
我们如何相信包文件是系统所承诺的?计算哈希值并与存储的值进行比较。
我们如何相信哈希值不会意外匹配其他文件?使用了多种哈希算法,只有当所有这些都与存储的值匹配时,我们才相信内容实际匹配。
我们如何相信存储的值适用于我们下载的包文件?
Packages.*
哈希值下载到存档系统自动预先计算的单独文件(各种文件)中。我们如何相信下载的
Packages.*
文件是系统承诺的?每个文件的哈希值存储在Release
整个存档的单个文件中。我们如何相信
Release
文件是系统所承诺的?计算加密签名,并与从存档中单独下载的预计算签名进行比较。我们如何相信存档中存储的签名实际上来自我们预期的存档?它由存档密钥认证,我们可以从单独的 URL 独立获取该密钥,并安装在操作系统的初始设置中。
等等。在链条中的某个点,您必须信任系统的某些部分(和参与方),但证据并不理想。
通过上述层,低证据信任窗口可以保持较小且易于审查。单向哈希和加密签名使我们能够信任数学来证明按顺序出现的内容。
Debian wiki 对如何保护 APT 系统有很好、全面的描述。
当然,许多其他事情可能会因错误或恶意而出错,并违反我们对实际发生的事情的假设。像往常一样,对可能的攻击的唯一持久防御是:永远保持警惕。
apt-get 有一个受信任的 gpg 密钥列表。apt-get install 从存储库(镜像)服务器下载软件包,通常不是软件作者的服务器。为了确保真实性,每个包都使用 gpg 签名。仅当签名受信任时才会安装该软件包。因此,即使在 MITM 攻击的情况下,如果包被修改,签名检查也会失败。
其它你可能感兴趣的问题