web-dev-qa-db-ja.com

GPGの秘密鍵のパスフレーズを正しく変更するにはどうすればよいですか?

GPGの秘密鍵のパスフレーズを変更しようとしています。

私は実際にタツノオトシゴを使用して変更しました(gpg --edit-keyspasswdも試しましたが、秘密鍵をエクスポートしようとすると、2つのパスフレーズ(新旧両方)が要求され、古いパスフレーズが使用されますサブシークレットキー用。

今、私は2つの複雑なパスワードを覚えておく必要があります!

GPGの秘密鍵のパスフレーズを変更する正しい方法は何ですか?

2
FooBar

GPG 2.1以降の場合、秘密鍵は~/.gnupg/private-keys-v1.dに保存されます。サブキーを含む各鍵は、キーのキーグリップをファイル名として使用して、個別のファイルとして保存されます。

<keygrip>.key

gpg --edit-keyを使用してパスフレーズを変更すると、すべてのサブキーが秘密キーディレクトリで変更されます。

ただし、seahorseはメインキーの秘密キーファイルのみを変更しているようです。

したがって、これはseahorseのバグのようです。これは、公開鍵と同じように秘密鍵をキーリング構造に格納していた以前のgpgバージョンからの回帰である可能性があります。この動作はバージョン2.1以降で変更されました。

タツノオトシゴがメインキーの秘密キーファイルのみを変更することを示す、テストキーを使用した単純なテスト結果。

3つのサブキーを持つテストキー

pub   ed25519 2018-12-24 [SC]
      988D29CB7CA9D62252B22DEFB42E56952F9FB61C
      Keygrip = 8226D19110BAC4FB4D60BC25869E5F23C1BB667F
uid           [ultimate] delete me (Delete Me) <[email protected]>
sub   cv25519 2018-12-24 [E]
      Keygrip = 04B4D2C5CC29926F48DA2C4FD24F03B9595AE51C
sub   ed25519 2019-03-25 [SA]
      Keygrip = 269995721854253C5F8B48CB40DD24948D580F8C
sub   ed25519 2019-03-25 [SA]
      Keygrip = 604E0E8F9D9C2B19A823E22A90F08EC2DDCA80BB

パスフレーズがseahorseで変更されました

-rw------- 1 user user  333 Mar 25 09:27 8226D19110BAC4FB4D60BC25869E5F23C1BB667F.key
-rw------- 1 user user  333 Mar 25 09:08 604E0E8F9D9C2B19A823E22A90F08EC2DDCA80BB.key
-rw------- 1 user user  333 Mar 25 09:08 269995721854253C5F8B48CB40DD24948D580F8C.key
-rw------- 1 user user  341 Mar 25 09:08 04B4D2C5CC29926F48DA2C4FD24F03B9595AE51C.key

パスフレーズがgpg --edit-keyで変更されました

-rw------- 1 user user  333 Mar 25 09:37 604E0E8F9D9C2B19A823E22A90F08EC2DDCA80BB.key
-rw------- 1 user user  333 Mar 25 09:37 269995721854253C5F8B48CB40DD24948D580F8C.key
-rw------- 1 user user  341 Mar 25 09:37 04B4D2C5CC29926F48DA2C4FD24F03B9595AE51C.key
-rw------- 1 user user  333 Mar 25 09:37 8226D19110BAC4FB4D60BC25869E5F23C1BB667F.key

タツノオトシゴのソースコードチェック

タツノオトシゴのソースコードのいくつかを確認した後、動作は古いシークレットキーリングgpgメソッドと一致しているようです。

gpgmeのドキュメントによると、パスフレーズは gpgme gpgme_op_passwd関数呼び出し を使用して変更する必要があります。ただし、この関数呼び出しはタツノオトシゴのソースコードには表示されません。

3
RubberStamp

タツノオトシゴ(別名GNOMEパスワードとキー)のメンテナーはこちら。

評判が十分でないため、ここでRubberStampの回答にコメントすることはできませんが、Seahorse 使用を開始gpgme_op_passwd(またはその非同期バリアントgpgme_op_passwd_start)Seahorse3.32で。

コードはそれよりも早く(検証済みの回答の約1か月前に)すでにマスターに含まれていましたが、リリースは3月12日からでした。ディストリビューションに含まれているバージョンに応じて、このはすでに修正されているはずです。そうでない場合は、お気軽に 問題を提出してください :-)。

3
nielsdg