使用GPG从私人密钥存储中删除公钥

时间:2015-02-12 00:27:36

标签: qr-code public-key-encryption gnupg pgp openpgp

我正在尝试使用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 Armored输出)看起来它们的结构是这样的:

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个字节

1 个答案:

答案 0 :(得分:2)

有一个名为Paperkey [1]的程序,由David Shaw [2]编写,只从导出的OpenPGP私钥中提取私钥信息。

摘录包描述:

  

从OpenPGP密钥中提取秘密信息

Paperkey页面有一个已经为Windows 32bit构建的版本,并提供了在Linux,Unix,* BSD和OSX上编译的源代码。

Paperkey也可以通过某些Linux / BSD发行版上的软件包管理器获得。

示例包管理器安装 -

apt(debian) -

apt-get install paperkey

yum(redhat)

yum install paperkey

pkg(bsd)

pkg install paperkey

ports(bsd)

cd /usr/ports/security/paperkey
make install clean