gpgサブキーに異なるパスフレーズを設定する方法は?


16

展開プロセスを自動化する必要があり、ツールはリリースアーティファクトに自動的に署名します。私のキーリングには、サブキーの作成にのみ使用するプライマリキーと、2つのサブキーがあります。署名用と暗号化用の1つのサブキー。

現在、すべてのキーに単一のパスフレーズがあります。このパスフレーズを構成ファイルに指定したくないのは、主キーも危険にさらすからです。

だから、サブキーに別のパスフレーズを設定すると思った:

$ gpg --edit-key [subkey-id]
gpg> passwd
gpg> save

しかし、これにより他のキーのパスフレーズも変更されました。

個々のキーに個別のパスフレーズを設定するにはどうすればよいですか?

回答:


14

GnuPGでは、サブキーに個別のパスフレーズを設定することはできません。しかし、回避策があります。この場合、良い実践のアイデアのようにも見えます。

  1. 選択したサブキーをエクスポートします(この例では、サブキーはIDを持っています0xDEADBEEF)。感嘆符を忘れないでください、GnuPGが実際にサブキー自体で動作し、所属する主キーでは動作しないことを確認してください!

    gpg --export-secret-subkeys 0xDEADBEEF! >subkeys.pgp
    

    サブキーには公開プライマリキーとプライベートプライマリ「キースタブ」が添付されますが、プライベートプライマリキー自体は添付されません。

  2. サブキーを別のGnuPGホームディレクトリにインポートします。この例では、プロジェクトのルートディレクトリにいて、etcそこにこのキーリングなどのフォルダがあることを想定しています。

    gpg --homedir ./etc/gnupg --import subkeys.pgp
    
  3. 分離されたサブキーのパスフレーズを変更します。

    gpg --homedir ./etc/gnupg --edit-key 0xDEADBEEF
    
  4. 「通常の」キーリングを使用する代わりに、上記のように常に個別のGnuPGディレクトリを参照してください。

別の方法として、独自のキーで署名するプロジェクトキーの作成を検討することもできます。これには、他の貢献者/ユーザーもキーに署名できるという利点があります(したがって、これが実際にプロジェクトで使用されるキーであることを証明します)。


1
これはGnuPG 2.2.4では機能しません。「これを行うには秘密鍵が必要です」と言って失敗します。とても悲しい: '(
steinybot

したがって、自動レポ署名にパスワードなしのgpgキーを使用する必要がありますか?
SuperSandro2000

いいえ、を使用してパスフレーズを事前にキャッシュすることもできますgpg-agent。をご覧くださいgpg-preset-passphrase
イェンスERAT

5

非常に古い(2013)gnupg.orgメールアーカイブは、サブキーに個別のパスワードを作成するための厄介な回避策を説明しています
これは、制約がキーセットのデータ構造(つまり、マスターサブキーグループ)内ではなく、キーセットを構築および変更するためのソフトウェアインターフェイス内にあることを意味します。

リファレンスからの引用:

こんにちは、

マスターキーと、マスターキーとは異なる(たとえば短い)パスフレーズを持つサブキーを持つ複数のサブキーを持つことは可能ですか?

おそらく探しているのはオフラインのメインキーです(--export-secret-サブキーを参照)。しかし、答えは「はい」です。gpg-agentはキーの接続を気にしません。同じパスフレーズを何度も(同じキーの異なるコンポーネントに対して)要求します。

しかし、GnuPGはこれを直接サポートしていません。

1)秘密鍵をエクスポートします(--export-secret-keys without --armor)

2)パスフレーズを変更する

3)再度エクスポート(もちろん、別のファイルに)

4)両方のファイル(異なるディレクトリ)でgpgsplitを使用します。結果は次のようになります。

000001-005.secret_key 000002-013.user_id 000003-002.sig 000004-007.secret_subkey 000005-002.sig

5)2つのグループのコンポーネントを混合します:mkdir結合mv a / 000001 * a / 000002 * a / 000003 *結合/ mv b / 000004 * b / 000005 *結合/ cd結合/ cat *> different_passphrases.gpg

6)secringからキーを削除します:--delete-secret-key

7)新しいものをインポートします:gpg --import different_passphrases.gpg

ハウケ・レイジング

私はこの操作を個人的に確認していません-読んだものを報告するだけです。

この重要なトピックに関するGnuPGドキュメントの仕様と議論の欠如は残念です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.