PGP 协议

在信息时代里,电子邮件已经成为人们生活中的一部分,同时电子邮件的安全问题也就日益显得突出。一般来说,电子邮件在网络上的传输是不加密的。这种不加保护的邮件在网络上传输,第三者就会轻易获得通信过程中传送的信息。此外,为了防止冒名顶替,收信人需要确认邮件没有被第三者篡改,确实是发送者本人发出的,这就需要使用数字签名的一些技术。从前面的讲述可以知道,RSA 公钥密码体系非常适合用来满足上述要求。但是要直接使用 RSA 加密电子邮件,还有一些不方便的地方。
PGP(Pretty Good Privacy)是美国人 PhilZimmermann 于 1995 年提出的一套电子邮件加密方案。它可以用来对邮件加密以防止非授权者阅读,还能对邮件加上数字签名而使收信人可以确认邮件确实是由发送方发出的。
PGP 并不是新的加密算法或协议,它综合采用了多种加密算法,例如,对邮件内容加密采用 IDEA 算法、对于加密信息采用 RSA 公钥加密算法,还采用了用于数字签名的消息摘要算法,加密前进行压缩处理等技术手段进行邮件加密的一套软件。通过组合使用这些加密方法,把 RSA 公钥加密体系的良好加密效果和对称密钥加密体系的高速度结合起来,并且通过在数字签名和密钥认证管理机制中的巧妙设计,使得 PGP 成为一个优秀的强有力的数据加密程序。
由于 PGP 功能强大、处理迅速、使用简便,而且它的源代码是免费的,因此,PGP 在 IT 等多个行业得到了广泛的应用,迅速普及。如今,PGP 除了用于通常的电子邮件加密,还可以用来加密重要文件,用 PGP 代替 UUencode 生成 RADIX64 格式(就是 MIME 的 BASE64 格式)的编码文件,以保证它们在网络上的安全传输,或为文件做数字签名,以防止篡改和伪造。
1.PGP 加密的原理
假设一个用户 A 想要发送一个加密的邮件给另一个用户 B。那么加密的过原理如图 16-11 所示。
在这里插入图片描述
首先,用户 A 对要发送的邮件 P 运用 MD5 散列算法进行计算,生成一个 128 位的消息摘要,有了这个消息摘要就可以检验邮件信息是否完整、有没有被篡改。然后再通过 RSA 算法,运用 A 的私钥 SKA 对消息摘要进行加密,生成消息摘要的密文 H。邮件 P 与经过加密的邮件消息摘要 H 共同构成新的报文 P1,接着对 P1 进行 ZIP 压缩,成为压缩的报文 P1.Z。再对 P1.Z 采用 IDEA 算法加密,这次加密使用一个一次性的密钥 K,并且 K 必须经过 RSA 算法使用通信的另一方 B 的公开密钥 PKB 加密,与加密后的报文 P2 一起,再经过 BASE64 编码,得到一系列 ASCII 码,作为邮件内容发送到网络上。
用户 B 接收到 A 发来的加密的邮件后,执行解密过程:与加密过程相反,首先对邮件内容进行 BASE64 解码,再利用自己的秘密密钥 SKB,通过 RSA 算法解出 IDEA 的密钥 K。再用此密钥恢复出 P1.Z,对 P1.Z 进行解压缩后还原出 P1。接着把明文 P 和邮件信息摘要的密文 H 分离开来,并用 A 的公开密钥 PKA 解密 H 得到真正的邮件消息摘要。然后 B 自己也运用 MD5 算法对邮件明文 P 进行运算,生成一个 128 位的消息摘要。比较这两个摘要是否一致,如果一致,则表明 P 是 A 发来的邮件。
通过上述通信过程可以看出,PGP 既可以保证邮件不被第三方窃取,又可以防止发信人抵赖和信件被途中篡改。
由于 RSA 算法的计算量太大、速度太慢,对邮件正文这种大量数据不适合用它来加密。所以 PGP 实际上用来加密邮件正文的不是 RSA 本身,而是采用的 IDEA 加密算法。 IDEA 的加密和解密使用同一个密钥,它的主要缺点就是在公共网络环境中很难进行安全的密钥的传递,不适合 Internet 上邮件加密的需要。但 IDEA 的加密、解密速度比 RSA 快得多,所以 PGP 使用一个随机生成的密钥(每次加密都不同)运用 IDEA 算法对明文加密,然后用 RSA 算法对 IDEA 密钥加密。这样收件人同样使用 RSA 算法解密出这个随机的 IDEA 密钥,再用 IDEA 算法解密邮件本身。这样的链式加密就做到了既具有 RSA 算法的保密效果,又具有 IDEA 算法的快捷方便。这里,PGP 在每次加密邮件时所使用的 IDEA 密钥是一个随机数,而且为了增强随机性,PGP 是从用户敲击键盘的时间间隔上取得随机数种子来产生密钥的,从而更加增强了它的加密效果。
PGP 中使用 PKZIP 算法来压缩加密前的明文。这对电子邮件而言,一方面压缩后再加密得到的密文有可能比明文更短,这就节省了网络传输的时间;另一方面,明文经过压缩,实际上相当于多经过一次变换,信息更加杂乱无章,对非法攻击的抵御能力更强。
PGP 还可以只签名而不加密,这可以用于公开发表声明。声明人为了证实自己的身份,可以用自己的私钥签名。这样就可以让公众用其公开的公钥来验证该签名,从而确认声明人的身份。
2.PGP 的密钥管理机制
在 PGP 加密通信过程中,密钥无疑起着最为关键的作用。一个成熟的加密体系必然要有一个成熟的密钥管理机制与之相配套。PGP 对于密钥管理也提出了一套分配、使用、管理的方案。
公钥加密体制本身就是为了解决对称密钥加密体制中的密钥分配难以保密的问题而提出的。例如,攻击者常用的手段之一就是“监听”,如果密钥是通过网络传送就很容易被拦截。PGP 中采用公钥来加密,而公钥本来就要公开,所以不存在被监听的问题。但是公钥在发布过程中仍然存在安全隐患。例如,公钥被非法篡改,这就是公钥密码体系中的一大安全隐患,因为这很难被普通用户发现。
举例来说,假如用户 A 要向用户 B 发一封加密的邮件,那么 A 必须拥有 B 的公钥。于是 A 从公共目录中查到了 B 的公钥,并用它加密了邮件然后发给了 B。这是一个正常的过程。
但是,在这个过程中可能出现攻击:A 和 B 都不知道,另一个用户 C 用他自己假冒B的名字生成的密钥当中的公钥替换了 B 的公钥!
那么 A 用来发信的公钥就不是 B 的而是 C 的公钥。然而一切看来都很正常,因为 A 拿到的公钥的用户名是 B。于是 C 就可以用他手中的私钥来解密 A 发给 B 的邮件,甚至他还可以用 B 真正的公钥来转发 A 发给 B 的信,这样 A 和 B 都不会发现什么异常,而他们的通信却全部泄漏了。甚至 C 如果想改动 A 发给 B 的邮件也毫无问题。
而且,C 还可以伪造 B 的签名给 A 或其他人发送信息,因为 A 和其他人手中的公钥是 C 伪造的,A 和其他人可以正常解密这份伪造的签名,因而以为真是来自 B 的信息。
要防止这种情况,必须防止任何人伪造其他人的公钥。例如,通信双方直接见面并交换密钥,就可以避免得到伪造的公钥。然而当双方相隔遥远或不方便直接见面时,就难以直接交换密钥。这种情况下,PGP 是通过一种公钥介绍机制来解决这个问题的。
继续上面的例子:如果 A 和 B 有一个共同的朋友 D,而 D 知道他手中 B 的公钥是正确的(这里假设 D 已经认证过 B 的公钥)。这样 D 就可以用他自己的私钥在 B 的公钥上签名,表示他担保这个公钥是 B 的真正的公钥,并把它发送给 A。然后 A 用 D 的公钥来验证 D 发给 A 的 B 的公钥,同样 D 也可以向 B 担保 A 的公钥。这样 D 就成为了 A 和 B 之间的公钥介绍人。
这样 B 或 D 就可以放心地把 D 签过名的 B 的公钥列示到公共目录中,供 A 读取,没有人能够伪造 B 的公钥而不被 A 发现。这就是 PGP 从不安全的 Internet 上传递公钥的安全手段。
不过,如何确认 D 的公钥的安全可靠性呢?对这种情况 PGP 建议通过一个大家普遍信任的人或权威部门担当认证机构角色。每个由权威认证机构签字的公钥都被认为是真实的,这样大家只要有一份认证机构的公钥就行了。由于认证机构广泛提供公钥服务,因而其公钥流传广泛,假冒其公钥是很困难的,所以认证其公钥也非常方便。
在 PGP 中使用密钥,要注意在使用任何一个公钥之前,一定要首先认证它。无论什么情况下,都不要直接信任一个从公共渠道得来的公钥。而要使用可信的人介绍的公钥,或者自己与对方亲自认证。
由于 PGP 能够实现数字签名、不可否认、防止篡改、防止破译等功能,所以自从 PGP 推出以来,就受到人们的普遍欢迎。目前,PGP 几乎成为最流行的公钥加密软件。随着人们通信的增加和安全意识的增强,PGP 将会得到更加广泛的应用。

  • 26
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值