現在、私はすべてマスターキーである3つのプライベートGPGペアを持っています。これらのキーを新しいキーペアのサブキーに変換します(それをボールトに保持します)。
私は次のスレッドを読んだ http://atom.smasher.org/gpg/gpg-migrate.txt ある種のバイナリファイルをハッキングして、1つのマスターキーをサブキーに変換し、置き換える他のと。
私のさまざまなキーを新しい単一のキーペアに組み合わせて有効なままにしておくことは可能ですか?また、マスターキーに署名するように人々に紹介できるので、秘密のマスターキーを失うことを恐れる必要はありません。
私が持っているもの
ここには3つの異なる鍵があります(秘密鍵を使用できます)。
$ gpg2 -k
----------------------------------
pub 2048R/712A2BBD 2013-01-29
uid Test Key 1
sub 2048R/F0B63FDA 2013-01-29
pub 2048R/72838B89 2013-01-29
uid Test Key 2
sub 2048R/A19F06EC 2013-01-29
pub 2048D/AC349218 2013-03-21
uid Test Key 3
sub 2048g/179E9F47 2013-03-21
欲しいもの
これらのキーをサブキーに変換して、新しいマスターキーに移動するのが好きです。代わりに次のようになります。
pub 4096R/CB577A43 2013-03-21
uid Master Key
sub 2048R/712A2BBD 2013-01-29
sub 2048R/F0B63FDA 2013-01-29
sub 2048R/72838B89 2013-01-29
sub 2048R/A19F06EC 2013-01-29
sub 2048D/AC349218 2013-03-21
sub 2048g/179E9F47 2013-03-21
これは可能ですか?または、私の3つのキーを取り消して、ゼロから始めて、自分の用途に合った新しいキーを作成することが私の最善の希望ですか。
これまでに行ったこと
http://atom.smasher.org/gpg/gpg-migrate.txt からの指示を使用する
私はなんとかgpgsplitを使用してキーをエクスポートおよび抽出しました。また、最初のバイトを0x95から0x9dに変更することで、secret_keyをsecret_subkeyに変更しました
そのため、pgpdumpが秘密は秘密のサブキーであると言う
~/keytest/key1❯ pgpdump/pgpdump 000001-005.secret_subkey
Old: Secret Subkey Packet(tag 7)(920 bytes)
Ver 4 - new
Public key creation time - Tue Jan 29 13:09:07 CET 2013
Pub alg - RSA Encrypt or Sign(pub 1)
...
次に、すべてのキーをファイルを連結する新しいキーにマージします。
$ gpg2 --export-secret-key CB577A43 > master.gpg
$ cat master.gpg key1/* key2/* key3/* > newkey.gpg
# Removed ~/.gnupg
$ gpg2 --import newkey.gpg
# Ended up with this:
$ gpg -k
----------------------------------
pub 4096R/CB577A43 2013-03-21
uid Master Key
sub 2048R/208FAE4C 2013-03-21
~/keytest❯ gpg -K
----------------------------------
sec 4096R/CB577A43 2013-03-21
uid Master Key
ssb 2048R/208FAE4C 2013-03-21
ssb 2048R/712A2BBD 2013-01-29
uid Test Key 1
ssb 2048R/F0B63FDA 2013-01-29
ssb 2048R/72838B89 2013-01-29
uid Test Key 2
ssb 2048R/A19F06EC 2013-01-29
ssb 2048D/AC349218 2013-03-21
uid Test Key 3
ssb 2048g/179E9F47 2013-03-21
悪くないですね。しかし、キーサーバーからキーをインポートする場合、gpg2 --recv-keys 712A2BBD 72838B89 AC349218
署名を取り戻す。これは次のようになります。
$ gpg -k
----------------------------------
pub 4096R/CB577A43 2013-03-21
uid Master Key
sub 2048R/208FAE4C 2013-03-21
pub 2048R/712A2BBD 2013-01-29
uid Test Key 1
sub 2048R/F0B63FDA 2013-01-29
pub 2048R/72838B89 2013-01-29
uid Test Key 2
sub 2048R/A19F06EC 2013-01-29
pub 2048D/AC349218 2013-03-21
uid Test Key 3
sub 2048g/179E9F47 2013-03-21
残りのもの
この後、鍵リングに4つの公開鍵があります。これらのキーを移動したいので、上記のようにマスターキーCB577A43に依存しています。
それは実際に行うことができます。
atom.smasher.org/gpg/gpg-migrate.txt の手順は古くなっています。
これを試して。いつものように、それを台無しにすることは本当に簡単なので、バックアップを作成します。
したがって、これらは「古い」キーです。
$ gpg -K
----------------------------------
sec 2048R/712A2BBD 2013-01-29
uid Test Key 1
ssb 2048R/F0B63FDA 2013-01-29
sec 2048R/72838B89 2013-01-29
uid Test Key 2
ssb 2048R/A19F06EC 2013-01-29
sec 2048D/AC349218 2013-03-21
uid Test Key 3
ssb 2048g/179E9F47 2013-03-21
そして、サブキーのない新しい「マスターキー」を作成しました。
sec 4096R/CB577A43 2013-03-21
uid Master Key
簡単にするために、最初の「古い」キーを使用する手順のみをリハーサルします。
sec 2048R/712A2BBD 2013-01-29
uid Test Key 1
ssb 2048R/F0B63FDA 2013-01-29
同じ手順を使用して、それらすべてを追加できます。すべてのキーを同時に追加することをお勧めします。キーを壊してからそれらを再構築するたびに、バインディング署名を再作成する必要があり、それが面倒です。
$ gpg --export-secret-keys 712A2BBD | gpgsplit -vp 712A2BBD_
次に、作成したファイルを確認します。
$ ls
----------------------------------
712A2BBD_000001-005.secret_key
712A2BBD_000002-013.user_id
712A2BBD_000003-002.sig
712A2BBD_000004-007.secret_subkey
712A2BBD_000005-002.sig
最初のファイル「712A2BBD_000001-005.secret_key」には、「古い」鍵「712A2BBD」のメイン秘密鍵( パケットタイプタグ5 、つまり「005」)のパケットが含まれています。 (これは必要ですが、新しい「マスターキー」に移行する場合は、サブキーに変換する必要があります。GPGの標準設定を使用して生成されたキーでは、通常、メインの秘密キーに使用フラグ「S」があります署名の場合は「C」、認証の場合は「C」、暗号化の場合は「E」がないため、通常は「E」サブキーでキーが生成されます。ただし、使用している手順により、最終的にメインキーがサブキーに変換され、新しい「マスターキー」に移行されると、すべての使用フラグ(「SCEA」)が有効になります。これは おそらく安全性を低下させる であり、おそらく回避すべき動作です。 )
2番目のファイル「712A2BBD_000002-013.user_id」は、ユーザーIDのパケットです( packet type tag 1 )。 (これは必要ありません)。
3番目のファイル「712A2BBD_000003-002.sig」は、これらのパケットのバインディング署名( packet type tag 2 )です。 (これは必要ありません)。
4番目のファイルは、秘密サブキー(F0B63FDA)のパケットです( パケットタイプタグ7 )。 (これが必要になります。通常、このようなサブキーには「E」使用フラグがあり、これは暗号化のみを目的としています。ただし、新しい「マスターキー」にインポートするプロセスでは、すべての使用フラグを取得します、( "SCEA")、つまり おそらく良いことではない です。)
5番目のファイル「712A2BBD_000005-002.sig」は、サブキーのバインディング署名( パケットタイプタグ2 )です。あなたはそれを必要としません。
必要な2つのファイルを保存し、他のファイルを削除します。
サブキー(F0B63FDA)を新しい「マスターキー」に移行するために何もする必要はありませんが、古いキーのメインキー(712A2BBD)を変更して、機能させる必要があります。
16進数またはバイナリの編集が可能なエディタで、メインキー「712A2BBD_000001-005.secret_key」を開きます。私は ghex を使用しました:
$ ghex 712A2BBD_000001-005.secret_key
16進エディタを使用している場合、最初のバイトは「95」になります。 「9D」に変更してください。
バイナリエディタを使用している場合、最初のバイトは「10010101」になります。 「10011101」に変更します。
それを保存してから、pgpdumpを使用して、サブキーへの変更に成功したかどうかを確認します。成功した場合は、次の出力が表示されます。
$ pgpdump 712A2BBD_000001-005.secret_key | head -1
-----------------
Old: Secret Subkey Packet(tag 7)(1836 bytes)
atom.smasher.org のチュートリアルと同じように、マスターキーにキーバインド署名があることを確認するために、「マスターキー」に新しい「ダミー」サブキーを作成する必要があります。 (少なくとも最初は)移行するサブキーに対応します。
それは、古いサブキーがスロットに入る「スロット」を作成することと考えてください。追加するキーと同じ数のスロットが必要です。
この例では、2つのダミーサブキーを作成しますが、元の投稿にリストしたすべてのキーを追加する場合は、6つ作成する必要があります。
$ gpg --expert --edit-key CB577A43
----------------------------------------
gpg (GnuPG) 1.4.12; Copyright (C) 2012 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/CB577A43 created: 2013-03-21 expires: never usage: SC
trust: unknown validity: unknown
gpg>addkey
サブキー生成ウィザード(上記の--expertオプションのおかげでエキスパートモードです)を実行しているときに、新しい「ダミー」サブキーを生成するときも同じであることを確認してください...
...その「スロット」に追加するサブキーとして。
2つのサブキーを追加するので、「マスターキー」に2つの新しい「ダミー」サブキーを追加します。保存して終了:
pub 4096R/CB577A43 created: 2013-03-21 expires: never usage: SC
trust: unknown validity: unknown
sub 2048R/AAAAAAAA created: 2014-01-01 expires: never usage: S
sub 2048R/BBBBBBBB created: 2014-01-01 expires: never usage: E
gpg> save
$ gpg --export-secret-keys CB577A43 | gpgsplit -vp CB577A43_
あなたは次のようなもので終わるはずです:
$ ls
----------------
CB577A43_000001-005.secret_key
CB577A43_000002-013.user_id
CB577A43_000003-002.sig
CB577A43_000004-007.secret_subkey
**CB577A43_000005-002.sig**
CB577A43_000006-007.secret_subkey
**CB577A43_000007-002.sig**
5番目と7番目のファイル(**に入れたもの)は、「ダミーサブキー」を生成したときに生成されたサブキーキーバインディング署名パケットです。これらが必要になります。
4番目と6番目のファイルは、実際の「ダミーサブキー」パケットです。それらを安全に削除できるようになりました(削除する必要があるファイルは1つだけです)。
$ rm CB577A43_000004-007.secret_subkey CB577A43_000006-007.secret_subkey
手順1と2では、2つのファイルが残っています。
712A2BBD_000001-005.secret_key (the original main key of your "old key", now edited into a subkey)
712A2BBD_000004-007.secret_subkey (the original subkey of your "old key".)
これらを「マスターキー」の構成要素が分割されたフォルダーにコピーし、これらのファイルの名前を変更して、削除した「ダミーサブキー」ファイルを置き換えます。
$ mv 712A2BBD_000001-005.secret_key CB577A43_000004-007.secret_subkey
$ mv 712A2BBD_000004-007.secret_subkey CB577A43_000006-007.secret_subkey
ここでも7つのファイル(この例では)が必要ですが、ファイル4と6は古いキーになり、すべて設定され、新しいマスターキーのサブキーになる準備ができました。
$ ls
----------------
CB577A43_000001-005.secret_key
CB577A43_000002-013.user_id
CB577A43_000003-002.sig
**CB577A43_000004-007.secret_subkey**
CB577A43_000005-002.sig
**CB577A43_000006-007.secret_subkey**
CB577A43_000007-002.sig
後で簡単にインポートできるように、ファイルをまとめて1つのファイルに連続して連結します。
$ cat CB577A43_000001-005.secret_key CB577A43_000002-013.user_id CB577A43_000003-002.sig CB577A43_000004-007.secret_subkey CB577A43_000005-002.sig CB577A43_000006-007.secret_subkey CB577A43_000007-002.sig > concatenated_CB577A43.secret
同じコマンドを使用しますが、新しいファイルにリダイレクトする前に、対応するパブリックを作成するために出力をgpgsplitにパイプします。
$ cat CB577A43_000001-005.secret_key CB577A43_000002-013.user_id CB577A43_000003-002.sig CB577A43_000004-007.secret_subkey CB577A43_000005-002.sig CB577A43_000006-007.secret_subkey CB577A43_000007-002.sig | gpgsplit --no-split --secret-to-public > concatenated_CB577A43.public
$ cp -R ~/.gnupg/ ~/.gnupg_backup
$ gpg --delete-secret-and-public-keys CB577A43 712A2BBD
最近、誰かが atom.smasher.org でチュートリアルを実行しようとするたびに、彼らが遭遇する問題は、最新バージョンのgpgでは、キーを再構成してキーリングに追加すると、追加されたサブキー1)使用フラグがありません。2) atom.smasher.orgチュートリアル でアドバイスされているように、有効期限をリセットできません。新しい有効なキーバインディング署名を作成するために必要な手順です。その結果、1回のエクスポート/インポートサイクルの後、キーはGPGによって無効と見なされ、秘密キーリングから消えます。
キーを正常にインポートするには、gnupgの古いバージョンをダウンロードしてビルドする必要があります: 2002からのバージョン 以上。それを作成したら、新しいキーの有効期限をリセットし、キーの有効なキーバインドを正常に再作成できます。
古いgnupgをダウンロードしてください。
$ wget ftp://mirror.tje.me.uk/pub/mirrors/ftp.gnupg.org/gnupg/gnupg-1.2.0.tar.bz2
$ tar -xjf gnupg-1.2.0.tar.bz2
$ cd gnupg-1.2.0/
$ ./configure
$ make
新しくビルドしたgpgバイナリが含まれているg10フォルダーに移動します。
$ cd g10
このバイナリを使用するには、システム全体の最新のgpgビルドの代わりに、バイナリへの絶対パスを入力する必要があります。同じフォルダにいる場合は、。/ gpgを使用します。次に例を示します。
$ ./gpg --list-keys
キーバインド署名はチェックアウトされないため、キーを通常の方法でインポートしないでください。その結果、インポートされたサブキーは通常の方法でインポートされません。代わりに、ファイルを公開鍵リングと秘密鍵リングの最後に配置してください。
$ cat concatenated_CB577A43.secret >> ~/.gnupg/secring.gpg
$ cat concatenated_CB577A43.public >> ~/.gnupg/pubring.gpg
Gnupg-1.2.0を使用してキーをリストすることにより、それらがそこに入っていることを確認します。
$ ./gpg --list-keys
-----------------
pub 4096R/CB577A43 2013-03-21
uid Master Key
sub 2048R/712A2BBD 2013-01-29
sub 2048R/F0B63FDA 2013-01-29
Gnupg-1.2.0/g10のビルドフォルダーに戻り、ビルドされたバイナリを呼び出して、新しくインポートされ、新しくアセンブルされたマスターキーを編集し、インポートされた古いサブキーを完成させます。
$ ./gpg --edit-keys CB577A43
-----------------
sec 4096R/CB577A43 created: 2013-03-21 expires: never
ssb 2048R/712A2BBD created: 2013-01-29 expires: never
ssb 2048R/F0B63FDA created: 2013-01-29 expires: never
まず、パスワードをリセットします。
Command> passwd
古いキーはすべて、新しいマスターキーとは異なるパスワードを持っている可能性があります。ここでパスワードをリセットすると、古いキーの各パスワード(サブキーIDとともに)が順番に表示され、すべてのキーを正しく入力すると、新しいキーの入力を求められます。これが完了すると、それらはすべて同じパスワードを持ち、後で奇妙なことを避けます。
次に、すべてのキーの有効期限をリセットします。メインマスターキーから始めます。
Command> expiry
次に、各サブキーの有効期限を変更して、各サブキーを操作します。
Command> key 1
Command> expiry
Command> key 1
Command> key 2
Command> expiry
Command> key 2
Command> key 3
等々
まだ変更していない値に変更してください。変更しないと変更されません。後で元の値に戻すことができます。今必要なのは変更なので、gpg-1.2.0は新しいサブキーバインディング署名を作成できます。
これがすべて完了したら、保存します。
Command> save
gnupg-1.2.0は終了して新しいキーバインディング署名を保存し、古いキーの新しいマスターキーへの移行を検証します。
システム全体の標準バージョンのgpgを使用して編集用に同じキーを開き、機能するかどうかを確認します。うまくいった場合、次の2つが表示されます。
。
$ gpg --edit-key CB577A43
--------------------------
pub 4096R/CB577A43 created: 2013-03-21 expires: [newdate] usage: SC
trust: unknown validity: unknown
sub 2048R/712A2BBD created: 2013-01-29 expires: [newdate] usage: SCEA
sub 2048R/F0B63FDA created: 2013-01-29 expires: [newdate] usage: SCEA
機能しなかった場合、使用フラグは空白になり、有効期限には手順9で行った変更が表示されます。
$ gpg --edit-key CB577A43
--------------------------
pub 4096R/CB577A43 created: 2013-03-21 expires: **never** usage: SC
trust: unknown validity: unknown
sub 2048R/712A2BBD created: 2013-01-29 expires: **never** usage:
sub 2048R/F0B63FDA created: 2013-01-29 expires: **never** usage:
最後に、1つのエクスポート/インポートサイクルを経て、その間のキーを削除する必要があります。これが生き残った場合、手順はうまくいきました。
$ gpg --export-secret-keys CB577A43 > CB577A43_new.secret
$ gpg --export CB577A43 > CB577A43_new.public
$ gpg --delete-secret-and-public-keys CB577A43
$ gpg --import CB577A43_new.secret CB577A43_new.public
$ gpg --edit-key CB577A43
--------------------------
pub 4096R/CB577A43 created: 2013-03-21 expires: [newdate] usage: SC
trust: unknown validity: unknown
sub 2048R/712A2BBD created: 2013-01-29 expires: [newdate] usage: SCEA
sub 2048R/F0B63FDA created: 2013-01-29 expires: [newdate] usage: SCEA
それが機能したと仮定すると、サブキーを作成して検証できるように、サブキーを cross certify する必要があります。
$ gpg --edit-key CB577A43
そして、gpg編集プロンプトから:
gpg> cross-certify
また、信頼をリセットする必要があります。
gpg> trust
最後に、キーを厳密にテストし、配布する前に機能することを確認してください。これらの最後の手順については、 atom.smasher.orgチュートリアル を参照します。
すべての有効期限と設定を確認してください。これらの操作の一部により、有効期限と設定が変更された可能性があります。必要に応じてリセットしてください。
署名の作成と検証、および暗号化/復号化のためのすべての主要コンポーネントをテストします。強打(!)を使用して、各(サブ)キーを強制します。署名を作成して確認します。
$ date | gpg -u '712A2BBD!' --clearsign | gpg -v --verify $ date | gpg -u 'F0B63FDA!' --clearsign | gpg -v --verify
暗号化/復号化:
$ date | gpg -ear '712A2BBD!' | gpg -v --decrypt $ date | gpg -ear 'F0B63FDA!' | gpg -v --decrypt
キーをローカルでテストした後、新しい公開キーを1人または2人に送信し、すべてのキーコンポーネントをテストします(すべてのキーコンポーネントを使用して、互いに署名/暗号化されたメッセージを送信します)。彼らが最初に古いキーを(キーリングから)削除することを確認してください!そして、すべての機能が動作することが確認されるまで、キーを循環させないように彼らが理解していることを確認してください!
新しいキーを配布する場合は、古いキーを期限切れにするか、失効させることをお勧めします。新しいキーIDを指定する失効コメントと、キーリングから古いキーを削除する手順を含めます。
キーの失効に関する注意:OpenPGP標準に従って、サブキーが失効キーとして(主キーによって)指定されていない限り、サブキーによって生成された失効は無視されます。 GnuPGは正しく動作しているように見えますが、PGP(tm)の一部のバージョンでは動作しない場合があります。新しいキーが取り消されたと誰かが主張している場合は、キーリングから古いキーと現在のキーをすべて削除し、現在のキーを再インポートします。
GnuPG 2.1から、私が間違っていない限り、これを簡単に開始する方法があります。新しい主キーを作成し、次にその他既存のキーをサブキーとして追加します。
ここに古いキーがあります:
$ gpg2 --with-keygrip -k
<...>
------------------------------------
pub rsa2048 2017-05-31 [SC] [expires: 2019-05-31]
3758BEEEA38377DC66708915C102DFD7B21740B0
Keygrip = 42B4CE6092555D85F6BF93CEE13DC20A0B347048
uid [ultimate] Mr Test
sub rsa2048 2017-05-31 [E]
Keygrip = A5CA49DB1EF812E278340BE6B8590D51F5EF9A2C
まず、完全に新しい主キーを作成します。
$ gpg2 --quick-generate-key 'Mr Test New'
About to create a key for:
"Mr Test New"
Continue? (Y/n) y
<...>
pub rsa2048 2017-05-31 [SC] [expires: 2019-05-31]
4B496C1EF14F63BBA2F7C566AEA5541400F78E93
4B496C1EF14F63BBA2F7C566AEA5541400F78E93
uid Mr Test New
sub rsa2048 2017-05-31 [E]
(簡単にするために--quick-generate-key
を使用しました。もちろん、必要に応じて--generate-key
または--full-generate-key
を使用できます。)
次に、--expert
フラグを使用して新しいキーを編集します。
$ gpg2 --expert --edit-key 4B496C1EF14F63BBA2F7C566AEA5541400F78E93
<...>
sec rsa2048/AEA5541400F78E93
created: 2017-05-31 expires: 2019-05-31 usage: SC
trust: ultimate validity: ultimate
ssb rsa2048/7882EFF25C40792B
created: 2017-05-31 expires: never usage: E
[ultimate] (1). Mr Test New
gpg>
私はaddkey
サブコマンドを使用していますが、--expert
フラグがあるため、キーグリップを使用して既存のキーを追加するオプションが表示されます(この例ではオプション13ですが、数値は変わる可能性があるため、私は安定したエイリアスkeygrip
)を使用することを選択しました:
gpg> addkey
Please select what kind of key you want:
<...>
(13) Existing key
Your selection? keygrip
Enter the keygrip: 42B4CE6092555D85F6BF93CEE13DC20A0B347048
Possible actions for a RSA key: Sign Encrypt Authenticate
Current allowed actions: Sign Encrypt
(S) Toggle the sign capability
(E) Toggle the encrypt capability
(A) Toggle the authenticate capability
(Q) Finished
Your selection? e
Possible actions for a RSA key: Sign Encrypt Authenticate
Current allowed actions: Sign
(S) Toggle the sign capability
(E) Toggle the encrypt capability
(A) Toggle the authenticate capability
(Q) Finished
Your selection? q
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0) 365
Key expires at Thu May 31 10:21:30 2018 MSK
Is this correct? (y/N) y
Really create? (y/N) y
sec rsa2048/AEA5541400F78E93
created: 2017-05-31 expires: 2019-05-31 usage: SC
trust: ultimate validity: ultimate
ssb rsa2048/7882EFF25C40792B
created: 2017-05-31 expires: never usage: E
ssb rsa2048/072D4F8908E1A926
created: 2017-05-31 expires: 2018-05-31 usage: S
[ultimate] (1). Mr Test New
gpg>
(許可されたアクションについて尋ねられたら、常にデフォルトで署名と暗号化を行うため、キー機能を適切に調整します。)
この方法で、古い主キーとそのサブキーをすべて新しいキーに追加できます。そして最後にsave
を忘れないでください。
キーグリップを比較することで、これが実際に同じキーであることを確認できます。
$ gpg2 --with-keygrip -k
<...>
------------------------------------
pub rsa2048 2017-05-31 [SC] [expires: 2019-05-31]
3758BEEEA38377DC66708915C102DFD7B21740B0
Keygrip = 42B4CE6092555D85F6BF93CEE13DC20A0B347048
uid [ultimate] Mr Test
sub rsa2048 2017-05-31 [E]
Keygrip = A5CA49DB1EF812E278340BE6B8590D51F5EF9A2C
pub rsa2048 2017-05-31 [SC] [expires: 2019-05-31]
4B496C1EF14F63BBA2F7C566AEA5541400F78E93
Keygrip = CB90DD9613FC321B2E609D8ECB219657A6AFCFDD
uid [ultimate] Mr Test New
sub rsa2048 2017-05-31 [E]
Keygrip = D0E14A5E1CD161CF2F18F9EBA53AB2EF12705679
sub rsa2048 2017-05-31 [S] [expires: 2018-05-31]
Keygrip = 42B4CE6092555D85F6BF93CEE13DC20A0B347048
残念ながら、最良のオプションは、キーを取り消し、必要なサブキーで新しいキーを作成し、それをキーサーバーにアップロードすることです。私は数年前にこの分割と統合を試みましたが、あなたと同じような問題に遭遇しました。私は結局それがなぜ機能しないかを示す優れた記事に出くわしましたが、私はそれを見つけることができないようです。リンクを投稿します。
これは、キーサーバーからサブキーを削除するだけの問題である可能性があります。署名をインポートしようとすると、キーの種類を元の値に上書きしていると思います。
統合されたキーに期待した署名がない場合は、分割するキーに含まれていることを確認し、再構築時に正しく追加されるようにする必要があります。あなたがそれらを連結しているとき、それはおそらく注文の問題ですか?または、再構成されたときにサブキーに署名するマスターの署名がない(sigタイプ0x18:サブキーバインディングsig)?
最終的な製品の外観と同じように、3つのサブキーを持つ新しいマスターキーを作成し、それをダンプまたは分割して、その構造を確認し、最後に、すべてのサブキーと同じ順序でサブキーを持つ元のマスターキーを組み立てることをお勧めします同じ作品。いくつかの署名タイプを作成する必要がある場合があるため、pgpdumpの署名タイプに注意してください。 gpg --edit-keyを使用すると、キーのシグを確認できます。
次に、更新したキーをサーバーにプッシュしてから、再度ダウンロードを試みます。
編集:私が追加する必要があるのは、復元しようとしているサブキーの署名のいずれかが他のサブキーのものである場合、それらは新しいコンテキストでは意味をなさないため、おそらく省略すべきです。実際、サブキーが通常まったく署名されているか、またはマスターキーのみが通常署名されているかどうかを確認します。
徹底的なウォークスルーのためのbreakingbitsのおかげで。失われた/壊れた使用フラグは、新しいselfsigで修正できます。私の調査では、この件に関してgnupg-usersにいくつかの投稿が示され、すべて本質的に「サポートされていませんが、コードは編集できます」と述べています。別のスレッドによって引用されたある投稿は、コードソリューションの大まかなスケッチを提供しましたが、実際には機能しません。 (これは (*p) &= ~2
役職;最近のgnupg-1.4では、少なくとも、ローカルgpgがキーを解析して、使用フラグを変更したかのように見えますが、実際にはキーマテリアルは変更されず、他の誰かのgpgでは機能しません。結局。)
私は現存する解決策を見つけられなかったので、私はgnupg-1.4へのパッチを書いて、-edit-keyでほぼ任意の使用フラグ編集を許可することによって使用フラグを本当に修正しました。有効期限を変更する必要はありません。これは、セルフシグアップデートを強制するための一般的なトリックです。興味がある場合は、ここで見つけることができます: https://github.com/xdgc/gnupg/tree/dgc/usage-1-4 。