使用 GnuPg在 Linux 中对文件进行数字签名
随着许多组织从纸质文档转向数字文档,需要数字签名来管理任何敏感的数字文档。数字签名可用于验证消息的来源,以便接收者可以决定是否信任发送者。现在,它最广泛地用于软件分发和金融交易。
在公钥密码学中,可以使用私钥对文件进行签名。任何拥有相应公钥的人都可以检查该文件是否由私钥签名。没有私钥的任何人都无法伪造这样的签名。
数字签名可用于发件人身份验证和不可否认性。签名者不能声称他们没有签署文件。
如今,数字签名在软件分发中发挥着关键作用。当您从 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 选项验证签名并解密文档。
- 点赞
- 收藏
- 关注作者
评论(0)