Chúng được mã hóa trong đĩa? Làm sao? Chúng có an toàn không, ví dụ, trong trường hợp ai đó khởi động từ Live CD và gắn đĩa cứng?
Khóa mã hóa được tạo như thế nào? Có khác gì trong Windows và Linux không?
Chúng được mã hóa trong đĩa? Làm sao? Chúng có an toàn không, ví dụ, trong trường hợp ai đó khởi động từ Live CD và gắn đĩa cứng?
Khóa mã hóa được tạo như thế nào? Có khác gì trong Windows và Linux không?
Câu trả lời:
Bạn có vẻ tò mò cụ thể về khóa được sử dụng để mã hóa mật khẩu trong Chrome.
Câu trả lời là:
Mỗi mật khẩu được mã hóa bằng một khóa ngẫu nhiên khác nhau.
Và sau đó mật khẩu được mã hóa được lưu trữ trong tệp cơ sở dữ liệu SQLite:
%LocalAppData%\Google\Chrome\User Data\Default\Login Data
Bạn có thể sử dụng một cái gì đó như Trình duyệt cơ sở dữ liệu SQLite hoặc SQLite Maestro để xem nó. Đây là một đoạn trong Login Data
tệp của tôi :
origin_url username_value password_value
======================================== ============== ========================
http://thepiratebay.org/register JolineBlomqvist@example.com 01000000D08C9DDF0115D1118C7A00C04FC297EB01000000BB0E1F4548ADC84A82EC0873552BCB460000000002000000000003660000C0000000100000006811169334524F33D880DE0C842B9BBB0000000004800000A00000001000000043C8E23979F5CC5499D73610B969A92A08000000EE07953DEC9F7CA01400000098B5F0F01E35B0DC6BBAFC53A9B1254AC999F4FA
Bạn sẽ nhận thấy mật khẩu là một đốm dữ liệu được mã hóa. Thuật toán gần đúng để mã hóa mật khẩu mới là:
Và Chrome lưu blob đó vào cơ sở dữ liệu SQLite của nó.
Nhưng để trả lời câu hỏi của bạn: Khóa mã hóa đến từ đâu?
Mỗi mật khẩu được mã hóa bằng một khóa được tạo ngẫu nhiên khác nhau
Tất nhiên tôi bỏ qua các chi tiết kỹ thuật. Chrome không tự mã hóa mật khẩu của bạn. Chrome không có khóa chính được sử dụng để mã hóa bất cứ thứ gì. Chrome không thực hiện mã hóa. Windows nào.
Có một chức năng Windows, CryptProtectData
được sử dụng để mã hóa bất kỳ dữ liệu tùy ý nào bạn muốn. Các chi tiết của việc gọi nó là ít quan trọng. Nhưng nếu tôi phát minh ra một ngôn ngữ giả mà phần nào có thể giải mã được như bất kỳ sự chậm trễ nào trong lập trình, Chrome gọi:
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
Vì vậy, mật khẩu:
correct battery horse staple
01000000D08C9DDF0115D1118C7A00C04FC297EB01000000BB0E1F4548ADC84A82EC0873552BCB460000000002000000000003660000C0000000100000006811169334524F33D880DE0C842B9BBB0000000004800000A00000001000000043C8E23979F5CC5499D73610B969A92A08000000EE07953DEC9F7CA01400000098B5F0F01E35B0DC6BBAFC53A9B1254AC999F4FA
Bạn sẽ nhận thấy rằng tôi không bao giờ cần phải cung cấp mật khẩu. Đó là bởi vì Windows chăm sóc tất cả những điều đó. Đến cuối cùng:
Vì vậy, cách duy nhất để ai đó biết mật khẩu của bạn là nếu họ biết mật khẩu của bạn.
%LocalAppData%\Google\Chrome\User Data\Default\Login Data
Các mật khẩu được mã hóa và lưu trữ trong cơ sở dữ liệu SQLite:
Phần quan trọng ở đây là
CryptProtectData
, đó là chức năng API của Windows để mã hóa dữ liệu. Dữ liệu được mã hóa với chức năng này là khá vững chắc. Nó chỉ có thể được giải mã trên cùng một máy và bởi cùng một người dùng đã mã hóa nó ở vị trí đầu tiên.
CryptProtectData
sử dụng thông tin đăng nhập Windows của bạn (không phải mật khẩu, nhưng một số dữ liệu khác) làm khóa. AFAIK, đó là chức năng tương tự được sử dụng để bảo vệ chứng chỉ, thông tin mạng và tất cả những thứ đó.
Encryptor::EncryptString
không làm gì cả . Dường như có mã để sử dụng Khóa Gnome và Ví KDE.
Chúng được "mã hóa" nhưng đó là một mã hóa có thể đảo ngược. Chrome phải gửi mật khẩu thô đến trang web được lưu trữ, vì vậy nếu Chrome có thể giải mã và sử dụng nó, thì những người khác cũng vậy. Lưu trữ mật khẩu không bao giờ an toàn 100%.
CryptProtectData
là một API Windows, Windows thực sự thực hiện tất cả mã hóa và truy xuất, khóa mã hóa phụ thuộc vào tài khoản và hệ thống người dùng của bạn.
Google Chrome mã hóa mật khẩu và lưu trữ chúng trong SQLite DB nhưng chúng có thể được xem dễ dàng bằng các ứng dụng khôi phục mật khẩu đặc biệt như ChromePass ( http://www.nirsoft.net/utils/chromepass.html ) hoặc SecurePassword Kit ( http: // www.getsecurepassword.com/ )
Trên máy Mac, tương đương với chức năng CryptProtectData trong Windows là truy cập mật khẩu cho "Lưu trữ an toàn Chrome" trong Keychain của OS X.