发布于 2020-01-29 02:51:51
SCRAM的目标是确定两个端点是否共享一个共同的秘密。SCRAM通过让双方比较/交换\textrm{HMAC}(s,i)来实现这一点,其中s是秘密,i是计数器/当前。它有更多的东西,但这是主要的本质。如果s是一个高熵密码秘密,那么这很好:看到一些HMAC输出无助于窃听者/冒充者猜测其他HMAC输出。
但是如果共享的秘密像密码一样是低熵的,我会说SCRAM本身是不合适的。SCRAM交互的协议记录为窃听者提供了足够的信息,可以离线测试他们对s的猜测是否正确。因此SCRAM容易受到离线字典攻击。我的理解是,通常SCRAM是运行在一些加密的隧道内,以防止外部窃听者。但是,如果我是加密隧道的中间被动的人(如果我们已经对端点进行了身份验证,这似乎是合理的,因为SCRAM就不需要SCRAM了!),我将从SCRAM记录中学到足够多的知识,从而允许离线字典攻击。
SCRAM只进行身份验证,但不透明是一个功能齐全的PAKE,它提供了更多的功能:
https://crypto.stackexchange.com/questions/77286
复制相似问题