문제

How can I effectively thwart a replay attack on a password file that contains usernames and their passwords hashed with salt (and/or pepper)? The attack I am interested in preventing is as follows:

  1. Alice has password A.
  2. Mallory comes to know password A.
  3. Alice changes her password to B.
  4. Mallory replaces the password file with the one that was used when Alice's password was A.
  5. Mallory uses password A to authenticate as alice.

It clearly does not suffice to rely on OS read/write permissions or it would also suffice to store passwords unhashed as plaintext.

How do real systems do it? What if I replace my /etc/shadow with an older one?

도움이 되었습니까?

해결책

The solution that I've arrived at is to store password timestamps alongside an audit log that records changes to the password file. The timestamps are integrity protected with an HMAC. Using an HMAC directly on the password is an alternate solution but the audit log was already present in the system so it seemed acceptable to leverage it.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top