GPG:使用您的密钥

欢迎回到 GPG 系列,我们将在其中探索如何将 GPG 与其他应用程序一起使用来保护您的数据。 在第一部分中,我们介绍了 GPG 的功能。 您了解了完整性、不可否认性和真实性。 在第二部分中,介绍了密钥的创建和发布,以及吊销证书的创建。 本部分将介绍使用您的密钥对文件或通信进行签名和加密。

关键使用场景

使用密钥时,您可以签名、加密或同时签名和加密。 真实性通过使用签名来保证。 通过使用加密来维护隐私。 以下场景将帮助说明如何使用这些功能。

场景 1(真实性)

I want people to know a file or message came from me.
----
Sign the file or message with your private key.

场景 2(隐私)

I want to send a file or message only my intended recipient can view.
----
Encrypt the file or message with the recipients public key.

场景 3(真实性和隐私)

I want to send a message that only my intended recipient can read and I want the recipient to be able to verify it came from me.
----
Encrypt the file or message with the recipients public key and sign the file or message with your private key.

情景 4(真实性)

I want to verify the identity of a person who apparently sent a file or message
----
Verify the signature using the sender's public key.

场景 5(隐私)

I want someone to send me a message or file only I can view.
----
Have the sender encrypt the file or message with your public key.

场景 6(真实性和隐私)

I want someone to send me a message or file only I can view and I want to be able to verify the identity of the person who apparently sent the file or message.
----
Have the sender encrypt the file or message with your public key and sign it with their private key. the

在本系列的第一部分中,我们注意到 GPG 使用了非对称加密。 公钥可用于加密需要配对私钥才能解密的文件或消息。 如果您要使用您的私钥加密消息,那么任何拥有您的公钥的人都可以解密它。 这就是为什么在上面列出的场景中使用公钥来执行加密的原因。

在 Evolution 中使用 GPG 密钥

当您使用 Evolution 发送消息时,您可以选择对消息进行签名、对消息进行加密或同时对消息进行签名和加密。 一旦按照 GPG 密钥管理,第 1 部分中的描述创建了一个密钥,它就可以用于 进化 在单个消息中或设置为特定帐户的默认值。 首先,您必须将密钥提供给帐户。 如果您未能执行此操作,则在您尝试签署或加密您的电子邮件时会收到一条错误消息。

要为帐户选择密钥,请从 Evolution 菜单中选择编辑 > 首选项。

然后选择要使用 GPG 密钥的帐户,然后单击编辑按钮。

使用 GPG:Evolution 编辑帐户

这将打开帐户编辑器,您将能够选择一个密钥。 然后,您可以在“安全”部分下为该帐户选择其他默认签名和加密选项。

使用 GPG:Evolution 帐户编辑​​器

上面选择的选项是真实性的良好默认值。 您可以逐个覆盖每封电子邮件的这些选择,因此请选择您最常使用的选项。 我会警告不要自动信任密钥。 原因将在本系列的第四部分中介绍,当 信任网络 有更详细的介绍。 需要注意的是,每个帐户都必须单独配置。

使用 GPG:Evolution GPG 选项

这 example 上面显示了在发送电子邮件时如何覆盖帐户的默认设置。 只需选择选项,然后选中相应的框。 请注意,如果您没有选择用于该帐户的密钥,您将收到上述错误消息。

如果您选择加密邮件,则需要下载收件人公钥。 如果您尝试在没有它的情况下加密消息,您将收到如下所示的错误消息。

使用 GPG:Evolution GPG 错误

当您收到加密的电子邮件时,根据它们的发送方式,您将能够直接在 Evolution 中解密该消息。 当您打开这些消息时,系统将提示您使用密码作为您的密钥。

使用 GPG:GPG 提示输入密码

GPG 提示输入密码

成功输入您的密码后,该消息将显示在 Evolution 电子邮件窗口中。

使用 GPG:GPG 解密消息

在其他情况下,加密邮件会显示为附件,并且不会提示您在 Evolution 中对其进行解密。

使用 GPG:GPG 加密消息作为附件

