Security 什么是对密码存储文件重放攻击的有效解决方案?

Security 什么是对密码存储文件重放攻击的有效解决方案?,security,passwords,password-protection,password-storage,Security,Passwords,Password Protection,Password Storage,如何有效地阻止对包含用户名及其密码(用盐(和/或胡椒)散列)的密码文件的重播攻击?我想预防的攻击如下: 爱丽丝有密码A 马洛里知道密码A 艾丽斯把密码改为B Mallory将密码文件替换为Alice的密码为A时使用的密码文件 Mallory使用密码A作为alice进行身份验证 显然,依赖操作系统的读/写权限是不够的,或者只需将密码以明文形式存储即可 真正的系统是如何做到这一点的?如果我用旧的/etc/shadow替换/etc/shadow会怎么样?我找到的解决方案是将密码时间戳存储在记录密码文件

如何有效地阻止对包含用户名及其密码(用盐(和/或胡椒)散列)的密码文件的重播攻击?我想预防的攻击如下:

  • 爱丽丝有密码A
  • 马洛里知道密码A
  • 艾丽斯把密码改为B
  • Mallory将密码文件替换为Alice的密码为A时使用的密码文件
  • Mallory使用密码A作为alice进行身份验证
  • 显然,依赖操作系统的读/写权限是不够的,或者只需将密码以明文形式存储即可


    真正的系统是如何做到这一点的?如果我用旧的/etc/shadow替换/etc/shadow会怎么样?

    我找到的解决方案是将密码时间戳存储在记录密码文件更改的审核日志旁边。时间戳由HMAC进行完整性保护。直接在密码上使用HMAC是另一种解决方案,但系统中已经存在审核日志,因此可以使用它。

    如果Mallory可以用不同的文件替换
    /etc/shadow
    ,则您已经丢失了!如果攻击者已经对托管服务的系统具有读写访问权限,则根本不需要Alice的密码!为什么Mallory甚至可以替换密码文件?好吧,那为什么还要麻烦存储散列的密码呢?在您的威胁模型下,您只需以明文形式存储密码,并通过撤销文件的读写权限来依赖操作系统访问控制。但人们在这样做的同时也会遭受巨大的后果。那么,为什么你认为依靠访问控制来防止文件写入而不是防止读取是可以的?@user2309167如果人们可以读取你的密码文件,你仍然会丢失密码。腌制是对损害的控制。