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