Chinaunix首页 | 论坛 | 博客
  • 博客访问: 74622
  • 博文数量: 66
  • 博客积分: 2546
  • 博客等级: 少校
  • 技术积分: 740
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-27 10:35
文章存档

2011年(1)

2010年(1)

2009年(64)

我的朋友

分类:

2009-10-27 10:52:22

本文讲述了使用gnupg做简单的文件传输加密,更多的信息可以从获取。

0. 下载并安装gnupg 1.2.1或更高的版本,可以从获取到完整的源代码以及相关信息。

1.
运行gnupg,创建默认的~/.gnupg目录及相关文件。

    $ gpg

   
注意这里可能提示: "gpg: Warning: using insecure memory!",这个问题详细的解决方法请参照gnupg的网站FAQ6.1
          /(en)/documentation/faqs.html#q6.1

2.
创建一个新的公私钥匙对(key pair)

    $ gpg --gen-key
   
   
按提示一步步做到最后,注意*千万*不要忘记或泄漏我们的私匙(passphrase)
   
我们假定最后的用户信息为:

        You selected this USER-ID:
            "somebody (sb.) "

3.
创建一个撤销证书(revocation certification)并做好备份

    $ gpg --output somebody_gpg_revoke.asc --armor --gen-revoke somebody@somewhere.com
   
将这份证书(somebody_gpg_revoke.asc)保存/备份到安全的位置。

   
注意在任何时刻我们都可以使用
       $ gpg --list-key
   
查看当前可用的key
4.
导出公匙

    $ gpg --output somebody_gpg_asc.gpg --armor --export somebody@somewhere.com

   
注意这个公匙文件(somebody_gpg_asc.gpg)是需要和别人交换发给别人使用的。我们也可以将此证书发送到某些知名的服务器。
   
请参见相关文档

5.
现在我们假定需要将文件testfile.txt发送到用户 anotherone@elsewhere.com
   
这里简单的介绍一下PGP的建立过程。

    a)
用户A获取用户B的公匙文件,并导入改公匙
    b)
用户A签名用户B的公匙文件。
    c)
用户A通过用户B的公匙加密文件F,并将加密过后的文件F.asc发送给用户B
    d)
用户B获取到文件F.asc,并通过自己的私匙解密文件F.asc并还原为文件F

 
   
公匙虽然是公开的,但目前理论上绝对是安全的。其基本原理为任意一个合数都可以分解为多个质数的乘积。比如
        8 = 2*2*2
       14 = 2*7
   
但一个数很小的时候我们能很快发现这些互质的数(eg: 39 = 13 * 3),但当这个数很大的时候却很难找到这些互质的数了,如:
       995757614766768701903 = 13757413 * 72379713741731
   
已经基本不可能退出这两个互质的数(不一定是真正的质数,这里仅为做一个简单的演示)了。实际我们采用的数字通常为1024-bit
   
这样产生的结果即使在目前最快的计算机上计算,至少也需要几千年的时间才可能得出最终的结果。

6.
导入anotherone@elsewhere.com的公匙。

    $ gpg --import anotherone_gpg_asc.gpg
   
可以通过
    $ gpg --list-key
   
验证是否导入成功

7.
签名该公匙文件
    $ gpg --edit-key anotherone@elsewhere.com
    $ # fpr
    $ sign
       #
按要求输入相关签名信息。
    $ # check
    $ write
   
8.
通过用户anotherone@elsewhere.com的公匙加密需要传送的文件testfile.txt
    $ gpg --armor --encrypt --recipient anotherone@elsewhere.com testfile.txt
   
得到文件testfile.txt.asc,将此文件发送到用户anotherone@elsewhere.com

9.
用户anotherone@elsewhere.com收到文件testfile.txt.asc后,利用自己的私匙解密该文件
    $ gpg --decrypt testfile.txt.asc >testfile.txt
   
得到文件testfile.txt


注:测试通过的情况多出了两步,即用户anotherone@elsewhere.com也导入了somebody@somewhere.com的公匙并做了数字签名。
阅读(263) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~