|
|
使用GnuPG
及永刚
jungle@soforge.com
2003年6月2日Version:0.1
版权声明 本LATEX文档,以及由本文档生成的html、pdf等格式文档,使用GNU Free Documentation License许可证。您可以自由地使用本文档,但此文档没有任何形式的担保,因此使用本文档造成的任何直接或间接的后果都由使用者自己承担。
Contents
为什么要使用GnuPG
安装
生成key
公钥的使用
加密和解密
签名
在Mutt中使用GnuPG
发信
读信
About this document ...
为什么要使用GnuPG
现在很多人使用计算机的主要目的是与其他人通讯。收发电子邮件,文件传递是每天上网做的最多的事情。但是很少有人想到,当你点下发送按钮,发出去的邮件实际上是“明信片”,每个人都有可能来瞄上一眼;传送出去的文件也可以被随意截获或拷贝。如果是普通的问寒问暖的邮件倒没关系,但对商业信函就是一种泄密了。还有一种情况,其他人发出的邮件可以冒用你的邮件地址作为发信人,收信人只看邮件地址,很容易误认为是你发来的,你的信誉会因此大受影响。
怎么办?这里我介绍使用加密来防止上面提到的问题。比较成熟的加密方法是PGP,但是PGP算法太安全了,属于美国政府严格禁止传入中国的计算机产品。感谢GNU和自由软件运动,让我们可以使用GnuPG,它的安全性与PGP一样强,可以充分地保护每个用户的隐私。
安装
你可以从 www.gnupg.org 网站上直接下载对应操作系统的二进制文件,也可以下载源代码自己编译。假如你和我一样,是Debian GNU/Linux 的用户,只需:
apt-get install gnupg gnupg-doc
其中gnupg是主执行文件,gnupg-doc是文档。下载gnupg-doc这个包,是因为里面有一份中文Mini-HOWTO,所在路径是:/usr/share/doc/gnupg-doc/mini-HOWTO/ch/。这份Mini-HOWTO中文文档链接有点小问题,将index.html改名为GPGMiniHowto.html就可以了。
生成key
使用GnuPG的第一步是为自己生成一对儿key。这对key由公钥和密钥两部分组成:公钥用于发布给其他人,别人用它来加密寄给你的东西;同样你也用他们的公钥加密文件,然后再寄给公钥发布者。私钥需要你收藏好,千万不能让别人获得,为了安全,私钥必需设置口令,使用的时候要先输入正确的口令才可以用。
在命令行下键入下面命令就可以生成GnuPG key。
gpg --gen-key
生成的过程中会有一些提示和选择,如果搞不明白选项间的区别,就用GnuPG默认的吧。其中有一点要注意,给私钥设口令的时候,不要选用容易猜到的生日、电话号码等来做口令。也不要临时想个挺复杂的,过后让自己都想不起来。
生成的key会保存在你的home目录下.gnupg子目录里面。是结尾为 .gpg的二进制文件。
公钥的使用
接下来要做的工作是输出一个用来发布的公钥:
gpg --export -a -o yourpubkey.asc
-a 是ASCII编码形式,-o 说明输出公钥到 yourpubkey.asc 文件。要发布这个公钥,可以将yourpubkey.asc文件放在你的主页上,也可以通过邮件寄给朋友。
当你收到朋友发来的公钥,你需要将这把公钥导入你的钥匙库。例如,他寄给你的公钥是 friendpubkey.asc ,使用下面命令就可以导入进钥匙库:
gpg --import friendpubkey.asc
导入完毕,你可以用下面命令浏览钥匙库:
gpg --list-keys
加密和解密
忙活了半天,现在该使用这些钥匙了:-) 假设你要发给同事Tom一个文件 report.tex ,用下面命令进行加密:
gpg -r Tom -e report.tex
-r 后面的Tom是接收者的UID,GnuPG根据这个UID匹配钥匙库里面的公钥。加密命令生成一个 report.tex.gpg 密件,将它发给Tom。
Tom收到后,因为他有对应的密钥,可以用下面命令解密,还原为 report.tex。
gpg -o report.tex -d report.tex.gpg
这份密件在传输过程中即使被其他人得到,但由于他们没有密钥,无法看到真正的内容,这样加密就达到了安全保密的目的。
签名
上面例子中,Tom得到了 report.tex.gpg,但是没有任何信息证明这个密件是由你发出的,因为Tom的公钥是任何人都能获得的。为了表明发件人的身份,需要用到签名。
gpg -s -r Tom -e report.tex
加了-s 之后得到的report.tex.gpg文件中包含了你的签名。
当Tom解密这个密件的时候,他会看到你的签名,显示签发人信息。当然,他的钥匙库里面有要你的公钥才行。
签名不只用在密件中,还可以对明文进行签注:
gpg -b -a note.txt
这个命令另外生成一个签章文件 note.txt.asc,然后你将note.txt和note.txt.asc一起寄出。
收到文件的人使用:
gpg --verify note.txt.asc
就能判定是不是由你发出的。
在Mutt中使用GnuPG
GnuPG用的最多的地方,还是在收发邮件的过程中。这里以Mutt作为邮件客户端来举例。
Mutt对GnuPG支持的非常好,并且如果你不做任何设置,它会自动到.gnupg目录下调用公钥和密钥。
发信
写完一封信,在发出之前,可以使用下列功能:
附上你的公钥:ESC k ,Mutt寻问使用哪个ID,输入后从列表中选择一个,按回车,即将公钥附加在这封信里。
加密或签名:p,再按e加密,或按s签名,或按b同时加密和签名。
读信
当你收到一封朋友寄来的加密信件时,Mutt会在邮件索引页中,用P表示是加密过的信件,用s表明有签名。
要打开一封P标志的信时,Mutt提示先输入使用密钥的口令。口令输入正确,Mutt用密钥自动解密该邮件。当你关闭Mutt,下次再看这封邮件时,需要再次输入口令和解密过程。 打开一封s标志的信,Mutt自动匹配钥匙库里面的公钥,显示信件内容的同时也显示签名信息。
About this document ...
使用GnuPG
This document was generated using the LaTeX2HTML translator Version 2K.1beta (1.48)
Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html -no_subdir -split 0 -no_navigation using_gnupg.tex
The translation was initiated by Jungle on 2003-06-02 |
|