分享
 
 
 

PGP简介

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

本文主要介绍一些关于PGP实现的原理和背景知 识。其他关于PGP的安装、使用等请参考与本文同时提供 的其他文档。PGP Pretty Good Privacy,是一个 基于RSA公匙加密体系的邮件加密软件。可以用它对你的 邮件保密以防止非授权者阅读,它还能对你的邮件加上数 字签名从而使收信人可以确信邮件是你发来的。它让你可 以安全地和你从未见过的人们通讯,事先并不需要任何保 密的渠道用来传递密匙。它采用了:审慎的密匙管理,一 种RSA和传统加密的杂合算法,用于数字签名的邮件文摘 算法,加密前压缩等,还有一个良好的人机工程设计。它 的功能强大有很快的速度。而且它的源代码是免费的。 实际上 PGP的功能还不止上面说的: PGP 可以用来加密文 件,还可以用 PGP代替UUencode 生成 RADIX 64 格式(就 是MIME 的 BASE 64格式)的编码文件。 PGP 的创始人是美国的 Phil Zimmermann。他的创造性在 于他把 RSA 公匙体系的方便和传统加密体系的高速度结合 起来,并且在数字签名和密匙认证管理机制上有巧妙的设 计。因此 PGP 成为几乎最流行的公匙加密软件包。 PGP 是一种供大众使用的加密软件。加密是为了安全,私 密权是一种基本人权。在现代社会里,电子邮件和网络上 的文件传输已经成为生活的一部分。邮件的安全问题就日 益突出了,大家都知道在 Internet上传输的数据是不加密 的。如果你自己不保护自己的信息,第三者就会轻易获得 你的隐秘。 还有一个问题就是信息认证,如何让收信人确信邮件没有 被第三者篡改,就需要数字签名技术。 RSA 公匙体系的特 点使它非常适合用来满足上述两个要求:保密性( Privacy)和认证性(Authentication)。

RSA(Rivest-Shamir-Adleman)算法是一种基于大数 不可能质因数分解假设的公匙体系。简单地说就是找两个 很大的质数,一个公开给世界,一个不告诉任何人。一个 称为“公匙”,另一个叫“私匙” (Public key & Secretkey or Private key) 。这两个密匙是互补的,就 是说用公匙加密的密文可以用私匙解密,反过来也一样。 假设甲要寄信给乙,他们互相知道对方的公匙。甲就用乙 的公匙加密邮件寄出,乙收到后就可以用自己的私匙解密 出甲的原文。由于没别人知道乙的私匙所以即使是甲本人 也无法解密那封信,这就解决了信件保密的问题。另一方 面由于每个人都知道乙的公匙,他们都可以给乙发信,那 么乙就无法确信是不是甲的来信。认证的问题就出现了, 这时候数字签名就有用了。

在说明数字签名前先要解释一下什么是“邮件文摘” (message digest) ,单地讲就是对一封邮件用某种算法算 出一个能体现这封邮件“精华”的数来,一旦邮件有任何 改变这个数都会变化,那么这个数加上作者的名字(实际 上在作者的密匙里)还有日期等等,就可以作为一个签名 了。确切地说 PGP是用一个128位的二进制数作为“邮件文 摘”的,用来产生它的算法叫 MD5(message digest 5) , MD5 的提出者是Ron Rivest,PGP 中使用的代码是由Colin Plumb 编写的,MD5本身是公用软件。所以PGP 的法律条款 中没有提到它。 MD5是一种单向散列算法,它不像CRC校验 码,很难找到一份替代的邮件而与原件具有一样的“精 华”。

回到数字签名上来,甲用自己的私匙将上述的 128 位 的“精华”加密,附加在邮件上,再用乙的公匙将整个邮 件加密。这样这份密文被乙收到以后,乙用自己的私匙将 邮件解密,得到甲的原文和签名,乙的 PGP 也从原文计算 出一个 128 位的“精华”来再用甲的公匙解密签名得到的 数比较,如果符合就说明这份邮件确实是甲寄来的。这样 两个要求都得到了满足。

PGP 还可以只签名而不加密,这适用于公开发表声明 时,声明人为了证实自己的身份(在网络上只能如此 了),可以用自己的私匙签名。这样就可以让收件人能确 认发信人的身份,也可以防止发信人抵赖自己的声明。这 一点在商业领域有很大的应用前途,它可以防止发信人抵 赖和信件被途中篡改。

那么为什么说 PGP 用的是RSA 和传统加密的杂合算法 呢?因为 RSA 算法计算量极大在速度上不适合加密大量数 据,所以 PGP实际上用来加密的不是RSA本身,而是采用了 一种叫 IDEA的传统加密算法。我先解释一下什么叫传统加 密,简单地说就是用一个密匙加密明文,然后用同样的密 匙解密。这种方法的代表是 DES(US Federal DataEncryption Standard) ,也就是乘法加密,它的主要 缺点就是密匙的传递渠道解决不了安全性问题,不适合网 络环境邮件加密需要。IDEA 是一个有专利的算法,专利持有者是 ETH 和一个瑞士公 司: Ascom-Tech AG。非商业用途的IDEA 实现不用向他们 交纳费用。 IDEA的加(解)密速度比RSA 快得多,所以实 际上 PGP是用一个随机生成密匙(每次加密不同)用 IDEA 算法对明文加密,然后用 RSA 算法对该密匙加密。这样收 件人同样是用 RSA解密出这个随机密匙,再用IDEA 解密邮 件本身。这样的链式加密就做到了既有 RSA 体系的保密 性,又有 IDEA算法的快捷性。PGP 的创意有一半就在这一 点上了,为什么 RSA体系70 年代就提出来,一直没有推广 应用呢?速度太慢!那么 PGP 创意的另一半在哪儿呢?下 面我再谈PGP的密匙管理。

