Google Chromeはパスワードをどのように保存しますか?


28

ディスクで暗号化されていますか?どうやって?たとえば、誰かがLive CDから起動してハードディスクをマウントした場合に安全ですか?

暗号化キーはどのように生成されますか?WindowsとLinuxで違いはありますか?


注意Googleはマスターパスワードを実装することを拒否し、それは誤った安心感を作成しますので、(Firefoxを持っているとして)、およびのようなツールがあるChromepass。パスワードデータベースを復号化することができ、ユーザーがログインしている提供
ダンDascalescu

回答:


25

Chromeでパスワードを暗号化するために使用されるキーに特に興味があるようです。

答えは:

すべてのパスワードは、異なるランダムキーで暗号化されます。

そして、暗号化されたパスワードはSQLiteデータベースファイルに保存されます。

%LocalAppData%\Google\Chrome\User Data\Default\Login Data

あなたのような何かを使用することができたSQLiteデータベースブラウザSQLiteのマエストロを、それを表示します。これが私のLogin Dataファイルからの抜粋です:

origin_url                                username_value               password_value
========================================  ==============               ========================
http://thepiratebay.org/register          JolineBlomqvist@example.com  01000000D08C9DDF0115D1118C7A00C04FC297EB01000000BB0E1F4548ADC84A82EC0873552BCB460000000002000000000003660000C0000000100000006811169334524F33D880DE0C842B9BBB0000000004800000A00000001000000043C8E23979F5CC5499D73610B969A92A08000000EE07953DEC9F7CA01400000098B5F0F01E35B0DC6BBAFC53A9B1254AC999F4FA

パスワードは暗号化されたデータの塊であることがわかります。新しいパスワードを暗号化するおおよそのアルゴリズムは次のとおりです。

  • 新しいランダムセッションキーを生成する
  • セッションキーでパスワードを暗号化する
  • セッションキーをユーザーのRSA公開キーで暗号化する
  • 暗号化されたデータのメッセージ認証コード(HMAC)を生成します
  • 暗号化されたセッションキー、暗号化されたパスワード、およびMACを連結します

そして、ChromeはそのblobをSQLiteデータベースに保存します。

しかし、あなたの質問に答えるために:暗号化キーはどこから来たのでしょうか?

各パスワードは、異なるランダムに生成されたキーで暗号化されます

技術的な詳細

もちろん、技術的な詳細は省略しました。Chromeはパスワード自体を暗号化しません。Chromeには、暗号化に使用されるマスターキーはありません。Chromeは暗号化を行いません。Windowsが行います。

CryptProtectDataあなたが好きな任意のデータを暗号化するために使用されるWindows関数があります。呼び出しの詳細はそれほど重要ではありません。しかし、プログラミング言語として解読可能な疑似言語を発明した場合、Chromeは以下を呼び出します。

CryptProtectData(
      { cbData: 28, pbData: "correct battery horse staple" },
      "The password for superuser.com and all the glee therein",
      null, //optional entropy
      null, //reserved
      null, //prompt options
      0, //flags
      { cbData:   pbData:  }); //where the encrypted data will go

したがって、パスワード:

  • 平文correct battery horse staple
  • 暗号化された01000000D08C9DDF0115D1118C7A00C04FC297EB01000000BB0E1F4548ADC84A82EC0873552BCB460000000002000000000003660000C0000000100000006811169334524F33D880DE0C842B9BBB0000000004800000A00000001000000043C8E23979F5CC5499D73610B969A92A08000000EE07953DEC9F7CA01400000098B5F0F01E35B0DC6BBAFC53A9B1254AC999F4FA

パスワードを入力する必要がないことに気づくでしょう。これは、Windowsがすべてを処理するためです。最終的には:

  • パスワードを暗号化するためにランダムなパスワードが生成されます
  • そのパスワードはランダムなパスワードで暗号化されています
  • そのパスワードはWindowsパスワードで暗号化されています

