Làm thế nào để một trình duyệt web lưu mật khẩu?


8

Làm thế nào để trình duyệt web hiện tại (hoặc ứng dụng thư khách di động và bất kỳ phần mềm nào nói chung) lưu mật khẩu người dùng? Tất cả các câu trả lời về việc lưu trữ mật khẩu đều nói rằng chúng ta chỉ nên lưu trữ băm chứ không phải mật khẩu. Nhưng tôi gặp khó khăn khi tìm kiếm trên web cố gắng tìm các kỹ thuật tốt nhất để lưu trữ mật khẩu khi chúng tôi biết rằng chúng tôi sẽ cần chúng ở dạng văn bản đơn giản sau này - không lưu trữ chúng trong văn bản thuần túy, không sử dụng mã hóa yếu (khóa đã biết) và mà không yêu cầu người dùng nhập mật khẩu chính. Có ý kiến ​​gì không?


Câu hỏi này có thể phù hợp hơn cho trang web IT Security SE.
Bernard

@Bernard Cảm ơn, tôi không biết về trang web Bảo mật CNTT ...
marcus

Kể từ hôm nay (Chrome 60), Chrome đã lưu trữ mật khẩu văn bản rõ ràng kể từ ... tốt, chưa từng có. Có nhiều cuộc thảo luận về việc các mật khẩu văn bản rõ ràng này cần được bảo vệ như thế nào khỏi sự truy cập của người dùng. Thưởng thức rất nhiều đối số hợp lệ từ cả hai bên ở đây .
bers

Câu trả lời:


4

cục bộ nó được lưu trữ dưới dạng văn bản thuần túy hoặc được mã hóa.

khi được mã hóa, khóa en / giải mã có thể được sửa trên mỗi trình duyệt (được mã hóa cứng trong tệp thực thi), trên mỗi máy (được tạo khi cài đặt và được lưu trong thư mục cài đặt) hoặc cho mỗi người dùng (được tạo lần đầu tiên sử dụng trình quản lý mật khẩu và được lưu trữ trong %appdata%)

hoặc chúng có thể được kết hợp: khóa cấp độ người dùng được mã hóa bằng khóa cấp độ máy để khi phần mềm độc hại lấy tệp lưu trữ mật khẩu, nó sẽ vô dụng nếu không có khóa cấp độ người dùng và cấp độ máy

Một số trình duyệt cũng cho phép bạn sử dụng mật khẩu "chính" được kết hợp với khóa hiện có để cung cấp bảo mật hơn

khi bạn sử dụng dịch vụ đồng bộ hóa (tốt), mật khẩu sẽ không bao giờ được lưu trữ trong văn bản thuần túy trên máy chủ và không bao giờ được giải mã phía máy chủ.


Cảm ơn. Từ tất cả các câu trả lời, có vẻ như không có giải pháp "mạnh" nào tốt, đó là văn bản đơn giản hoặc một số lời xáo trộn (nghĩa là một mã hóa có thể lấy được khóa từ chính máy)
marcus

12

Mật khẩu được lưu trữ trong văn bản thuần túy, trừ khi mật khẩu chính được sử dụng.

Khi mọi người nói rằng bạn phải lưu trữ băm mật khẩu, họ đang nói về lưu trữ phía máy chủ , không phải phía máy khách.

Phía máy chủ

Khi bạn có trang web của riêng mình khi người dùng có thể đăng ký / đăng nhập bằng mật khẩu của họ, bạn không cần (và không bao giờ) tự lưu trữ mật khẩu:

  • Bạn không cần lưu trữ mật khẩu đơn giản , vì bạn chỉ phải xác minh rằng mật khẩu được sử dụng trong quá trình đăng nhập khớp với mật khẩu do người dùng cung cấp trong khi đăng ký. Bạn có thể làm điều đó với băm, vì các mật khẩu khác nhau sẽ có các giá trị băm khác nhau.

  • Bạn không được lưu trữ mật khẩu đơn giản . Nếu trang web của bạn bị hack thì sao? Hơn nữa, nhiều người sử dụng lại mật khẩu nhiều lần, do đó, thực tế bạn cung cấp cho bất kỳ hacker nào khả năng truy cập tài khoản Facebook, tài khoản mail của người dùng, v.v.

Phía khách hàng

Trình duyệt là khác nhau. Họ lưu trữ mật khẩu trên máy khách và phải có mật khẩu gốc chứ không phải băm.

Điều này có nghĩa là những mật khẩu đó được lưu trữ trong văn bản thuần túy trong hầu hết các trường hợp.

  • An ninh khôn ngoan, nó không quá quan trọng. Những mật khẩu được lưu trữ trong một thư mục thuộc tài khoản người dùng. Điều này có nghĩa là tùy thuộc vào hệ điều hành (và cho người dùng) để định cấu hình đúng các quyền đối với tệp người dùng và để hạn chế quyền truy cập vào tệp chứa mật khẩu cho chính người dùng.

  • Trải nghiệm người dùng khôn ngoan, đây là điều dễ làm nhất. Một khả năng khác là mã hóa các mật khẩu đó bằng mật khẩu chính, trong trường hợp đó , người dùng sẽ phải cung cấp mật khẩu chính mỗi lần mở trình duyệt . Tôi khá chắc chắn rằng hầu hết người dùng sẽ không bao giờ thích điều đó.

    Nếu mật khẩu chủ được lưu trữ ở đâu đó, vấn đề tương tự sẽ phát sinh: nếu bạn lưu mật khẩu chính ở dạng văn bản đơn giản thì vấn đề là gì? Nếu bạn mã hóa nó, bạn phải có mật khẩu chính chủ.

