我遇到了以下帖子(如何使用公钥验证二进制文件的有效性?) 详细说明了如何验证 Cygwin 为其安装提供的签名的有效性。我运行了以下命令(也显示了输出):
$ gpg --import pubring.asc
gpg: key A9A262FF676041BA: public key "Cygwin <[email protected]>" imported
gpg: Total number processed: 1
gpg: imported: 1
$ gpg --list-keys
/home/ubuntuman/.gnupg/pubring.kbx
----------------------------------
pub dsa1024 2008-06-13 [SC]
1169DF9F22734F743AA59232A9A262FF676041BA
uid [ unknown] Cygwin <[email protected]>
sub elg1024 2008-06-13 [E]
$ gpg --verify setup-x86_64.exe.sig setup-x86_64.exe
gpg: Signature made Mon 23 Oct 2017 06:44:26 AM HST
gpg: using DSA key A9A262FF676041BA
gpg: Good signature from "Cygwin <[email protected]>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the
owner.
Primary key fingerprint: 1169 DF9F 2273 4F74 3AA5 9232 A9A2 62FF 6760 41BA
那么,安装这个安全吗?我对 GnuPG、签名和证书还不熟悉。我弹出的是“警告:此密钥未通过受信任的签名认证”和“签名日期为 2017 年 10 月 23 日星期一”,在撰写本文时(11 月 5 日),这是相当近的。
答案1
该消息解释称 GnuPG 无法验证密钥的所有权。每个人都可以为任意姓名和邮件地址生成密钥(只需在密钥服务器中搜索即可[email protected]
)。
一种非常“OpenPGP”的方式是通过 OpenPGP 信任网来验证密钥。OpenPGP 的高级用户通过对其他人的密钥颁发证书来验证其他人的身份并证明此验证。这形成了一个连接密钥的网络,网络中两个任意密钥之间有一条所谓的信任路径。如果您也参与其中并信任信任路径上的人,那么您就成功验证了密钥的所有权。GnuPG 通过证书(通常也称为签名)和颁发信任来支持这一点;如果您可以通过信任网上的本地视图验证密钥,警告消息就会消失。
然后,还有一种更务实的方法:如果你发现任何合理的线索表明密钥属于 cygwin 项目,那就没问题了。这可能是通过 HTTPs 传输的项目网站上列出的指纹(短密钥 ID 是不够的!)。
此外,你可以这样想:“好吧,我现在无法真正验证密钥,但我仍然只是在虚拟机或测试设备中使用该软件,如果没有公开宣布攻击或密钥在几天或几周内突然改变,我就可以了。”这个概念也被称为首次使用信任:你实际上并不预计攻击或操纵软件,但希望能够在将来检测到此类攻击或操纵软件。同样,您可以回到过去;也许您已经在其他安装或发行版上找到了对密钥的引用。