SPAKE2+是一种增强型的PAKE。英文全称为Simple Password Authenticated Key Exchange。
PAKE,英文全称为 Password Authenticated Key Exchange。
该协议运行在双方之间,用于在不泄露密码的情况下生成强共享密钥。 SPAKE2+是一个增强的PAKE协议,因为在协议执行期间只有一方直接使用密码。 另一方只需要协议执行时的验证值,而不需要密码。 验证值可以在脱机初始化阶段计算一次。 直接使用密码的一方通常是客户端,充当证明者。而另一方是服务器,充当验证者。
2.1 PAKE是什么?
PAKE,即Password-authenticated key agreement,密码认证秘钥协商。
在密码学中,PAKE是指:
- 两方或多方进行交互
- 基于一方或多方知悉某一共享密码建立的密码学秘钥。
2.2 有哪些增强型PAKE
增强型PAKE用于client-server场景,其中server端不存储与密码等效的数据。这就意味着窃取服务器数据的攻击者仍然不能伪装成客户机,除非他们首先密码执行暴力搜索。
增强型PAKE例子主要有:
- AMP
- 增强型EKE
- B-SPEKE
- PAK-X
- SRP
- AugPAKE
- OPAQUE
- SPAKE2+
SPAKE2+是一个两轮协议,它建立一个共享秘钥,并额外进行密钥确认。 在调用之前,向A和B提供运行协议所需的输入密码等信息。
为了通信交互ID信息、协议版本、与验证相关的PBKDF参数,可能会进行前导Preamble交换。
在第一轮中:
证明者A向验证者B发送一个共享pA
验证者B用自己公共共享pB进行响应。
然后证明者A和验证者B都派生出用于生成加密和身份验证密钥的共享密钥cB和cA。
cB和cA在第二轮中用于密钥确认。
B向A发送一个密钥确认消息cB, A用自己的密钥确认消息cA进行响应(注意pB和cB可以在同一消息中发送)。 在收到并验证这些关键确认消息之前,双方绝对不能认为协议已经完成。
证明者A是客户端,直接使用密码,
验证者B是服务端,无需使用密码。
- 参考文章:https://blog.csdn.net/mutourend/article/details/118929822
- 参考标准:SPAKE2+, an Augmented PAKE draft-bar-cfrg-spake2plus-02.pdf