使用 GnuPg在 Linux 中对文件进行数字签名

举报
Tiamo_T 发表于 2022/07/22 23:04:14 2022/07/22
【摘要】 如果您是 GnuPG 工具的新手,您应该首先了解如何使用基本的gpg 命令。

随着许多组织从纸质文档转向数字文档,需要数字签名来管理任何敏感的数字文档。数字签名可用于验证消息的来源,以便接收者可以决定是否信任发送者。现在,它最广泛地用于软件分发和金融交易。

公钥密码学中,可以使用私钥对文件进行签名。任何拥有相应公钥的人都可以检查该文件是否由私钥签名。没有私钥的任何人都无法伪造这样的签名。

数字签名可用于发件人身份验证和不可否认性。签名者不能声称他们没有签署文件。

如今,数字签名在软件分发中发挥着关键作用。当您从 debian 镜像安装任何软件时,一旦下载了该软件,它将通过验证签名来验证该软件是否来自受信任的来源,从而确保该软件包来自受信任的来源。

现在,我们将看到使用 GnuPG 工具签署文档的各种方法。

如果您是 GnuPG 工具的新手,您应该首先了解如何使用基本的gpg 命令

数字签名,证明和时间戳的文件。如果文档以任何方式被更改,签名验证将失败。

1.为文件创建数字签名

要对文档进行数字签名 - 使用签名选项。系统将要求您输入密码以解锁用于签署文档的私钥。


$ gpg --sign file.txt

You need a passphrase to unlock the secret key for
user: "lakshmanan (This is lakshmans key) "
2048-bit RSA key, ID 3630F8D6, created 2012-12-30

Enter passphrase:

现在它将以二进制格式创建一个名为“file.txt.gpg”的文件。输入文件在签署文件之前被压缩。

2.验证数字签名

给定一个已签名的文档,您可以使用 –verify 选项验证签名。

$ gpg --verify file.txt.gpg

gpg: Signature made Saturday 12 January 2013 11:17:46 PM IST using RSA key ID 3630F8D6
gpg: Good signature from "lakshmanan (This is lakshmans key) "

上面的命令验证所做的签名是好的。

3.从文件中提取文档

要从签名文件中提取原始文档,请使用 –decrypt 选项。您可以使用--output 指定输出文件以存储实际文件内容。

$ gpg --output doc.txt --decrypt file.txt.gpg

gpg: Signature made Saturday 12 January 2013 11:17:46 PM IST using RSA key ID 3630F8D6
gpg: Good signature from "lakshmanan (This is lakshmans key) "

现在实际文档将保存在 doc.txt 文件中。

4. 清除签署文件

数字签名的一个常见用途是发送电子邮件。在这种情况下,不希望将文件压缩为二进制文件并对其进行签名。您可以使用 --clearsign 选项使文件包含在 ASCII 装甲签名中。

$ gpg --output file.sig --clearsign file.txt

现在将创建一个名为 file.sig 的 ASCII 文件,其中包含数字签名和文件本身。

$ cat file.sig

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

This is a test file
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iQEcBAEBAgAGBQJQ8af1AAoJEHUf3BE2MPjWJ6QIAIoM7vZlvVD4PR4TgqKkUAr5
S4Pc/7tjkEquBcPfzHgm6MPdTd7kIvUzwHNkkST0FyB2cLzvx8wNf7Zp/kDYL0Uz
/7UCocMPsDBYHasUY4XRfCDUkF0ER/NAFdiL9AUTvQf6oQxwuQG9sWxb6tcK8eiV
U7BBvQvMl6RszP+e7VXgcDbNeYMrTDwrivP9BKwAFuBtZmRg0vQKnjenUyVJL6gJ
tndkwtOd1XGpc5ZKCTRSKOoTonuUQAD1q0Pi6nmeaNskSqwVOxzQcV6lQ8nHJTh2
XfKSAopNriv405YfC1KO5H2Ffzee2jx+o3HqxfU1vQbHtP7uf4QqxUc2HtDnRNQ=
=PN+K
-----END PGP SIGNATURE-----

验证明文签名文档类似于验证二进制签名文档。

5.创建分离签名

在分离签名的情况下,将创建一个新文件作为签名。您可以使用 –detach-sign 选项来创建分离的签名。

$ gpg --armor --detach-sig file.txt

现在将创建一个名为 file.txt.asc 的 ASCII 文件,其中包含分离的签名。您可以使用 –output 更改分离的签名文件名。

6.验证分离的签名

为了验证分离的签名,您需要同时拥有签名文件和数据文件。

$ gpg --verify file.txt.asc file.txt

gpg: Signature made Sunday 13 January 2013 12:13:59 AM IST using RSA key ID 3630F8D6
gpg: Good signature from "lakshmanan (This is lakshmans key) "

让我们尝试编辑 file.txt。将一些内容添加到 file.txt 并尝试验证签名。

$ echo "Append" >> file.txt

$ gpg --verify file.txt.asc file.txt
gpg: Signature made Sunday 13 January 2013 12:13:59 AM IST using RSA key ID 3630F8D6
gpg: BAD signature from "lakshmanan (This is lakshmans key) "

现在验证失败了,因为内容被修改了,所以签名不好。

7. 加密和签署文件

在我们之前的一篇文章中,我们还详细讨论了如何使用 GnuPG 加密和解密文件。但是,如果您想同时加密和签署文档,请执行以下操作:

$ gpg --sign --encrypt --recipient raman file.txt

上述命令加密 file.txt 并对文档进行数字签名。收件人可以使用-decrypt 选项验证签名并解密文档。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。