ディスクで暗号化されていますか?どうやって?たとえば、誰かがLive CDから起動してハードディスクをマウントした場合に安全ですか?
暗号化キーはどのように生成されますか?WindowsとLinuxで違いはありますか?
ディスクで暗号化されていますか?どうやって?たとえば、誰かがLive CDから起動してハードディスクをマウントした場合に安全ですか?
暗号化キーはどのように生成されますか?WindowsとLinuxで違いはありますか?
回答:
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
パスワードは暗号化されたデータの塊であることがわかります。新しいパスワードを暗号化するおおよそのアルゴリズムは次のとおりです。
そして、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がすべてを処理するためです。最終的には:
だから、誰かがあなたのパスワードを知る唯一の方法は、彼らがあなたのパスワードを知っていることです。
%LocalAppData%\Google\Chrome\User Data\Default\Login Data
パスワードは暗号化され、SQLiteデータベースに保存されます。
ここで重要な部分は
CryptProtectData
、データを暗号化するためのWindows API関数です。この関数で暗号化されたデータはかなり強固です。暗号化を解除できるのは、同じマシン上で、最初に暗号化した同じユーザーのみです。
CryptProtectData
では、Windowsの資格情報(パスワードではなく、他のデータ)をキーとして使用します。私の知る限り、それはあなたの証明書、ネットワーク認証情報、その他すべてのものを保護するために使用されるのと同じ機能です。
それらは「暗号化」されていますが、可逆暗号化です。Chromeは、保存されたサイトに未加工のパスワードを送信する必要があるため、Chromeがそれを解読して使用できる場合、他のユーザーもパスワードを使用できます。パスワードを保存することは決して100%安全ではありません。
CryptProtectData
はWindows APIで、Windowsは実際にすべての暗号化と取得を行い、暗号化キーはユーザーアカウントとシステムに依存します。
Google Chromeはパスワードを暗号化してSQLite DBに保存しますが、ChromePass(http://www.nirsoft.net/utils/chromepass.html)やSecurePassword Kit(http:// www.getsecurepassword.com/)