V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rv54ntjwfm3ug8
V2EX  ›  Ubuntu

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

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

    debian 系的做法是给安全更新单独的源,并且那个源貌似默认镜像站很少(也不建议用镜像站)于是饱受诟病
    ETiV
        9
    ETiV  
       2022-03-13 17:23:38 +08:00 via iPhone
    大规模的软件分发都是 http+本地校验签名的
    Apple 、Sony PS 游戏机都是
    xy2401
        10
    xy2401  
       2022-03-13 18:02:20 +08:00
    我一直想问这个问题
    Buges
        11
    Buges  
       2022-03-13 19:01:33 +08:00 via Android
    @ETiV 不应该吧,难道不是使用具有分片+校验机制的协议(如 bt )
    vibbow
        12
    vibbow  
       2022-03-13 19:30:40 +08:00
    还有另一个考量是域名解析
    可以把域名解析到不同的 mirror 上,而不用考虑 https 证书的问题
    ETiV
        13
    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
        14
    agagega  
       2022-03-14 00:48:52 +08:00
    走 HTTP 是因为可以缓存。不过我觉得有时候「你下载了什么 App 」这个信息本身也有隐私问题……
    jim9606
        15
    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
        16
    libook  
       2022-03-14 11:44:39 +08:00
    PGP 可以用来判断软件包内容是否被篡改,理论上要么是安全的的,要么装不了。

    剩下的就是你是否希望中间网络设备是否能看到你具体下载的是哪些资源,按需要选择使用 HTTP 还是 HTTPS 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5814 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 02:45 · PVG 10:45 · LAX 18:45 · JFK 21:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.