内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

GPG使用详解

2018-01-10 17:44 出处:清屏网 人气: 评论(0

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

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

CopyRight © 2015-2016 QingPingShan.com , All Rights Reserved.

清屏网 版权所有 豫ICP备15026204号