密码认证密钥交换:协议与安全模型
1. 引言
密码认证密钥交换(PAKE)协议允许仅共享低熵密码的双方通过不安全网络协商出一个加密强度高的密钥。PAKE 协议自 Bellovin 和 Merritt 在 1992 年发表的开创性论文以来,在密码学领域得到了广泛研究。
密码认证在互联网用户认证中被广泛使用,但存在诸多漏洞。例如,部分用户选择低熵密码,易被攻击者猜出;许多用户重复使用密码,一个服务的密码泄露可能导致其他服务账户被攻破;用户还可能忘记密码,需要采用其他安全性较低的认证方式。尽管存在这些弱点,密码在安全性和可用性之间的权衡仍使其成为主流认证技术。
本文将重点探讨 PAKE 的安全定义,深入研究其安全模型,并对各种 PAKE 解决方案进行分类,包括标准计算模型和随机预言机模型(ROM)下的方案。此外,还将介绍 PAKE 问题的两个重要变体:客户端 - 服务器(非对称 PAKE)和多服务器(阈值 PAKE)。
PAKE 是密钥交换(KE)的一种特殊形式,KE 协议允许双方在不安全网络上创建一个共享对称密钥,该密钥对窃听者(被动攻击者)是安全的。例如,给定一个 KE 协议的传输记录,没有高效算法能区分协议双方输出的会话密钥和独立随机密钥。根据 Impagliazzo 和 Rudich 在 1989 年的研究结果,仅基于对称密钥密码学不太可能实现 KE。
KE 协议本身对主动攻击者不安全,主动攻击者可以与任意一方交互并遵循 KE 协议。PAKE 要解决的问题是如何在 KE 中加入密码认证。如果 A 和 B 共享密码 pw,能否利用该预协商密码保护会话密钥免受主动攻击者的攻击?
PAKE 需满足以下要求:
1. 无论密码的熵如何,密钥 sk 在面对被动攻击者时应与未认证的 KE 一样安全。
2. 若攻击者是主动的,其获取被攻击方输出的密钥 sk 信息的概率最多为 (2^{-t}),其中 t 是密码的最小熵。
3. 即使重复使用相同密码 pw,协议仍应保持安全。
2. 首个 PAKE:EKE
首个密码认证 KE 是 Bellovin 和 Merritt 在 1992 年提出的 EKE 方案。EKE 协议是一个编译器,它由两个部分构建 PAKE:一个未认证的 KE 和一个为该 KE 设计的对称密钥加密(SKE)方案 (E, D)。
在 EKE 协议中,Alice 和 Bob 运行底层的 KE 协议。每当 Alice 生成下一个 KE 协议消息 mA 时,她使用自己的密码 pwA 对其进行认证,将加密后的消息 cA = E(pwA, mA) 发送给 Bob。如果 Bob 使用自己的密码 pwB 解密消息得到 m′A = D(pwB, cA),当 pwB = pwA 时,m′A = mA。若双方以这种方式对每个 KE 协议消息进行密码加密,当密码匹配时,他们将计算出相同的密钥;若密码不同,某些自然的 KE 和 SKE 方案可确保双方输出不相关的密钥。
协议组成部分如下:
1. 2 - 流密钥交换方案 KE = ((KEA1, KEA2), KEB)
2. (EA, DA), (EB, DB):分别对 A 和 B 的 KE 消息空间进行加密
以下是 EKE 协议的代码实现:
Party A on input pw A
Party B on input pw B
(mA, st) ←$ KEA1 (1κ)
cA ←$ EA(pw A, mA)
-
cA
m′A ←DA(pw B, cA)
(mB, sk B) ←$ KEB(1κ, m′A)
m′B ←DB(pw A, cB)
cB
cB ←$ EB(pw B, mB)
output sk A ←KEA2 (st, m′B)
output sk B
(框内代码是 EKE 编译器,框外代码是底层的 KE)
EKE 对 KE 和对称加密有特殊要求。由于密码不是全熵字符串,其编码可能只占密钥空间的极小部分,标准加密的安全属性可能不适用于从密码派生的密钥。
EKE 编译器正常工作需要满足以下两个特殊属性:
1.
防止离线密码测试
:任何一方发送的密文不允许对用于加密的密码进行离线测试。对于任何密码猜测 pw∗,对密文 c = E(pw, m) 进行解密 m∗ = D(pw∗, c) 必须看起来像是该轮计算出的合理 KE 消息。这需要 KE 具有随机传输记录,即每一轮的消息在消息空间 M 中与随机值不可区分;SKE 需满足均匀密文属性,即对于任意两个密钥 k0 和 k1,分布 {Ek0(m)}m←$M 和 {Ek1(m)}m←$M 在计算上不可区分。
2.
密文承诺
:SKE 密文必须使发送方对用于加密的密码做出承诺。例如,如果 Alice 找到两个密码 pw 和 pw′,使得 c = Epw(m) = Epw′(m′),并发送该密文,然后在 pw 和 pw′ 下解密 Bob 的响应以完成 KE 实例,这将是对 PAKE 的攻击。然而,EKE 对 SKE 的这两个要求似乎相互矛盾,因为密文既要对每个密码看起来像是合理的加密,又要使发送方对单个密码做出承诺。Bellovin 和 Merritt 在 1992 年并未明确 EKE 成为安全 PAKE 所需的 KE 和 SKE 属性,直到建立了能证明这些条件充分性的安全模型后才得以实现。
3. PAKE 安全的基于游戏的模型
EKE 协议看似简单,实则在实现和安全分析方面存在挑战。为 PAKE 研究奠定坚实基础,需要在明确定义的安全模型中捕捉其安全目标。Bellare–Pointcheval–Rogaway(BPR)和 Boyko–MacKenzie–Patel(BMP)分别在 2000 年提出了独立的 PAKE 安全模型,这两篇论文都表明其 PAKE 定义可通过 EKE 协议的变体来满足。
3.1 BPR 安全模型
BPR 提出的 PAKE 安全模型基于游戏范式:
1. 考虑一个安全游戏,即一个对手 A 与运行多项式数量 PAKE 协议实例的诚实方进行交互。
2. 将某些事件定义为协议的“破解”。
3. 将 PAKE 安全定义为对于所有高效对手,这种“破解”发生的概率最多比不可避免的情况(即由于协议规定的功能必然会发生的情况)高一个可忽略的值。
由于 PAKE 可视为认证密钥交换(AKE)的一种特殊形式,BPR 安全游戏基于 Bellare 和 Rogaway 在 1994 年提出的 AKE 模型。对手 A 与实现 PAKE 协议操作的协议实例预言机进行交互,可扮演中间人攻击者,也可选择在两个实例之间转发消息,模拟对会话的被动攻击行为。A 交互的协议会话可能无输出终止(例如,会话拒绝对方)或输出会话密钥 sk。
在 BPR 安全游戏中,对手 A 在某一时刻选择要测试的会话,随机挑战位 b 决定 A 收到的是该会话输出的真实密钥 sk 还是独立随机密钥 sk′。A 的目标是区分这两种情况,其优势定义为 AdvpakeA = (Pr [b′ = b] - 1/2),用于衡量 A 区分真实密钥和随机密钥的能力比随机猜测强多少。
BPR 模型的第一个要求是,无论会话使用何种密码,即使是对手选择的密码,PAKE 在面对被动攻击者时不应比未认证的 KE 差。因此,如果对手被动连接两个会话,其对这两个会话的优势应至多为可忽略的值。然而,如果对手在某个 PAKE 会话上是主动的,即发送自己选择的消息,那么通过在密码猜测 pw∗ 上运行 PAKE 协议,若该会话使用的密码是 pw∗,对手将计算出与被攻击会话相同的会话密钥。因此,主动对手对任何 PAKE 方案的基线优势取决于被攻击会话采样密码的分布。BPR 安全游戏中,每对诚实方从一个固定集合 D(密码字典)中均匀选择密码,由此得出以下安全概念:
定义:若对于所有集合 D 和所有高效算法 A,满足 AdvpakeA ≤ qses / |D| + negl(κ),则称该 PAKE 协议在 BPR 模型中是安全的。其中 qses 是 A 主动参与的会话数量,AdvpakeA 如上述定义,negl 是一个可忽略函数。
3.2 哪些会话密钥可泄露给对手
在上述安全游戏中,对手 A 完全控制网络,但除了选择测试的单个会话外,无法获取诚实会话的内部输出信息。这种 KE 安全概念是不充分的,因为它会使一些攻击者能让同一方的两个诚实会话输出相同会话密钥的方案被视为安全。如果其中一个密钥被高层应用以泄露密钥的方式使用(例如用于一次性密码本加密或一次性认证器),将使另一个会话不安全。
BPR 安全游戏通过添加一个揭示接口来确保每个 sk 输出是新鲜的,A 可以使用该接口查看除测试会话外每个诚实会话的 sk 输出(如果会话拒绝则 sk = ⊥)。然而,添加揭示查询使情况变得复杂,因为如果对手可以揭示除测试会话外所有会话的密钥,那么与测试会话“连接”的会话怎么办?PAKE 必须允许两个会话在消息交换且输入密码相同时输出相同密钥。因此,PAKE 安全模型必须禁止对手揭示测试会话以及与测试会话配对的会话的密钥。
BPR 通过为每个 PAKE 会话假设额外的输入和输出来定义会话配对。额外输入包括:
1. 一方自己的标识符,一个公开认可的唯一字符串,作为该方的身份。
2. 位角色,用于确定该方在协议中是发起者还是响应者。
额外输出包括:
1. 会话标识符 sid,一个随机数,用于唯一标识两个诚实方之间的单个会话(不失一般性,sid 可以设置为协议传输记录)。
2. 伙伴标识符 pid,与该方(显然)建立会话密钥的对方的标识符。
BPR 模型定义两个会话 Pi 和 P′j 配对的条件是 (sidi, P, pidi, pw i) = (sidj, pidj, P′, pw j) 且 rolei ≠ rolej,并放宽正确性要求,即只有当两个会话配对时才要求它们建立相同的会话密钥。最后,安全游戏允许 A 揭示除测试会话和与测试会话配对的会话之外的每个会话的密钥。
3.3 密码和会话状态泄露(PFS 和自适应安全)
当对手与 PAKE 会话交互时,可能获取比发送的消息和输出更多的信息。首先,对手可能在某个时刻获取诚实方的密码或部分信息;其次,可能获取会话的临时状态。
如果对手 A 获取了 P 的密码 pw,PAKE 方案仍可保护 P 被被动观察的会话以及在获取密码之前攻击者主动攻击的会话。由于密码是长期秘密,过去 PAKE 会话对未来密码泄露的安全性称为完美前向保密(PFS)。将 PFS 限制为仅在长期秘密泄露时对被动观察的 KE 会话的安全性称为弱 PFS。将会话状态泄露给 A 称为自适应妥协(或损坏),在自适应妥协情况下的安全性称为自适应安全。需要注意的是,自适应安全意味着 PFS,因为会话状态包括密码,且会话状态会揭示会话输出,所以 A 不能测试已受损的会话或与测试会话配对的会话。
以下是 BPR 安全模型的流程示意:
graph TD;
A[对手 A] -->|选择测试会话| B[随机挑战位 b];
B -->|b = 0| C[发送真实密钥 sk];
B -->|b = 1| D[发送独立随机密钥 sk'];
A -->|交互并输出 b'| E[计算优势 AdvpakeA];
| 项目 | 详情 |
|---|---|
| 密码认证密钥交换(PAKE) | 允许共享低熵密码的双方通过不安全网络协商加密强度高的密钥 |
| 首个 PAKE:EKE | 由未认证的 KE 和对称密钥加密方案构建,对 KE 和 SKE 有特殊要求 |
| BPR 安全模型 | 基于游戏范式,定义了 PAKE 协议的安全概念和会话配对等 |
4. PAKE 安全的基于模拟的模型
Boyko–MacKenzie–Patel(BMP)在 2000 年提出的基于模拟的 PAKE 安全模型,为 PAKE 的安全性评估提供了另一种视角。该模型的核心思想是通过模拟的方式来衡量协议的安全性。
在 BMP 模型中,存在一个模拟器,它试图模拟诚实方和对手之间的交互。如果模拟器能够在不知道真实密码的情况下,生成与真实协议交互不可区分的模拟交互,那么就认为该 PAKE 协议是安全的。
具体来说,模拟器的任务是根据对手的行为,生成一系列的消息和响应,使得对手无法区分这些消息是来自真实的协议执行还是模拟器的模拟。这就要求模拟器能够准确地捕捉协议的行为和特性,并且在不知道密码的情况下,仍然能够生成看似合理的交互。
与 BPR 模型相比,BMP 模型更侧重于从模拟的角度来评估协议的安全性。BPR 模型主要关注对手在区分真实密钥和随机密钥方面的优势,而 BMP 模型则更强调协议在模拟环境下的不可区分性。这两种模型各有优缺点,它们共同为 PAKE 协议的安全性分析提供了丰富的工具。
以下是 BMP 模型的简单流程示意:
graph TD;
A[对手] -->|交互| B[真实协议执行];
C[模拟器] -->|模拟交互| D[模拟环境];
B -->|消息| E[对手判断];
D -->|消息| E;
5. 标准模型和随机预言机模型下的 PAKE 解决方案
在 PAKE 的研究中,根据所使用的模型不同,可以将解决方案分为标准模型和随机预言机模型(ROM)或理想密码(IC)模型两类。
5.1 标准模型解决方案
标准模型下的 PAKE 解决方案不依赖于随机预言机或理想密码的假设,而是基于更基本的密码学原语。这些解决方案通常具有更高的理论安全性,因为它们不依赖于理想化的模型。
例如,一些标准模型下的 PAKE 协议基于离散对数问题或椭圆曲线密码学。这些协议通过巧妙地设计协议流程和使用密码学工具,确保在标准模型下满足 PAKE 的安全要求。
标准模型解决方案的优点是具有更强的理论基础,不依赖于随机预言机的理想化假设。然而,它们的实现通常较为复杂,效率可能相对较低。
5.2 随机预言机模型或理想密码模型解决方案
随机预言机模型和理想密码模型是为了简化密码学协议的分析而引入的理想化模型。在这些模型中,假设存在一个随机预言机或理想密码,协议可以利用它们来实现更高效的安全机制。
许多 PAKE 协议在随机预言机模型或理想密码模型下被证明是安全的。这些协议通常具有较高的效率,因为它们可以利用随机预言机或理想密码的特性来简化协议的设计和分析。
然而,随机预言机模型和理想密码模型是理想化的,实际实现中可能存在与模型假设不符的情况。因此,在将这些协议应用到实际系统中时,需要谨慎考虑其安全性。
以下是两种模型下 PAKE 解决方案的对比表格:
| 模型 | 优点 | 缺点 |
| ---- | ---- | ---- |
| 标准模型 | 理论安全性高,不依赖理想化假设 | 实现复杂,效率可能较低 |
| 随机预言机模型/理想密码模型 | 效率高,简化协议设计和分析 | 基于理想化假设,实际应用需谨慎 |
6. 非对称或客户端 - 服务器 PAKE
非对称或客户端 - 服务器 PAKE 是 PAKE 问题的一个重要变体。在这种场景下,客户端和服务器之间共享一个密码,并且需要通过不安全网络协商出一个安全的会话密钥。
与传统的 PAKE 协议不同,客户端 - 服务器 PAKE 考虑了客户端和服务器在计算能力、资源等方面的差异。通常,服务器具有更强的计算能力和更多的资源,而客户端可能是资源受限的设备,如移动设备。
客户端 - 服务器 PAKE 协议的设计需要考虑以下几个方面:
1.
安全性
:确保在客户端和服务器之间共享的密码不被泄露,并且会话密钥对主动攻击者和被动攻击者都是安全的。
2.
效率
:考虑客户端的资源限制,尽量减少客户端的计算和通信开销。
3.
可扩展性
:协议应该能够适应不同规模的系统和不同数量的客户端。
一些常见的客户端 - 服务器 PAKE 协议包括基于 Diffie - Hellman 密钥交换的协议和基于椭圆曲线密码学的协议。这些协议通过优化协议流程和使用合适的密码学工具,在保证安全性的前提下,提高了客户端的效率。
以下是客户端 - 服务器 PAKE 协议的简单流程示意:
graph TD;
A[客户端] -->|发送消息| B[服务器];
B -->|处理并响应| A;
A -->|再次交互| B;
A & B -->|协商出会话密钥| C[安全会话];
7. 阈值 PAKE
阈值 PAKE 是另一个重要的 PAKE 变体,也称为多服务器 PAKE。在阈值 PAKE 场景中,存在多个服务器,客户端需要与这些服务器合作来协商出一个安全的会话密钥。
阈值 PAKE 的核心思想是引入阈值的概念。只有当一定数量(阈值)的服务器参与到协议执行中时,才能成功协商出会话密钥。这增加了协议的安全性和可靠性,因为即使部分服务器被攻击或损坏,只要未达到阈值,协议仍然能够保证安全性。
阈值 PAKE 协议的设计需要考虑以下几个方面:
1.
阈值选择
:合理选择阈值,既要保证安全性,又要考虑系统的可用性。
2.
服务器间通信
:确保服务器之间的通信是安全的,并且能够有效地协调协议的执行。
3.
客户端与服务器的交互
:设计高效的客户端与服务器之间的交互流程,减少通信和计算开销。
一些常见的阈值 PAKE 协议基于秘密共享技术和密码学协议的组合。这些协议通过将密码信息分散到多个服务器中,并且在协议执行过程中进行有效的协作,实现了阈值 PAKE 的功能。
以下是阈值 PAKE 协议的简单流程示意:
graph TD;
A[客户端] -->|发送请求| B[服务器 1];
A -->|发送请求| C[服务器 2];
A -->|发送请求| D[服务器 3];
B & C & D -->|达到阈值| E[协商出会话密钥];
8. 总结
密码认证密钥交换(PAKE)协议在现代密码学中具有重要的地位,它为共享低熵密码的双方在不安全网络上协商安全的会话密钥提供了有效的解决方案。
通过对 EKE 协议的研究,我们了解到 PAKE 协议在实现和安全分析方面存在诸多挑战,特别是对底层密钥交换和对称加密方案有特殊要求。
BPR 和 BMP 等安全模型为评估 PAKE 协议的安全性提供了重要的工具。BPR 模型基于游戏范式,通过对手的优势来衡量协议的安全性;BMP 模型基于模拟的思想,强调模拟器在不知道密码的情况下生成不可区分的模拟交互。
在解决方案方面,标准模型和随机预言机模型/理想密码模型各有优缺点,为不同场景下的 PAKE 协议设计提供了选择。
非对称或客户端 - 服务器 PAKE 和阈值 PAKE 作为 PAKE 问题的重要变体,考虑了不同的应用场景和需求,为实际系统的安全通信提供了更灵活的解决方案。
未来,随着密码学技术的不断发展和应用场景的不断变化,PAKE 协议的研究也将不断深入,有望在安全性、效率和可扩展性等方面取得更大的突破。
超级会员免费看
649

被折叠的 条评论
为什么被折叠?



