一、介绍
我们都知道,互联网是不安全的,但其上所使用的大部分应用,如Web、Email等一般都只提供明文传输方式(用https、smtps等例外)。所以,当我们需要传输重要文件时,应该对当中的信息加密。非对称密码系统是其中一种常见的加密手段。
GnuPG 是一个用来进行非对称加密(PGP)的免费软件,简称GPG。先说说什么是非对称加密。传统的加密手段往往是使用同一个密码进行加密和解密。例如你加密时 用的密码是“itkylin”,则解密时也要使用“itkylin”才行。这样就存在一个问题,你不能够把一段加密信息发送给你的朋 友。试想,如果采用这种加密方式把信息发送给你的朋友时,你的朋友必须要知道你的密码才能把你的信息解密出来。但你如何保证你的朋友是绝对可靠的呢?也就 是说,如果你的朋友把你的密码告诉了别人,你的密码就不再安全了。
非对称加密采用的是另一种思想。它会给你产生两个密钥,一个称为“公钥”,另一个称为“私钥”。公钥是可以公开的,你尽管把它传给别人;私钥你一定要保管 好不让其他任何人知道。当某人得到你的公钥后,他就可以给你发送加密信息了。具体来说,他把他要发给你的信息用你的公钥加密后发给你,加密的信息只能用你 的私钥去解密。这样,因为世界上除了你以外没有别人知道你的私钥,所以即使别人看到发送给你的加密信息他也无法解密,甚至连发送者本人也不行。因为他不知 道你的私钥。简单说来,就是用公钥去加密;用对应的私钥去解密。想给谁发送加密信息,首先要得到他的公钥。
支持非对称加密的软件有多种,最著名的可能是美国的PGP了,不过它是个商业软件,价格不便宜。对于加密软件,我反对使用破解软件,因为如果信息需要加密 的话,肯定是非常重要的信息,破解软件无法保证加密的安全可靠。因此我建议使用OpenSource的GnuPG软件进行信息的加密和解密。
二、安装相关软件
2.1.请到IT服务实验室(https://www.itkylin.com)的下载中心下载gnupg-w32cli-1.4.11.exe和gnupgshell-1.0.0.windows.exe;
2.2.下载完成后,先安装 gnupg-w32cli-1.4.11.exe,安装完后不用去理它的了。
3.3.然后安装gnupgshell-1.0.0.windows.exe,安装完成后暂不运行,也不做任何设置,直接退出,继续往下看。
三、要使用GnuPG加密,首先需要创建密钥对
生成密钥对有两种方式:一、通过Dos命令符窗口来创建密钥对;二、直接用GnuPG Shell软件来创建密钥对。建议初级用户用方式二,高级用户可用方式一。但你最终还是要学会进Dos命令符界面去导出你的私钥备分好,因为用GnuPG Shell软件方式我测试只能导出公钥,私钥导不出。当然你也可以通过GnuPG Shell软件来创建密钥对之后,再进入Dos命令符界面去导出你的私钥。不想写的太复杂,下面我们直接以在Dos命令符窗口来创建密钥对为例:
3.1.方式一、通过Dos命令符窗口来创建密钥对:
3.1.1.首先点开始菜单->运行->cmd->回车,打开一个Dos命令符窗口;
3.1.2. 转到GnuPG目录下,如下:
C:\>cd “Program Files\GNU\GnuPG”
3.1.3.到了GunPG目录后执行gpg –gen-key命令开始生成Key如下:
C:\Program Files\GNU\GnuPG>gpg –gen-key
gpg (GnuPG) 1.4.11; Copyright (C) 2010 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
请选择您要使用的密钥种类:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (仅用于签名)
(4) RSA (仅用于签名)
您的选择?1 ←只有1和2可以用于加密,其他种类只能用于签名,我们选择默认的!
RSA 密钥长度应在 1024 位与 4096 位之间。
您想要用多大的密钥尺寸?(2048) ←选择密码的位数,位数越大,越安全,但速度越慢
您所要求的密钥尺寸是 2048 位
请设定这把密钥的有效期限。
0 = 密钥永不过期
<n> = 密钥在 n 天后过期
<n>w = 密钥在 n 周后过期
<n>m = 密钥在 n 月后过期
<n>y = 密钥在 n 年后过期
密钥的有效期限是?(0) ←根据实际情况选择密钥期限
密钥永远不会过期
以上正确吗?(y/n)y ←确认
您需要一个用户标识来辨识您的密钥;本软件会用真实姓名、注释和电子邮件地址组合成用户标识,如下所示:
“Service Labs(Andy Wang) <[email protected]>”
真实姓名:Andy Wang ←请填入真实姓名,后面会用到
电子邮件地址:[email protected] ←邮件作为标记之一,不能重复
注释:My Key ←仅是注释而已
您选定了这个用户标识:
“Andy Wang (My Key) <[email protected]>”
更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)? O ←输入大写的“O”确认
您需要一个密码来保护您的私钥。 ←输入两次用于访问私钥的密码,紧记,不能公开或丢失
我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
gpg: NOTE: you should run ‘diskperf -y’ to enable the disk statistics
+++++
+++++
我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
gpg: NOTE: you should run ‘diskperf -y’ to enable the disk statistics
……….+++++
gpg: NOTE: you should run ‘diskperf -y’ to enable the disk statistics
..+++++
gpg: 密钥 82B5D773 被标记为绝对信任 ←这个就是密钥ID了,一定要记好!
公钥和私钥已经生成并经签名。
gpg: 正在检查信任度数据库
gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型
gpg: 深度:0 有效性: 2 已签名: 0 信任度:0-,0q,0n,0m,0f,2u
pub 2048R/720F7F08 2013-05-20
密钥指纹 = 1E00 B5DD C711 64E0 EF28 F215 BCD7 25DD 720F 7F08
uid Andy Wang (My Key) <[email protected]>
sub 2048R/AFB35294 2013-05-20
C:\Program Files\GNU\GnuPG>
3.2.方式二、直接用GnuPG Shell软件来创建密钥对
(太简单了,本文不做介绍,请自行摸索吧!)
四、密钥的导出/导入
通过Dos生成了密钥对之后,我们通常需要导出公钥和私钥保存起来,当然公钥是可以满世界的发放,但是私钥请务必保存好,否则你的密钥对将会永久性的失去威力。
4.1.公钥的导出:
C:\Program Files\GNU\GnuPG>gpg -a -o keyfilename –export mykeyID
命令如下:
C:\Program Files\GNU\GnuPG>gpg -a -o mypubkey –export 82B5D773
如果没有mykeyID则是备份所有的公钥,-o表示输出到文件keyfilename中,如果加上-a的参数则输出文本格式( ASCII )的信息,否则输出的是二进制格式信息。
4.2.私钥的导出(很重要!):
C:\Program Files\GNU\GnuPG>gpg -a -o keyfilename –export-secret-keys mykeyID
命令如下:
C:\Program Files\GNU\GnuPG>gpg -a -o myseckey –export-secret-keys 82B5D773
如果没有mykeyID则是备份所有的私钥,-o表示输出到文件keyfilename中,如果加上-a的参数则输出文本格式的信息,否则输出的是二进制格式信息。
这时你就可以到GnuPG的安装目录(我的是:C:\Program Files\GNU\GnuPG)备份放好你的私钥了,你可以打印成一张A4纸上,然后放到你认为安全的地方,也可以放到U盘、网盘随你了!
4.3.密钥的导入:(由于可通过GnuPG Shell软件来导入密钥,所以此步骤可以忽略,直接跳到第五节)
当你已经导出了公钥和私钥后,你打开GnuPG Shell软件后它就会自动识别到系统已有的密钥的了,你不需要再执行此步骤做密钥的导入。只有你的系统重新安装了,或者重新安装了GnuPG Shell软件,又或者你想在另一台电脑上要加解密你的文件时,你才需要执行密钥的导入,当然,你也可以通过GnuPG Shell软件很方便的导入,也可以通过如下命令执行导入操作:
C:\Program Files\GNU\GnuPG>gpg –import filename
PS:用户可以使用gpg –list-keys命令查看是否成功导入了密钥。
五、通过GnuPG Shell软件来加密解密你的文件
5.1.加密文件:
5.1.1.首先打开GnuPGShell软件,选择你要加密的文件:
5.1.2.选择加密图示:
5.1.3.给你要加密的文件设置密码,这个密码你一定要和私匙一样保存好,不然到时你即使有私匙忘记了密码就恢复不了了,当然,你也可以选择不设密码,这样只要有私匙就可以解密了:
5.1.4.提示encrpted successfully加密成功了!