ORF反垃圾邮件系统

邮件服务器-邮件系统-邮件技术论坛(BBS)

 找回密码
 会员注册
查看: 4726|回复: 0
打印 上一主题 下一主题

PGP技术:电子邮件安全传输的保护神 (转)

[复制链接]
跳转到指定楼层
顶楼
发表于 2004-5-24 11:24:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PGP技术:电子邮件安全传输的保护神 <br><br>
  在今天的Internet上,随处可见用PGP签名的文章,PGP实际上是一种供大众使用的加密软件。在现代社会里,电子邮件和网络上的文件传输已经成为生活的一部分,因而邮件的安全问题也就日益显得突出。大家都知道在Internet上传输的数据是不加密的,如果你自己不保护自己的信息,第三者就会轻易获知你的所有隐秘。此外,还有信息认证的问题,如何让收信人确信邮件没有被第三者篡改,这也需要以PGP为代表的数字签名技术。 <br>
  PGP(PrettyGoodPrivacy),是一个基于RSA公匙加密体系的邮件加密软件。它不但可以对你的邮件保密以防止非授权者阅读,还能对你的邮件加上数字签名从而使收信人确信邮件是由你发出。让人们可以安全地和从未见过的人们通讯,而事先不需要任何保密的渠道用来传递密匙。PGP采用了审慎的密匙管理,一种RSA和传统加密的杂合算法,用于数字签名的邮件文摘算法,加密前压缩等。它不仅功能强大,速度很快,并且源代码是完全免费的。<br>
<br>
  PGP的创始人是美国的PhilZimmermann。他创造性地把RSA公匙体系的方便和传统加密体系的高速度结合起来,并且在数字签名和密匙认证管理机制上有非常巧妙的设计。因此PGP成为几乎最流行的公匙加密软件包。<br>
<br>
PGP原理 <br>
<br>
  RSA(Rivest-Shamir-Adleman)算法是一种基于“大数不可能质因数分解假设”的公匙体系。简单地说就是找两个很大的质数,一个公开给世界,一个不告诉任何人。一个称为“公匙”,另一个叫“私匙”。这两个密匙是互补的,就是说用公匙加密的密文可以用私匙解密,反过来也一样。假设甲要寄信给乙,他们互相知道对方的公匙。甲就用乙的公匙加密邮件寄出,乙收到后就可以用自己的私匙解密出甲的原文。由于没别人知道乙的私匙,所以即使是甲本人也无法解密那封信,这就解决了信件保密的问题。但另一方面由于每个人都知道乙的公匙,他们都可以给乙发信,那么乙就无法确信是不是甲的来信。这时候就需要数字签名来进行认证。<br>
<br>
  在说明数字签名前先要解释一下什么是“邮件文摘”(messagedigest),简单地讲“邮件文摘”就是对一封邮件用某种算法算出一个能体现这封邮件“精华”的数来,一旦邮件有任何改变这个数都会变化,那么这个数加上作者的名字(实际上在作者的密匙里)还有日期等等,就可以作为一个签名了。确切地说PGP是用一个128位的二进制数作为“邮件文摘”的,用来产生它的算法叫MD5,MD5的提出者是RonRivest,PGP中使用的代码是由ColinPlumb编写的,MD5本身是公用软件,所以PGP的法律条款中没有提到它。MD5是一种单向散列算法,它不像CRC校验码,很难找到一份替代的邮件而与原件具有一样的“精华”。<br>
<br>
  回到数字签名上来,甲用自己的私匙将上述的128位的“精华”加密,附加在邮件上,再用乙的公匙将整个邮件加密。这样这份密文被乙收到以后,乙用自己的私匙将邮件解密,得到甲的原文和签名,乙的PGP也从原文计算出一个128位的“精华”来再用甲的公匙解密签名得到的数比较,如果符合就说明这份邮件确实是甲寄来的。这样两个要求都得到了满足。<br>
<br>
  PGP还可以只签名而不加密,这适用于公开发表声明时,声明人为了证实自己的身份(在网络上只能如此),可以用自己的私匙签名。这样就可以让收件人能确认发信人的身份。这一点在商业领域有很大的应用前途,它可以防止发信人抵赖和信件被途中篡改。 <br>
<br>
公匙传递 <br>
<br>
  公匙的安全性问题是PGP安全的核心,一个成熟的加密体系必然要有一个成熟的密匙管理机制配套。公匙体制的提出就是为了解决传统加密体系的密匙分配难保密的缺点。比如网络黑客们常用的手段之一就是“监听”,如果密匙是通过网络传送就太危险了。对PGP来说公匙本来就要公开,就没有防监听的问题。但公匙的发布中仍然存在安全性问题,例如公匙的被篡改,这可能是公匙密码体系中最大的漏洞,因为大多数新手不能很快发现这一点。你必须确信你拿到的公匙属于它看上去属于的那个人。为了把这个问题说清楚,需要先举个例子,然后再说如何正确地用PGP堵住这个漏洞。<br><br>
以你和张三的通信为例,假设你想给张三发封信,那你必须有张三的公匙,你从BBS上下载了张三的公匙,并用它加密了信件用BBS的Email功能发给了张三。不幸地,你和张三都不知道,另一个叫李四的用户潜入BBS,把他自己的密匙替换了张三的公匙。那你用来发信的公匙就不是张三的而是李四的,一切看来都很正常,因为你拿到的公匙用户名仍是“张三”。于是李四就可以用他手中的私匙来解密你给张三的信,甚至他还可以用张三真正的公匙来转发你给张三的信,这样谁都不会起疑心,他如果想改动你给张三的信也没问题。更有甚者,他还可以伪造张三的签名给你或其他人发信,因为你们手中的公匙是伪造的,你们会以为真是张三的来信。 <br>
  防止这种情况出现的最好办法是避免让任何其他人有机会篡改公匙,比如直接从张三手中得到她的公匙,然而当她在千里之外或无法见到时,这是很困难的。PGP发展了一种公匙介绍机制来解决这个问题。举例来说:如果你和张三有一个共同的朋友王五,而王五知道他手中的张三的公匙是正确的(关于如何认证公匙,PGP还有一种方法,后面会谈到,这里假设王五已经和张三认证过她的公匙)。这样王五可以用他自己的私匙在张三的公匙上签名(就是用上面讲的签名方法),表示他担保这个公匙属于张三。当然你需要用王五的公匙来校验他给你的张三的公匙,同样王五也可以向张三认证你的公匙,这样王五就成为你和张三之间的“介绍人”。张三或王五就可以放心地把王五签过字张三的公匙上载到BBS上让你去拿,没人可能去篡改它而不被你发现,即使是BBS的管理员。这就是从公共渠道传递公匙的安全手段。<br>
<br>
  有人会问:那你怎么安全地得到王五的公匙呢,这不是个先有鸡还是先有蛋的问题吗?确实有可能你拿到的王五的公匙也是假的,但这就要求这个捣蛋者参与整个过程,他必须对你们三人都很熟悉,还要策划很久,这一般是不可能的。当然,PGP对这种可能也有预防的建议,那就是由一个大家普遍信任的人或机构担当这个角色。他被称为“密匙侍者”或“认证权威”,每个由他签字的公匙都被认为是真的,这样大家只要有一份他的公匙就行了。这样的“权威”适合由非个人控制组织或政府机构充当,现在已经有等级认证制度的机构存在。   对于那些非常分散的人们,PGP更赞成使用私人方式的密匙转介方式,因为这样更能反映出人们自然的社会交往,而且人们也能自由地选择信任的人来介绍。和不认识的人们见面一样。每个公匙有至少一个“用户名”(UserID),请尽量用自己的全名,最好再加上本人的Email地址,以免混淆。   注意!你所必须遵循的一条规则是:在你使用任何一个公匙之前,一定要首先认证它!无论你受到什么诱惑,你都不要,绝对不要,直接信任一个从公共渠道(由其是那些看起来保密的地方)得来的公匙,记得要用熟人介绍的公匙,或者自己与对方亲自认证。同样你也不要随便为别人签字认证他们的公匙,就和你在现实生活中一样,家里的房门钥匙你只会交给信任的人。<br>
<br>
  下面谈一谈如何通过电话认证密匙。每个密匙有它们自己的标识(keyID),keyID是一个八位十六进制数,两个密匙具有相同keyID的可能性是几十亿分之一,而且PGP还提供了一种更可靠的标识密匙的方法:“密匙指纹”。每个密匙对应一串数字(十六个八位十六进制数),这个数字重复的可能就更微乎其微了。而且任何人无法指定生成一个具有某个指纹的密匙,密匙是随机生成的,从指纹也无法反推出密匙来。这样你拿到某人的公匙后就可以和他在电话上核对这个指纹,从而认证他的公匙。   这样又引出一种方法,就是把具不同人签名的自己的公匙收集在一起,发送到公共场合,这样可以希望大部分人至少认识其中一个人,从而间接认证了你的公匙。同样你签了朋友的公匙后应该寄回给他,这样就可以让他可以通过你被你其他朋友认证,这和现实社会中人们的交往一样。PGP会自动为你找出你拿到的公匙中有哪些是你的朋友介绍来的,那些是你朋友的朋友介绍来的,哪些则是朋友的朋友的朋友介绍的……它会帮你把它们分为不同的信任级别,让你参考决定对它们的信任程度。你可以指定某人有几层转介公匙的能力,这种能力是随着认证的传递而递减的。<br>
<br>
  转介认证机制具有传递性,这是个有趣的问题。PGP的作者PhilZimmermann。有句话:“信赖不具有传递性;我有个我相信决不撒谎的朋友。可是他是个认定总统不撒谎的傻瓜,很显然我并不认为总统决不撒谎。”<br>
<br>
私匙管理 <br>
<br>
  和传统单密匙体系一样,私匙的保密也是决定性的。相对公匙而言,私匙不存在被篡改的问题,但存在泄露的问题。RSA的私匙是很长的一个数字,用户不可能将它记住,PGP的办法是让用户为随机生成的RSA私匙指定一个口令。只有通过给出口令才能将私匙释放出来使用,用口令加密私匙的方法保密程度和PGP本身是一样的。所以私匙的安全性问题实际上首先是对用户口令的保密。当然私匙文件本身失密也很危险,因为破译者所需要的只是用穷举法试探出你的口令了,虽说很困难但毕竟是损失了一层安全性。在这里只用简单地记住一点,要像任何隐私一样保藏你的私匙,不要让任何人有机会接触到它。<br>
<br>
  PGP在安全性问题上的精心考虑体现在PGP的各个环节。比如每次加密的实际密匙是个随机数,大家都知道计算机是无法产生真正的随机数的。PGP程序对随机数的产生是很审慎的,关键的随机数像RSA密匙的产生是从用户瞧键盘的时间间隔上取得随机数种子的。对于磁盘上的randseed.bin文件是采用和邮件同样强度的加密的。这有效地防止了他人从你的randseed.bin文件中分析出你的加密实际密匙的规律来。<br>
<br>
<br>
您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

小黑屋|手机版|Archiver|邮件技术资讯网

GMT+8, 2026-7-28 11:57

Powered by Discuz! X3.2

© 2001-2016 Comsenz Inc.

本论坛为非盈利中立机构,所有言论属发表者个人意见,不代表本论坛立场。内容所涉及版权和法律相关事宜请参考各自所有者的条款。
如认定侵犯了您权利,请联系我们。本论坛原创内容请联系后再行转载并务必保留我站信息。此声明修改不另行通知,保留最终解释权。
*本论坛会员专属QQ群:邮件技术资讯网会员QQ群
*本论坛会员备用QQ群:邮件技术资讯网备用群

快速回复 返回顶部 返回列表