PGP :用于消息加密、验证的应用程序

更新时间:2024-09-21 13:42

PGP(Pretty Good Privacy,中文翻译为“优良保密协议”)是一套基于RSA公钥加密体系的邮件加密软件,采用IDEA的散列算法作为加密与验证之用。PGP采用了一种RSA和传统加密的杂合算法,用于数字签名的邮件文摘算法,加密前压缩等,还有一个良好的人机工程设计。PGP能够提供独立计算机上的信息保护功能,使得这个保密系统更加完备。可以用它对邮件保密以防止非授权者阅读,它还能对邮件加上数字签名从而使收信人可以确认邮件的发送者,并能确信邮件没有被篡改。它可以提供一种安全的通讯方式,而事先并不需要任何保密的渠道用来传递密匙。PGP的功能强大,有很快的速度。可以使用PGP接管用户的共享文件夹本身以及其中的文件,安全性远远高于操作系统本身提供的帐号验证功能。

加密

PGP加密由一系列散列、数据压缩、对称密钥加密,以及公钥加密的算法组合而成。每个步骤支持几种算法,可以选择一个使用。每个公钥均绑定唯一的用户名和/或者E-mail地址。这个系统的第一个版本通常称为可信Web或X.509系统;X.509系统使用的是基于数字证书认证机构的分层方案,该方案后来被加入到PGP的实现中。当前的PGP加密版本通过一个自动密钥管理服务器来进行密钥的可靠存放。

兼容性

随着PGP的版本更新,新版本的PGP系统开始支持新的特征和算法,新系统生成的加密消息不能直接被旧的PGP系统解密,即使是使用旧版存储的有效私钥也不行。因此,在PGP通讯中的通信双方应统一版本,或者至少协商好PGP的具体设置。

机密性

PGP可以用来发送机密消息。这是通过对称的一组密钥-公钥组合来实现的。消息采用对称加密算法加密,采用一组对称密钥加密。每个对称密钥只使用一次,所以也叫做会话密钥。会话密钥通过接收方的公钥来加密保护,因此只需确保仅接收方能解密会话密钥即可。加密的消息和加密的会话密钥一起发送给接收方。

数字签名

PGP支持消息认证和完整性检测。完整性检测被用来检查消息在传输过程中是否变更过(即验证消息完整性),而消息认证则是被用来决定消息是否确由某特定的人或实体发出(即数字签名验证)。在PGP中,这些特性默认是和消息加密同时开启的,而且同样可以被应用到明文的验证。发送者只需使用PGP为消息创建一个数字签名(签名算法采用RSA或DSA算法)。具体步骤为:PGP以数据或信息创建一个散列(参见消息摘要),然后使用发送者的私钥利用散列生成数字签名。

信赖网络

不管是在加密消息时还是在验证签名时,都需要注意用来发送消息的公钥是否确实属于期望的接收者。简单的从某个位置下载一个公钥是没有保障的。蓄意的或意外冒名顶替是可能的。PGP从它的第一个版本起,总是包含在一个'身份证书'中发布用户公钥,身份证书也是经过加密构造的,所以任何的篡改或意外的变动都可以被迅速的检测出来。但是仅通过创建一个即使最简单的篡改都会被发现证书仍然不够,这样的检测机制只能在证书创建之后用于避免篡改,而不是创建之前。用户也必须用某种形式确保证书中的公钥真正的属于特定的人/实体。从第一个发行版开始,PGP产品就包含一个内部的'审查方案'来协助。一个信任模型被叫做信赖网络(Web of Trust)。一个给定的公钥(如一个用户名到对应其密钥的绑定信息)可以被第三方用户数字签名,来证明某人(一个用户名)和一个密钥关联。可以在这样的签名中包含几个信任级别,只不过许多程序都会读写这个信息,而只有少数会通过信任级别来决定是否信任一个密钥。

信赖网络协议(Trusted-Web Protocol)在1992年的PGP2.0手册中被菲利普·齐默曼(Philip R. Zimmermann)描述为:

随着时间过去,你累积到许多人的密钥,其中有些人你也许愿意签署信赖他们,别人也会签署一些他们自己信赖的他人密钥。每个人都逐渐累积到一些他人已签署信赖的密钥,然后自己再签署并散发出去。那么便能期待,下一个拿到这把密钥的人在签署名单上总有一两个是自己信赖的。这最终能形成所有公钥的分布式防弊的信赖网络。

信赖网络机制比S/MIME机制的集中管理的公钥基础设施有优势,但是没有被网络普罗大众普遍采用,一般只在Unix-like的爱好者、开源软件界、和对隐私特别注意而且有电脑知识的人群之间使用。如何使一般用户容易使用、乐意接收证书然后手动的验证它们的有效性,对于这些潜在的推广上阻碍还没有找到满意的解决方案。

近来有一些电子邮件服务业者推出结合于网页邮件接口的简便PGP操作,用户就算不创设自己的PGP密钥也可以寄出PGP加密信,包括寄给不使用PGP的收信人,并以通关密语的问答来使收信人获取阅读权限。每封信可以设置不同的通关密语,并能设置每个密语的有效期限(对于寄信人而言则是无期限的)。收信人甚至可以在回答正确的通关密语后,以勾选选项的方式轻易回复PGP加密信,无需自行创设和管理PGP密钥。对于一般用户而言这也许足够安全,但对于信息安全极度谨慎的人而言,这机制把私钥也存在寄件人的邮件服务器上,仍存有私钥外泄的疑虑,不论是政府依法获取,或是黑客非法入侵后获取。针对非法入侵,只能信赖电子邮件服务业者的安全防护能力;对于合法途径则只能透过设置及复杂的通关密语来提高破解难度。

