电子邮件已经成为网络时代最最方便的交流方式,由于互联网的自由性,因而邮件的安全问题也就日益显得突出了。在 Internet 盛行的今天,电子邮件越来越普及,随便翻开一本书或杂志报刊,都有电子邮件地址;就连广告也都标上了电子邮件地址;这已成为一种时尚、成为网络时代最最方便的交流方式,省钱、快捷。正是由于 Internet 的自由性,因而邮件的安全问题也就日益显得突出。通过电子邮件传送信息,一般人都认为很安全。其实不然,大家都知道在 Internet 上传输的数据是不加密的,如果你自己不保护自己的信息,第三者就会轻易获知你的所有隐秘。要解决这些问题,目前最好的办法是对电子邮件进行加密。想要加密一封电子邮件,你必须使用钥匙,它是将你的讯息内容变成乱码的工具。目前最优良的电子邮件加密程式,是使用公开密匙加密系统。此种系统给每位使用者两只钥匙:一支是公开密匙,另一支则是私人钥匙。这两只钥匙实际上是同一支钥匙的两部分:一支可以打开另一支锁上的部份。因此,人们往往将它们称做钥匙组( key pair ),你必须拥有两支钥匙,才能加密电子邮件。你可以将自己的公开钥匙,给任何一位收件人。你甚至可以将公开钥匙存放在公开伺服器( public server )上,或是自己的网页里。这样的话,任何人都可以透过网路,取得你的公开钥匙。不过,私人钥匙只能由你一个人拥有。假如传送讯息时,有人从中途拦截的话,该怎么办?别担心,什么事都不会发生。假如没有相应的私人钥匙,你的讯息内容只会是一片无法阅读的乱码。所以,不管有多少人拥有你的公开钥匙,除非他们也有你的私人钥匙,否则就没有人能将讯息解密。你—正是拥有私人钥匙的唯一人选。现在有很多邮件加密软件,但目前尚无一套标准能够保证,不同的加密软件能彼此共用。现在最为普遍的两种协议,是的 RSA Date Security 的 S/MIME ,以及 Pretty Good Privacy 的 OpenPGP。假如你用某种协议加密自己的讯息,收件人必须使用拥有相同协议的软件。PGP ── Pretty Good Privacy ,是一个基于 RSA 公钥加密体系的邮件加密软件,它提出了公共钥匙或不对称文件加密和数字签名。其创始人是美国的 Phil Zimmermann。他的创造性在于他把 RSA 公钥体系的方便和传统加密体系的高速结合起来,并且在数字签名和密钥认证管理机制上有巧妙的设计,因此 PGP 成为目前几乎最流行的公钥加密软件包。要认识 PGP 就有必要认识一下几种常见加密算法。
一、几种常见加密算法
DES 算法DES 是一个应用非常广泛的数据加密机制,目前有许多种硬件和软件可以实现。它使用一个特殊的算法和称之为钥匙的值将明文信息转换成密文( ciphertext ),如果接收者知道钥匙,就可以使用它将密文转换成原始数据。所有加密系统的一个潜在弱点就是需要记住数据加密的钥匙,在这点上,类似于要记住口令。如果钥匙被非授权方记录下来,你的原始数据就可以被他人解读;如果忘记钥匙,连你自己也无法恢复原始数据。RSA 算法RSA ( Rivest-Shamir-Adleman )算法是一种基于大数不可能质因数分解假设的公钥体系。简单地说,就是找两个很大的质数,一个公开给世界,称之为“公钥”,另一个不告诉任何人,称之为“私钥”。两把密钥互补──用公钥加密的密文可以用私钥解密,反过来也一样。假设 A 寄信给 B,他们知道对方的公钥。 A 可用 B 的公钥加密邮件寄出,B 收到后用自己的私钥解出 A 的原文,这样就保证了邮件的安全性。IDEA 算法IDEA 算法是经过改进的传统算法。所谓传统算法就是用密钥加密明文,然后用同样的密钥解密。它的主要缺点是密钥的传递渠道解决不了安全性问题,不能满足网络环境邮件加密的需要。我们可以给 PGP 下一个简单的定义: PGP 是 RSA 和传统加密的杂合算法。那么为什么说 PGP 用的是 RSA 和传统加密的杂合算法呢?因为 RSA 算法计算量极大在速度上不适合加密大量数据,所以 PGP 实际上用来加密的不是 RSA 本身,而是采用了 IDEA 这种传统加密算法。IDEA 的加(解)密速度比 RSA 快得多,所以实际上 PGP 是用一个随机生成密匙(每次加密不同)用 IDEA 算法对明文加密,然后用 RSA 算法对该密匙加密。这样收件人同样是用 RSA 解密出这个随机密匙,再用 IDEA 解密邮件本身。这样的链式加密就做到了既有 RSA 体系的保密性,又有 IDEA 算法的快捷性。
二、PGP 的主要特征
使用 PGP 对邮件加密,以防止非法阅读;能给加密的邮件追加上数字签名,从而使收信人进一步确信邮件的发送者,而事先不 需要任何保密的渠道用来传递密钥;可以实现只签名而不加密,适用于发表公开声明时证实声明人身份,也可防止声明人 抵赖,这一点在商业领域有很大的应用前景;能够加密文件,包括图形文件、声音文件以及其它各类文件;利用 PGP 代替 Uuencode 生成 RADIX 64 (就是 MIME 的 BASE 64 格式)的编码文件。三、PGP 密钥体系管理PGP 密钥体系包含对称加密算法( IDEA )、非对称加密算法( RSA )、单向散列算法( MD5 )以及随机数产生器(从用户击键频率产生伪随机数序列的种子),每种算法都是 PGP 不可分割的组成部分。公钥体制的提出,就是为了克服传统加密体系的密钥分配过程难以保密的缺点。而 PGP 采用公钥介绍机制不仅解决了公钥体制的缺点,而且对其加以发展。所谓公钥介绍机制,就是由一个大家普遍信任的人或机构担当介绍人,被称为“认证权威”,每个由他签字的公钥都被认为是真的,这样大家只要有一份他的公钥就行了。而认证这个人的公钥是很方便的,因为他广泛提供这个服务,因而他的公钥也广泛流传。现在公认的有效方法是通过密钥分配中心 KDC 来管理和分配公开密钥,这对商业的网络化提供了可靠的保障。当然,个人用户可以不需要进行机构认证,而通过私人方式进行密钥转介,这体现了人们交往的自然状态。
四、PGP 邮件加密的使用我们就目前的 PGP 6.0.2i 版软件来看一看其对邮件的加密方法。 使用 PGP 6.0.2i 可以简洁而高效地实现邮件或者文件的加密、数字签名。当 PGP 6.0.2i 安装完成后,在任务栏中出现 PGP 所特有的小锁图标── PGP Trays 。点击左键,即可激活 PGPtools 。 PGP 6.0.2i 中使用 PgpKeys 管理密钥环( KeyRing ),密钥环文件保存所有与你相关的公开密钥,并对其进行维护和管理,如进行密钥的生成、传播或废除,以及数字签名、信任管理、资源查询等。如果机器与 Internet 相连,还可实现在线密钥认证以及在线密钥更新。
密钥的生成、传播和废除每一个用户必须生成自己的密钥对,这是使用 PGP 加密的第一步,通常在安装过程中完成。在 PgpKeys 中也可生成新的密钥,即在菜单中选择“ Keys ”—“ New Key ”,弹出对话窗,提示用户填写用户名、电子信箱地址,然后要选择密钥长度,一般选择 2048bit 。之后是确定密钥生存周期:可以定制该密钥在一定天数后过期,默认值为 NEVER 。最后定义保护密钥的口令。生成密钥后,可以选择是否立即将新的公开密钥发送到 Internet 密钥服务器上,这样希望与你通信的用户可以直接到密钥服务器中下载你的密钥。通过密钥服务器可以实现密钥的上载与下载,还能方便地与他人交换公钥。若想废除时,只须选取 Revoke 即可。数字签名如果希望发出的信件或者文件不被冒名或篡改,可以用你的私钥对邮件等签名。收件人可使用你的公钥验证签名。 PGP 6.0.2i 还可实现加密后签名,避免了老版本中签名文件的明文状态──只能保证不被篡改,不能加密传输的缺点。加密与解密下面我们以 gx.txt 为例,说明实现加密的具体过程。点击“ Encrypt ”后,出现选择所加密文件的对话框,选择 gx.txt 后,进一步选择加密后的输出格式,分别有以下 4 个选项:Text OutputConventional EncryptionWipe OriginalSecure Viewer根据邮件及文件重要性的不同,可选择合适的输出格式。本例中,选择“ Conventional Encryption ”。接下来便是提示输入口令,得到确认之后,选择输出文件名 A ,然后一切 OK!解密是加密的反过程。 PGP 6.0.2i 的解密过程同样简单,点击“ Decrypt/Verify ”,弹出文件选择对话框,选择所要解密的文件之后,输入加密时使用的密码,经过计算,再次选择输出文件名,解密就完成了。
五、其它
在这里我提一下 PGP 的加密前预压缩处理,PGP 内核使用 PKZIP 算法来压缩加密前的明文。一方面对电子邮件而言,压缩后加密再经过 7bits 编码密文有可能比明文更短,这就节省了网络传输的时间。另一方面,明文经过压缩,实际上相当于经过一次变换,信息更加杂乱无章,对明文攻击的抵御能力更强。 PGP 中使用的 PKZIP 算法是经过原作者同意的。 PKZIP 算法是一个公认的压缩率和压缩速度都相当好的压缩算法。在 PGP 中使用的是 PKZIP 2.0 版本兼容的算法。PGP 的密钥和口令的安全性问题PGP 最可能的失密方式就是别人得到你的口令和你的私匙文件,那么整个加密体系就无密可言了。另一个要注意的就是口令设置问题,口令设置不要太简单。 PGP 用的是“口令”( passphase ),而不是“密码”( password ),就是说可以在口令中包含多个词和空格。攻击者可能会用一本字典或者名言录来寻找你的口令,因此为了得到好记又难猜的口令,你可以创造句子或者找些非常生僻的文学篇章中的句子。口令的长度最好大于等于 8 个字符,同时也可夹杂英文字母的大小写和数字、符号等。一般说来,密钥长度每提高一位,就可以让攻击者多花费一倍的破解时间,因此从理论上而言,如果没有更新的计算技术出现,总是可以找到在给定时间内不能被破解的密钥的。公钥的篡改和冒充可以说是 PGP 的最大