GNU Privacy Guard加密指南
创始人
2024-03-01 12:39:28
0

加密技术可以保证你的文件使用加密形式存储,不管你是要把它公开到因特网,备份到服务器,用U盘携带,还是保存在笔记本里。加密你的数据,意味着除非是你认可的接收者,其他人都不可以读取,这样可以防止信息泄漏。

GPG (GNU Privacy Guard)

GPG是GNU Privacy Guard的缩写。它是一种基于密钥的加密方式,使用了一对密钥对消息进行加密和解密,来保证消息的安全传输。一开始,用户通过数字证书认证软件生成一对公钥和私钥。任何其他想给该用户发送加密消息的用户,需要先从证书机构的公共目录获取接收者的公钥,然后用公钥加密信息,再发送给接收者。当接收者收到加密消息后,他可以用自己的私钥来解密,而私钥是不应该被其他人拿到的。

GPG 使用公钥和私钥

公钥是你共享出来的一个公开密钥,它可以被发给任何你希望收到加密信息的人,他们可以使用你的公钥来加密信息。公钥本身不能用来解密自己加密过的信息,只有你自己——那个拥有对应私钥的人——能够解密。私钥是你自己的私人密码,可以用来解密用你的公钥加密过的信息。如果你把私钥泄漏给别人,那么他将可以解密并查看那些使用你的公钥加密过的信息。

在终端里使用GPG

如今大多数的Linux发行版都默认包含了GPG。想检查一下的话,打开终端并输入:

$ gpg --version 

然后你应该看到版本。如果是这样的话,你不需要做其他事情了。否则,你需要从你的发行版软件仓库里安装GPG。

生成密钥

想使用GPG来加密你的通讯,你需要先创建一对密码。首先,打开终端并运行下面的命令:

$ gpg --gen-key 

然后会有如下提示:

Please select what kind of key you want:
(1) DSA and Elgamal (default)
(2) DSA (sign only)
(5) RSA (sign only)
Your selection? 

这里要选择数字1,因为它可以用来加密和解密,第二和第三个选项只能让你给信息签名。按下数字1,然后按回车。

然后会有如下提示:

1 DSA key-pair will have 1024 bits.
2 ELG-E keys may be between 1024 and 4096 bits long.
3 What key-size do you want? (2048) 

这里最好输入“2048”,就像GPG推荐的那样。如果你不希望你的密钥过期的话(在后面的提示里,选择0)。如果有提示说信息是否正确的话,回答Yes,然后输入你的真实名字,email地址,以及一个说明(可选的)。如果一切顺利,按下“哦”(对应着OK)然后回车。

在这之后,会提示你输入一个密码,密码会要求重复输入一次。通常,请使用一个难于破解的加强密码,而不推荐用名字/地址/生日/单词等等来做密码。

在输好密码之后,请按照终端里的提示信息做:我们需要生成大量的随机数,建议您在生成素数的过程中做一下这些动作(敲击键盘,移动鼠标,读写硬盘),这样会让随机数生成器有机会获取更大的熵。

生成好密钥以后,你应该会看到一条类似的提示信息:gpg: key 083C39A4 marked as ultimately trusted. public and secret key created and signed.

密钥服务器

密钥服务器是用来发布你的公钥,并将其分发到其他人的服务器,这样其他用户可以轻松的根据你数据库中的名字(或者e-mail地址)来获取你的公钥,并给你发送加密信息。这样可以避免把公钥直接拷贝给你的朋友的方式,而让其他人直接通过在线数据库来找到你。

上传你的公钥到密钥服务器:

$ gpg --send-keys --keyserver [keyservers.address.com] [yourpublicid] 

你需要把keyservers.address.com替换成你选择的服务器(或者用mit.edu,它会跟其他服务器做同步),还需要把命令行中的yourpublicid替换成你的。最终执行的命令看上去会大概是下面这样子:

$ gpg --send-keys --keyserver hkp://pgp.mit.edu 083C39A4 

加密文件

如果你想给你的朋友发送一个用他的公钥加密过的文件,可以用下面的命令:

$ gpg -o encrypted_file.gpg --encrypt -r key-id original.file 

命令解释:

-o encrypted_file.gpg = 指定输出文件
--encrypt = 做加密
-r = 接收者的KEY-ID,比如这里就填你朋友的KEY-ID。
original.file = 指定要加密的文件

