黑基网 首页 服务器 Linux 查看内容

Gnu Privacy Guard入门

2005-6-13 08:16| 投稿: Linux

摘要: 你有没有自问过,电子邮件在传输过程中会不会被别人读取?不幸的是,即便是陌生人也可以不动声色地截取甚至篡改你的电子邮件。 在传统的邮寄方式(又称“蜗牛”)中,信件...
你有没有自问过,电子邮件在传输过程中会不会被别人读取?不幸的是,即便是陌生人也可以不动声色地截取甚至篡改你的电子邮件。 在传统的邮寄方式(又称“蜗牛”)中,信件通常是封在信封内,贴上邮票,然后在邮局间传递,直到它们到达其目的地。通过互联网来邮寄信件没有传统方式安全;电子邮件通常在服务器间明文传输,没有采取任何特别措施来防止通信被别人偷看或篡改。 要帮助你保护个人隐私权,Red Hat Linux 9 包括了 GnuPG - GNU Privacy Guard (GNU 隐私卫士)- 它在典型 Red Hat Linux 安装中被默认安装。它又称为 GPG . GnuPG 是用于安全通信的工具;它是对 PGP(Pretty Good Privacy,一种广受欢迎的加密程序)加密技术的完全和免费的代替。使用 GnuPG,你可以给你的数据和通信加密,并可以使用 数码签名(digitally signing) 来验证你的通信。GnuPG 还能够解密及校验 PGP 5. x 。 因为 GnuPG 和其它加密标准兼容,你的安全通信可能会与其它操作系统(如 Windows 和 Macintosh)上的电子邮件程序兼容。 GnuPG 使用 公钥加密术(public key cryptography) 来为用户提供安全的数据交换。在公钥加密术方案中,你生成两把钥匙:公钥和密钥。你和通信对方或钥匙服务器互换你的公钥,你决不应该出示你的密钥。 加密依赖于对钥匙的使用。在传统的或对称的加密术中,传输双方都有相同的钥匙,他们可以使用这把相同的钥匙来给彼此的传输解密。在公钥加密术中,两把钥匙并存:一把公钥,一把密钥。个人或组织把他们的密钥保密,但是公布他们的公钥。用公钥加密的数据只能用密钥才能解密;用密钥加密的数据只能用公钥才能解密。 重要:记住,你可以把公钥送给任何你想与之进行安全通信的人,但是你决不能向任何人提供你的密钥。 加密术的多数知识已超出本书涉及的范围;关于它的著述比比皆是。在本章中,我们只希望你对 GnuPG 有足够的了解,因而能在你自己的通信中开始使用加密术。关于 GnuPG、PGP 和加密技术的详细信息,请参见第 B.8 节。 B.1.配置文件 在你第一次运行 GnuPG 命令的时候,你的主目录中会创建一个 .gnupg 目录。从版本 1.2 起,其配置文件名已从 .gnupg/options 改为 .gnupg/gpg.conf 。如果在你的主目录中找不到 .gnupg/gpg.conf , .gnupg/options 文件就会被使用。如果你只使用版本 1.2 或更高,推荐你使用以下格式重新命名你的配置文件: mv ~/.gnupg/options ~/.gnupg/gpg.conf 如果你从 1.0.7 以前的版本中升级,你可以在你的钥匙圈中创建签名缓存来减短钥匙圈的访问时间。要执行这一操作,执行一次以下命令: gpg --rebuild-keydb-caches B.2.警告消息 在执行 GnuPG 命令时,你可能会看到这条消息: gpg: Warning: using insecure memory! 出现该警告是由于非根用户无法锁定内存页。如果用户无法锁定内存页,他们可以执行内存外的“拒绝服务”(DoS)攻击;这就可能会造成安全问题。有关细节请参阅 http://www.gnupg.org/(en)/documentation/faqs.html#q6.1 。 你可能会看到以下消息: gpg: WARNING: unsafe permissions on configuration file "/home/ username /.gnupg/gpg.conf" 如果你的配置文件的权限被设置为允许其他人读取,这则消息就会被显示。如果你看到这条警告,推荐你执行以下命令来改变文件的权限: chmod 600 ~/.gnupg/gpg.conf 另一条常见的警告消息是: gpg: WARNING: unsafe enclosing directory permissions on configuration file "/home/ username /.gnupg/gpg.conf" 如果你的配置文件所在的目录的权限被设置为允许其他人读取,这则消息就会被显示。如果你看到这条警告,推荐你执行以下命令来改变文件的权限: chmod 700 ~/.gnupg 如果你从以前的版本中升级 GnuPG,你可能会看到以下消息: gpg: /home/ username /.gnupg/gpg.conf:82: deprecated option "honor-http-proxy" gpg: please use "keyserver-options honor-http-proxy" instead 出现该警告是因为你的 ~/.gnupg/gpg.conf 文件包含以下行: honor-http-proxy 版本 1.0.7 和更高喜欢使用另一种语法。把以上行改成: keyserver-options honor-http-proxy B.3.生成钥匙对 要开始使用 GnuPG,你必须首先生成一组新的钥匙对:一把公钥和一把密钥。 要生成钥匙对,在 shell 提示下,键入以下命令: gpg --gen-key 因为你使用最频繁的是你的用户帐号,你应该登录到你的用户帐号(而不是根帐号)时执行该命令。 你会看到一个介绍屏幕,其中有钥匙选项,包括一个 推荐的选项(默认),该屏幕类似: 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. Please select what kind of key you want: (1) DSA and ElGamal (default) (2) DSA (sign only) (5) RSA (sign only) Your selection? 多数要求你选择选项的屏幕会在括号内列出默认选项。你可以按 [Enter] 键来接受默认选项。 在第一个屏幕上,你应该接受默认选项: (1) DSA and ElGamal 。该选项会允许你生成数码签名,并用两种技术来加密(和解密)。键入 1 然后按 [Enter] 键。 下一步,选择钥匙大小或长短。通常,钥匙越长,你的消息抵御攻击的能力就越强。默认的 1024 位对多数用户来说已足够强劲,因此按 [Enter] 键来接受默认。 下一个选项请你指定钥匙的有效期,通常,使用默认值( 0 = key does not expire )就可以。如果你想设立一个 过期日期,请记住,你需要通知和你互换公钥的人员 这个过期日期并向他们提供一把新公钥。如果你不设立过期日期,你会被要求确认这个决定。按 [y] 来确认你的决定。 你的下一个任务是提供用户 ID,这包括你的姓名、电子邮件地址,以及其它可选注解。当你结束后,你的面前就会出现你输入的信息的摘要。 一旦你接受了你的选择,你还必须输入一个口令句。 窍门:和你的帐号口令一样,好的词组口令是 GnuPG 安全保障的基本条件。譬如,你可以在口令中混和大小写字母、数字或标点符号。 输入并校验口令句之后,你的钥匙就生成了。你会 看到一条和以下相仿的消息: 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. +++++.+++++.++++++++....++++++++++..+++++.+++++.+++++++.+++++++ +++.++++++++++++++++++++++++++++++++++++++..........................++++ 当屏幕活动停止后,你的新钥匙就制作成功并被放置在你的主目录下的 .gnupg 目录中。要列举你的钥匙,使用下面的命令: gpg --list-keys 你会看到和以下相似的输出: /home/ username /.gnupg/pubring.gpg ----------------------------------------- pub 1024D/B7085C8A 2000-06-18 Your Name <[email protected]> sub 1024g/E12AF9C4 2000-06-18 如果你使用低于 1.0.6 的版本来生成 GnuPG 钥匙,把你的密钥导出后又导入一个新钥匙,你必须具体信任你自己的密钥来给使用高于 1.0.7 版本的项目签名。要信任你的钥匙,键入以下的命令(请替换 <user-id> ): gpg --edit-key <user-id> 在 Command> 提示后键入 trust ,然后选择 5 = I trust ultimately 来信任你自己的密钥。 B.4.生成一份废弃证书 在你生成了钥匙对之后,你应该为你的公钥创建一份废弃证书。如果你忘记了你的口令句,或该口令句已被窃取,你应该公布这份证书来通知用户你的钥不应该再被使用。 注记: 在你生成废弃证书时,你不是在废弃你刚刚生成的钥匙,相反,你给自己提供了一种停止钥匙被继续公开使用的安全方法。在你忘记了口令、更换了 ISP(地址),或硬盘驱动器崩溃的情况下,这份废弃证书就可以用来宣告你原来的公钥无效。 在钥匙被废弃之前,你的签名对那些阅读你发出的信件的人有效,并可以被他们用来解密收到的消息。要生成废弃证书,使用 --gen-revoke 选项: gpg --output revoke.asc --gen-revoke <[email protected]> 注意,如果你在上面省略了 --output revoke.asc 选项,你的废弃证书就会被显示在标准输出,即显示屏幕上。虽然你可以使用文本编辑器来把它们剪贴到一个文本文件中,但是直接把输出转写入登录目录中的文件可能更加简易可行。这样,你就可以保存证书以备将来之用,或将其移到软盘中,存放在一个安全之处。 其输出会类似: sec 1024D/823D25A9 2000-04-26 Your Name <[email protected]> Create a revocation certificate for this key? 按 [Y] 来创建列出钥匙的废弃证书。下一步,你会被要求选择废弃原因或提供描述。确认了原因后,输入你用来生成钥匙的口令句。 废弃证书( revoke.asc )创建完毕后,它会位于你的登录目录中。你应该把它复制到一张软盘中,并存放在一个安全的地方。(如果你不知道如何在 Red Hat Linux 中把文件复制到软盘上,请参阅 《Red Hat Linux 入门指南》 。) B.5.导出公钥 在你使用公钥加密术之前,其他人必须有一份你的公钥。要把你的公钥提供给通信对方或钥匙服务器,你必须 导出(export) 这把钥匙。 你需要导出公钥才能在网页上显示它或在电子邮件中粘贴它,键入以下命令: gpg --armor --export <[email protected]> > mykey.asc 你不会看到任何输出,因为你在导出公钥的同时还把输出转写入另一个文件,譬如一个叫做 mykey.asc 的文件。(若命令中不加 > mykey.asc ,钥匙就会被显示在标准输出即屏幕上。) 现在, mykey.asc 文件就可以被插入电子邮件或导出到钥匙服务器中。要查看这把钥匙,键入 less mykey.asc 来在分页器中打开该文件(键入 [q] 来退出换页器)。它应该与下面的输出相似: -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.1 (GNU/Linux) Comment: For info see http://www.gnupg.org mQGiBDkHP3URBACkWGsYh43pkXU9wj/X1G67K8/DSrl85r7dNtHNfLL/ewil10k2 q8saWJn26QZPsDVqdUJMOdHfJ6kQTAt9NzQbgcVrxLYNfgeBsvkHF/POtnYcZRgL tZ6syBBWs8JB4xt5V09iJSGAMPUQE8Jpdn2aRXPApdoDw179LM8Rq6r+gwCg5ZZa pGNlkgFu24WM5wC1zg4QTbMD/3MJCSxfL99Ek5HXcB3yhj+o0LmIrGAVBgoWdrRd BIGjQQFhV1NSwC8YhN/4nGHWpaTxgEtnb4CI1wI/G3DK9olYMyRJinkGJ6XYfP3b cCQmqATDF5ugIAmdditnw7deXqn/eavaMxRXJM/RQSgJJyVpbAO2OqKe6L6Inb5H kjcZA/9obTm499dDMRQ/CNR92fA5pr0zriy/ziLUow+cqI59nt+bEb9nY1mfmUN6 SW0jCH+pIQH5lerV+EookyOyq3ocUdjeRYF/d2jl9xmeSyL2H3tDvnuE6vgqFU/N sdvby4B2Iku7S/h06W6GPQAe+pzdyX9vS+Pnf8osu7W3j60WprQkUGF1bCBHYWxs YWdoZXIgPHBhdWxnYWxsQHJlZGhhdC5jb20+iFYEExECABYFAjkHP3UECwoEAwMV AwIDFgIBAheAAAoJEJECmvGCPSWpMjQAoNF2zvRgdR/8or9pBhu95zeSnkb7AKCm /uXVS0a5KoN7J61/1vEwx11poLkBDQQ5Bz+MEAQA8ztcWRJjW8cHCgLaE402jyqQ 37gDT/n4VS66nU+YItzDFScVmgMuFRzhibLblfO9TpZzxEbSF3T6p9hLLnHCQ1bD HRsKfh0eJYMMqB3+HyUpNeqCMEEd9AnWD9P4rQtO7Pes38sV0lX0OSvsTyMG9wEB vSNZk+Rl+phA55r1s8cAAwUEAJjqazvk0bgFrw1OPG9m7fEeDlvPSV6HSA0fvz4w c7ckfpuxg/URQNf3TJA00Acprk8Gg8J2CtebAyR/sP5IsrK5l1luGdk+l0M85FpT /cen2OdJtToAF/6fGnIkeCeP1O5aWTbDgdAUHBRykpdWU3GJ7NS6923fVg5khQWg uwrAiEYEGBECAAYFAjkHP4wACgkQkQKa8YI9JamliwCfXox/HjlorMKnQRJkeBcZ iLyPH1QAoI33Ft/0HBqLtqdtP4vWYQRbibjW =BMEc -----END PGP PUBLIC KEY BLOCK----- B.5.1.导出到钥匙服务器 如果与你通信的人寥寥无几,你可以导出公钥后逐一地发送给他们。可是,如果你的朋友遍布四海,逐一发送公钥就非常费时费力了,你可以使用钥匙服务器来解决这个问题。 钥匙服务器是一个在互联网上为任何人贮存和传递公钥的仓库。可用的钥匙服务器有很多,多数都试图保持彼此同步;向一个钥匙服务器发送公钥就如同向所有钥匙服务器发送公钥一样。通信人可以从钥匙服务器中请求你的公钥,把它导入到他们的钥匙圈上,然后他们就可以和你进行安全通信了。 窍门:因为多数钥匙服务器是同步的,向一个钥匙服务器发送你的公钥和向所有钥匙服务器发送公钥的效果一样。不过,你可以找一找不同的钥匙服务器。要搜寻它的最佳起点是 Keyserver.Net ,它位于 http://www.keyserver.net 。 你可以从 shell 提示或浏览器中发送你的公钥;显然,你必须在线才能发送或从钥匙服务器接收钥匙。 在 shell 提示下,键入以下命令: gpg --keyserver search.keyserver.net --send-key [email protected] 在浏览器中,转到 Keyserver.Net(http://www.keyserver.net),然后选择来添加你自己的 PGP 公钥。 你的下一个任务是把公钥复制并粘贴到网页上恰当的位置中。如果你需要这个过程的说明,使用下列步骤: 使用分页器打开你导出的公钥文件(如第 B.5 节 中创建的 mykey.asc )— 譬如,使用 less mykey.asc 命令。 用鼠标突出显示从 BEGIN PGP 到 END PGP 之间的所有行并复制它们(参见图 B-1)。 把 mykey.asc 文件的内容粘贴到 Keyserver.Net 网页上的恰当位置中,方法是点击鼠标的中间按钮(若使用两键鼠标,则同时按左右两个按钮)。然后在钥匙服务器网页上按 Submit 按钮。(如果你出了错,按该网页上的 Reset 按钮来清除粘贴的钥匙。) 图 B-1. 复制公钥 注意,如果你向另一个基于网站的钥匙服务器提交公钥,方法和以上步骤基本上相同。 至此你便大功告成。不管你使用的是 shell 提示还是万维网,你都会看到一条消息通知你钥匙已被成功提交 — 或在 shell 提示下,或在钥匙服务器的网站上。从现在起,想和你安全通信的用户就可以导入你的公钥并把它添加到他们的钥匙圈上了。 B.6.导入公钥 钥匙互换的另一方面是把别人的公钥导入到你的钥匙圈上 — 它和导出公钥一样简单。当你导入别人的公钥时,你就可以用它来解密他们发来的邮件并根据你钥匙圈上他们的公钥来检查他们的数码签名。 导入钥匙的最简单的方法之一是从网站上下载或保存它。 公钥被下载并保存到 key.asc 文件后,使用下列命令来把它添加到你的钥匙圈上。 gpg --import key.asc 另一种保存钥匙的方法是使用浏览器的 「Save As(另存为)」 功能。如果你使用 Mozilla 之类的浏览器,你可以在钥匙服务器中找到某钥匙,把该网页存为文本文件(点击 File => Save Page As )。在 Files of Type 旁边的下拉菜单中,选择 Text Files (*.txt) 。然后,你就可以导入该钥匙 — 但是别忘了你储存的文件名。譬如,如果你把钥匙存为叫做 newkey.txt 的文本文件,要导入文件,在 shell 提示下,键入下面的命令: gpg --import newkey.txt 它的输出会与下面相似: gpg: key F78FFE84: public key imported gpg: Total number processed: 1 gpg: imported: 1 要检查该过程是否成功,使用 gpg --list-keys 命令;你应该看到你的钥匙圈上列出了一把新导入的钥匙。 当你导入公钥后,你把它添加到你的 钥匙圈(keyring) 上,它是一个保存公钥和密钥的文件。 然后,当你从该实体中下载文档或文件时,你可以根据添加到你的钥匙圈上的钥匙来校验那个文档。 B.7.数码签名在哪里? 数码签名可以用来和你手写的签名做比较。和传统的通信方式不同,传统签名有可能被伪造,数码签名却无法被伪造。这是因为该签名是用你的独特密钥制作的,收信人可以使用你的公钥来校验它。 数码签名会给文档加注时间戳;这意味着你在给文档签名时的时间也是签名的一部分。因此,如果某人企图修改文档,签名校验就会失败。某些电子邮件程序,如 Exmh 或 KDE 的 KMail ,在程序的界面中包括了使用 GnuPG 来给文档签名的功能。 两种有用的数码签名是: 净签(clearsigned) 文档和 分离签名(detached signatures) 。这两类签名都使用同样的验证保安,不要求收信人给你的整条消息解密。 在净签消息中,你的签名会在信件主体内以文本块形式出现;分离签名是和你的通信一起发出的一个分开的文件。 B.8.其它资料 加密技术中可以研究讨论之处极多,这里只对 GnuPG 蜻蜓点水地介绍了一下。如果你想深入了解这方面的知识,可以参看下面的资料。 B.8.1.安装了的文档 man gpg 和 info gpg — GnuPG 命令和选项的快捷参考。 B.8.2.有用的网站 http://www.gnupg.org — GnuPG 网站,其中有到最新 GnuPG 发行版本、通俗易懂的用户指南、以及其它加密资源的链接。 http://hotwired.lycos.com/webmonkey/backend/security/tutorials/tutorial1.html — 访问 Webmonkey 的 Encryption Tutorial 来进一步学习加密技术以及如何应用这项技术。 http://www.eff.org/pub/Privacy — 电子前沿基金会(Electronic Frontier Foundation),“Privacy, Security, Crypto, & Surveillance”的归档。
小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册黑基账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!



免责声明:本文由投稿者转载自互联网,版权归原作者所有,文中所述不代表本站观点,若有侵权或转载等不当之处请联系我们处理,让我们一起为维护良好的互联网秩序而努力!联系方式见网站首页右下角。


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论


新出炉

返回顶部