首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速迭代计数攻击

快速迭代计数攻击
EN

Cryptography用户
提问于 2018-03-02 01:31:11
回答 1查看 296关注 0票数 2

我不确定这个问题是属于这里还是在信息安全栈交换,但这里.

在SCRAM (RFC5802)中,有什么可以阻止攻击者伪装成服务器发送一个迭代计数的吗?

如果没有什么可以阻止这一点,那么这样的攻击者似乎可以获得一个弱散列密码,并且很容易破解它:

代码语言:javascript
复制
Client              Server
------              ------
username,nonce  -> 
                <-  nonce,salt,iterations=1
ClientProof     ->

然后离线

代码语言:javascript
复制
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规范中没有提到这一点。

EN

回答 1

Cryptography用户

回答已采纳

发布于 2018-03-02 16:03:43

你是对的。在第9条“安全考虑”的开头提到这个问题有些偏颇:

如果用于保护SCRAM交换的外部安全层使用匿名密钥交换,则SCRAM信道绑定机制可用于检测对安全层的中间人攻击,从而导致身份验证失败。然而,中间人攻击者将获得足够的信息来装入离线字典或暴力攻击。

因此,您应该避免使用SCRAM对服务器进行客户端身份验证。您可能更喜欢查看密码认证的密钥交换,比如SRPSPAKE2+

票数 2
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/56090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档