OpenPGP 加密是否意味着连我都看不到我的数据?

信息安全 电子邮件 pgp
2021-08-21 07:56:07

假设我有一封电子邮件,我想将其发送给其他人。我用他的公钥加密它。这确保只有他可以阅读我的信息。这是否也意味着我将无法阅读它?如果是这样,我怎么知道我发送了什么?

3个回答

这是完全正确的。用某人的公钥加密一封电子邮件,你会得到一个你自己无法解密的密文,这毕竟是不对称密码学的重点。

保留原文的方法有很多。

  • 保持明文
  • 用你自己的公钥加密它(以保密)

你应该玩 GPG,你的问题会很快回答自己。我推荐一个名为 Mailvelope 的 GPG 工具,它适用于大多数基于 Web 的电子邮件(gmail、hotmail、yahoo 等)。

您可以为多个收件人加密消息,正如@Xaqq 所说,大多数客户端会将发件人包含在收件人列表中,这正是您所说的原因。但是,如果您不这样做,那么不,您将无法阅读自己发送的消息。我以前肯定犯过这个错误。

是的,基本上你是对的:如果你(或你的邮件客户端)没有将自己指定为应该能够解密邮件的人,那么只有收件人才能阅读邮件。

多个加密密钥是可能的

但是:谁可以读取您的数据取决于为谁加密。例如,大多数邮件客户端会在“收件人:”和“抄送:”字段中为每个人加密(而“密件抄送:”收件人被特殊对待,不会泄露它们),另外还有发件人(因此他可以在他的再次拥有)。

请注意,加密给多个用户不会随着收件人数量线性增加消息大小:OpenPGP 使用混合加密模式,其中只有用于对称加密的“会话密钥”必须加密(这次使用公钥加密)对于能够解密消息的每个人。

如果您的邮件客户端没有对自己加密

当您的邮件客户端(或 GnuPG 插件)不允许配置它时,GnuPG 的默认配置很有可能保持不变。有一个选项--encrypt-to,允许提供额外的收件人。来自man gpg

--encrypt-to name

与此相同,--recipient但此选项旨在用于选项文件,并且可以与您自己的用户 ID 一起用作“加密到自我”。--recipient仅当通过使用或通过询问的用户 ID提供其他收件人时,才使用这些密钥。不会对这些用户 ID 执行信任检查,甚至可以使用禁用的密钥。

这个选项也可以在 GnuPG 的配置文件中设置~/.gnupg/gpg.conf,这里--必须省略。name可以是密钥 ID 或用户 ID;我建议使用完整的指纹或至少长密钥 ID 来准确描述您的密钥。

一个示例配置指令,也将我自己添加为收件人,将是

encrypt-to 0D69E11F12BDBA077B3726AB4E1F799AA4FF2279

--encrypt-to如果您的邮件客户端允许添加传递给gpg.