使用GPG从私钥中删除公钥,以实现私钥存储。

3
我试图使用QR码生成器制作基于纸张的4092位秘密/私有PGP密钥备份,但密钥太大了。我会采用低技术手段将其分成两部分,但也许我并不需要这样做。我知道,在导出秘密密钥时,它还会导出嵌入其中的公共密钥。

是否有任何方法可以从该文件中删除密钥的公共部分,或者在导出之前进行操作,以便结果文件仅为私有密钥?

我不确定结果文件大小是否仍然足够小,但这值得一试。

D:\Users\tharding>gpg --edit-key "04EAC14C"
gpg (GnuPG) 2.0.26; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Secret key is available.

pub  4096R/04EAC14C  created: 2015-02-11  expires: never       usage: SCE
                     trust: unknown       validity: unknown
[ unknown] (1). Timothy Harding <hardingt@gmail.com>

gpg> key 1
No subkey with index 1

gpg> delkey
You must select at least one key.

gpg> delkey 0
You must select at least one key.

更新: 根据我所看到的(查看公钥和私钥的ASCII装甲输出),它们的结构如下图所示: GPG ASCII Armored Key File Format 更新2: 再次查看文件,我得到了以下内容。我还没有使用十六进制编辑器验证非装甲文件,但我在网上找到的关于这些密钥文件内部结构的帮助非常少。
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 

4    header chars ??
1517 pub key chars
4    footer chars ??
-----END PGP PUBLIC KEY BLOCK-----

并且

-----BEGIN PGP PRIVATE KEY BLOCK-----
Version:

4    different header chars from pub key ??
700  pub key chars
1772 private key chars (possibly some header/footer to do with the symmetric cipher)
817  pub key chars (same total 1517, exact same ASCII sequence if put together)
4    different footer chars from pub key ??
-----END PGP PRIVATE KEY BLOCK-----

更新 3: 查看了二进制的公钥/私钥并发现以下情况:

  • 公钥是 1138 字节
    • 4 个字节是独特的
    • 1134 字节在私钥中也被找到。
  • 私钥是 2467 字节
    • 4 个字节是独特的
    • 其中 524 个字节与公钥的内容完全相同
    • 其中 1329 个字节的内容是私钥独有的
    • 其中 38 个字节,在公钥中完全相同 (密钥名称和电子邮件地址)
    • 其中 572 个字节,在公钥中完全相同

只是好奇 - 太大了,用于什么?在OCR友好字体上打印多页有问题吗?(从痛苦的经验中得知:确保选择一个零和字母O可以被你的OCR软件区分的字体...) - Paul M Furley
QR码太小了。我不打印ASCII(这当然是一种选择),我试图将一个4096位的私钥放入一个单独的QR码中。QR码足够大,可以容纳一个4096位的密钥,但无法同时容纳私钥和公钥(公钥会自动与私钥一起包含)。 - Timothy Harding
啊,抱歉,看来我没有仔细阅读你的问题 :) - Paul M Furley
1个回答

2
有一个名为Paperkey[1]的程序,由David Shaw[2]编写,它从导出的OpenPGP私钥中仅提取私钥信息。
以下是该软件包描述的摘录:

将OpenPGP秘密密钥中的机密信息提取出来

Paperkey页面已经构建了Windows 32位的版本,并提供了在Linux、Unix、*BSD和OSX上编译的源代码。
Paperkey也可以通过一些Linux/BSD发行版的软件包管理器获得。
例如包管理器安装 -
apt(debian)-
apt-get install paperkey

美味(红帽)
yum install paperkey

pkg (bsd)

pkg install paperkey

端口(BSD)
cd /usr/ports/security/paperkey
make install clean

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接