我对对称PAKE应该提供的安全性的直觉来自登录页面的示例。用户和服务器都知道密码(假设没有散列的密码),协议的目的是使用这一事实相互对用户和服务器进行身份验证,同时生成一个只为他们所知的会话密钥,并避免任何中间人攻击。具体来说,我认为PAKE的一个关键属性是,如果用户和服务器提供不同的密码,用户和服务器将获得不同的密钥,因此,如果用户和服务器不知道密码,就会阻止试图登录的恶意方。然而,根据安全定义,情况似乎并非如此。
对称PAKE的标准UC功能来自Canetti等人

请注意( \textsf{NewKey}查询下的顶级项目),如果其中一方已损坏,则无论双方是否提供相同的密码,敌对方都可以选择会话密钥sk。通过对\textsf{NewKey}使用两个查询,对手可以将双方的会话密钥设置为相同。为什么要选择定义来允许这样做呢?如果密码不同,则可以编写此功能,使对手有权只选择受损方的密钥,而不是诚实方的密钥。
发布于 2021-04-04 14:12:33
这篇论文包含的文字解释了为什么这是可以的。我引述如下:
FKE功能背后的主要思想是:如果两个参与方都未被破坏,则它们接收相同的均匀分布的会话密钥,而对手只知道密钥是生成的。但是,如果其中一方被破坏,则给对手完全确定会话密钥的权力。这样做的理由是,密钥交换的目的是使诚实的各方能够产生外部对手所不知道的密钥。如果其中一个参与方被破坏,那么对手将学习生成的密钥(因为它是参与者之一),因此安全性要求是毫无意义的。在这种情况下,让对手决定关键是没有什么损失的。
不过,从你的问题上,我想我明白你在担心什么。如果对手P_k能够用P_i和P_j来设定其密钥的价值,那么它的行为似乎就像介于P_i和P_j之间的中间人。然而,情况并非如此。具体来说,P_i知道它与P_k的密钥是sk,当使用该键进行通信时,它知道通信是与P_k而不是与P_j (反之亦然)。当P_i想要与P_j通信时,它有一个不同的会话密钥。
总之,这并不重要的原因是,对方的身份是与钥匙一起提供的。
还有一点要注意:允许这样做可能不是绝对必要的,但没有理由不允许。不允许这样做可能会排除完全没有问题的协议。因此,如果没有理由不允许的话,最好允许这样做。
https://crypto.stackexchange.com/questions/89151
复制相似问题