Answers:
简而言之,是的,由于用于文件签名的公共密钥加密技术,它们是安全的。
APT下载的所有文件都有一个签名,该签名使下载的文件可以根据您的计算机上存储的公钥(由Ubuntu和只有Ubuntu签名)进行验证。这可以验证您接收到的文件在某个阶段是否已由Ubuntu授权,并且此后未被修改或篡改。
可从Ubuntu(以及使用同一系统的Debian)获得有关其工作原理的技术说明。
由于使用HTTP而不是HTTPS,窃听者可以看到您正在下载的文件,但是在这种情况下,隐私不太可能成为您的问题。中间人尝试修改程序包以注入有害代码仍然会失败,因为这会破坏签名机制。
这种签名机制的一个可能陷阱是,它不能保证您获取的软件包是最新版本(实际上,有时镜像更新很慢)。为了帮助缓解此问题,已签名的发行文件包含一个“有效期至”日期,此后该文件所引用的所有文件都应被视为过时的。中间人可能会在此有效期至到期日之前用未修改的较早版本的存档替换存档,并使您的APT相信没有更新。但是他们不能对软件包进行任何随意的修改,也不能回到过去。
在这种分布式环境中,文件机制在许多不受Ubuntu控制的服务器上进行镜像,签名机制提供了比HTTPS更好的安全性。从本质上讲,您只需要信任Ubuntu,而不是镜像,因此您需要证明文件最初来自Ubuntu,并且自此以来未被修改-无需验证镜像的身份。
请注意,当您将非官方存储库(例如PPA)添加到源列表时,将接收未由Ubuntu签名的文件。APT应该对此发出警告,因为未经Ubuntu授权,它们没有由与您计算机上安装的任何公钥匹配的证书签名。
评分最高的答案显然已经过时了。从那时起,由于错误的程序包验证,在apt中发现了2种严重的远程执行代码漏洞。这里和这里的安全公告。
这比对隐私/信息泄漏和过时的软件包版本的担忧要糟得多。这样就可以以root用户身份执行任意代码,从而完全导致安全性失败。事实是:如果使用https代替http,则可以防止这些攻击。
这证明了纵深防御原则在这里适用于其他任何地方。这些漏洞表明,在apt上下文中,关于https不提供或仅提供最小安全性好处的许多说法完全是错误的。
然后,问题就变成了,如果在缓存,增加的开销等方面,https的安全性优势是否值得付出代价,我无法回答,但至少我认为Ubuntu / Canonical / Launchpad应该为其存储库提供可选的https端点。
重要补充:实际上,随着升级和初始安装在线下载,这会占用大量流量,并且这些流量的来源(即二进制和文本代码流)是可复制的。因此,Internet上有大量的网关和缓存设备。大量ISP已基于http协议设置了缓存以节省导出带宽,并且https协议不能作为透明缓存存在。
另一个原因是基于http的镜像程序要简单得多,不需要验证tls-ssl证书,也不需要担心证书无效或Web服务器配置问题。
不久前,大约20年前,在Internet诞生之初,https和Internet流量仍然是非常昂贵的游戏。因此,http还包括即将淘汰的ftp协议,它是在线安装和分发软件包的主要方式。
同样,Microsoft Windows和Office也使用http升级。您可以观察到它通常不是从Microsoft的服务器下载的安装包,而是ISP的自建缓存服务器。