Đồng bộ hóa

Lưu ý rằng hầu hết các trình duyệt cho phép người dùng đồng bộ hóa dữ liệu của họ trên nhiều máy. Đồng bộ hóa sử dụng máy chủ từ xa để lưu trữ cookie, lịch sử, dấu trang và mật khẩu. Ví dụ: Chrome sử dụng máy chủ Google để lưu trữ dữ liệu này.

Trong trường hợp này, mật khẩu không bao giờ được lưu trữ trong văn bản thuần túy trên các máy chủ đồng bộ , nếu không, đó sẽ là một vấn đề bảo mật. Trong Chrome, bạn phải chọn mật khẩu chính để đồng bộ hóa (hoặc sử dụng mật khẩu từ tài khoản Google của bạn). Mật khẩu chủ này sẽ được sử dụng để mã hóa mật khẩu (luôn luôn) và các dữ liệu khác như lịch sử hoặc dấu trang (tùy chọn).


Để đơn giản, bạn có thể tưởng tượng rằng các mật khẩu khác nhau có thể có cùng giá trị băm. Về lý thuyết, điều này là sai, vì va chạm có thể tồn tại. Trong thực tế, nếu bạn sử dụng thuật toán băm mạnh, như SHA-256, bạn có thể bỏ qua nguy cơ va chạm cho một trang web ngay cả với hàng triệu người dùng đã đăng ký. Mọi thứ sẽ khác nếu bạn sử dụng thuật toán băm lỗi thời và mất giá, như MD5.


2
Bạn có vẻ lo lắng về cách lưu trữ mật khẩu chủ nhưng chúng tôi không thực sự cần (hoặc muốn) lưu trữ nó, phải không? Theo hiểu biết của tôi, chúng tôi chỉ cần mật khẩu chủ là khóa (một phần của) để giải mã mật khẩu đã lưu và mã hóa mật khẩu mới. Theo như giải mã, nếu mật khẩu chủ bị sai, mật khẩu cụ thể được giải mã cũng sẽ (hy vọng) cũng bị sai. Vấn đề thực sự là đối với mật khẩu mới vì chúng tôi không muốn mã hóa chúng bằng mật khẩu sai nhưng chúng tôi không thể kiểm tra xem đường dẫn chính giải mã đúng chuỗi mặc định (do đó chúng tôi cần lưu trữ chuỗi được mã hóa).
SylvainD

Đã đồng ý. Có mật khẩu chính, đặt bạn trở lại vị trí tương tự bạn ở phía máy chủ: chỉ kiểm tra. Bạn có thể xác minh mật khẩu dựa vào hàm băm, sau đó sử dụng dữ liệu nhập của người dùng nếu nó kiểm tra. Không cần phải lưu trữ nó vĩnh viễn. Đây cũng là cơ chế được một số ứng dụng sử dụng để cập nhật hàm băm khi chúng trở nên lỗi thời. Đợi người dùng đăng nhập, xác minh đối với hàm băm cũ, sau đó thử lại dữ liệu đầu vào trong khi nó vẫn còn trong bộ nhớ trong văn bản rõ ràng và lưu trữ hàm băm mới an toàn hơn.
Matthew Scharley

@Josay: chúng tôi lo ngại về cách lưu trữ mật khẩu chính nếu chúng tôi không muốn yêu cầu người dùng nhập mật khẩu mỗi khi anh ấy mở trình duyệt. Nếu người dùng phải nhập nó, sẽ trở nên rất đơn giản về mặt kỹ thuật, vì chúng tôi chỉ lưu trữ hàm băm của nó.
Arseni Mourzenko

@MainMa Ok, tôi 100% với bạn rồi.
SylvainD

Điều đáng chú ý là hầu hết các trình duyệt hiện nay đều sử dụng kho lưu trữ khóa của HĐH nơi có một trình duyệt. Ví dụ: Nếu tôi lưu tên người dùng và Mật khẩu SO trên PC của tôi (firefox trên Win 10) thì nó sẽ được lưu trong kho lưu trữ khóa. Điều này được mã hóa, nhưng được mở khóa khi đăng nhập. Ai đó đang ngồi trong PC của tôi đăng nhập vì tôi có thể truy cập chúng, nhưng nếu đăng nhập với tư cách người khác, mật khẩu của tôi sẽ không thể đạt được.
Baldrickk

0

Các chương trình này cần mật khẩu bằng văn bản rõ ràng (họ cần gửi nó khi được yêu cầu). Do đó, nó được lưu trữ dưới dạng văn bản thuần túy. Nhiều trình duyệt cho phép mã hóa tất cả các mật khẩu được lưu trữ bằng mật khẩu chính (chỉ được hỏi một lần).

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.