分类: LINUX
2009-02-03 11:31:47
文本的电子邮件客户端有elm,pine,mail等,这里不做介绍了。
由于KMail属于KDE桌面,暂不涉及,仅仅浏览一遍。
目前一般附带的是火狐,从火狐进去的电子邮件客户端为:evolution。也可以考虑雷鸟:。
Fetchmail获取邮件,但不删除,它支持POP3和IMAP.下载地址:。
获取邮件:fetchmail --protocol POP3
--username joeuser mail.isp.com.可以写入到:.fetchmailrc。记得修改权限:chmod 0600 ~/.fetchmailrc。
poll mail.isp.com with proto pop3 username joeuser password secret
使用GNU Privacy Guard或者 GnuPG for short可以加密单个邮件和文件,进行数字签名。GnuPG的主要命令行工具是gpg,它是PGP的替代。后者是第一个内置强大密码系统的加密工具。
* 对称加密
使用最简单的加密方式,用一个短语加密。
比如执行gpg --symmetric send.out,它会生成加密文件:send.out.gpg。当然也可以指定输出名字,比如gpg --output
music.gpg -c music.ogg。其中-c 和-o分别代表--symmetric 和—output。
解密文件:gpg
send.out.gpg。输出为send.out,也可以使用-o。
感觉这个gpg类似windows中的winrar,excel之类的加密。
* 公钥密码学
对称加密管理那么多key,有点麻烦。使用同一key则不安全。
mid-1970s, Whitfield Diffie 和Martin Hellman发明了一种新的key exchange方法。使用非对称加密。加密key是公开的,解密key是加密的。很多人可以加密,但是只有一个可以解密。
* 创建密钥对
使用gpg --gen-key创建。Key产生的过程参见教材。生成的key一般存储在~/.gnupg中。
查看公钥:gpg --list-keys
查看私钥:gpg --list-secret-keys
把公钥上传到key服务器:gpg --keyserver wwwkeys.pgp.net --send key-id。Keyserver可以记录在~/.gnupg/gpg.conf,这样命令行就不需要指定Keyserver。Pgp服务器能自动同步修改过的key。
撤销证书:key泄密的时候或者是忘记了passphrase的时候需要撤销证书。创建撤销证书需要知道passphrase。所以需要在知道passphrase的时候提前创建好并存储在安全的地方。
撤销:gpg --armour --output rev-cert.gpg --gen-revoke key-id
--armour的意思为创建可打印版本,而不是二进制文件。这样就可以打印证书,存储在纸上面。
撤销过程:撤销证书:gpg < rev-cert.gpg;上传证书:gpg --send key-id。Keyserver上面的key是不能移走的,但是可以添加。
* 使用公钥加密
查找key:gpg --search name-or-email。如果知道key-id可以直接下载:gpg --recv key-id。
加密:gpg --encrypt --recipient recip_1 --recipient recip_2 ... file。缩写:gpg -e -r recip_1 -r recip_2 ... file。
解密:gpg file.gpg
加密多个文件:gpg --multifile -e -r recip_1 ... file1 file2 ...
* 数字签名
Public-key密码学可用于认证,比如说数字签名。使用key加密数据的检验和,在另外一端公钥可以使用key解密。
数字签名有2种。Clearsigned和detached.前者数据和签名位于同一文件;后者签名写入另一文件,一般后缀为.gpg 或者.asc.前者只使用文本文件,后者适用于所有文件。
创建签名:gpg --sign music.ogg, 生成文件为music.ogg.gpg。--sign可以缩写为-s。验证签名:gpg music.ogg.gpg。
签名和加密的结合:gpg -es -r recip_1 -r recip_2 ... file,这样不会生成单独的签名文件,因为签名也被加密了。该方式不支持多文件,可以用如下方式:for i in *.ogg; do gpg --sign $i ; done。
* 可信的互联网
要确保从keyserver获取的公钥的正确性,OpenPGP使用了Web of Trust。一般指用户互相确认对方并签署对方的金钥。一般为对public key和相应的用户ID使用签名实现。
比如Alice想发送加密消息给Bob,不能确定从keyserver上查找到的公钥是否真的是Bob的。但是Alice和Carol建立了交叉链接。Carol同时又和Bob建立了交叉链接。如果Alice信任Carol,就可以建立和Bob的信任通道。
以上实例说明:给定key的有效性不是绝对的; Trust model不太适合大于1-2跳的情况。现在有了global Web of Trust,第2问题可以忽略。Drew M. Streib and Jason Harris实现了分析工具,每2周公布一次global Web of Trust的强大的连接集和一系列key。包含了28,418key,15 hops。集合可以到达其他的60,000key,30 hops。一般而言,10,000可以不超过3跳。平均值一般为3.6 hops。
操作:gpg --edit key-id.可以使用sign and trust等。
* gPG-agent
不要使用短的passphrase。gpg-agent和ssh-agent类似。它是GnuPG 2的一部分,可以从下载,支持Qt (KDE), GTK (GNOME), and ncurses (text terminal)等。
操作:执行eval `gpg-agent --daemon`。
配置:修改~/.gnupg/gpg-agent.conf
default-cache-ttl
3600