GpG使用指南
Posted 栗子不吃榴莲
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GpG使用指南相关的知识,希望对你有一定的参考价值。
1.GPG简介
1991年,程序员Phil Zimmermann为了避开政府的监视,开发了加密软件PGP。因为这个软件非常好用,迅速流传开来成为许多程序员的必备工具。但是,它是商业软不能自由使用。所以,自由软件基金会决定,开发一个PGP的替代品取名为GnuPG,因此GPG就诞生了。GPG是GNU Privacy Guard的缩写,是自由软件基金会的GNU计划的一部分。它是一种基于密钥的加密方式,使用了一对密钥对消息进行加密和解密,来保证消息的安全传输。一开始,用户通过数字证书认证软件生成一对公钥和私钥。任何其他想给该用户发送加密消息的用户,需要先从证书机构的公共目录获取接收者的公钥,然后用公钥加密信息,再发送给接收者。当接收者收到加密消息后,他可以用自己的私钥来解密,而私钥是不应该被其他人拿到的。
2.安装GPG
Linux操作系统:
如今大多数的linux发行版都默认包含了gpg,可用如下命令进行检查:
# gpg --version |
若看到如图所示的版本信息,就可直接使用了。否则,你需要从你的发行版软件仓库里安装GPG。
(1)Mac操作系统:
安装brew命令 $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 安装gnupg $ brew install gnupg |
(2)Windows操作系统:
Windows下可以借助gpg4win软件来实现密钥的生成,具体过程自己摸索,下载地址:https://www.gpg4win.org/
3.生成密钥
# gpg --gen-key |
生成密钥时会出现一大段文字:先是关于软件的介绍和一些版权信息,然后询问你选择哪种加密算法,我选择默认的RSA and RSA,因为目前来说,RSA算法是安全性最强的,它可以用来加密和解密,其他的只能给信息签名。
这一步会询问密钥长度,默认是2048,直接回车就ok,也可以自己选择长度。如下所示:
接下来询问你密钥的有效期,默认值0代表永不过期,我选择默认值。然后会让你确认是否正确。选择正确则输入y,下一步要求你输入个人信息,软件通过真实姓名、Email地址和注释来构造用户ID,其中注释可以为空。
此时用户ID就生成了,系统会向你确认信息是否需要修改:输入N修改姓名,C修改注释,E修改Email,O表示确认,Q退出。我输入字母o确认。
接下来系统会要求你输入一个口令用里保护你的私钥,强烈建议添加口令!
然后系统会提示“需要生成大量随机字节”,你可以随意进行一些操作,看看网页啊,打打字什么的,“这会得到足够的熵”(熵在物理学中是微观状态混乱度的度量)。
如下所示:此时你的公、私钥已经生成并签名!
其中B9F82B1D是用户ID的hash,可以代替用户ID。最后,建议再生成一个撤销证书,以便以后密钥作废时,请求公钥服务器撤销你的公钥:
# gpg --ken-revoke [用户ID] |
4.密钥管理
(1)列出密钥
# gpg --list-keys |
(2)上传公钥至密钥服务器
密钥服务器是用来发布你的公钥,并将其分发到其他人的服务器,这样其他用户可以轻松的根据你数据库中的名字(或者e-mail地址)来获取你的公钥,并给你发送加密信息。避免了把公钥直接拷贝给其他人的过程。
1.上传你的公钥到秘钥服务器: # gpg --send-keys [your pubID] --keyserver [keyservers.address.com] (需要把keyservers.address.com替换成你选择的服务器(或者用mit.edu,它会跟其他服务器做同步)) 2.加密文件 法一: # gpg -o encrypted_file.gpg --encrypt -r key-id original.file 命令解释: (1)-o encrypted_file.gpg = 指定输出文件 (2)--encrypt = 做加密 (3)-r = 接收者的KEY-ID,比如这里就填你朋友的KEY-ID。 (4)original.file = 指定要加密的文件 法二: # gpg --recipient [your pubID]--output out.file --encrypt original.file |
(3)上传公钥
# gpg --send-keys [用户ID] --keyserver hkp://subkeys.pgp.net |
(4)在另一台服务器上搜索刚才上传的公钥
# gpg --search-keys [用户ID] |
5.加密文件
加密之前首先得知道对方的公钥,用公钥来加密文件,对方用自己的私钥来解密。可用对方的邮箱搜索他的公钥
# gpg --list-key wangd8836@gmail.com |
加密法一:
# gpg --recipient 49FD19FB --output haha.txt --encrypt haha |
加密法二:
# gpg -o encrypted_520.haha --encrypt -r 49FD19FB haha |
将加密后的文件传至另一台服务器
6.解密文件
# gpg --decrypt filename.gpg |
7.删除密钥
(1)查看密钥
# gpg --list-keys |
(2)删除公钥:
# gpg --delete-secret-keys 71FBED38 |
(3)查看一次密钥:
# gpg --list-keys |
(4)发现要删除的密钥还在,因为你仅仅删除了私钥而已。此时再删除公钥:
# gpg --delete-key 71FBED38 |
(5)再次查看密钥:
# gpg --list-keys |
8.签名
# gpg --clearsign haha.txt |
以上操作会在当前目录下生成一个名为vps.asc的文件,--clearsign参数表示生成ASCII形式的签名文件,而使用--sign参数生成的文件名为vps.gpg,以二进制形式存储。
通过--verify参数使用对方的公钥进行签名验证:
# gpg --sign haha.txt |
9.验证文件完整性
# gpg --verify haha.txt.asc |
若出现上图所示内容,则说明文件传输过程中没有被修改过
以上是关于GpG使用指南的主要内容,如果未能解决你的问题,请参考以下文章