GPGエージェントはパスワードをどこに保存しますか?回復する必要があります。

GPGエージェントはパスワードをどこに保存しますか?回復する必要があります。

GPGキーのパスワードを忘れました。

パスワードなしで文字列を復号化するためにコンピュータを使用するので、私のコンピュータはその情報をどこかに保存することを知っています。たとえば、次のようになります。

$ gpg --decrypt -r [email protected] ~/.password-store/gmail.gpg 
You need a passphrase to unlock the secret key for
user: "Example <[email protected]>"
2048-bit RSA key, ID 02BFF027, created 2014-10-04 (main key ID 410A4C4A)
gpg: NOTE: secret key 02BFF027 expired at Thu  4 Oct 17:30:49 2018 EDT
gpg: encrypted with 2048-bit RSA key, ID 02BFF027, created 2014-10-04
      "Example <[email protected]>"
princess

上記の出力は ~/.password-store/gmail.gpg を正常に復号化します。私のキーが期限切れになったことを知り、パスワードが必要であることを知っていますが、どういうわけか文字列を復号化します(私のパスワードは「princess」ではありません)。 、これは説明目的でのみ使用されます。

GPGエージェントがパスワードをgpgに渡すために使用されるとします。

次のことができますか?

gpg-agent --display-passphrase 02BFF027

答え1

パスワードそのものはいいえどこにでも保存されるので表示できません。

それにもかかわらず、復号化プロセスは、入力された暗号化フレーズとキーリングから読み取られたソルトの接続にセキュリティハッシュアルゴリズムを繰り返し適用することによって発生します。
この(コンピューティング集約型)プロセスは、キーリングを復号化するためにマスターキーを返します。
パスワードが正しい場合は、メールメッセージを復号化するために使用されるキーを含むキーリングを復号化できます。
パスワードが間違っていると、確認できない誤ったマスターキーが得られ、エラーメッセージが表示されます(暗号化キーがキーリングから抽出されなかったため、メールメッセージを復号化できません)。

答え2

ウィキペディア:

歴史的に、パスワードはシステムにプレーンテキストで保存されていますが、時間が経つにつれてシステムがユーザーのパスワードを読み取らないようにする追加の保護機能が開発されました。塩はそのような方法の一つです。各パスワードに対してランダムに新しいソルトを作成し、暗号化ハッシュ関数を使用してそれらを接続して処理し、生成された出力(元のパスワードではない)をソルトと共にデータベースに保存します。

ハッシュ値は元に戻せません。したがって、ハッシュからパスワードを簡単に回復することはできません。ハッシュはキーの復号化に使用され、キーはファイル/メッセージの復号化に使用されます。

関連情報