だから、誰かがあなたのパスワードを知る唯一の方法は、彼らがあなたのパスワードを知っていることです。


それでは、クロムはどのようにしてキーを使用して、保存されたパスワードを解読するためにそれを使用できるようにするのでしょうか?
ブルノアイ

1
@brunoais Chromeは、パスワードの暗号化に使用されるキーを認識しません。Chromeはそれらを解読しません-Windowsは解読します。
イアン・ボイド

ああ、わかった。悪意のあるプログラムがコンピューターに侵入した場合、そのプログラムはパスワードを完全に利用できますよね?
ブルノアイ

1
@brunoaisパスワードを入力した場合のみ。残念ながら、これは暗号化の基本的な制限です。データが復号化されると、復号化されます。
イアン・ボイド

ありがとう。Chromeはパスワードの記憶を停止し(パスワードを保存するように申し出ましたが、パスワードを思い出すことはありませんでした)、パスワードデータベースが破損していると考えました。削除することで解決%LocalAppData%\Google\Chrome\User Data\Default\Login Data
大佐パニック

8

パスワードは暗号化され、SQLiteデータベースに保存されます。

ここで重要な部分はCryptProtectData、データを暗号化するためのWindows API関数です。この関数で暗号化されたデータはかなり強固です。暗号化を解除できるのは、同じマシン上で、最初に暗号化した同じユーザーのみです。


しかし、暗号化キーはどのように生成されますか?これに応じて、このスキームは多かれ少なかれ安全だと思います。Linuxはどうですか?
オスカー

@Óscar:Windows CryptProtectDataでは、Windowsの資格情報(パスワードではなく、他のデータ)をキーとして使用します。私の知る限り、それはあなたの証明書、ネットワーク認証情報、その他すべてのものを保護するために使用されるのと同じ機能です。
荒廃

3
@Óscar:Linuxでは、Encryptor::EncryptString 何もしません。GNOME KeyringとKDE Walletを使用するためのコードがあるようです。
-grawity

正しい。Linuxでは、代わりにKDE Wallet、GNOME Keyring、またはサポートされている他のネイティブパスワードストア(私は忘れてしまいます)が使用されます。
マイケルハンプトン

1
だから...あなたがすでにログインしていてあなたのように実行されている場合、基本的にあなたのクロムパスワードを覗き見る別のアプリを持つことが可能だと思われますか?
rogerdpack

4

それらは「暗号化」されていますが、可逆暗号化です。Chromeは、保存されたサイトに未加工のパスワードを送信する必要があるため、Chromeがそれを解読して使用できる場合、他のユーザーもパスワードを使用できます。パスワードを保存することは決して100%安全ではありません。


しかし、暗号化キーはどれですか?
オスカー

2
sblairの答えを確認してください。どのように保存されても、復号化の可能性があることに注意してください。適切なソフトウェアがあれば、誰でも解読できます。ログアウトするまでWindowsアカウントにログインすると、パスワードは完全に使用可能になり、完全に表示可能になります。ブラウザのパスワードを保存する100%安全なソリューションがないことを示すだけです。
ブラッドフィリア

1
いいえ。ただし、お使いのコンピューターがハイジャック/感染した場合、気付かずにブラウザーのパスワードを簡単に回復できます。繰り返しになりますが、私が指摘しているのは、ブラウザ用の100%フェイルプルーフパスワードストレージがないということです...安全性についての質問に答えるだけです。
ブラッドフィリア

1
「マスターパスワード」はありません。CryptProtectDataはWindows APIで、Windowsは実際にすべての暗号化と取得を行い、暗号化キーはユーザーアカウントとシステムに依存します。
ブラッドフィリア

1
これは、その仕組みの説明を提供する必要がありますmsdn.microsoft.com/en-us/library/ms995355.aspx
BloodPhilia


1

Macでは、WindowsのCryptProtectData機能に相当するのは、OS Xのキーチェーンの「Chrome Safe Storage」のパスワードにアクセスすることです。

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