พวกเขาเข้ารหัสในดิสก์หรือไม่ อย่างไร? ตัวอย่างเช่นพวกเขาปลอดภัยหรือไม่ในกรณีที่มีคนกำลังบูทจาก Live CD และติดตั้งฮาร์ดดิสก์
คีย์การเข้ารหัสสร้างขึ้นได้อย่างไร? Windows และ Linux แตกต่างกันหรือไม่?
พวกเขาเข้ารหัสในดิสก์หรือไม่ อย่างไร? ตัวอย่างเช่นพวกเขาปลอดภัยหรือไม่ในกรณีที่มีคนกำลังบูทจาก Live CD และติดตั้งฮาร์ดดิสก์
คีย์การเข้ารหัสสร้างขึ้นได้อย่างไร? Windows และ Linux แตกต่างกันหรือไม่?
คำตอบ:
คุณดูเหมือนจะสงสัยโดยเฉพาะเกี่ยวกับคีย์ที่ใช้ในการเข้ารหัสรหัสผ่านใน Chrome
คำตอบคือ:
รหัสผ่านทุกรหัสจะถูกเข้ารหัสด้วยรหัสสุ่มที่แตกต่างกัน
จากนั้นรหัสผ่านที่เข้ารหัสจะถูกเก็บไว้ในไฟล์ฐานข้อมูล SQLite:
%LocalAppData%\Google\Chrome\User Data\Default\Login Data
คุณสามารถใช้เบราว์เซอร์ฐานข้อมูลSQLiteหรือSQLite Maestroเพื่อดูได้ นี่เป็นตัวอย่างจากLogin Data
ไฟล์ของฉัน:
origin_url username_value password_value
======================================== ============== ========================
http://thepiratebay.org/register JolineBlomqvist@example.com 01000000D08C9DDF0115D1118C7A00C04FC297EB01000000BB0E1F4548ADC84A82EC0873552BCB460000000002000000000003660000C0000000100000006811169334524F33D880DE0C842B9BBB0000000004800000A00000001000000043C8E23979F5CC5499D73610B969A92A08000000EE07953DEC9F7CA01400000098B5F0F01E35B0DC6BBAFC53A9B1254AC999F4FA
คุณจะสังเกตเห็นว่ารหัสผ่านเป็นหยดข้อมูลที่เข้ารหัส อัลกอริทึมโดยประมาณเพื่อเข้ารหัสรหัสผ่านใหม่คือ:
และ Chrome จะบันทึกหยดนั้นลงในฐานข้อมูล 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 ดูแลทุกอย่าง ในที่สุด:
ดังนั้นวิธีเดียวที่ใครบางคนจะรู้รหัสผ่านของคุณคือถ้าพวกเขารู้รหัสผ่านของคุณ
%LocalAppData%\Google\Chrome\User Data\Default\Login Data
รหัสผ่านจะถูกเข้ารหัสและเก็บไว้ในฐานข้อมูล SQLite:
ส่วนที่สำคัญคือที่นี่เป็น
CryptProtectData
ฟังก์ชัน Windows API สำหรับการเข้ารหัสข้อมูล ข้อมูลที่เข้ารหัสด้วยฟังก์ชั่นนี้ค่อนข้างแข็งแกร่ง สามารถถอดรหัสได้ในเครื่องเดียวกันและโดยผู้ใช้รายเดียวกันที่เข้ารหัสไว้ตั้งแต่แรก
CryptProtectData
ใช้ข้อมูลรับรอง Windows ของคุณ (ไม่ใช่รหัสผ่าน แต่เป็นข้อมูลอื่น ๆ ) เป็นคีย์ AFAIK เป็นฟังก์ชั่นเดียวกับที่ใช้ในการปกป้องใบรับรองข้อมูลรับรองเครือข่ายและทุกสิ่ง
Encryptor::EncryptString
ดูเหมือนว่าจะมีรหัสสำหรับการใช้ GNOME Keyring และ KDE Wallet
มันคือ "เข้ารหัส" แต่เป็นการเข้ารหัสแบบย้อนกลับได้ 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/ )
สำหรับ Mac นั้นเทียบเท่ากับฟังก์ชั่น CryptProtectData ใน Windows คือการเข้าถึงรหัสผ่านสำหรับ "Chrome Safe Storage" ใน Keychain X ของ Keychain