信息社会里,E-mail已经与电话、传真一道,成为个人生活中必不可少的通讯手段。现在全世界每天通过互联网传送的电子邮件多达数十亿封,相对于普通邮件而言,电子邮件省时省钱,超越了时空限制,大大方便了人们彼此间的联系。然而电子邮件广受欢迎的同时,其安全问题也日益受到人们的重视。
实际上,电子邮件的传送过程是邮件在网络上反复复制的过程,其传输路径不确定,很容易遭到不明身份者的窃取、篡改、冒用甚至恶意破坏,给收发双方带来麻烦。进行信息加密,保障电子邮件的传输安全已经成为广大E-mail用户的迫切要求。
PGP的出现与应用很好地解决了电子邮件的安全传输问题。PGP是“Pretty Good Privacy”的缩写,它将传统的对称性加密与公开密钥加密方法结合起来,兼备了两者的优点,可以支持1024位的公开密钥与128位的传统加密,达到军事级别的标准,完全能够满足电子邮件对于安全性能的要求。
目前,PGP已经过各方加密界人士的不断完善,发展成为一个功能强大的加密软件。作为加密软件中的“Linux”,虽然开发至今不过数年时间,PGP已显示出了强大的生命力,许多公司相继开发了自己的PGP加密产品。PGP的应用范围不断扩大,越来越受到大家的喜爱。以下是提供免费PGP软件的网站,大家可以去下载它的最新版本。
1. http://www.pgpi.com/
2. http://www.mantis.co.uk/pgp/pgp.html
3. http://www.std.com/~fran1/pgp
PGP软件可以安装在DOS、Windows或Unix系统中。在Windows中,PGP可以根据用户的窗口菜单命令在软件内部自动执行相应功能,足以应付普通的邮件加密应用。对于一些安全要求较高的电子邮件,笔者更倾向于使用DOS或Unix模式下的PGP操作。它们同样简便且易操作,用户只需输入相应的PGP命令即可。
下面,笔者以DOS系统为例,介绍实现电子邮件安全传输的PGP操作过程。
一、 配制PGP公开密钥对
命令格式为C:PZ>pgp -KG
PGP的配制过程共分3个步骤。
首先,PGP会提示用户选择钥匙长度,有3种选择:
1. 512位,低档商业级;
2. 768位,高档商业级;
3. 1024位,军事级别,有些版本的PGP可以提供2048位的超强加密。
用户选择长度,再按PGP提示输入用户标识即可。通常,PGP采用姓名加E-mail地址形式,例如PZ@io.org。此外,PGP需要设置一个口令保护生成的密钥(密钥是用户解开收到的加密邮件的工具),还需要一个一定长度的随机数,它是由用户无规则的随机输入生成。
上述过程完成后,PGP开始配制钥匙对,然后生成3个文件:pubring.pgp 、secring.pgp 和randseed.bin 。其中,pubring.pgp与secring.pgp分别存放钥匙的公钥环文件与密钥环文件,randseed.bin存放加密过的随机种子。
二、 发放提取公钥
钥匙对配制好后,用户就可以发布自己的公钥。公钥的发放可以用电子邮件或FTP(匿名文件传输协议)实现,也可以把用户的公钥在Internet的公开钥匙服务器发布,供大家提取。
下面是PGP系统公开钥匙服务器的统一地址:
电子邮件:pgp-public-keys@keys.pgp.net;
Web地址:http://www.pgp.net/pgp/www-key.html;
匿名文件传输协议:http://ftp.pgp.net/pub/pgp。
例如,用户使用Web浏览器打开http://www.pgp.net/pgp/www-key.html,选择任一公钥服务器,即可根据菜单说明检索,取走他人公钥或提交自己的公钥。
三、 钥匙的管理
钥匙由钥匙类型、编号、长度、创建时间和用户标识信息等组成。个人的私钥与提取的公钥分别存放在密钥环与公钥环文件中。钥匙环文件是不可读文件,但用户可以通过一些命令(如增加、删除、修改钥匙环文件的内容)间接地对钥匙进行管理。
命令格式:C:\pz>pgp -~ user ID keyring
User ID是用户标识信息,keyring是钥匙环文件名,-~是PGP命令。其中,-kv是检查钥匙的内容信息,如类型、长度、编号、创建日期及用户标识等;-kc是检查钥匙信息以及对钥匙和签名人的信任度;-ke是修改密钥信息、口令或改变他人公钥的信任度;-ka向钥匙环中加入keyfile中的钥匙;-kr是从钥匙环中删除钥匙;-kx提取钥匙到keyfile中;字母k后的各个字母可混合使用。
四、 邮件加密与数字签名
命令格式:C:\pz>pgp -eatwm file user ID
上面是使用收件人公钥对邮件进行加密的命令。其中,user ID是收件人的标识信息,用它来确定所使用的公钥;file是待加密的邮件名;而-e是加密指令;-a是生成后缀为.asc的ASCII文件;-t是转换为电子邮件可接受的文本格式;-w是销毁原文件;-m是提醒接收方阅读解密信件后即销毁。这5个命令可以单独使用,也可合并使用。
有时,为了证明发件人的身份并确保邮件在传输过程中的完整性,发件人可以使用自己的私钥对所发邮件进行数字签名。
命令格式:C:\pz>pgp -sab file
其中,-s是进行签名;-b是单独生成签名文件,可与加密指令合用。签字人用自己的RSA密钥和PGP系统能够生成一个数字签名,它既可附加在文件中,也可以单独作为一个签名文件。数字签名其实是使用RSA密钥通过报文分解函数对邮件信息内容分析提炼而得到的一个大数据,任何邮件内容的细微改动都会导致生成不同的数据。收件人运用发件人公钥解开签名,可以证实发件人的身份,并将这个签名与经收件人自己的私钥分解邮件内容生成的大数据相比较,即可判断邮件是否被改动过。
我们可以把数字签名与邮件加密结合起来,从而最大限度地保障电子邮件的安全传输。
下面是一个使用PZ的密钥和Li的公钥起草邮件并进行加密与签名的程序。
C:\pz>pgp -seat Li | mail Li@io.org
Pretty Good Privacy(tm) 2.6.3I -public-key
encryption for the masses.
(c)1990-96 Philip zimmermann,Phil's Pretty
Good Software. 1996-01-18
International version -not for use in the
USA.Does not use RSAREF
Current time: 1999/10/24 GMT
Li:
Hi.How do you do?
PZ
^D
..............................
you need a pass phrase to unlock you RSA secret key.
Key for user ID:PZ< PZ@io.org >
1024-bit key,key ID 69059347,created 1999/08/16
Enter pass phrase:Pass is good.Just a moment
Recipients' public key(s) will be used to encrypt.
Key for user ID:Li< Li@io.org >
1024-bit key, key ID 23ED1378 creted 1999/08/10
..............................
Transport armor file:letter.asc
至此,加密签名操作完成,如果显示带有数字签名
的加密文件,可以看到它是不可阅读的。
C:\pz >type letter.asc
--------BEGIN PGP MESSAGE-------
OhFIe TatYiITHA2CH67TDPAEKJcut/+3diJLniEey
12X35B6/JOYCPwUhePycGIiOqe+CiohnIMday/IHJTD
IMNCV13276+/FjiWefMhjDHKCJ1537/FdTdiEhg12gih
63ADJI2+1IKN347kfd3287DFJNN/FOldfGoqEdKZXCvn
SeLbaCuc/2s8fKDT0hdZfgQh4==NTIDHJxciif
--------END PGP MESSAGE--------

五、接收与解密
收件人收到邮件后,先将邮件存为一个文件,然后启动PGP系统进行处理。
命令格式:C:\pz>pgp letter.asc
运行PGP命令,后面带上邮件名,即可对接收邮件进行解密。根据PGP系统提示输入口令,取出自己的密钥还原密文,用公钥签定发信人的身份和电子邮件的完整性。最后,PGP会提示生成一个明文文件,收件人打开它即可浏览邮件内容。现举例如下。
C:\Li >type letter
Li:
Hi.How do you do?
PZ
至此,从发送到接收的PGP操作过程完毕,电子邮件安全地由发送方传输至接收方。