我不确定这个问题是属于这里还是在信息安全栈交换,但这里.
在SCRAM (RFC5802)中,有什么可以阻止攻击者伪装成服务器发送一个迭代计数的吗?
如果没有什么可以阻止这一点,那么这样的攻击者似乎可以获得一个弱散列密码,并且很容易破解它:
Client Server
------ ------
username,nonce ->
<- nonce,salt,iterations=1
ClientProof ->然后离线
AuthMessage = client-first-message-bare + "," +
server-first-message + "," +
client-final-message-without-proof
foreach password in dictionary
SaltedPassword = Hi(Normalize(password), salt, i) // with i==1
ClientKey = HMAC(SaltedPassword, "Client Key")
StoredKey = H(ClientKey)
ClientSignature = HMAC(StoredKey, AuthMessage)
ClientProof = ClientKey XOR ClientSignature
check(ClientProof == StolenClientProof)我在SCRAM中看到的问题是,在客户机甚至可以对服务器进行身份验证之前,客户端必须使用迭代计数信任服务器。
我认为客户机可以强制使用一个最小的迭代帐户来减少这种攻击,但是SCRAM规范中没有提到这一点。
https://crypto.stackexchange.com/questions/56090
复制相似问题