关键词:密码 加密 解密 电子邮件 数字签名
中图分类号:TP393.0 文献标识码:A 文章编号:1007-9416(2016)11-0189-02
1991年,程序员Phil Zimmermann为了避开政府监视,开发了加密软件PGP。这个软件非常好用,迅速流传开来,成了许多程序员的必备工具。但是,它是商业软件,不能自由使用。所以,自由软件基金会决定,开发一个PGP的替代品,取名为GnuPG。这就是GPG的由来。GnuPG的全称是GNU Privacy Guard,通常简称为GPG,是一个以Gnu通用公共许可证释出的开源密码工具软件,可用来取代PGP;可用于数据加解密和数字签名及验证等。它提供了如下的公钥算法:RSA、RSA-E、RSA-S、ELG-E、DSA,还提供下列对称加密算法:3DES、CAST5、BLOWFISH、AES、AES192、AES256、TWOFISH;散列函数:MD5、SHA-1、RIPEMD160、SHA-256、SHA384、SHA512。此外,GPG还支持以下压缩方式:不压缩、ZIP、ZLIB和BZIP2等。
下面我们对GPG的使用方法进行简要介绍,GPG的语法格式为:GPG [选项] [文件名]。常用命令如下:
1 使用密钥
(1)产生密钥。gpg --gen-key:产生一个新的密钥对。
(2)输出密钥。gpg --eXPort [UID]:输出一个用户的密钥,UID缺省将输出所有的密钥,默认地,结果将输出到标准输出(stdout)去,可使用-o选项将密钥输出到一个文件里。
(3)引入密钥。gpg --import [Filename]:将别人的公钥加入密钥数据库,filename缺省将从标准输入(stdin)读入数据。
(4)取消密钥。gpg --gen-revoke:取消一个已经存在的密钥,该命令将产生一份取消密钥证书,且需要事先输入密钥。
(5)密钥管理:
gpg --edit-key UID:此命令可以修改密钥的失效日期、加入一个指纹、对密钥签名等;(上述命令在使用前需事先输入用户密码进入命令行)
(6)密钥签名。GPG通过对密钥进行签名来克服公钥的真实性问题。密钥上的签名就表示承认密钥上的用户身份确实是这把密钥的主人,所以只有在绝对确信一把密钥的真实性的时候(如通过安全渠道拿到密钥,且检查了指纹),才应该对它签名认可。对一个密钥签名,首先用gpg --edit-key UID,然后用sign命令。GPG根据现有的签名和“主人的信任度”来决定密钥的真实性。主人信任度是密钥的主人用来决定对别的某把密钥的信任程度的一个值。
2 加密和解密
(1)密钥选择。可通过命令行选项-u UID或--local-user UID选择要使用的密钥,取代默认密钥。

(2)加密。加密的命令是:gpg -e Recipient [Data]或 gpg --encrypt Recipient [Data]。
(3)解密。解密的命令是:gpg [-d] [Data] 或gpg [--decrypt] [Data],预设输出为stdout,可以使用-o选项将输出转到一个文件。
3 签名和检验签名
3.1 签名
gpg -s (--sign) [Data]:使用密钥进行签名的同时数据也被压缩,最终结果无法直接读懂;
gpg --clearsign [Data]:使用密钥签名并生成清晰刻度的结果;
gpg -b (--detach-sign) [Data]:使用密钥签名并将签名写入另一个文件
对数据既加密又签名的完整命令行大致如下:
gpg [-u Sender] [-r Recipient] [--armor] --sign --encrypt [Data]
3.2 验证
如果数据既加密又签名,签名是在解密过程中检验的;可以用以下命令检验签名:gpg [--verify] [Data];前提是需要接收方有发送方的公钥。上述所有命令的具体使用方法可参见官方教程http://www.gnupg.org/howtos/ch/index.html。此处使用图形化界面的GPG工具。
接下来我们介绍一下GPG在邮件系统中的使用方法:
4 安装和配置
首先安装GPG工具和ThurdBird邮件客户端。安装完成后,打开桌面“WinPT”图标,即可进入密钥管理程序。点击界面左上方钥匙图标,进入密钥生成向导,或者点击菜单“key”-->“Normal”生成密钥对,如图1所示。
(1)选择密钥类型:
DSA and Elgamal
DSA and RSA
DSA sign only 生成仅用于签名的DSA密钥对
RSA sign only 生成仅用于签名的RSA密钥对
RSA sign and Encrype 生成可用于签名和加密的RSA密钥对
(2)添加密钥长度、姓名、邮件地址和过期时间;点击“start”,提示输入密钥口令(Passphrase),系统会根据配置参数生成密钥;密钥生成成功,将会出现在管理列表中。 5 密钥导入/导出
点击“key ”-->“EXPort”导出公钥,“EXPort Secret Key”导出私钥;同时系统也支持从文件导入密钥;系统的type字段会显示所列出密钥是否包含公私钥,单独的公钥会显示成为绿色钥匙的图标。
6 邮件内容的加密与解密
(1)设置快捷键。
(2)编辑并加密新邮件。
例如outlook或者foxmail,全部选中需要加密的文本,并按下快捷键,WinPT将会对所选择的文字进行加密。
按下上边所设置的快捷键CTRL+ALT+E,则弹出加密密钥选择窗口,用户选择需要加密使用的密钥文件。
点击ok,则会使用所选密钥加密信息,并将加密后的密文拷贝到剪切板,用户直接右键粘贴,即可将密文复制到邮件正文。
(3)邮件接受的用户,看到加密密文后,直接复制密文,并按CTRL+ALT+D快捷键对密文进行解密。选择加密时对应的解密私钥,即可解密出明文。
7 邮件加密与签名
(1)启动ThurdBird邮件客户端;导入enigmail-0.95.7-tb+sm.XPi插件到ThurdBird中,并启用OpenGPG支持;
(2)加密邮件。发送加密邮件时,ThurdBird会使用收件人的公钥证书,对邮件进行加密。
(3)签名邮件。发送签名邮件时,需要发件人的私钥用于对邮件签名。输入私钥读取的口令。
签过名的邮件,在发件箱中会有如图2所示,表示为已签名邮件。
8 邮件解密与签名验证
(1)查看加密邮件。加密邮件,在未被解密的状态下显示如图3所示。
当ThurdBird客户端有私钥时,输入解密私钥的口令,则会正常显示邮件内容。提示为已解密邮件。
(2)查看签名邮件。查看签名的邮件内容,邮件内容显示为邮件正文和发件人私钥对正文信息的签名密文。当ThurdBird客户端的GPG中存在发件人的公钥时,则会正常显示邮件内容,并有签名是够通过的提示。
参考文献
[1]刘宏伟.一种基于身份的数字签名算法研究[J].系统工程与电子技术,2008.30:1159-1162.
[2]李澎.一类简单的数据加密方法[J].电脑编程技巧与维护,2005.03:1661-1666.
[3]LIN,Song.基于Petri网的双重数字签名的描述与验证[J].系统仿真学报,2008.20:2498-2501.
[4]王晓峰.零知识证明的前向安全不可否认数字签名方案[J].计算机工程,2007.33: 27-29.
[5]秦家昆.网络信息安全防护[J].技术与市场,2014.06:895-897.
百度搜索“爱华网”,专业资料、生活学习,尽在爱华网!