web-dev-qa-db-ja.com

Google Chrome=パスワードを保存する方法は?

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

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

28
Óscar

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

答えは:

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

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

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

SQLite Database Browser または SQLite Maestro のようなものを使用して表示できます。これが私のLogin Dataファイルのスニペットです。

Origin_url                                username_value               password_value
========================================  ==============               ========================
http://thepiratebay.org/register          [email protected]  01000000D08C9DDF0115D1118C7A00C04FC297EB01000000BB0E1F4548ADC84A82EC0873552BCB460000000002000000000003660000C0000000100000006811169334524F33D880DE0C842B9BBB0000000004800000A00000001000000043C8E23979F5CC5499D73610B969A92A08000000EE07953DEC9F7CA01400000098B5F0F01E35B0DC6BBAFC53A9B1254AC999F4FA

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

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

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

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

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

技術的な詳細

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

Windows関数 CryptProtectData があり、任意の任意のデータを暗号化するために使用されます。呼び出しの詳細はそれほど重要ではありません。しかし、プログラミング言語としてある程度解読できる疑似言語を発明した場合、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パスワードで暗号化されています

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

25
Ian Boyd

パスワード 暗号化されています であり、SQLiteデータベースに保存されています。

ここで重要なのはCryptProtectDataです。これは、データを暗号化するためのWindows API関数です。この関数で暗号化されたデータはかなりしっかりしています。それは、最初にそれを暗号化した同じマシン上で同じユーザーによってのみ復号化できます。

8
sblair

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

4
BloodPhilia

Google Chromeパスワードは暗号化され、SQLite DBに保存されますが、ChromePassなどの特別なパスワード回復アプリケーション( http://www.nirsoft.net/utils /chromepass.html )またはSecurePassword Kit( http://www.getsecurepassword.com/

2
Abricos

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

1
Fazal Majid