2017-04-26 104 views

回答

4

从技术上讲,它仅仅意味着对应私钥的持有者签署了提交。在实践中,可以推断1)所述密钥的持有者是具有一些可证实的声誉的人,2)该人声明了该代码的作者身份,以及3)自从他们签署该代码以来该代码没有改变。我对GPG密钥持有者如何与他人建立身份的知识非常有限,但这是一般想法。

为什么要检查所有这些?如果有问题的软件对某种类型的安全至关重要,那么攻击者可能会通过用破损的软件替换您认为自己获得的软件来危害您,例如有一些你无法轻易识别的后门。毕竟,你需要一些代码,你点击“下载”,并且你信任通过电线到达的东西是写在按钮上的东西。但是,理想情况下,攻击者将无法模仿真实作者的签名,因为他们不会拥有作者的私钥。而且他们不能仅仅改变代码并且仅仅保留签名,因为它涉及到代码本身的散列。

请参阅Code Signing的维基百科。

+0

如果作者使用多台计算机工作,签名如何工作?每台电脑都有自己的钥匙吗? –

+0

在这一点上我只是喋喋不休的维基百科。这当然不是微不足道的。你必须有一些安全携带钥匙的方法。 – Chris

+1

@StevenVascellaro为了正确设置,每台计算机都需要访问作者的私钥。您可以复制密钥,但使用代理如['gpg-agent'](https://www.gnupg.org/documentation/manuals/gnupg/Invoking-GPG_002dAGENT.html)更安全,因此私钥存储在一个地方;代理可以将密钥传递给远程帐户,而不必接触远程磁盘(并且任何具有root访问权限的人都可以看到)。 – Schwern