GUNgpg教程
- 格式:doc
- 大小:59.00 KB
- 文档页数:9
生成密钥
用户应用GPG,首先要有一对自己的密钥。所以,第一步就是产生一对密钥。gpg命令通过大量参数提供所需要的几乎所有操作。其中,参数“-gen-key”就是用来产生一对密钥的。在安装了GPG的Linux系统上可以运行以下命令:
#gpg --gen-key
如果想对产生密钥的操作进行一些个性化设置,还可以加上其它参数。比如,要指定生成密钥存放的位置,可以运行以下命令:
#gpg --gen-key --homedir /mygnupg
命令开始运行后,首先,会看到版本和路径信息如下:
gpg (GnuPG) 1.2.1; Copyright (C) 2002 Free Software
Foundation, Inc.
This program comes with ABSOLUTELY NO
WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
gpg: /home/terry/.gnupg: directory created
gpg: new configuration file `/home/terry/.gnupg/gpg.conf'
created
gpg: keyblock resource `/home/terry/.gnupg/secring.gpg': file
open error
gpg: keyring `/home/terry/.gnupg/pubring.gpg' created
随后需要回答一系列问题,以帮助产生一对密钥。首先遇到的问题是要求选择密钥使用的算法:
Please select what kind of key you want:
(1) DSA and ElGamal (default)
(2) DSA (sign only)
(5) RSA (sign only)
Your selection? 1
其中,DSA是数字签名算法,RSA和ElGamal是两种不同原理的非对称密钥算法。通常可以选择“1”,这样生成的密钥可以同时用作签名和加密两种用途。
接着,会要求选择密钥的长度:
DSA keypair will have 1024 bits.
About to generate a new ELG-E keypair.
minimum keysize is 768 bits
default keysize is 1024 bits
highest suggested keysize is 2048 bits
What keysize do you want? (1024) 1024
Requested keysize is 1024bits
这里的密钥长度有768、1024和2048位三种。显然,密钥越长越安全,但太长又会影响使用的速度。所以,可以根据不同的需要选择适合的长度。一般我们选择1024位密钥。
另外,还需要设定密钥过期的时间:
Please specify how long the key should be valid.
0 = key does not expire
= key expires in n days
w = key expires in n weeks
m = key expires in n months
y = key expires in n years
Key is valid for? (0) 1y
Key expires at Sat 10 Sep 2005 01:48:07 PM CST
Is this correct (y/n)? y
原则上,密钥使用的频率越高,密钥有效的时间越长,被攻击的可能性就越大。所以,要根据应用的实际情况综合考虑,确定一个适当的时间长度。需要注意的是,密钥要定期更换,建议绝对不要永远使用同一对密钥。
最后,需要输入一些个人信息,包括真实姓名、电子邮件地址等,用来识别密钥,最好是如实填写。比如:
Real name: Jonny Xu
Email address: jonny.xu@ Comment: for test
You selected this USER-ID:
"Jonny Xu (for test) "
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
然后,必须输入一个密码。密码用来保护密钥,没有这个密码,任何人都不能看到密钥本身的内容。密码是在密钥文件泄露后惟一的保密措施,它的最大敌人是暴力破解和字典攻击。所以,一定要选择一个强壮的密码,来有效地对抗这些攻击。
密码确定以后,系统开始运算:
We need to generate a lot of random bytes.
It is a good idea to perform some other action
(type on the keyboard, move the mouse, utilize the disks)
during the prime generation;
this gives the random number generator a better
chance to gain enough entropy.
..+++++.+++++.+++++.+++++..++++++++++.++++++++++++++
这时需要随便地敲击键盘或是移动鼠标,以产生一些随机数,协助密钥的顺利生成。注意,如果没有以上动作,很可能最终不能产生密钥。
系统运算完成后,会出现类似以下的信息:
gpg: /home/jonny/.gnupg/trustdb.gpg: trustdb created
public and secret key created and signed.
key marked as ultimately trusted.
pub 1024D/880C18D5 2009-03-16 Jonny Xu (for test)
Key fingerprint = 6DE2 21AB C695 2221 402E
1498 15E4 2B96 880C 18D5
sub
1024g/133B44E7 2009-03-16
以上信息表示已经成功地为“Jonny Xu”生成并签名了一对密钥,密钥过期时间为“2009-03-10”。在生成密钥的同时,默认用户目录的.gnupg目录中也存放了与该用户相关的GPG配置及密钥存储文件。这些文件控制了用户的GPG环境,用户不能直接修改这些文件,所有改动都将通过“gpg”命令实现。
查看密钥
密匙生成后,可以随时用以下命令查看。
查看所有密钥:
#gpg --list-key
查看所有公钥:
gpg --list-public-key
查看所有私钥:
gpg --list-secret-key
列出所有签名:
gpg --list-sig
导出公钥
导出公钥的方法很简单,通过gpg命令的“-export”参数就可完成。为了使导出文件是ASCⅡ编码的,还需要加上参数“-a”。比如,导出Jonny Xu ASCⅡ编码的公钥文件,可以使用以下命令:
#gpg --export -a jonny.xu@compuware > jonny.asc
该命令最终生成ASCⅡ编码的公钥文件:jonny.asc
导出密钥
#gpg --export jonny.xu@compuware > jonny.gpg
分发公钥
这个包含公钥信息的文件需要对外分发,可以通过各种方式将jonny.acs文件分发给所有与用户有信息通信需求的人。
最简单的分发方式是,将该文件放到互联网上供人下载。这种方式需要注意的问题是,所发布公钥文件的网站一定要是一个可以信赖的站点。实际应用中,类似的做法很普遍。
比如,Red Hat的公钥就是在它的官方网站上发布的,任何人都可以下载获得,并用来验证Red Hat所发布软件的签名的正确性。
导入公钥
1.导入
比如,jonny收到朋友john的公钥文件john.gpg,可以使用以下命令导入文件:
#gpg --import john.gpg
2.核对“指纹”
公钥是可以伪造的。James可以伪造一个john的公钥,然后想办法让jonny得到。如果jonny对收到的公钥不加验证,那么他发给john的加密邮件就可能被James解密。GPG的架构中并没有一个PKI这样的证书管理系统,GPG的公钥信任是通过“Truth Web”实现的。
生成jonny公钥的“指纹”:
#gpg --fingerprint jonny.xu@
pub 1024D/7234E374 2009-03-16 jonny
Yu (for test)
Key fingerprint = A58F D71A 28BA
499D 805B 588E 82FB CD0F 7234 E374
sub 1024g/4907EA0A 2009-03-16
这个“指纹”是惟一的。可以通过与对方核对“指纹”是否一致,来确定这个公钥是否可信和合法。