Apakah mereka dienkripsi dalam disk? Bagaimana? Apakah mereka aman, misalnya, dalam hal seseorang boot dari Live CD dan memasang hard disk?
Bagaimana kunci enkripsi dihasilkan? Apakah berbeda di Windows dan Linux?
Apakah mereka dienkripsi dalam disk? Bagaimana? Apakah mereka aman, misalnya, dalam hal seseorang boot dari Live CD dan memasang hard disk?
Bagaimana kunci enkripsi dihasilkan? Apakah berbeda di Windows dan Linux?
Jawaban:
Anda sepertinya penasaran khususnya tentang kunci yang digunakan untuk mengenkripsi kata sandi di Chrome.
Jawabannya adalah:
Setiap kata sandi dienkripsi dengan kunci acak yang berbeda.
Dan kemudian kata sandi terenkripsi disimpan dalam file database SQLite:
%LocalAppData%\Google\Chrome\User Data\Default\Login Data
Anda dapat menggunakan sesuatu seperti SQLite Database Browser atau SQLite Maestro untuk melihatnya. Berikut cuplikan dari Login Data
file saya :
origin_url username_value password_value
======================================== ============== ========================
http://thepiratebay.org/register JolineBlomqvist@example.com 01000000D08C9DDF0115D1118C7A00C04FC297EB01000000BB0E1F4548ADC84A82EC0873552BCB460000000002000000000003660000C0000000100000006811169334524F33D880DE0C842B9BBB0000000004800000A00000001000000043C8E23979F5CC5499D73610B969A92A08000000EE07953DEC9F7CA01400000098B5F0F01E35B0DC6BBAFC53A9B1254AC999F4FA
Anda akan melihat kata sandi adalah gumpalan data terenkripsi. Algoritma perkiraan untuk mengenkripsi kata sandi baru adalah:
Dan Chrome menyimpan gumpalan itu ke basis data SQLite-nya.
Tetapi untuk menjawab pertanyaan Anda: Dari mana kunci enkripsi itu berasal?
Setiap kata sandi dienkripsi dengan kunci acak yang berbeda
Tentu saja saya mengabaikan detail teknisnya. Chrome tidak mengenkripsi kata sandi Anda sendiri. Chrome tidak memiliki kunci master yang digunakan untuk mengenkripsi apa pun. Chrome tidak melakukan enkripsi. Windows melakukannya.
Ada fungsi Windows CryptProtectData
,, yang digunakan untuk mengenkripsi data sewenang-wenang yang Anda suka. Rincian panggilan itu kurang penting. Tetapi jika saya menciptakan bahasa pseudo yang agak dapat diuraikan seperti bahasa pemrograman apa pun, Chrome memanggil:
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
Jadi kata sandinya:
correct battery horse staple
01000000D08C9DDF0115D1118C7A00C04FC297EB01000000BB0E1F4548ADC84A82EC0873552BCB460000000002000000000003660000C0000000100000006811169334524F33D880DE0C842B9BBB0000000004800000A00000001000000043C8E23979F5CC5499D73610B969A92A08000000EE07953DEC9F7CA01400000098B5F0F01E35B0DC6BBAFC53A9B1254AC999F4FA
Anda akan melihat bahwa saya tidak pernah perlu memberikan kata sandi. Itu karena Windows menangani semua itu. Pada akhirnya:
Jadi satu-satunya cara bagi seseorang untuk mengetahui kata sandi Anda adalah jika mereka tahu kata sandi Anda.
%LocalAppData%\Google\Chrome\User Data\Default\Login Data
Kata sandi dienkripsi dan disimpan dalam database SQLite:
Bagian penting di sini adalah
CryptProtectData
, yang merupakan fungsi Windows API untuk mengenkripsi data. Data yang dienkripsi dengan fungsi ini cukup solid. Itu hanya dapat didekripsi pada mesin yang sama dan oleh pengguna yang sama yang mengenkripsi itu di tempat pertama.
CryptProtectData
gunakan kredensial Windows Anda (bukan kata sandi, tetapi beberapa data lainnya) sebagai kuncinya. AFAIK, itu adalah fungsi yang sama yang digunakan untuk melindungi sertifikat Anda, kredensial jaringan dan semua hal itu.
Encryptor::EncryptString
tidak melakukan apa-apa . Tampaknya ada kode untuk menggunakan GNOME Keyring dan KDE Wallet.
Mereka "dienkripsi" tetapi itu adalah enkripsi yang dapat dibalik. Chrome harus mengirim kata sandi mentah ke situs tempat penyimpanannya, jadi jika Chrome dapat mendekripsi dan menggunakannya, demikian juga orang lain. Menyimpan kata sandi tidak pernah 100% aman.
CryptProtectData
adalah Windows API, Windows benar-benar melakukan semua enkripsi dan pengambilan, kunci enkripsi tergantung pada akun dan sistem pengguna Anda.
Google Chrome mengenkripsi kata sandi dan menyimpannya dalam SQLite DB tetapi dapat dengan mudah dilihat dengan aplikasi pemulihan kata sandi khusus seperti ChromePass ( http://www.nirsoft.net/utils/chromepass.html ) atau SecurePassword Kit ( http: // www.getsecurepassword.com/ )
Di Mac, setara dengan fungsi CryptProtectData di Windows adalah untuk mengakses kata sandi untuk "Penyimpanan Aman Chrome" di Keychain OS X.