Google Chrome lưu mật khẩu như thế nào?


28

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?


Lưu ý rằng Google đã từ chối triển khai mật khẩu chính (như Firefox có) vì nó sẽ tạo ra cảm giác bảo mật sai và có những công cụ như Chromepass có thể giải mã cơ sở dữ liệu mật khẩu, miễn là người dùng đăng nhập.
Dan Dascalescu

Câu trả lời:


25

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 Datatệ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à:

  • tạo khóa phiên ngẫu nhiên mới
  • mã hóa mật khẩu bằng khóa phiên
  • mã hóa khóa phiên bằng khóa chung RSA của người dùng
  • tạo Mã xác thực thư (HMAC) cho dữ liệu được mã hóa
  • nối khóa phiên mã hóa, mật khẩu được mã hóa và MAC

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

Chi tiết kỹ thuật

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:

  • Nguyên đơn :correct battery horse staple
  • Được mã hóa :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:

  • một mật khẩu ngẫu nhiên được tạo để mã hóa mật khẩu
  • mật khẩu đó được mã hóa bằng mật khẩu ngẫu nhiên
  • mật khẩu đó được mã hóa bằng mật khẩu Windows của bạn

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.


Làm thế nào để chrome biết khóa để có thể sử dụng nó để giải mã mật khẩu được lưu trữ, sau đó?
brunoais

1
@brunoais Chrome không biết khóa được sử dụng để mã hóa mật khẩu. Chrome không giải mã chúng - Windows thì có.
Ian Boyd

À, được rồi Vì vậy, nếu một chương trình độc hại xâm nhập vào máy tính, mật khẩu hoàn toàn có sẵn cho chương trình đó, phải không?
brunoais

1
@brunoais Chỉ khi bạn đã nhập mật khẩu của mình. Thật không may, đây là một giới hạn cơ bản của mã hóa: một khi dữ liệu được giải mã, nó được giải mã.
Ian Boyd

Cảm ơn. Chrome đã ngừng ghi nhớ mật khẩu của tôi (nó vẫn được đề nghị lưu chúng, nhưng không bao giờ nhớ lại chúng), tôi đoán rằng cơ sở dữ liệu mật khẩu đã bị hỏng. Giải quyết bằng cách xóa%LocalAppData%\Google\Chrome\User Data\Default\Login Data
Đại tá Panic

8

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.


Nhưng khóa mã hóa được tạo ra như thế nào? Tùy thuộc vào điều này, tôi sẽ xem xét chương trình an toàn nhiều hay ít. Còn Linux thì sao?
Óscar

@ Óscar: Trên Windows, CryptProtectDatasử 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ứ đó.
grawity

3
@ Óscar: Trên Linux, Encryptor::EncryptString không làm gì cả . Dường như có mã để sử dụng Khóa Gnome và Ví KDE.
grawity

Chính xác. Trên Linux, Ví KDE, Khóa Gnome hoặc một cửa hàng mật khẩu gốc được hỗ trợ khác (mà tôi quên bằng tay) được sử dụng thay thế.
Michael Hampton

1
vì vậy ... có vẻ như có thể có một ứng dụng riêng biệt khác về cơ bản rình mò mật khẩu chrome của bạn, với điều kiện bạn đã đăng nhập và nó đang chạy như bạn?
rogerdpack

4

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%.


Nhưng đó là khóa mã hóa?
Óscar

2
Kiểm tra câu trả lời của sblair. Lưu ý rằng có khả năng giải mã, bất kể nó được lưu trữ như thế nào. Với phần mềm thích hợp, bất cứ ai cũng có thể giải mã nó. Khi bạn đã đăng nhập vào tài khoản Windows của mình cho đến khi bạn đăng xuất, mật khẩu của bạn hoàn toàn có thể sử dụng được và hoàn toàn có thể xem được. Chỉ cần chỉ ra rằng không có giải pháp lưu trữ mật khẩu trình duyệt an toàn 100%.
BloodPhilia

1
Không nhưng nếu máy tính của bạn bị tấn công / bị nhiễm, mật khẩu trình duyệt có thể dễ dàng được phục hồi mà bạn không nhận thấy. Một lần nữa, tất cả những gì tôi chỉ ra là không có bộ lưu trữ mật khẩu không thể 100% cho các trình duyệt ... Chỉ cần trả lời câu hỏi của bạn về sự an toàn của chúng.
BloodPhilia

1
Không có "mật khẩu chủ". CryptProtectDatalà 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.
BloodPhilia

1
Điều này sẽ cung cấp cho bạn một lời giải thích về hoạt động của nó: msdn.microsoft.com/en-us/l
Library / ms995355.aspx


1

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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.