对于这些消息,您必须保存附件并使用命令行解密消息。 消息内容将类似于下面的文本。

-----BEGIN PGP MESSAGE-----
Version: GnuPG v2

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
JUOxrg==
=n6A0
-----END PGP MESSAGE-----

本文稍后将介绍如何解密保存的文本文件。

Evolution 会自动验证每封电子邮件底部的签名。 将有一个类似于下面的区域。

使用 GPG:Evolution 有效 GPG 签名

使用 GPG:Evolution GPG 无公钥

加密和解密文件

使用 GPG:GPG 二进制文件

GPG 二进制文件

除了发送和接收加密电子邮件之外,您还可以使用 GPG 加密和解密文件。 虽然人们通常会考虑使用加密将信息安全地发送给其他人,但它也可以用于在您拥有信息时保持信息安全。 为了 example,您可以将密码列表保存在加密文件中。 如果您的笔记本电脑被盗,这将防止信息泄露。

示例:加密文件名 plain.txt

$ gpg2 --encrypt -r [email protected] plain.txt

如果您没有指定收件人

-r

选项,系统将提示您提供一个。

$ gpg2 --encrypt plain.txt 
You did not specify a user ID. (you may use "-r")

Current recipients:

Enter the user ID.  End with an empty line: [email protected]

请记住,您需要收件人的公钥才能加密文件。 收件人将使用他们的私钥解密文件。 这种加密方式会生成一个二进制文件。 如果您希望生成文本文件,可以使用 ASCII Armor 文件选项。

$ gpg2 --encrypt --armor -r [email protected] plain.txt

如果

– 盔甲

未指定,生成的文件将是

普通的.txt.gpg

. 如果

– 盔甲

被使用,该文件将是

普通的.txt.asc

. 可以打开生成的 .asc 文件,并且可以将 ASCII 文本复制并粘贴到另一个应用程序中。 如果您的电子邮件应用程序不支持 GPG 并且您想要发送加密消息,这可能会很有用。

需要注意的是,当您使用他人的公钥加密文件时,您将无法自己解密该文件。 如果您想为自己加密文件,您可以将自己指定为收件人或使用

–对称

选项。 这将仅使用密码来加密文件。

$ gpg2 --symmetric plain.txt
Enter passphrase: 
Repeat passphrase:

您也可以选择使用

– 盔甲

如果您想创建 ASCII 文件,请选择此选项。

$ gpg2 --symmetric --armor plain.txt
Enter passphrase: 
Repeat passphrase:

解密文件要容易得多,因为文件是二进制还是 ASCII,或者它是不对称的还是对称的都无关紧要。 使用纯文本,您可以选择将输出定向到文件或终端 (stdout)。

使用 GPG:GPG ASCII 文件

GPG ASCII 文件

要将输出发送到标准输出,您可以运行以下命令。

$ gpg2 -o - plain.txt.gpg 

You need a passphrase to unlock the secret key for
user: "charles profitt <[email protected]>"
4096-bit RSA key, ID 853D07A8, created 2015-11-15 (main key ID 37BEB021)

Enter passphrase: 

gpg: encrypted with 4096-bit RSA key, ID 853D07A8, created 2015-11-15
      "charles profitt <[email protected]>"
This is secret text

要将输出发送到文件,您可以使用

-o

选项或让它使用默认值,这将创建一个没有 .gpg 或 .asc 扩展名的文件。

$ gpg2 plain.txt.gpg 

You need a passphrase to unlock the secret key for
user: "charles profitt <[email protected]>"
4096-bit RSA key, ID 853D07A8, created 2015-11-15 (main key ID 37BEB021)

Enter passphrase: 

gpg: encrypted with 4096-bit RSA key, ID 853D07A8, created 2015-11-15
      "charles profitt <[email protected]>"

如果要指定文件输出名称,可以通过以下方式运行命令。

$ gpg2 -o plain.2.txt plain.txt.asc 

You need a passphrase to unlock the secret key for
user: "charles profitt <[email protected]>"
4096-bit RSA key, ID 853D07A8, created 2015-11-15 (main key ID 37BEB021)

Enter passphrase: 

