【问题标题】:How does clearsign option of GnuPG works? [closed]GnuPG 的 clearsign 选项如何工作? [关闭]
【发布时间】:2016-05-23 17:00:50
【问题描述】:

可以使用 PGP 对文件进行签名,通过在 CMD 中执行以下命令,使用 clearsign 选项

gpg --clearsign 文件名

GnuPG 使用什么样的算法来实现 clearsign 选项,即使在执行签名后,输出签名也是可读的?

我阅读了一份说明 clearsign 选项如何工作的手册,但我无法理解它。 It is available here.

根据手册,盔甲应用于签名,使签名不可读。但问题是 clearsign 如何使签名具有可读性。

但是,如何控制由散列算法和加密函数组成的签名输出为明文?

通过使用哈希和加密功能,如何保证输出在可读的ASCII字符范围内?

【问题讨论】:

  • “控制签名的输出”是什么意思?给定一条消息和一个哈希加上公钥/私钥,签名是唯一确定的(对于 RSA)。
  • 我会说装甲使它可读(对于邮件客户端),底层二进制版本在某些文件格式中很容易出现乱码。

标签: cryptography digital-signature gnupg pgp


【解决方案1】:

签名总是二进制的,真的。 clearsign 仅表示签名不是在压缩消息上而是在原始消息上计算的,如果它是文本格式的话。这意味着收件人仍然可以阅读签名的邮件(在----BEGIN PGP SIGNED MESSAGE---- 标头之后),这意味着在邮件中收件人仍然可以阅读邮件而无需通过 PGP 程序。收件人仍然需要这样的程序来验证签名。

由于签名始终是二进制的,但有时需要以文本格式发送,这意味着签名被编码为 base64,以确保它也是文本格式。如果不做clearsign,而是sign,则整个消息先压缩再签名,总数为base64编码。任何人都可以读取该消息(在 base64 解码和解压缩之后)。因此使用标准的 ASCII 装甲编码来保证可打印的 ASCII 输出。但是这个最终的编码只是为了方便,底层的二进制形式是经过验证的实际签名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-31
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    相关资源
    最近更新 更多