一个成熟的加密体系必然要有一个成熟的密匙管理机 制配套。公匙体制的提出就是为了解决传统加密体系的密 匙分配难保密的缺点。比如网络 hacker们常用的手段之一 就是“监听”,如果密匙是通过网络传送就太危险了。举 个例子: NovellNetware 的老版本中,用户的密码是以明 文在线路中传输的,这样监听者轻易就获得了他人的密 码。当然 Netware 4.1 中数据包头的用户密码现在是加 密的了。对 PGP 来说公匙本来就要公开,就没有防监听的 问题。但公匙的发布中仍然存在安全性问题,例如公匙的 被篡改 (Public Key Tampering),这可能是公匙密码体系 中最大的漏洞,因为大多数新手不能很快发现这一点。你 必须确信你拿到的公匙属于它看上去属于的那个人。为了 把这个问题说清楚,我举个例子,然后再说如何正确地用 PGP堵住这个漏洞。

以你和 Alice的通信为例,假设你想给Alice发封信, 那你必须有 Alice 的公匙,你从BBS 上下载了Alice 的公 匙,并用它加密了信件用 BBS的Email功能发给了 Alice。 不幸地,你和 Alice都不知道,另一个用户叫Charlie的用 户潜入 BBS,把他自己用Alice的名字生成的密匙对中的公 匙替换了 Alice的公匙。那你用来发信的公匙就不是Alice 的而是 Charlie 的,一切看来都很正常,因为你拿到的公 匙的用户名是“ Alice”。于是Charlie就可以用他手中的 私匙来解密你给 Alice的信,甚至他还可以用Alice真正的 公匙来转发你给 Alice 的信,这样谁都不会起疑心,他如 果想改动你给 Alice 的信也没问题。更有甚者,他还可以 伪造 Alice 的签名给你或其他人发信,因为你们手中的公 匙是伪造的,你们会以为真是 Alice 的来信。

防止这种情况出现的最好办法是避免让任何其他人有 机会篡改公匙,比如直接从 Alice 手中得到她的公匙,然 而当她在千里之外或无法见到时,这是很困难的。 PGP 发 展了一种公匙介绍机制来解决这个问题。举例来说:如果 你和 Alice有一个共同的朋友David,而 David知道他手中 的 Alice的公匙是正确的(关于如何认证公匙,PGP还有一 种方法,后面会谈到,这里假设 David已经和Alice认证过 她的公匙)。这样 David可以用他自己的私匙在Alice的公 匙上签名(就是用上面讲的签名方法),表示他担保这个 公匙属于 Alice。当然你需要用David的公匙来校验他给你 的 Alice 的公匙,同样David 也可以向Alice 认证你的公 匙,这样 David就成为你和Alice之间的“介绍人”。这样 Alice 或David就可以放心地把David签过字的Alice的公匙 上载到 BBS 上让你去拿,没人可能去篡改它而不被你发 现,即使是 BBS 的管理员。这就是从公共渠道传递公匙的 安全手段。

有人会问:那你怎么安全地得到 David 的公匙呢,这 不是个先有鸡还是先有蛋的问题吗?确实有可能你拿到的 David 的公匙也是假的,但这就要求这个捣蛋者参与这整 个过程,他必须对你们三人都很熟悉,还要策划很久,这 一般不可能。当然, PGP 对这种可能也有预防的建议,那 就是由一个大家普遍信任的人或机构担当这个角色。他被 称为“密匙侍者”或“认证权威”,每个由他签字的公匙 都被认为是真的,这样大家只要有一份他的公匙就行了, 认证这个人的公匙是方便的,因为他广泛提供这个服务, 假冒他的公匙是很极困难的,因为他的公匙流传广泛。这 样的“权威”适合由非个人控制组织或政府机构充当,现 在已经有等级认证制度的机构存在。

对于那些非常分散的人们, PGP 更赞成使用私人方式 的密匙转介方式,因为这样有机的非官方更能反映出人们 自然的社会交往,而且人们也能自由地选择信任的人来介 绍。总之和不认识的人们见面一样。每个公匙有至少一个 “用户名” (User ID) ,请尽量用自己的全名,最好再加 上本人的Email地址,以免混淆。

注意!你所必须遵循的一条规则是:在你使用任何一 个公匙之前,一定要首先认证它!!!无论你受到什么诱 惑,当然会有这种诱惑,你都不要,绝对不要,直接信任 一个从公共渠道(由其是那些看起来保密的)得来的公 匙,记得要用熟人介绍的公匙,或者自己与对方亲自认 证。同样你也不要随便为别人签字认证他们的公匙,就和 你在现实生活中一样,家里的房门钥匙你是只会交给信任 的人的。

下面,我讲讲如何通过电话认证密匙。每个密匙有它 们自己的标识( keyID),keyID是一个八位十六进制数, 两个密匙具有相同 keyID 的可能性是几十亿分之一,而且 PGP 还提供了一种更可靠的标识密匙的方法:“密匙指 纹” (key's fingerprint) 。每个密匙对应一串数字(十 六个八位十六进制数),这个数字重复的可能就更微乎其 微了。而且任何人无法指定生成一个具有某个指纹的密 匙,密匙是随机生成的,从指纹也无法反推出密匙来。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有