Mozilla FirefoxにWebサイトのログイン詳細を記憶するように要求すると、認証情報はLogins.json
のプロファイルディレクトリに保存されます。
プレーンテキストの値を保存する代わりに、ユーザー名とパスワードは暗号化されます(Mozillaの [〜#〜] nss [〜#〜] ライブラリに実装されているPKCS#11 APIを使用)。ただし、それらを復号化するために必要なキーは、プロファイルディレクトリ( Key3.db
)にも保存されます。したがって、そのディレクトリを取得した攻撃者は、保存されたパスワードを抽出することもできます(つまり、所有者がマスターパスワードを設定していない場合)。
これは私を不思議に思いました:キーが近くに格納されているときにデフォルトでLogins.json
のパスワードを暗号化する動機は何でしたか?この現実的なシナリオで、この設計決定により攻撃が複雑になる可能性はありますか?
それはおそらく実装を単純化することです。マスターパスワードが設定されているかどうかに応じてキーストアが暗号化されるかどうかにかかわらず、コードは常に暗号化されます。
これにより、マスターパスワードが有効になっているときに暗号化を忘れたコードパスが見過ごされる可能性が低くなります。
その理由は、保存されているパスワードを難読化するためであり、Firefoxの「ウェブサイトのパスワードを記憶する」機能は常にマスターキーで使用されることになっていると思います。