首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单地使用密码作为PAKE的第三个“私钥”

简单地使用密码作为PAKE的第三个“私钥”
EN

Cryptography用户
提问于 2019-11-16 21:14:42
回答 1查看 77关注 0票数 2

我正在阅读PAKE协议的开发,从EKE和SPEKE开始,它们的潜在缺陷,以及是什么促使他们选择协议。我一直在想,对经典DH进行以下(非常简单)的修改,使PAKE成为PAKE,有什么问题:

让爱丽丝和鲍勃有一个共享的秘密s = hash(password)。爱丽丝和鲍勃挑选私钥ab。从DH开始,Alice和Bob将它们的公钥计算为

A = g^{as}\mod p
B = g^{bs}\mod p

在交换公钥之后,可以将共享密钥计算为

K = g^{abs}\mod p

这个简单的计划有什么问题呢?我猜它在某种程度上允许对s进行离线字典攻击。我知道s没有低熵,但我仍然不知道怎么做。

EN

回答 1

Cryptography用户

回答已采纳

发布于 2019-11-16 23:58:57

这个方案的问题是:假设A是诚实的客户端,而B是不诚实的服务器(不知道s)。然后,A尝试登录,他选择a并发送

A = g^{as} \bmod p

然后,B只选择一个随机值b,并发送

B = g^b \bmod p

然后,A将计算一个“共享秘密”S = B^a \bmod p (如果B诚实地执行协议,它将是g^{abs} \bmod p,而不是S = g^{ab} \bmod p)。然后,A发送一条由共享秘密密钥组成的M_S消息(无论是密钥确认消息还是初始加密数据交换,这都不重要)。

BA没有进一步的交互。

然后,B可以这样做;他可以在他的字典password'中选择一个条目并计算s' = hash(password')。然后,他可以计算S' = A^{s'^{-1}b} \bmod p;如果他碰巧选择了正确的密码,那么s = s'S' = A^{s^{-1}b} = g^{as \cdot s^{-1}b} = g^{ab} = S,所以他可以使用共享的秘密来验证消息。

如果他没有选择正确的密码,他可以返回并在字典中选择另一个条目,并重复脱机计算直到找到正确的条目。

底线:使用您的协议,主动攻击者可以作为单个交换的结果执行完整的字典搜索。

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

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

复制
相关文章

相似问题

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