- 论坛徽章:
- 0
|
[color="#ff0000"]用免费GPG加密收发Email
[color="#ff0000"]
GPG即GNU Privacy Guard,它是加密工具PGP(Pretty Good Privacy
)的非商业化版本,用于对Email、文件及其他数据的收发进行加密与验证,确保通信数据的可靠性和真实性。本文将对GPG技术及相关工具进行介绍,旨在
帮助网上冲浪者之间“真诚”交流。
一、PGP概述
在介绍GPG前,先让我们看看PGP的基本原理及应用规则。
与许多加密方法一样,PGP使用双密匙来加密数据。每个使用PGP加密技术的人都要创建一对密匙,一个叫做公匙,另一个叫做私匙。公匙可被广泛传播,甚至保存在公共密匙数据库中以被其他Internet用户查阅。私匙属于个人信息,绝不应该泄漏给其他人。
公匙和私匙相互作用对数据进行加密及解密。被公匙加密的数据只能被私匙解密,被私匙加密的数据也只能被一个公匙解密。这样就可以实现双重认证。
用户在发送关键信息给指定人前,首先使用该用户的公匙对信息进行加密。因为只有使用该用户的私匙才能对发送信息进行解密,所以就保证了没有私匙的其他人不会解密信息。
另外,用户也可以使用他的私匙来加密信息,然后发送给许多人。因为只有使用发送者的公匙才能对接收信息进行解密,这样接收者就能确信信息的确来自某个人。
二、获取及安装GPG
前面我们提到,GPG是PGP的非商业版本,也就是免费版本。所以,理解并掌握GPG技术具有很大的实用价值和推广效应。
GPG的下载地址是http://www.gnupg.org/download.html
GPG的当前版本是1.0.6,另外还有一个
安全
补
丁。同时下载这2个文件gnupg-1.0.6.tar.gz和gnupg-1.0.5-1.0.6.diff.gz,对它们解压缩,安装补丁,运行
configure脚本程序进行配置。请注意:默认安装后,配置选项已适用于大多数用户。然后,运行make、make
install安装GPG二进制文件以及其他组件。相关命令如下:
$ tar -xzf
gnupg-1.0.4.tar.gz
$ cd gnupg-1.0.4
$ patch -p1
mike.gpg
这样,对于mike@mynet.net的公匙信息就保存到了mike.gpg文件中,然后mike就可用将mykey.gpg传播给朋友、合作伙伴,实现
安全
通信。但是这个mike.gpg是一个不可读格式的文件,就是说其内容看起来非常杂乱。能否生成一个标准ASCII码格式的导出密匙文件呢?当然可以,添加一个“-a”参数就可以,命令如下:
$ gpg -a --export mike@mynet.net >mike.gpg
新mike.gpg具有很好的格式,并包含同样的公匙信息以及常规鉴别字符串。
接着看看如何导入密匙,其模式与导出密匙相似,假设用户是god,命令是:
$ gpg --import mike.gpg
这样,god就可以接收来自mike、经mike的公匙加密的邮件信息了。
3、密匙签名和用户信任
尽管在理论上讲,具备了公匙和私匙就可以实现
安全
的信息通讯,但是在实际应用中,还必须对公匙进行有效确认。因为,确实存在伪造公匙信息的可能。
由此,在GPG中引入了一个复杂的信任系统,以帮助我们区分哪些密匙是真的,哪些密匙是假的。这个信任系统是基于密匙的,主要包括密匙签名。
当收到熟人的公匙并且GPG告知不存在任何实体可信信息附加于这个公匙后,首要的事情就是对这个密匙进行“指纹采样”(fingerprint)。例
如,我们对来自mike的公匙进行了导入操作,并且GPG告知我们不存在这个密匙的附加可信信息,这时候,我们首先要做的工作就是对这个新密匙进行“指纹
采样”,相关命令及执行情况如下:
$ gpg --fingerprint mike@hairnet.orgpub
1024D/4F03BD39 2001-01-15 Mike Socks (I'm WIRED) Key fingerprint = B121
5431 8DE4 E3A8 4AA7 737D 20BE 0DB8 4F03 BD39sub 1024g/FDBB477D
2001-01-15
$
这样,就从密匙数据中生成了其指纹信息,并且应该是唯一的。然后,我们打电话给mike,确认两件事
情。首先,他是否发送给我们了密匙;其次,他的公匙的指纹信息是什么。如果Mike确认了这两件事情,我们就可以确信这个密匙是合法的。接下来,我们对密
匙进行签名操作,以表示这个密匙来自Mike而且我们对密匙的信任,相关命令及执行情况如下:
$ gpg
--sign-key mike@hairnet.orgpub 1024D/4F03BD39 created: 2001-01-15
expires: neversub 1024g/FDBB477D created: 2001-01-15 expires: never(1)
Mike Socks (I'm WIRED) pub 1024D/4F03BD39 created: 2001-01-15 expires:
neverFingerprint = B121 5431 8DE4 E3A8 4AA7 737D 20BE 0DB8 4F03
BD39Mike Socks (I'm WIRED) Are you really sure that you want to sign
this keywith your key: "Ima User (I'm just ME) "Really sign? yYou need
a passphrase to unlock the secret key foruser: "Ima User (I'm just ME)
"1024-bit DSA key, ID D9BAC463, created 2001-01-03Enter passphrase:
$
执行到此,使用我们的私匙完成了对Mike的公匙的签名操作,任何持有我们的公匙的人都可以查证签名确实属于我们自己。这个附加到Mike的公匙上的签
名信息将随它环游Internet世界,我们使用个人信誉,也就是我们自己的私匙,保证了那个密匙确实属于Mike。这是一个多么感人的充满诚信的故事啊
:-) 现实世界的人们是否应该从这严格的技术标准中反思些什么呢?
还是回到这里。获取附加于一个公匙上的签名信息列表的命令是:
gpg --check-sigs mike@hairnet.org
签名列表越长,密匙的可信度越大。其实,正是签名系统本身提供了密匙查证功能。假设我们接收到一个签名为Mike的密匙,通过Mike的公匙,我们验证出签名确实属于Mike,那么我们就信任了这个密匙。推而广之,我们就可以信任Mike签名的任何密匙。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/36549/showart_442475.html |
|