gpg 公钥的可读转储

gpg 公钥的可读转储

是否有某种工具可以以人类可以理解的方式写出 GnuPG 公钥的实际内容?我的意思是,不仅仅是人类可以读取和输入的 ascii-armor,还有某种东西可以将数据分解为加密部分的大十进制数字、UID 的字符串等等?我真的很想看看里面有什么。

今天的实际应用:我有两把来自同一个人的钥匙,创建日期相同,但指纹不同。假设其中一个是通过某种转换从另一个创建的,可能是通过使用最新软件将旧钥匙导入钥匙串。我想看看到底发生了什么变化。也许只是指纹算法发生了变化,但也许还有更多变化。

答案1

尝试

gpg --list-packets --verbose < pubkey.asc

它不会转储密钥数据,但会显示所有其他详细信息。要转储其他原始数据部分,您需要调试标志 2,因此添加--debug 0x02,这将以十六进制转储密钥和其他数据。这在 GPG 版本 1.2 和 1.4 中有效,但遗憾的是在 2.0 中无效,因为出于某种原因未启用对转储 bignum (MPI) 数据的支持(请参阅DBG_MPIg10/parse-packet.c

也可以尝试转储

pgpdump < pubkey.asc

答案2

在等待答案的时候,我读了RFC4880(OpenPGP)并提出了我自己的一些代码解析并打印导出的数据包流的相关部分。远未完成,但可能对其他人有用,所以我也发布了这个。目前,我认为 @grawity 建议的 pgpdump 没什么好处,但谁知道呢……

答案3

我用过转储 它运行良好,并显示了良好的人性化输出。它尚未打印椭圆曲线密钥,但至少会告诉您它是 EC 密钥。如果您选择“转储文字”选项,它将显示实际密钥数据。

答案4

pgpdump 很好,另外还有sq packet dump来自 sequoia 项目的,我觉得它的可读性更强:

sq packet dump /etc/apt/trusted.gpg.d/ubuntu-keyring-2018-archive.gpg
Public-Key Packet, old CTB, 525 bytes
    Version: 4
    Creation time: 2018-09-17 15:01:46 UTC
    Pk algo: RSA
    Pk size: 4096 bits
    Fingerprint: F6ECB3762474EDA9D21B7022871920D1991BC93C
    KeyID: 871920D1991BC93C
  
User ID Packet, old CTB, 66 bytes
    Value: Ubuntu Archive Automatic Signing Key (2018) <[email protected]>
  
Signature Packet, old CTB, 568 bytes
    Version: 4
    Type: PositiveCertification
    Pk algo: RSA
    Hash algo: SHA512
    Hashed area:
      Signature creation time: 2018-09-17 15:01:46 UTC
      Key flags: CS
      Symmetric algo preferences: AES256, AES192, AES128, CAST5, TripleDES
      Hash preferences: SHA256, SHA1, SHA384, SHA512, SHA224
      Compression preferences: Zlib, BZip2, Zip
      Features: MDC
      Keyserver preferences: no modify
    Unhashed area:
      Issuer: 871920D1991BC93C
    Digest prefix: 2C73
    Level: 0 (signature over data)
  
Signature Packet, old CTB, 563 bytes
    Version: 4
    Type: GenericCertification
    Pk algo: RSA
    Hash algo: SHA512
    Hashed area:
      Issuer Fingerprint: 153F1C9EF1395FBF00352E8D0BFB847F3F272F5B
      Signature creation time: 2018-09-17 15:12:03 UTC
    Unhashed area:
      Issuer: 0BFB847F3F272F5B
    Digest prefix: 6E17
    Level: 0 (signature over data)

回购位于https://gitlab.com/sequoia-pgp/sequoia,箱子位于https://lib.rs/crates/sequoia-sq),可以通过 Cargo 和许多优秀的包管理器安装 (Debian/Ubuntu/Arch/Fedora……)

相关内容