apt 安装软件时会验证每个包的签名吗?为什么下载软件包走 http 传输,是出于性能考虑吗?

2022-03-13 15:52:51 +08:00
 rv54ntjwfm3ug8
3731 次点击
所在节点    Ubuntu
16 条回复
unixeno
2022-03-13 15:55:58 +08:00
因为你用的 http 的源,你可以换成 https 的
dingwen07
2022-03-13 15:56:45 +08:00
用 GnuPG 验证的吧
villivateur
2022-03-13 16:02:22 +08:00
即使是 http 的源,apt 对包也是有校验的,所以安全性上并没有很大差别
FengMubai
2022-03-13 16:17:43 +08:00
看看 ```/etc/apt/sources.list```文件里用的是不是 https
westoy
2022-03-13 16:17:55 +08:00
其实 debian 以前出过 dsc 验证漏洞的........
crazytec
2022-03-13 16:28:27 +08:00
我记得用 http 是因为 http 协议可以让各级路由知道你在下载什么,从而方便缓存。apt 包是有签名的,因此 http 和 https 在包的完整性方面类似。
mkmoon
2022-03-13 16:45:51 +08:00
https 中 ssl 加解密对服务器来说是个性能瓶颈,成本要高很多,高性能的 https 服务器或集群一般需要增加基于 fpga 的加速卡或者增加集群服务器数量。单纯提供包下载的话,http 足矣。包管理器默认会有 GPG 检验,如果包传输过程被篡改或损坏,默认会拒绝安装的。默认在源配置中,包走 http ,密钥走 https ,基本就很安全了。
yanqiyu
2022-03-13 17:03:20 +08:00
包管理走 http 大多数情况下不是问题,中间人攻击不能塞给你投毒之后的元数据或者是包
但是有可能出现一类特殊的攻击,就是中间人服务器阻止你安装特定安全更新,从而达到攻击的目的

debian 系的做法是给安全更新单独的源,并且那个源貌似默认镜像站很少(也不建议用镜像站)于是饱受诟病
ETiV
2022-03-13 17:23:38 +08:00
大规模的软件分发都是 http+本地校验签名的
Apple 、Sony PS 游戏机都是
xy2401
2022-03-13 18:02:20 +08:00
我一直想问这个问题
Buges
2022-03-13 19:01:33 +08:00
@ETiV 不应该吧,难道不是使用具有分片+校验机制的协议(如 bt )
vibbow
2022-03-13 19:30:40 +08:00
还有另一个考量是域名解析
可以把域名解析到不同的 mirror 上,而不用考虑 https 证书的问题
ETiV
2022-03-13 22:46:36 +08:00
@Buges

HTTP 就能校验
本地验签名 就是你说的校验机制

早年 PS3 时代就有一个 proxy server 来完成这些事儿,如果 SONY 用 HTTPS 协议根本办不到…

macOS 系统设置里也能开启自带的 content cache ,可以在内网做缓存。
https://support.apple.com/guide/mac-help/what-is-content-caching-on-mac-mchl9388ba1b/mac
agagega
2022-03-14 00:48:52 +08:00
走 HTTP 是因为可以缓存。不过我觉得有时候「你下载了什么 App 」这个信息本身也有隐私问题……
jim9606
2022-03-14 03:21:43 +08:00
apt update 时先下载总清单 InRelease ,这个清单是有 PGP 签名的,包含包清单 Packages.xz 的 hash 。而 Packages.xz 包含所有 deb 包的元数据和 hash 。所以只要 InRelease 通过 GPG 验证就可以保护整个软件源的完整性。
使用 HTTP 的话可以安全地通过 DNS 劫持实现透明缓存加速,这在容器中很好用。
libook
2022-03-14 11:44:39 +08:00
PGP 可以用来判断软件包内容是否被篡改,理论上要么是安全的的,要么装不了。

剩下的就是你是否希望中间网络设备是否能看到你具体下载的是哪些资源,按需要选择使用 HTTP 还是 HTTPS 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/840025

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX