《PGP加密原理》.doc
7页《PGP加密原理》 我们知道 PGP(Pretty Good Privacy) 是目前最流行的一种加密软件,它是一个基于 RSA 公钥加密体系的邮件加密软件 我们可以用它对邮件保密以防止非授权者阅读,它还能对用户的邮件加上数字签名,从而使收信人可以确信发信人的身份 它让用户可以安全地和从未见过的人们通信,事先并不需要任何保密措施的来传递密钥,因为它采用了 非对称的“公钥”和“私钥”加密体系 但 PGP 不是一种完全的非对称加密体系,它是个混合加密算法,它是由一个对称加密算法 (IDEA)、一个非对称加密算法(RSA)、一个单向散列算法(MD5) 以及一个随机数产生器(从用户击键频率产生伪随机数序列的种子) 组成的,每种算 法都是 PGP 不可分割的组成部分,PGP 至所以得到流行,得到大家的认可,最主要的一半是它集中的几种加密算法的优点,使它们彼此得到互补 我们知道采用“公钥”和“私钥”加密体系最大的安全性问题就是公开的“公钥”可能被人篡改,影响文件的解密,虽然 PGP 也采用这一加密体系,并且所有 “公钥”和“私钥”都可以由用户自己产生,不需要专门的认证机构,但它却有一个比较完善的密钥管理体制,所以它的另一半优点就体现在 PGP 独特的密钥管理 体制上。
下面我们就从 PGP 加密机制和密钥管理的角度来分析 PGP 加密的优越性 一、PGP 的加密机制 在现代社会里,电子邮件和网络上的文件传输已经成为生活的一部分 邮件的安全问题也就突出了,大家都知道在互联网上传输的数据是不加密的 如果用户不保 护自己的信息,第三者就会轻易获得用户的隐私 还有一个问题就是信息认证,如何让收信人确信邮件没有被第三者篡改,就需要使用数字签名技术 RSA 公钥体系的特点使它非常适合用来满足上述两个要求:保密性(privacy) 和公证性(authentication) PGP 的创始人是美国的 Phil Zimmermann,他的创造性在于他把 RSA公钥体系的方便和传统加密体系的高度结合起来,并且在数字签名和密钥认证管理机制上有巧妙的设计 RSA(Rivest-Shamir-Adleman)算法是基于大数不可能被质因数分解假设的公钥体系 简单地说就是找两个很大的质数一个对外公 开,一个不告诉任何人公开的一个称为“公钥”,另一个叫“私钥”(Prblic key & Secret key or Private key) 这两个密钥是互补的,也就是说用公钥加密的密文只可以用私钥解密,反过来也一样。
假设甲要寄信给乙,他们互相知道对方的公钥 甲就 用乙的公钥加密邮件寄出,乙收到后就可以用自己的私钥解密出甲的原文 由于别人不知道乙的私钥,所以即使是甲本人也无法解密那封信,这就解决了信件保密的 问题 另一方面,由于每个人都知道乙的公钥,他们都可以给乙发信,那么乙怎么确信来信是不是甲的,这就是数字签名的必要性,用数字签名来确认发信的身份 PGP 的数字签名是利用一个叫“邮件文摘”的功能,“邮件文摘”(message digest),简单地讲就是对一封邮件用某种算法算出一个最能体现这封邮件特征的数来,一旦邮件有任何改变这个数都会发生变化,那么这个数加上用户的名 字(实际上在用户的密钥里) 和日期等等,就可以作为一个签名了,确切地说 PGP 是用一个 128 位的二进制数进行为”邮件文摘”的,用来产生它的算法就是 MD5(Message Digest 5 MD5 的提出者是 Ron Rirest,PGP 中使用的代码是由 Colin Plumb 编写的 MD5,MD5 是一种单向散列算法,它不像校验码,是一份替代的邮件并且与原件具有同样的 MD5 特征值 PGP 给邮件加密 和签名的过程是这样的:首先甲用自己的私钥将上述的 128 位值加密,附加在邮件后,再用乙的公钥将整个邮件加密(要注意这里的次序,如果先加密再签名的 话,别人可以将签名去掉后签上自己的签名,从而篡改了签名)。
这样这份密文被乙收到以后,乙用自己的私钥将邮件解密,得到甲的原文和签名,乙的 PGP 也从 原文计算出一个 128 位的特征值来和用甲的公钥解密签名所得到的数进行比较,如果符合就说明这份邮件确实是甲寄来的 这样两个安全性要求都得到了满足 PGP 还可以只签名而不加密,这适用于公开发表声明时,声明人为了证实自己的身份(在网络上只能如此了),可以用自己的私签名,这样就可以让收件人能确 认发信人的身份,也可以防止发信人抵赖自己的声明 这一点在商业领域有很大的应用前途,它可以防止发信人抵赖和信件被途中篡改 为什么说 PGP 用的是 RSA 和传统加密的杂合算法呢? 因为 RSA 算法计算量很大而且在速度上也不适合加密大量数据,所以 PGP 实际上用来加密的不是 RSA 本身,而是采用了一种叫 IDEA 的传统加密算法,又称为“对称加密法” 传统加密方法就是用一个密钥加密明文,然后用同样的密钥解密 这种方法的代表是DES(US Federal Data Encryption Standard),也就是乘法加密,这的主要缺点就是密码长度较短,且的传递渠道解决不了安全性问题,不适合网络环境邮件加密需要。
IDEA 是一个有专利的算法,专利持有者是 ETH 和一个瑞士公司:Ascom-Tech AGIDEA 的加(解) 密速度比 RSA 快得多,所以实际上 PGP 是以一个随机生成的密钥(每次加密不一样),用 IDEA 算法对明文加密,然后用 RSA 算 法对该密钥加密 这样收件人同样是用 RSA 解出这个随机密钥,再用 IDEA 解密邮件本身 这样的链式加密就做到了既有RSA 体系的保密性,又有 IDEA 算 法的快捷性 PGP 的创意有一半就在这一点上了,为什么 RSA 体系 70 年代就提出来,一直没有推广应用呢? 速度太慢! 那 PGP 创意的另一半在哪儿呢? 就是 下面我要谈的密钥管理 二、PGP 的密钥管理 一个成熟的加密体系必然要有一个成熟的密钥管理机制配 套 公钥体制的提出就是为了解决传统加密体系的密钥分配过程保密的缺点 比如网络黑客们常用的手段之一就是”监听”,如果密钥是通过网络传送就太危险了对 PGP 来说公钥本来就要公开,就没有防监听的问题 但公钥的发布中仍然存在安全性问题,例如公钥被篡改(public key tampering),这可能是公钥密码体系中最大漏洞 。
用户必须确信用户的公钥属于需要收信的那个人 为了把这个问题说清楚,先举个例子进行说明,然后再说如何正确使用 PGP 堵住这个漏洞 以用户 A 和用户 B 通信为例,现假设用户 A 想给用户 B 发信,首先用户 A 就必需获取用户 B 的公钥,用户 A 从 BBS 上下载或其它途径得到了 B 的公钥,并用它加 密了信件发给了 B 不幸的是,用户 A 和 B 都不知道,另一个用户 C 潜入 BBS 或网络中,侦听或截取到用户 B 的公钥,然后在自己的 PGP 系统中用用户 B 的名字 生成密钥对中的公钥替换了用户 B 的公钥,并放在 BBS 上或直接以用户 B 的身份把更换后的用户 B 的“公钥”发给用户 A 那用户 A 用来发信的公钥是已经是更改 过的,实际上是用户 C 伪装用户 B 生成的另一个公钥 这样谁都不会起疑心,但这样一来用户 B 收到用户 A 的来信后就不能用自己的私钥解密了,更可恶的是,用户 C 还可伪造用户 B 的签名给用户 A 或其他人发信,因为用户 A 手中的公钥是伪造 ,用户 A 会以为真是用户 B 的来信 防止这种情况出现的最好办法是避免让任何其他人有机会篡改公钥,但能做到这一点的是非常困难的,一种方法是直接从用户 B 手中得到他的公钥,然而当他在远在他乡或在时间上根本不可达到时,这是不可办到的。
但 PGP 发展了一种公钥介绍机制来解决这个问题,其思路是这样的:如果用户 A 和用户 B 有一个共同的朋友 D,而 D 知道他手中的 B 的公钥是正确的 这样 D 就 成为用户A 和 B 之间的公证人,用户 B 为了防止别人篡改自己的公钥,就把经过 D 签名的自己的公钥上载到 BBS 上让用户去拿,用户 A 想要取得用户 B 的公钥就必 需先获取 D 的公钥来解密 BBS 或网上经过 D 签名的 B 的公钥,这样就等于加了双重保险,一般没有可能去篡改它而不被用户发现,即使是 BBS 的管理员 这就是 从公共渠道传递公钥的安全手段 说到这里也许有人会问想到,只通过一个签名公证力度是不是小了点,聪明的 PGP 当然会想到这一 点,就是把不同签名自己的公钥收集在一起,发送到公共场合,这样可以希望大部分人至少认识其中一个,从而间接认证了用户的公钥同样用户签了朋友的公钥后 应该寄回给他,这样就可以让他通过该用户被该用户的其他朋友所认证 有点意思吧,和现实社会中人们的交往一样 PGP 会自动根据用户拿到的公钥中有哪些是 朋友介绍来的,把它们分为不同的信任级别,供用户参考决定对它们的信任程度 也可指定某人有几层转介公钥的能力,这种能力是随着认证的传递而递减的。
也许还有人会问:如何安全地得到 D 或其他签名朋友的公钥呢 确实有可能用户 A 拿到的 D 或其他签名的朋友的公钥也假的,但这就求这个用户 C 必须对你们三人 甚至很多人都很熟悉,这样的可能性不大,而且必需经过长时间的策划 当然,PGP 对这种可能也预防的建议,那就是由一个大家普遍信任的机构担当这个角色,他被称为认证权威机构,每个由他签过字的公钥都被认为真的,这样大家只要有他的公钥就行了,认证这个人的公钥是方便的,因他广泛提供这个服务,假冒他的公 钥是极困难的,因为他的公钥流传广泛 这样的”权威机构”适合由非个人控制组织或政府机构充当,现在已经有等级认证制度的机构存在,如广东省电子商务电子 认证中心()就是一个权威的认证机构 对于那些非常分散的用户,PGP 更赞成使用私人方式的密钥转介方 式,因这样有的非官方途径更能反映出人们自然的社会交往,而且人们也能自由地选择信任的朋友来公证,总之和不认识的人们之间的交往一样,每个公钥至少有一 个”用户名”(User ID),请尽量用自己的全名,最好再加上本人的 E-mail 地址,以免混淆,这就是 PGP 推荐使用的密钥认证 PGP 的每个密钥有它们自己的标识(keyID),keyID 是一个 8 位十六进制数,两个密钥具有同 keyID 的可能性只有十亿分之一。

卡西欧5800p使用说明书资料.ppt
锂金属电池界面稳定化-全面剖析.docx
SG3525斩控式单相交流调压电路设计要点.doc
话剧《枕头人》剧本.docx
重视家风建设全面从严治党治家应成为领导干部必修课PPT模板.pptx
黄渤海区拖网渔具综合调查分析.docx
2024年一级造价工程师考试《建设工程技术与计量(交通运输工程)-公路篇》真题及答案.docx
【课件】Unit+3+Reading+and+Thinking公开课课件人教版(2019)必修第一册.pptx
嵌入式软件开发流程566841551.doc
生命密码PPT课件.ppt
爱与责任-师德之魂.ppt
制冷空调装置自动控制技术讲义.ppt