gpg: encrypted with 4096-bit RSA key, ID 853D07A8, created 2015-11-15
      "charles profitt <[email protected]>"

签署文件

签署文件类似于加密它们,但默认情况下,签名将使用您的私钥。 文件的接收者将使用您的公钥来验证签名。 默认情况下,生成的文件将是二进制文件。 如果您使用

– 盔甲

选项,它将生成一个扩展名为 .asc 的 ASCII 文件。

要使用 GPG 签署文件,请运行以下命令。

$ gpg2 --sign plain.txt

You need a passphrase to unlock the secret key for
user: "charles profitt <[email protected]>"
4096-bit RSA key, ID 37BEB021, created 2015-11-15

Enter passphrase:

您也可以使用 ASCII 对其进行签名。

$ gpg2 --armor --sign plain.txt

You need a passphrase to unlock the secret key for
user: "charles profitt <[email protected]>"
4096-bit RSA key, ID 37BEB021, created 2015-11-15

Enter passphrase:

请记住,尽管这两个文件都已加密,但任何拥有您的公钥的人都可以解密它们并验证签名。

其他签名方式

签署文件还有另外两个选项。 如果您想保留原始内容未加密,您可以使用

–clearsign

或者

–分离符号

. 这

–clearsign

选项会将 ASCII 签名直接添加到文件中。 这

–clearsign

选项仅适用于纯文本文档。 如果您想保留未加密但已签名的图形或 LibreOffice 文档,您应该使用

–分离符号

选项。 这将创建一个附加文件作为与文件一起发送的分离签名。

您可以使用

–clearsign

标志如下。

$ gpg2 --clearsign plain.txt

You need a passphrase to unlock the secret key for
user: "charles profitt <[email protected]>"
4096-bit RSA key, ID 37BEB021, created 2015-11-15

Enter passphrase:

生成的文件可以通过添加到文件中的 ASCII 签名打开和读取。

使用 GPG: GPG --clearsign example

要使用

–分离符号

选项,运行此命令。

$ gpg2 --detach-sign test.odt 

You need a passphrase to unlock the secret key for
user: "charles profitt <[email protected]>"
4096-bit RSA key, ID 37BEB021, created 2015-11-15

Enter passphrase:

这会导致原始文件未被修改,并产生一个名为 test.odt.sig 的附加文件,然后可以使用以下命令对其进行验证。

$ gpg2 test.odt.sig 
gpg: assuming signed data in `test.odt'
gpg: Signature made Sun 07 Feb 2016 10:37:49 PM EST using RSA key ID 37BEB021
gpg: Good signature from "charles profitt <[email protected]>"

只有当原始文件可供用户使用时,才能验证签名。 如果原始文件在同一目录中,它将被自动使用。 如果文件不是,则系统将提示您提供原始文件的路径。

无论使用哪种类型的签名,如果文件被修改,GPG 都会报告错误的签名。

$ gpg2 test.odt.sig 
gpg: assuming signed data in `test.odt'
gpg: Signature made Sun 07 Feb 2016 10:37:49 PM EST using RSA key ID 37BEB021
gpg: BAD signature from "charles profitt <[email protected]>"

您还可以通过组合以下命令同时对文件进行加密和签名:

$ gpg2 --armor --recipient [email protected] --encrypt --sign plain.txt 

You need a passphrase to unlock the secret key for
user: "charles profitt <[email protected]>"
4096-bit RSA key, ID 37BEB021, created 2015-11-15

Enter passphrase:

当您解密生成的文件时,您将获得额外的输出来验证签名的好坏。

$ gpg2 plain.txt.asc 

You need a passphrase to unlock the secret key for
user: "charles profitt <[email protected]>"
4096-bit RSA key, ID 853D07A8, created 2015-11-15 (main key ID 37BEB021)

gpg: encrypted with 4096-bit RSA key, ID 853D07A8, created 2015-11-15
      "charles profitt <[email protected]>"
gpg: Signature made Sun 07 Feb 2016 11:12:26 PM EST using RSA key ID 37BEB021
gpg: Good signature from "charles profitt <[email protected]>"