it-swarm-vi.com

Có thể lưu trữ an toàn mật khẩu bằng mã hóa đảo ngược?

Mọi người đều nói rằng bạn cần sử dụng hàm băm không thể đảo ngược khi bạn lưu trữ mật khẩu để ngay cả khi cơ sở dữ liệu của bạn bị rò rỉ, bản thân mật khẩu vẫn an toàn. Tôi tự hỏi liệu có cách nào để sử dụng mã hóa đảo ngược để lưu trữ mật khẩu không.

Ít nhất, bạn sẽ cần phải yêu cầu bất kỳ khai thác nào làm rò rỉ cơ sở dữ liệu (SQL SQL, truy cập Shell của máy chủ, v.v.) không làm rò rỉ khóa mã hóa và không thể tìm ra khóa mã hóa một cách hợp lý một mật khẩu văn bản gốc đã biết nếu bạn có cơ sở dữ liệu bị rò rỉ.

Tôi không nghiêm túc xem xét việc này bởi vì có vẻ như ngay cả về mặt kỹ thuật có thể khó thực hiện chính xác, nhưng có vẻ như đó là một vấn đề thú vị.

23
Steve

Mã hóa đảo ngược không được sử dụng phổ biến cho mật khẩu vì các yêu cầu và tham số cụ thể của xác thực mật khẩu không tương thích với điểm yếu của mã hóa đảo ngược.

Điểm yếu chính của mã hóa đảo ngược là đơn giản: nếu khóa bị xâm phạm, dữ liệu được mã hóa bị xâm phạm, thời gian.

Mật khẩu được sử dụng mọi lúc, bất cứ khi nào người dùng đăng nhập. Do đó, quy trình xác thực phải có thể truy cập thông tin đăng nhập của người dùng mọi lúc, theo kiểu tự động, không có kiểm soát cản trở. Điều đó có nghĩa là khóa để mã hóa đảo ngược cần phải ở trên đĩa hoặc trong bộ nhớ mọi lúc. Nếu chương trình, đĩa hoặc bộ nhớ đó bằng cách nào đó bị xâm phạm, thì tất cả những mật khẩu được mã hóa đảo ngược đều bị xâm phạm trong một cú trượt.

Ngược lại, xem xét việc sử dụng băm không đảo ngược. Nếu chương trình, đĩa hoặc bộ nhớ bị xâm phạm thì kẻ tấn công sẽ bị băm "khóa" và không có khóa. Sau đó, họ có thể tấn công xa hơn - tấn công bản mã được biết đến, lực lượng vũ phu, v.v. - nhưng họ vẫn chưa "chiến thắng".

Chúng tôi sử dụng mã hóa đảo ngược (để tôi nói khóa) mọi lúc - đĩa, tệp, tệp đính kèm email. Tuy nhiên, những gì những người sử dụng này đều có điểm chung là họ khuyến khích (nếu không yêu cầu) sự can thiệp của con người để cung cấp chìa khóa.

Tôi không chắc tại sao bạn lại hỏi về điều này, nhưng còn một mô hình lai thì sao? Hãy xem xét rằng có thể hợp lý để lưu trữ cả hai bản mã có thể đảo ngược và không thể đảo ngược cho mật khẩu người dùng. Khi mật khẩu được tạo, lưu trữ hai phiên bản được mã hóa: Một phiên bản được tạo bằng chức năng băm một chiều và phiên bản còn lại được tạo bằng thuật toán mã hóa bất đối xứng ("mật mã khóa công khai"). Tất cả các quy trình xác thực tự động sử dụng các giá trị băm không thể đảo ngược cho mục đích xác thực. Giữ một nửa "khóa chung" của cặp trên hệ thống để sử dụng tạo mật khẩu được mã hóa và lưu trữ một nửa "khóa riêng" của cặp ngoại tuyến . Trong trường hợp cần có bản rõ mật khẩu, hãy lấy mật khẩu được mã hóa ngoại tuyến và giải mã nó bằng khóa thích hợp. Miễn là khóa giải mã không thể truy cập được vào hệ thống xác thực, thì kẻ tấn công không thể lợi dụng thực tế là bạn đã sử dụng mã hóa "đảo ngược" để lưu trữ mật khẩu văn bản gốc.

Điều đó sẽ chỉ giúp nếu nhu cầu truy cập mật khẩu văn bản gốc của bạn không phải là nhu cầu tự động, tất nhiên. Nhưng nó có vẻ như là một ý tưởng tiện lợi với tôi.

21
gowenfawr

Có thể lưu trữ an toàn mật khẩu bằng mã hóa đảo ngược?

Có, nhưng nó khó khăn hơn nhiều và đòi hỏi một nỗ lực và chi phí lớn hơn nhiều. Keying là khó để làm tốt.

Để hỗ trợ mã hóa đảo ngược (không nhất thiết phải đối xứng như @goenfawr ghi chú ), bạn cần ít nhất một khóa (hai cho mật mã khóa công khai). Bạn cần tạo khóa, lưu trữ an toàn, bảo vệ nó khỏi bị hỏng hoặc phá hủy, lấy nó để sử dụng, bảo vệ nó trong khi sử dụng và định kỳ thay thế nó.

Một phần quan trọng của vấn đề là làm thế nào để bảo vệ chìa khóa trong khi nó không được sử dụng. Nếu bạn mã hóa khóa thì bạn cần một khóa khác để giải mã nó. Trong trường hợp bạn trở lại nơi bạn bắt đầu. Các phương pháp bảo vệ khác sử dụng phần cứng đặc biệt hoặc hệ điều hành an toàn hoặc thậm chí các máy tính tùy chỉnh có bộ nhớ và bộ xử lý riêng cho các tham số bảo mật. Tất cả các giải pháp này đòi hỏi chi phí đào tạo và hỗ trợ bổ sung.

So sánh các giải pháp đó với việc sử dụng máy tính bán lẻ, hệ điều hành bán lẻ và hàm băm.

6
this.josh

Một điều cần thêm vào các câu trả lời hiện tại là có thể sử dụng mã hóa đối xứng (có thể đảo ngược) để lưu trữ bí mật (bao gồm cả mật khẩu) nhưng nó phức tạp/tốn kém hơn một chút.

Một ví dụ điển hình của việc này là các mạng máy ATM/Cash, thường sử dụng quản lý khóa đối xứng (mặc dù chúng đang chuyển sang giải pháp dựa trên PKI).

Chìa khóa (không có ý định chơi chữ) cho điều này là các khóa mã hóa được lưu trữ ở một vị trí đáng tin cậy, trong trường hợp này là Mô-đun bảo mật phần cứng (HSM) và các quy trình nghiêm ngặt liên quan đến tải và quản lý khóa cần được tuân thủ, để đảm bảo rằng các khóa vẫn còn bí mật.

4
Rory McCune

Hãy xem trang wiki cho Mật mã. Mặc dù có nhiều mật mã an toàn, luôn có nguy cơ rò rỉ khóa. Sử dụng hàm băm một chiều sẽ tránh được rủi ro này bằng cách không có khóa.

Một nguyên lý của kỹ thuật bảo mật là để giảm thiểu thông tin có thể đạt được khi hệ thống bị xâm phạm.

2
nik3daz