![普通用户有没有什么办法可以验证下载的 Ubuntu .ISO 的真实性?](https://linux22.com/image/907253/%E6%99%AE%E9%80%9A%E7%94%A8%E6%88%B7%E6%9C%89%E6%B2%A1%E6%9C%89%E4%BB%80%E4%B9%88%E5%8A%9E%E6%B3%95%E5%8F%AF%E4%BB%A5%E9%AA%8C%E8%AF%81%E4%B8%8B%E8%BD%BD%E7%9A%84%20Ubuntu%20.ISO%20%E7%9A%84%E7%9C%9F%E5%AE%9E%E6%80%A7%EF%BC%9F.png)
我很惊讶这么大的一个问题却很少有人讨论。
我是一名普通的 Ubuntu 用户,我刚刚从 ubuntu.com 下载了 ISO。
我的电脑上没有设置 PGP 信任网之类的东西。
所以我唯一真正可以信任的是我的浏览器的 CA 列表。
我该如何验证自己不会被一个 16 岁的孩子利用 MITM 和 rootkit 级别攻击?(因为确实如此那简单的)
1. 只需检查 SHA256SUM
嗯,不幸的是http://releases.ubuntu.com/仅通过 HTTP 提供服务。
事实上,有一个“无法修复”关闭错误报告从 2013 年开始,维护人员明确拒绝向用户提供 HTTPS 版本的哈希列表。
2. 只需使用 GPG 下载 Ubuntu 的公钥
正如在验证Iso如何页面,验证下载的另一种方法是下载 Ubuntu 的公钥并验证 .gpg 哈希文件。
但是,在底部附近,它提到了一些关于建立信任网的内容。如果我们要扩展这一点,我认为我们可以放心地说,在没有良好的信任网的情况下检查 PGP 签名完全没用。
那么还剩下什么呢?真的什么都没有了。当然,你可以花很多时间尝试理解 PGP,联系同事,并在接下来的几周内建立自己的信任网,或者你可以跳过所有这些,直接开始安装,绝大多数人都会这样做,如果他们真的愿意这样做的话。
那么,对于普通/中级用户来说,是否有一种实用的方法可以在安装 Ubuntu 软件之前检查其完整性,或者我们是否浪费成千上万的工时来编写安全代码只是为了不安全地提供它?
答案1
这里有一步一步的教程: https://tutorials.ubuntu.com/tutorial/tutorial-how-to-verify-ubuntu#0
如果你不知道它是如何工作的,那么唯一的方法(如果你打算使用它)就是学习它。
对此没有“简单”的方法,因为其工作原理和提供正确结果的方式并不简单(除非您精通算法)。抱歉。
没有官方的 iso mdsums 组织来跟踪所有图像,因此没有官方方法来做到这一点。但是,您可以使用工具并将其与 Ubuntu 在其官方服务器上与您共享的内容进行检查。例如,获取最新的 Ubuntu http://releases.ubuntu.com/cosmic/
有多个文件:
- http://releases.ubuntu.com/cosmic/MD5SUMS
- http://releases.ubuntu.com/cosmic/SHA1SUMS
- http://releases.ubuntu.com/cosmic/SHA256SUMS
可以检查以下内容:
md5sum ubuntu-18.10-desktop-amd64.iso
sha1sum ubuntu-18.10-desktop-amd64.iso
sha256sum ubuntu-18.10-desktop-amd64.iso
其中当然
ubuntu-18.10-desktop-amd64.iso
是所讨论的 iso。将命令输出与这些页面进行比较,您就会知道它是否是真实的。
编辑:我想我会回答所有 OP 的问题,因为他们在评论中提出了一些问题和注释,并提出了一些疑虑:
普通用户有没有什么办法可以验证下载的 Ubuntu .ISO 的真实性?
有,我在我的主要回答中回答了这个问题
我该如何验证自己没有被一个 16 岁的孩子进行 MITM 和 rootkit 级别的攻击?
我知道的唯一简单方法(不使用浏览器下载 SSL 证书)是确认您的网络/dns 响应的 IP 与您未使用且您信任的其他 DNS(即 openDNS 或 google DNS)相同:
dig releases.ubuntu.com dig @208.67.222.222 releases.ubuntu.com dig @8.8.8.8 releases.ubuntu.com
它们都应该呈现相同的结果。对于 rootkit,唯一的方法是根据校验和检查 ISO,我已经描述过。
那么,对于普通/中级用户来说,是否有一种实用的方法可以在安装 Ubuntu 软件之前检查其完整性,或者我们是否浪费成千上万的工时来编写安全代码只是为了不安全地提供它?
这个问题忽略了这样一个事实: - GPG 密钥可以通过hkps
服务器安全地获取:
gpg --keyid-format long --keyserver hkps://keyserver.ubuntu.com --recv-keys 0x46181433FBB75451 0xD94AA3F0EFE21092
- 有一个非常重要的注意事项:https://tutorials.ubuntu.com/tutorial/tutorial-how-to-verify-ubuntu#2
OP 似乎忽略了这一点(尽管他说他之前读过):
Note - some people question that if the site they are downloading from is not secure (many archive mirrors do not use SSL), how can they trust the signatures? The gpg fingerprint is checked against the Ubuntu keyserver, so if the signature matches, you know it is authentic no matter where/how it was downloaded!
GPG 的底层工作原理超出了普通用户的知识范围,但您可以相信它是安全的。如果您不相信,请阅读 GPG 的工作原理。我可以向您保证,它经过多次攻击测试 ;)
我在编辑中还解释说,服务器的真实性是可以检查的(查看我上面的答案dig
)。然而,这超出了普通用户的知识范围(问问你上网的父母有关 MITM 的知识,你就会知道),所以当 OP 提出这一点并附上casual user
短语时,我感到很惊讶。
尽管http://releases.ubuntu.com/IS 未使用 HTTPS,您可以使用 dig 检查 MITM。如果全部匹配,则表示您安全,因为只有 Canonical 控制着 *.ubuntu.com 子域
我希望不再有任何问题,但如果有,请添加新的 askubuntu.com 问题,并在其中添加指向此主题的链接。我很乐意回答。
答案2
如果您愿意信任 HTTPS,则可以通过以下两种方式获取 GPG 密钥指纹:
https://tutorials.ubuntu.com/tutorial/tutorial-how-to-verify-ubuntu#3
和
https://wiki.ubuntu.com/SecurityTeam/FAQ#GPG_Keys_used_by_Ubuntu
谢谢