8

Tôi đã nhìn thấy nhiều câu hỏi khác nhau về vấn đề này, nhưng có một số câu hỏi chưa được hỏi. Nếu người dùng quên mật khẩu của họ, tôi muốn họ có thể đặt lại mật khẩu chỉ với địa chỉ email của họ (nghĩa là không có câu hỏi/câu trả lời bảo mật). Mật khẩu được lưu trữ dưới dạng băm muối, vì vậy không thể khôi phục được. Thay vào đó, tôi chỉ muốn người dùng nhập mật khẩu mới sau khi xác nhận rằng họ đã yêu cầu đặt lại.Đặt lại mật khẩu ASP.NET - vấn đề bảo mật?

Một phương pháp phổ biến mà được đề cập là chỉ đơn giản là:

1) Tạo một ngẫu nhiên Guid/được mã hóa mạnh mẽ số ngẫu nhiên

2) Gửi một URL duy nhất có chứa các số ngẫu nhiên để email của người dùng giải quyết

3) Khi khẳng định, người dùng được yêu cầu thay đổi mật khẩu

Tuy nhiên, không phải là điều này mở cho một cuộc tấn công MITM? Nếu gửi một mật khẩu tạm thời qua internet đến một email là không an toàn, sự khác biệt giữa làm điều đó và chỉ đơn giản là gửi một URL duy nhất mà kẻ tấn công có thể điều hướng đến là gì? Tôi đã bỏ lỡ một bước quan trọng ở đâu đó sẽ làm cho hệ thống này an toàn hơn (Hay có cách nào tốt hơn để đặt lại mật khẩu)?

Cảm ơn

Trả lời

9

Nếu bạn tạo mã băm chính xác, nhấp chuột url sẽ phải đến từ địa chỉ IP yêu cầu đặt lại. Điều này sẽ yêu cầu MITM giả mạo IP và/hoặc làm sai lệch tiêu đề. Trong khi điều này là có thể, bạn càng có thể xác định được hàm băm cho hệ thống đang được đề cập đến, thì nó càng trở nên khó khăn hơn để "bẻ khóa" băm.

Cũng khuyên rằng hướng dẫn là băm một chiều của các tiêu chí nhất định. Cũng có thể mã hóa dữ liệu hệ thống trong yêu cầu bằng khóa công khai mà khóa riêng mở ra để khi url được nhấp, dữ liệu hệ thống được mã hóa công khai này phải đi kèm với hàm băm và hệ thống duy nhất có thể mã hóa các giá trị này khóa riêng được giữ tại máy chủ. Về cơ bản một tập tin đính kèm psuedo-PKI vào băm.

+0

tôi thích ý tưởng của cố gắng để đảm bảo tính liên kết xác nhận nhấp chuột xuất phát từ cùng một máy tính như ban đầu yêu cầu đặt lại. –

+2

Về khía cạnh IP, chắc chắn rằng một phần sẽ không liên quan? Là kẻ tấn công, tôi sẽ tự quên mật khẩu, do đó yêu cầu đặt lại mật khẩu đến từ máy tính của tôi (kẻ tấn công). Thực hiện một cuộc tấn công MITM, tôi sẽ chặn email, nhấp vào liên kết và thay đổi mật khẩu vì nó vẫn nhìn thấy địa chỉ IP của tôi. – keyboardP

+0

Có thể, nhưng điều này giả định rằng kẻ tấn công cũng đã xâm phạm tài khoản email. IP sẽ chỉ là một tập con nhỏ của thông tin nhận diện. Có thể có các chỉ số khác được áp dụng sẽ làm tăng độ phức tạp của hàm băm. Chìa khóa sẽ không dựa vào bất kỳ số liệu nào vì mỗi số liệu phải được thỏa hiệp. Càng cần nhiều thì càng khó khăn hơn. Tại một thời điểm nó trở thành một vấn đề của nỗ lực so với kết quả. –

7

Phương tiện xác thực người dùng của bạn là bí mật được chia sẻ (mật khẩu).

Nếu người dùng quên bí mật đó, bạn cần có cách thiết lập bí mật được chia sẻ mới. Cho dù bạn đi đâu đi nữa, bạn vẫn sẽ gặp vấn đề khi xác thực người dùng để chia sẻ bí mật mới đó.

Nếu điều duy nhất bạn biết về người dùng có thể được sử dụng để xác thực họ là địa chỉ email của họ, thì bạn sẽ cần một số cách để xác nhận rằng người dùng yêu cầu đặt lại nằm trong quyền kiểm soát địa chỉ email đó.

Và cách duy nhất cho đến thời điểm này là gửi email bí mật đến địa chỉ email đó và kiểm tra xem họ có nhận được nó hay không.

Điều nào sẽ luôn mở cho cuộc tấn công MitM lén lút đầy đủ.

Lý do bạn không gửi mật khẩu tạm thời là tránh vấn đề "người dùng không thể bị thay đổi và do đó hãy tiếp tục sử dụng mật khẩu tạm thời không an toàn thay vì mật khẩu an toàn của riêng họ."

+1

Đồng ý với tất cả những điều trên. Chỉ cần thêm rằng một mật khẩu tạm thời nên được sử dụng duy nhất: một khi nó được sử dụng để đăng nhập người dùng, nó không thể được sử dụng một lần nữa và người dùng phải thay đổi nó, nếu không người dùng sẽ cần phải yêu cầu một mật khẩu mới. Nó không nhận được xung quanh cuộc tấn công MITM bằng bất kỳ phương tiện, nhưng nên giúp đỡ đến một mức độ. – JonoW

+0

Sự trớ trêu của mật khẩu tạm thời là nó có thể an toàn hơn mật khẩu thực của người dùng: D Tuy nhiên, tôi sẽ đi xuống đường dẫn xác nhận để khóa chúng cho đến khi mật khẩu được thay đổi. – keyboardP

+0

Với vector tấn công MITM. Điều này sẽ được phủ nhận nếu khi bạn yêu cầu một mật khẩu mới được gửi cho bạn, bạn sẽ được hỏi một bí mật. Sau đó, khi liên kết từ email được gửi đến bạn và bạn nhấp vào liên kết, bạn phải nhập lại cùng một mật khẩu đó? –

1

Để giảm thiểu nguy cơ bị một người đàn ông trong cuộc tấn công giữa tôi sử dụng các biện pháp sau:.

  • Một yêu cầu đặt lại có thể được sử dụng một lần duy nhất
  • Nếu một yêu cầu đặt lại không được sử dụng, nó hết hạn sau một giờ.
  • Mọi yêu cầu thiết lập lại được ghi lại vĩnh viễn cho dù đó sau cùng đã được hoàn thành hoặc hết hạn.
+0

Tôi sẽ thiết lập lại hết hạn nhanh hơn một giờ. Mục đích đặt lại mật khẩu là để truy cập ngay lập tức. Nó không phải là hợp lý để mong đợi một người dùng "trung thực" sẽ chờ một giờ để sử dụng thiết lập lại. –