解密文件

如果有人给你发送了一个用你的公钥加密过的文件,你可以按下面的方式解密:

$ gpg --decrypt filename.gpg 

对称加密

你还可以使用GPG做对称加密,来给文件加上一个密码。这种不同于公钥加密的方式,在对称加密中,同一个密钥用于加密和解密。这种方式在处理信息的时候会简单点,但是保密性没那么好,因为需要把密码告诉接收者。下面是用密码加密文件的命令:

$ gpg -c filename.txt 

解密这个文件,用下面的命令:

$ gpg filename.txt 

然后,会提示你输入密码,之后就开始解密文件。

文档数字签名

数字签名非常类似于你在信件或者重要文件的末尾签上自己的名字,它表示这份文件确实是由你发出来的。通过数字签名,它会计算整个文件内容的SHA1哈希值,然后把这个值附加到签名末尾。如果文件内容被篡改,签名的校验就会失败,可以用来鉴定伪造。如果用户自己在签名后编辑了这份文件,签名校验也会失败,因为此时文件的SHA1哈希值已经和之前签名时不同了。

对一份文件做数字签名,运行下面的命令:

$ gpg --clearsign filename.txt 

生成销毁密钥

销毁密钥可以在你的私钥泄漏或者怀疑泄漏的时候,吊销你的公钥。使用下面的命令创建一个销毁密钥:

$ gpg --output revoke.asc --gen-revoke keyid 

把销毁密钥保存到一个安全的地方,任何人都可以用它让你的密钥失效。(你可以用对称加密方式来加密你的销毁密钥文件。)

在终端里使用GPG的一些技巧

通过下面的命令可以查看你已经导入的GPG密钥:

$ gpg --list-keys 

之后应该会列出来用你e-mail注册的密钥列表(因为这里只有一个密钥,它只列出了你自己的密钥),然后,你可以看到自己的KEY-ID,就可以通过上文介绍的命令提交给密钥服务器。

显示你的密钥链中的私钥和公钥。

$ gpg --list-public-keys # 会列出来公钥
$ gpg --list-secret-keys # 会列出来私钥

导入密钥

$ gpg --import KEYFILE 

命令中的KEYFILE应该是需要导入的公钥文件名。(如果文件不在主目录中,使用cd命令切换到该文件的目录下,再执行上面的命令)

导出公钥到文件

用下面的命令可以将你的公钥导出为ASCII格式:

$ gpg --export -a > publickey.asc 

* * * * *

关于Richard White

Richard是一位技术爱好者,在不止一个场合他被称为极客。他还是三本书的作者,最近的一本《数字时代的隐私》即将在2014年5月份出版精装本。他还是数字时代网站的主编和驱动者,数字时代的目的是提供资源和工具来实现和维护匿名,安全和隐私。Ricard经常写一些和隐私相关的文章,最近忙着写《CLI艺术》,收集开源的命令行软件。关于GNU Privacy Guard的更多信息以及如何使用GPG软件的图形界面工具,你可以访问White的数字时代网站。


via: http://distrowatch.com/weekly.php?issue=20140407

译者:zpl1025 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

GPG

相关内容

安装编译器时出现“GPGM...
这个错误通常是由于GPGME库未正确配置造成的。解决方法是配置GP...
2024-11-09 07:01:55
Ansible:无法从RP...
在Ansible中,从RPM Fusion导入GPG密钥的过程中可...
2024-11-07 00:30:55
Ansible模块无法添加...
在使用Ansible模块添加git-ppa时,如果出现"W:GPG...
2024-11-06 07:00:23
Ansible包模块因GP...
在Ansible的包管理模块中有一个选项叫做“安装验证”,如果安装...
2024-11-05 20:32:14
AndroidStudio...
如果在Android Studio Bumblebee版本上出现了...
2024-10-11 06:31:38
Android9系统(le...
问题出现的原因是Android 9对网络请求做了一些限制,需要通过...
2024-10-01 16:00:49

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
从 Yum 更新中排除特定/某... 作为系统更新的一部分,你也许需要在基于 Red Hat 系统中由于应用依赖排除一些软件包。如果是,如...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...
如何检查你的 Linux 系统... 不知道在使用哪个初始化系统?以下是方法。每个主流 Linux 发行版(包括 Ubuntu、Fedor...