GPG实用指南–第4部分数字签名

该GPG教程系列的前3部分介绍了GPG加密。 在这一部分中,我们将研究如何使用GPG进行签名。

仅签名

GPG可以在不加密文件的情况下签署文件。

有时您可能想向某人发送文档,而您不在乎内容是否机密,但您想确保该人知道它来自您并且也没有被更改,因此不会受到任何影响。 文件的完整性是完整的。 我们可以通过使用私钥签署文档来做到这一点。

使用私钥签名:

gpg --clearsign <filename>

clearsign选项意味着进行明文签名。 明文签名中的内容无需任何特殊软件即可读取。 仅需要OpenPGP软件来验证签名。

请注意,您将使用私钥创建数字签名,因此您需要提供密码来解锁私钥。 命令完成后,将使用 .asc 扩展名已创建。

您可以从此.asc文件中获得一些有趣的花絮。 因此,在您的文本编辑器中将其打开。 您将找到使用的哈希算法。 在我的情况下,GPG使用SHA256作为足够强大的哈希算法。 请注意,SHA1已过时。 PGP签名位于原始内容之后。

首先对纯文本文件进行哈希处理,然后使用您的私钥对哈希进行签名。

验证签名

我已将我的公钥导入到我的远程Debian盒子中。 因此,我将把这个签名的文档发送给Debian,并在Debian上验证签名。

scp <filename.asc> [email protected]debian:~

现在登录Debian。

ssh [email protected]

验证有两件事。 确保文件在传输过程中没有被更改。 计算一个哈希值,然后使用私钥对哈希值进行签名。 通过使用私钥签名,它允许收件人确定发送者的真实性。

使用以下命令验证签名:

gpg --verify <filename.asc>

在验证过程中,gpg确定使用哪个密钥(密钥ID)对文档进行签名,然后使用来自公共密钥环的相应公钥来验证签名。

输出:

gpg: Signature made Mon Feb 1 23:53:44 2016 EST using RSA key ID 4F0BDACC
gpg: Good signature from "Xiao Guoan <[email protected]>"

它说这是一个很好的签名。 因此验证成功。

签名和加密

如果我们要确保检查了发件人的身份以及加密邮件的完整性,并且希望提供机密性,请使用以下命令:

gpg --armor --recipient <user-id> -e --sign <filename>

输出:

You need a passphrase to unlock the secret key for
user: "Xiao Guoan <[email protected]>"
2048-bit RSA key, ID 0F8BBD66, created 2016-02-02
Enter passphrase:

您需要输入密码来解锁私钥。 它结合了命令以进行签名和加密。 它首先使用您的私钥对文档签名,然后使用收件人的公钥对其进行加密。

首先,它将对消息进行签名,因为我们希望使用原始文件而不是加密文件来计算哈希。 然后使用我们的私钥对哈希签名。

解密并验证

解密过程将自动验证签名。

gpg --decrypt <filename.asc>
Sidebar