历史

早期历史

菲利普·齐默曼(Philip R. Zimmermann)在1991年创造了第一个版本的PGP,其名称“Pretty Good Privacy”的灵感来自于一个名为“Ralph's Pretty Good Grocery”的杂货店——电台主播Garrison Keillor虚构出来的一个名为Lake Wobegon的城市的一个杂货店。

软件第一个版本包含一个齐默曼自己设计的对称密钥加密算法,与周六夜现场的一个小品BassOmatic同名。作为一个老牌的反核能活跃分子,齐默曼为了让所有有相似倾向的人们可以安全的使用BBS并且安全存储消息和文件而创造了PGP加密。在非商业用途上是不需要授权的,无需任何费用,并且在所有的发行中附带了完整的源代码。

在2001年6月5号发表的一篇标题为"PGP10周年"的文章中,齐默曼描述了他最初开发PGP时的情景:

1991年的某天,我把PGP的第一版发给我几个朋友,以便上传到互联网。我最先发给Allan Hoeltje,他把这个程序发到了Peacenet,一个针对草根政治组织--特别是“和平运动”--的ISP。当时全球政治活跃分子都能访问到Peacenet。然后我又把它上传给了Kelly Goen,他接着就把源码转发到了一个专门分发源代码的Usenet新闻组。基于我的请求,他把该Usenet权限改为了“仅限美国”。Kelly还把PGP传到了(美国)国内很多BBS上面。我记不太清刚开始在网上贴是6月5号还是6号。

说出来吓人,1991年的时候,我对Usenet新闻组确是知之甚少。我并不知道那个“仅限美国”的标签只是个“建议”作用,基本上对贴子的传播(范围)毫无影响。当时,我以为这个标签会控制这个帖子的传播范围。当时我不知道如何在新闻组发贴,甚至不明白新闻组究竟是什么。

PGP在互联网上传播开来,并且在这个世界上获得了非常多的拥护者。PGP用户和支持者也包括在极权主义国家持不同政见的人们(一些给齐默曼的感人信件被发表了,其中一些在美国国会之前被包括到证据中)。在世界其它地方的自由意志主义支持者(参考齐默曼在各个听证会上发表的证据),以及“自由通讯”激进主义分子,他们称他们自己为加密爱好者,进行宣传和分发。

刑事侦察

在发行后不久,PGP加密走出了美国,在1993年二月,齐默尔·曼变成了美国政府针对“没有授权的军需品出口”犯罪调查的正式目标。根据美国出口管理法案中的定义,加密系统使用大于40位的密钥将被认为是军需品。PGP从没有使用小于128位的密钥,因此在那时被如此认定。如果被判有罪,这将会是严重的罪行。几年后,对齐默尔曼的调查未经备案即被关闭,也没有提起针对他本人或其他任何人的刑事指控。

齐默曼使用了一种富有想象力的方法来对抗这一规定。他将PGP的全套源代码出版成一本书,由MIT出版社发行,受到了广泛欢迎。任何想要构建自己的PGP版本的人只需买下这本60美元的书,切掉封面,分离页面,然后使用OCR(文字扫描识别)程序进行扫描和文字识别(或者直接输入),生成一系列的源代码文本文档。接下来便可以使用自由分发的GCC来编译程序。PGP就是这样在全世界变得可用。声明的原则很简单:对军需品——枪支、炸药、飞机和软件的出口是被限制的,然而书本出口受到宪法第一修正案(言论自由部分)的保护。这个问题从未再在法庭中检查过。

商业应用

PGP一般在企业资源规划(即ERP)软件连接到银行系统时使用,防止信息在传输过程中被删改或盗取,从而减少商业秘密泄露和遭遇诈骗的风险。

Open

1997年7月,PGP Inc.与齐默尔曼同意IETF制定一项公开的互联网标准,称作OpenPGP,任何支持这一标准的程序也被允许称作OpenPGP。

许多电子邮件系统提供了OpenPGP兼容的安全性,由RFC 3156来描述。2007年11月发布的规范RFC 4880作为RFC 2440的替代版,指出一套算法,包括非对称的ElGamal加密算法,Digital 标记 Algorithm,三重数据加密算法以及SHA-1.标准还建议使用PKCS #1v1.5描述的RSA加密算法用作加密与签名,以及AES-128,CAST-128,IntelliJ IDEA等对称加密算法。许多其他加密算法也被支持。2009年发布的RFC 5581支持Camellia加密。基于椭圆曲线密码学(ECDSA,ECDH)的RFC 6637发布于2012年。支持EdDSA被2014年发布的标准支持。

自由软件基金会开发的OpenPGP程序叫做GnuPG,并有多个图形用户界面版本的软件实现,如KGPG,Seahorse,MacGPG。也有一些商用OpenPGP软件。

使用ECMAScript编写的开源库OpenPGPjs,用于网页程序,如ProtonMail,Mailfence,GlobaLeaks, andMailvelope.

iOS或Android平台上的OpenPGP应用程序有iPGMail,OpenKeychain。

参考资料

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}
友情链接: