怎么校验 Debian ISO 文件?

虽然 Debian 在 cdimage.debian.org 里提供了 SHA 文件和 SIGN 文件两种校验方式,但这两种文件都无法使用 https 方式访问。也就是说存在中间人攻击的风险。

那该如何去校验下载的 ISO 文件呢?

参考
security.stackexchange.com/questions/4161/shouldnt-gpg-key-fetching-use-a-secure-connection
en.wikipedia.org/wiki/Web_of_trust
stackoverflow.com/questions/3591342/how-to-prevent-a-man-in-the-middle-attack-in-case-of-a-compromised-server
forums.debian.net/viewtopic.php?t=62272
lists.debian.org/debian-security/2014/05/msg00075.html
en.wikipedia.org/wiki/Public-key_cryptography
security.stackexchange.com/questions/14479/what-does-key-signing-mean
debian.org/CD/verify

[quote=“vickycq”]

参考
security.stackexchange.com/questions/4161/shouldnt-gpg-key-fetching-use-a-secure-connection
stackoverflow.com/questions/3591342/how-to-prevent-a-man-in-the-middle-attack-in-case-of-a-compromised-server
forums.debian.net/viewtopic.php?t=62272
lists.debian.org/debian-security/2014/05/msg00075.html
en.wikipedia.org/wiki/Public-key_cryptography
security.stackexchange.com/questions/14479/what-does-key-signing-mean
debian.org/CD/verify[/quote]

英语不好,能不能具体说说?

[quote=“I’mITman”]
英语不好,能不能具体说说?[/quote]

我也不是很懂。说一下自认为比较安全的校验方法:

  1. cdimage.debian.org 下载 SHA512SUMS, SHA512SUMS.sign
  2. gpg --verify SHA152SUMS.sign SHA512SUMS 提示找不到公钥 6294BE9B
  3. 下载公钥 6294BE9B:gpg --keyserver keyring.debian.org --recv-key 6294BE9B
  4. 显示下载到的公钥的指纹:gpg --fingerprint 6294BE9B
  5. debian.org/CD/verify 确认公钥 6294BE9B 的指纹,看是否一致 (应为 DF9B 9C49 EAA9 2984 3258 9D76 DA87 E80D 6294 BE9B)
  6. 若一致,再次运行 gpg --verify SHA152SUMS.sign SHA512SUMS
  7. sha512sum -c SHA152SUMS

具体还是要懂的人来解释。以上的步骤肯定不是万全的。

谢谢你。这真不是一般的复杂呀!

有懂的人来讲讲具体的步骤吗?!

没什么复杂的:对镜像文件签名代价太高,于是退而求其次对存储了镜像文件散列值的文本文件进行签名,仅此而已。问题转变为了验证这个文本文件的签名。

文本文件使用 Debian 官方的私钥进行数字签名,需要使用 Debian 官方的公钥进行验证。而这个公钥网上可以找到,也在 Debian 系统中自带。于是我们可以借助 PGP 工具(通常是 gnupg)进行验证。就是这样。

md5sum xxx.iso

[quote=“hosiet”]没什么复杂的:对镜像文件签名代价太高,于是退而求其次对存储了镜像文件散列值的文本文件进行签名,仅此而已。问题转变为了验证这个文本文件的签名。

文本文件使用 Debian 官方的私钥进行数字签名,需要使用 Debian 官方的公钥进行验证。而这个公钥网上可以找到,也在 Debian 系统中自带。于是我们可以借助 PGP 工具(通常是 gnupg)进行验证。就是这样。[/quote]

具体的操作步骤是怎么的呢?

现在 MD5 校验已经不安全了。

[quote=“I’mITman”]

[quote=“hosiet”]没什么复杂的:对镜像文件签名代价太高,于是退而求其次对存储了镜像文件散列值的文本文件进行签名,仅此而已。问题转变为了验证这个文本文件的签名。

文本文件使用 Debian 官方的私钥进行数字签名,需要使用 Debian 官方的公钥进行验证。而这个公钥网上可以找到,也在 Debian 系统中自带。于是我们可以借助 PGP 工具(通常是 gnupg)进行验证。就是这样。[/quote]

具体的操作步骤是怎么的呢?[/quote]

四楼给的方法就够了。

如果你觉得麻烦,也可以去 https 站点下载。例如 ftp.cn.debian.orghttps://mirrors.ustc.edu.cn)提供 https 访问,前提是你需要信任该站点。当然为了防止文件在传输中出错,还是有必要验证散列值的。

[quote=“hosiet”]

四楼给的方法就够了。

如果你觉得麻烦,也可以去 https 站点下载。例如 ftp.cn.debian.orghttps://mirrors.ustc.edu.cn)提供 https 访问,前提是你需要信任该站点。当然为了防止文件在传输中出错,还是有必要验证散列值的。[/quote]

很奇怪,为什么Debian不提供用https方式取得SHA值。

Ubuntu、CentOS等都是这样。

[quote=“hosiet”]
四楼给的方法就够了。
如果你觉得麻烦,也可以去 https 站点下载。例如 ftp.cn.debian.orghttps://mirrors.ustc.edu.cn)提供 https 访问,前提是你需要信任该站点。当然为了防止文件在传输中出错,还是有必要验证散列值的。[/quote]

楼主的问题关键就在这里
光镜像源提供 https 是不够的,镜像源跟官方同步的过程又变成了新的软肋
所以关键在于签名机制,而这正是我和楼主不懂的地方 :confused:
看到一个 Web of Trust 机制,应该跟这个有关。

4楼的方法和一般的相比,只是增加了人肉校验签名指纹。
关键是 debian.org/CD/verify 这个页面没有被篡改,从而保证下载到了正确的公钥?

[quote=“I’mITman”]
很奇怪,为什么Debian不提供用https方式取得SHA值。
Ubuntu、CentOS等都是这样。[/quote]

在邮件列表里已经吵过很多场架了,具体见 lists.debian.org/debian-security/2014/05/msg00075.html

[quote=“vickycq”]

[quote=“hosiet”]
四楼给的方法就够了。
如果你觉得麻烦,也可以去 https 站点下载。例如 ftp.cn.debian.orghttps://mirrors.ustc.edu.cn)提供 https 访问,前提是你需要信任该站点。当然为了防止文件在传输中出错,还是有必要验证散列值的。[/quote]

楼主的问题关键就在这里
光镜像源提供 https 是不够的,镜像源跟官方同步的过程又变成了新的软肋
所以关键在于签名机制,而这正是我和楼主不懂的地方 :confused:
看到一个 Web of Trust 机制,应该跟这个有关。

4楼的方法和一般的相比,只是增加了人肉校验签名指纹。
关键是 debian.org/CD/verify 这个页面没有被篡改,从而保证下载到了正确的公钥?[/quote]

这里和 web of trust 没关系,只要能获取可信的公钥即可。要么是网上公认正确的公钥,要么通过 https 得知,要么从已安装的 Debian 系统 gpg 数据库得知 。

原来如此。 :slight_smile: 那麽请问通过人肉比对 gpg --fingerprint 6294BE9B 和 debian.org/CD/verify,可否确认 gpg --recv-key 获取到的是正确的公钥 6294BE9B 呢?
因为我看到有个说法,gpg --recv-key 使用的 hkp 协议也是明文传输,安全性存疑 :question:
debian.org/CD/verify 这个页面是 https,应该不容易受到中间人攻击 :confused:

pub 4096R/6294BE9B 2011-01-05 Key fingerprint = DF9B 9C49 EAA9 2984 3258 9D76 DA87 E80D 6294 BE9B uid Debian CD signing key <debian-cd@lists.debian.org> sub 4096R/11CD9819 2011-01-05

[quote=“vickycq”]

原来如此。:slight_smile: 那麽请问通过人肉比对 gpg --fingerprint 6294BE9B 和 debian.org/CD/verify,可否确认 gpg --recv-key 获取到的是正确的公钥 6294BE9B 呢?
因为我看到有个说法,gpg --recv-key 使用的 hkp 协议也是明文传输,安全性存疑 :question:
debian.org/CD/verify 这个页面是 https,应该不容易受到中间人攻击 :confused:

pub 4096R/6294BE9B 2011-01-05 Key fingerprint = DF9B 9C49 EAA9 2984 3258 9D76 DA87 E80D 6294 BE9B uid Debian CD signing key <debian-cd@lists.debian.org> sub 4096R/11CD9819 2011-01-05[/quote]

hkp 协议没研究过,不发表意见。指纹一般很难重复,可信度还是比较高的。通过类似 pgp.mit.edu 之类的网站(注意可能被墙)是可以“安全地”获取公钥的(当然需要事先信任 https 那一套信任链)。

[quote=“hosiet”]
hkp 协议没研究过,不发表意见。指纹一般很难重复,可信度还是比较高的。通过类似 pgp.mit.edu 之类的网站(注意可能被墙)是可以“安全地”获取公钥的(当然需要事先信任 https 那一套信任链)。[/quote]

感谢讲解。 :wink:

只有我心大到算出校验码就扔给谷歌搜一下吗?

[quote=“vickycq”]

[quote=“I’mITman”]
很奇怪,为什么Debian不提供用https方式取得SHA值。
Ubuntu、CentOS等都是这样。[/quote]

在邮件列表里已经吵过很多场架了,具体见 lists.debian.org/debian-security/2014/05/msg00075.html[/quote]

个人觉得不一定只能把SHA和下载文件放在一块儿。可以像FreeBSD一样,在放在声明中通过https再放一份。如:freebsd.org/releases/10.3R/announce.html

这样问题基本就可以解决了。

你厉害!