为什么以及如何使用PGP数字签名

不久前,我们讨论了加密散列(例如MD5和SH1校验和),以及它们如何通过创建文件的唯一“指纹”来帮助确保下载的文件与其创建者希望下载的文件相同。对照原件.


验证几乎所有文件的完整性的能力都很重要,但是当我们从Internet下载隐私和安全软件时,这绝对至关重要。毕竟,将您的隐私和安全性信任可能包含病毒的程序有什么意义,尤其是当您认为此类软件及其用户无疑是NSA及其同类产品的高度优先目标时?

即使您直接从供应商或开发人员的网站下载软件,也可能会成为中间人(MitM)攻击的受害者,或者网站本身可能会受到各种损害.

使用密码散列是解决此问题的一种尝试,但是不幸的是,该技术有一个主要弱点-例如,开发人员的网站可能被黑客入侵,以显示受感染文件的哈希值,而不是原始文件的哈希值,或者数学漏洞可能使它们不安全。因此,哈希值可用于验证文件是否未损坏,但仅用于有限的用途,以确保下载的文件与开发人员打算下载的文件相同.

为了对此提供更大的保证,开发人员可以使用数字签名对他们的文件进行签名,数字签名采用一种非对称加密形式(公钥和私钥)来验证文件是否确实如其所声称的那样。.

该图显示了如何应用数字签名然后进行验证.

PGP数字签名

不同的密码系统使用不同的机制来创建和验证数字签名。例如,Windows在首次安装软件时使用Microsoft公钥基础结构(PKI)技术自动验证签名。.

开源软件不能使用专有的Microsoft PKI,因此改用PGP数字签名。然后必须手动对其进行身份验证。这些工作非常类似于用于认证PGP电子邮件的密钥对,并且正如我们将看到的,验证PGP数字签名需要使用与PGP兼容的邮件程序.

不幸的是,这也意味着像使用PGP来保护电子邮件一样,使用PGP数字签名也过于复杂。.

如何使用Kleopatra GUI验证数字签名

要验证文件的PGP数字签名,您必须使用PGP客户端(或更准确地说,是GnuPG-它的开源克隆)。 GnuPG的版本适用于Windows(Gpg4win),Mac OSX和Linux(通常已预安装).

在本教程中,我们将使用Gpg4win验证Pidgin + OTR的数字签名,但是其他版本的GnuPG的过程非常相似.

我们有关于使用Gpg4win的两部分文章,强烈建议您至少阅读其中的第1部分,以熟悉下面将要使用的关键概念。.

Gpg4win下载本身使用已由公认的证书颁发机构(CA)验证过的密钥进行数字签名,并且可以使用受信任的较早版本的GnuPG对其进行独立检查以进行验证(也提供SHA1哈希). 您永远不要信任尚未验证的Gpg4win副本.

安装GnuPG后,我们需要三件事来验证数字签名:

  • 我们要验证的文件(duh!),例如pidgin-otr-4.0.1.exe安装程序
  • PGP / GPG签名文件(.asc),例如pidgin-otr-4.0.1.exe.asc
  • 用于创建此签名的公钥/ PGP证书,例如gpgkey.asc

这些文件应全部(希望)由您要验证其数字签名文件的开发人员提供。公钥/ PGP证书通常存储在密钥服务器上,但是开发人员应提供访问它们的说明。.

克娄巴特拉

Kleopatra是与Gpg4win捆绑在一起的密钥管理程序.

1.您将需要一个个人私钥来认证PGP证书。如果您以前创建过一个文件(例如使用GPA),则可以将其导入(文件 -> 导入证书…),或者您可以创建一个新的密钥对(文件 -> 新证书…).

向导将指导您完成此过程的其余部分

2.使用“导入证书”或在文件上单击鼠标右键,然后选择“导入密钥”,将公钥/ PGP证书导入Kleopatra。.

3.使用私钥验证PGP证书-这告诉GnuPG您信任签署证书的人.

a)在Kleopatra中,右键单击密钥,然后选择“认证证书”.

b)选择证书,并确认您已经验证了其指纹(希望它将在开发者的网站上发布).

c)除非您对证书的真实性非常确定,否则您应该只为自己进行证书(证书以信任网络的原则进行工作-信任他们的人越多,您就可以确信它们是真实的).

d)输入您的私钥密码短语以完成验证证书.

4.现在,您已经对用于下载文件签名的证书进行了认证(哇!),您可以使用它来验证签名.

a)在Kleopatra中转到文件 -> 解密/验证文件并浏览到签名文件,或右键单击它并转到MoreGpgEX选项 -> 校验.

b)确保“输入文件”是签名文件,并且“签名数据”字段包含您要验证的程序或文件,然后点击“解密/验证”.

c)一切顺利,克娄巴特拉将宣布签名有效.

我如何信任证书?

验证PGP证书有效的最简单方法是检查应该签署证书的人的网站...如果运气好的话,它将发布证书的指纹.

但是,尽管很容易,但这不能保证签名的真实性,因为该网站可能已被政府黑客入侵或强迫显示伪造的指纹(困扰加密哈希的同一问题).

这是建立信任网络的地方,用户可以在其中担保证书。实际上,这是一个神秘的过程,对于大多数用户而言既太复杂又太晦涩难懂,因此我们大多数人所希望的最好的事情是该证书已由公认的证书颁发机构提供担保,或者由已知的开发人员签名发布签名密钥的人(例如,Tor开发人员这样做).

在某些方面,Pidgin + OTR是数字签名应如何工作的一个不好的例子,因为OTR网页几乎没有关于如何使用其已发布密钥的说明,并且其PGP证书不仅很难定位,而且很难获得。来自https://otr.cypherpunks.ca/gpgkey.asc,没有简单的方法来验证其真实性(在这个时代,当NSA可能会破解这种弱加密时,使用1024位RSA密钥的事实也很糟糕。 ).

但是,这是一个很好的例子,说明了为什么整个数字签名概念如此混乱!此处提供了有关如何尝试验证OTR证书的有趣讨论。)

结论

如您所见,验证数字签名确实很麻烦,因此,即使是那些懂行话繁琐的神秘过程的人也很少打扰。由于许多开发人员无法解释如何验证他们的文件,和/或颁发很难验证的草率的PGP证书是真实的,这个问题变得更加严重(OTR团队,我们正在寻找您!)

数字签名仍然是确保下载的文件是您打算下载的文件(或他们的开发人员打算下载的文件)的唯一有意义的方式,这对于互联网安全而言并不是一个好兆头。.

但是,在有人发明了更好,更用户友好的系统之前,我们的最大希望是鼓励开发人员就如何使用其数字签名提供明确的说明,并发布有关其PGP证书真实性的有意义的保证……(叹气)

"数字签名图" 由Acdx-自己的作品。通过Wikimedia Commons在CC BY-SA 3.0下获得许可-https://commons.wikimedia.org/wiki/File:Digital_Signature_diagram.svg#mediaviewer/File:Digital_Signature_diagram.svg

Brayan Jackson Administrator
Sorry! The Author has not filled his profile.
follow me