web-dev-qa-db-ja.com

PaperKey出力ファイルは元の秘密鍵よりも大幅に大きいです

わかりました、だから私はおそらく私はとても明白な何かを逃していますが、ここで私のシナリオです。

数ヶ月後に戻って、「私のハードドライブがクラッシュする場合は、おそらく機密データの紙のコピーを維持し始める必要があります」と決めました。最初に私が決定したことによく、バックアップするのに十分なほど重要でした。特に私がすでにそれをSKSプールにアップロードしたことを考えると、私のPGPキーは私のPGPキーでした。

それで、困難な研究の後、私はOCRソフトウェアが行く方法ではないことを確立しました(単に失敗する可能性が多すぎる可能性があります)、そしてQRコードに焦点を当てました。残念ながら、英数字のQRコードの最大バイト容量が4296であることを素早く学びましたが、私のプライベートPGPキーは約6.7KB大きい装甲です。 ASCII装甲を取り除くことさえ、それはまだ約4.9KB大きかった。手の届かないところにありました。

さて、私は早く私の友人と話していました。完全!

だから私はもう少し読んだりし、それが完璧な解決策だったと思いました!よくええと。ええ、それはそうであるはずです、そして明らかにそれは私のGPGキーリングから秘密鍵を抽出すると(暗号化のための別個のサブキーを持つ4096ビットRSA/RSA PGPキー)、私はそれを論文キーを通して走った、AAAA、出力は11キロバイト ...

出力のフォーマットはそのままでした

_# Secret portions of key [key-id]
# Base16 data extracted Mon Oct 31 20:08:43 2016
# Created with paperkey 1.3 by David Shaw
#
# File format:
# a) 1 octet:  Version of the paperkey format (currently 0).
# b) 1 octet:  OpenPGP key or subkey version (currently 4)
# c) n octets: Key fingerprint (20 octets for a version 4 key or subkey)
# d) 2 octets: 16-bit big endian length of the following secret data
# e) n octets: Secret data: a partial OpenPGP secret key or subkey packet as
#              specified in RFC 4880, starting with the string-to-key usage
#              octet and continuing until the end of the packet.
# Repeat fields b through e as needed to cover all subkeys.
# 
# To recover a secret key without using the paperkey program, use the
# key fingerprint to match an existing public key packet with the
# corresponding secret data from the paper key.  Next, append this secret
# data to the public key packet.  Finally, switch the public key packet tag
# from 6 to 5 (14 to 7 for subkeys).  This will recreate the original secret
# key or secret subkey packet.  Repeat as needed for all public key or subkey
# packets in the public key.  All other packets (user IDs, signatures, etc.)
# may simply be copied from the public key.
#
# Each base16 line ends with a CRC-24 of that line.
# The entire block of data ends with a CRC-24 of the entire block of data.

[hexadecimal output]
_

出力をぼかし、すでに「大きい」と見なされているもののサイズを2倍のサイズに積み重ねることができる鍵の最小キーを抽出するように設計されたソフトウェアが非常に感銘を受けています。またはこれはPICNICシナリオですか?

コメントアウトしたヘッダを省略しても、秘密鍵データの16進数の値を静止していたのみ、それは依然として9.4KBであった、紙のコピーに有効に入るには大きすぎる。

それで、私の鍵は単に大きすぎるのですか? PaperKeyはサブキーをサポートしていませんか?他にどのような選択肢がありますか?それとも私が愚かで、誰かが「このパラメータを追加するのを忘れた」と言う単一の行で反応するつもりですか?それとも私はQRコードで覆われている3枚の紙を抱きしめていますか?

1
TheFuzzyFish

PaperKeyは、保存されている情報から秘密鍵と秘密鍵を抽出するために必要な最小値を抽出します。

しかし、デフォルトでは、PaperKeyはBase-16(16進数)の出力を印刷するので、各バイトには代わりに2文字(2バイト)が必要です。レイアウトは、各2バイトを分離するために3番目のものを使用し、各行の最後に行番号とチェックサムを追加し、それ以上ドキュメントのサイズを吹き飛ばします。 PaperKeyの元のタスクは、マニュアルが最小限のバイト数でエクスポートされていませんが、安全に再構築できる印刷コピーを取得します。キーを最小限に抑えることは、再構成中の手動作業の量を減らすための便利です。

使用 --output-type raw Flag 2進数の文書をエクスポートするために、予想される出力にはるかに小さい。

0
Jens Erat