隐匿于无形:通过随机编程实现内存紧致证明
在密码学领域,安全证明的质量至关重要,尤其是在考虑攻击者内存成本的情况下。本文将介绍一种新的内存紧致归约技术,它能够将底层计算问题的时间 - 内存难度与方案的安全性相关联。
1. 内存紧致归约概述
在分析密码方案的安全性时,除了时间复杂度和数据复杂度等指标,攻击者的内存成本也不容忽视。因为可用内存的数量会严重影响攻击的可行性。
内存紧致归约的目标是通过归约证明,假设某个底层计算问题只能由运行时间为 (t’) 且使用内存为 (s’) 的算法以优势 (\delta = \delta(t’, s’)) 解决,那么任何运行时间为 (t) 且使用 (s) 位内存的攻击者在破坏某个方案时最多只能达到优势 (\epsilon = \epsilon(t, s)),并且保证 (s \approx s’),通常还希望在其他参数上也保持紧致,即 (t \approx t’) 和 (\epsilon \approx \delta)。
内存敏感问题是指解决问题所需的时间会随着攻击者可用内存的减少而增加的问题。例如,公钥环境中的经典问题,如破解 RSA、因式分解、格问题和 LPN、在有限域上求解离散对数;以及密钥环境中的问题,如寻找 (k) 路碰撞((k > 2))、一次性找到多个碰撞、区分随机置换和随机函数等。
开发内存紧致归约并非易事,甚至在某些情况下已被证明是不可能的。因此,开发尽可能多的技术来实现这种归约至关重要。本文提出了一种新的内存紧致归约方法,其核心在于利用攻击者与安全游戏之间交换的随机字符串,将状态信息编码其中,从而在后续查询中无需本地存储这些信息即可恢复状态,节省了内存。
1.1 技术概述
1.1.1 高效标记
以标准的 UFCMA 签名安全概念为例,在忽略内存的情况下,UFCMA 与允许任意数量“伪造尝试”的 mUFCMA 概念紧密等价。经典的归约方法将 mUFCMA 攻击者转换为大致等效的 UFCMA 攻击者,但这种归约不是内存紧致的,因为需要记住之前签名的消息以确保消息的新鲜性。
为了解决这个问题,我们提出了高效标记技术。假设只对随机消息 (m_1, m_2, \ldots, m_q \leftarrow \$ {0, 1}^\ell) 进行签名,并考虑将 mUFCMA 安全性归约到 UFCMA 安全性。归约过程中,使用一个单射随机函数 (f : [q] \to {0, 1}^\ell) 及其逆函数 (f^{-1}),将第 (i) 个查询的消息设置为 (m_i \leftarrow f(i))。在模拟伪造查询 ((m^ , \sigma^ )) 时,通过检查 (f^{-1}(m^ ) \in [q]) 来判断 (m^ ) 是否为新鲜的签名查询。
不过,这种模拟并非完美。原始的 (m_i) 不一定是不同的,这可以通过经典的“切换引理”来处理;此外,如果攻击者在收到消息之前就输出了 (m_i),归约可能会错过有效的伪造,但这种情况发生的概率很小。
1.1.2 低效标记与非时间紧致归约
在某些情况下,可能无法高效地检查 (f^{-1}(m^ ) \in [q])。例如,当待签名的消息采样为 (m_i \leftarrow h(r_i)),其中 (h) 是难以求逆的函数,(r_i) 是随机的。此时,我们可以将 (m_i) 设置为 (m_i \leftarrow h(f(i))),但为了检测先前的签名查询,需要检查是否存在某个 (i \in [q]) 使得 (m^ = h(f(i))),这只能在线性时间内完成。最终得到的 UFCMA 攻击者的运行时间为 (t’ = t + \Theta(q_F \cdot q)),其中 (t) 是原始攻击者的运行时间,(q_F) 是伪造尝试的次数。如果 (q \approx q_F \approx t),则归约不是时间紧致的,攻击者的运行时间为 (t’ = O(t^2))。
虽然非时间紧致归约在时间上可能不高效,但在某些情况下仍然有助于推断破坏方案需要一定的内存。例如,对于某个方案的归约将一个运行时间为 (t) 且使用内存为 (s) 的成功攻击者转换为一个运行时间为 (t^2) 且使用内存为 (s) 的攻击者来破解 (F_p) 上的离散对数问题((p) 是 4096 位素数)。如果内存少于 (2^{78}) 位,已知的离散对数算法都不如通用算法(即运行时间不优于 (2^{2048})),那么只要 (t < 2^{1024}),这种非时间紧致归约仍然足以推断该方案对于任何 (s < 2^{78}) 的安全性。
1.1.3 消息编码
归约过程中,我们可以控制某些随机值,利用这些值隐藏状态信息,并且可以在后续唯一地恢复这些信息。因为只有当攻击者将这些值返回给归约时,才需要记住这些状态信息。上述例子中的状态信息比较简单,仅判断查询是否为旧查询。实际上,这种范式还可以用于存储复杂信息,我们将这种技术称为消息编码。
1.1.4 F - 预言机攻击者
上述技术需要访问一个大的随机单射函数,我们认为可以通过伪随机方式模拟这个函数。先前的工作也使用伪随机函数(PRF)以低内存模拟随机预言机。然而,在陈述内存紧致归约时,需要决定如何模拟这些对象,这很不方便,因为不同的实例化似乎会导致定量不同的归约,但这并不反映任何特定的现实情况。
本文提出了一种新的观点,即使用 F - 预言机攻击者。其中 (F) 是一组函数,攻击者期望获得对随机 (f \in F) 的预言机访问。可以通过以下两种方式获得内存紧致性定理:
1. 应用一个通用引理,表明可以使用 F - 伪随机函数以低内存实例化 (f)。
2. 假设使用 (f) 不会在功能上增加攻击者的成功机会,因为 (f) 与正在解决的问题实例无关(对于某些信息论问题,这已被证明是成立的)。
一般来说,第一种方法更保守,但第二种方法也很可能是一种可行的方法,并且可以得到更简洁的结果。因为我们不期望任何考虑的内存敏感问题在获得来自任何自然类 (F) 的预言机访问时会变得更容易,例如,即使获得随机单射的访问,因式分解问题也不会变得更容易。
1.2 结果概述
本文的结果展示了标记和消息编码技术的不同应用,具体如下:
| 应用场景 | 归约类型 | 时间紧致性 | 内存紧致性 | 优势紧致性 |
| — | — | — | — | — |
| 数字签名多挑战安全 | 从 UFRMA 到 UFCMA | 部分情况 ✓,部分情况 ✗ | ✓ | 部分情况 ✓,部分情况 ✗ |
| 认证加密安全 | 从 INDR 到 AE | ✓ | ✓ | ✓ |
| 选择密文安全(1CCA 到 mCCA) | | 部分情况 ✓,部分情况 ✗ | 部分情况 ✓,部分情况 ✗ | 部分情况 ✓,部分情况 ✗ |
1.2.1 数字签名多挑战安全
考虑数字签名在面对多次伪造尝试时的安全性,引入了 UFRMA(随机消息攻击下的不可伪造性)概念。该概念由消息分布 (D) 参数化,当攻击者进行签名查询时,会收到 (m’ = D(m; r)) 的签名,其中 (r) 是随机的。
- 如果可以从 (m’) 中提取 (m) 和 (r)(xUFRMA 或 mxUFRMA),则可以将高效标记方法推广,归约到 UFCMA 时选择 (r = f(m, i)),其中每个 (f(m, \cdot)) 是随机单射。这种情况可以涵盖如 TLS 1.3 等密钥交换协议中使用的签名。
- 如果只能从 (m’) 中提取 (m)(wUFRMA),则使用低效标记方法,选择 (r = f(m, i)),在验证伪造查询时进行线性时间检查,判断是否存在某个 (i \in [q]) 使得 (m^* = D(m; f(m, i)))。这种情况适用于待签名消息包含新鲜公钥或密文的场景,如签名证书、某些密钥交换协议和签密等。
此外,还证明了特定方案的 mUFCMA 安全性。通过对任何数字签名方案 (DS) 进行随机化得到 (RDS) 方案,将 (m \parallel r) 进行签名并将 (r) 作为签名的一部分。从 mxUFCRA 结果可以直接得到从 (RDS) 的 mUFCMA 安全性到基础方案的 UFCMA 安全性的紧致归约。对于 RSA - PFDH 方案,使用高效标记技术从 RSA 假设出发得到了强 mUFCMA 安全性的完全紧致证明。
1.2.2 认证加密安全
在认证加密(AE)领域,将方案的机密性(INDR 安全)提升到完整的 AE 安全时,如果要实现内存紧致的归约是比较困难的。因为 INDR 归约需要模拟一个解密预言机,该预言机需要拒绝除了从加密查询转发过来的所有密文,而识别这些转发的密文似乎需要记住状态。
本文针对特定方案,即通过添加 PRF 来增加完整性的方案,给出了内存紧致的归约。在论证 PRF 看起来像随机函数 (f) 且伪造不太可能发生之后,应用 INDR 归约。使用高效标记技术的变体,利用 (f) 来识别解密查询的密文是否新鲜。
1.2.3 选择密文安全:从一到多
经典的教科书结果表明,公钥加密中针对单个加密查询的 CCA 安全性(1CCA)意味着针对多个查询的安全性(mCCA),但相关的归约在内存紧致性方面存在问题。
本文使用技术恢复了该结果的内存紧致版本。具体考虑“左 - 右”形式的 1CCA/mCCA 安全性:归约过程中,给定攻击者 (A),随机选择 (i \leftarrow \$ [q])((q) 是加密查询的数量),对 (A) 的前 (i - 1) 个加密查询用左消息的加密结果回答,后 (q - i) 个查询用右消息的加密结果回答,只有第 (i) 个查询的答案由单查询挑战者提供。在模拟解密查询时,需要确保对任何挑战密文 (c^ _1, \ldots, c^ _q) 的解密查询返回错误 (\perp),这似乎需要记住额外的挑战密文 (c^*_j)((j \neq i))。
为了解决这个问题,采用了两种方法:
1. 使用低效标记方法给出新的内存紧致归约,优势损失与原始教科书归约相同,但该归约不是时间紧致的,主要思想是将生成挑战密文使用的随机性作为标记。
2. 通过改变到更强(但仍然常见)的 CCA 安全性定义,得到了时间和内存都紧致的归约(优势损失为常见的因子 (q)),即从 1\$CCA - m 安全性到 m\$CCA - m 安全性的归约。这种变体中,加密查询针对单个消息,返回消息的加密结果或随机独立的密文;对挑战密文 (c^*_i) 的解密查询返回关联的消息。归约过程中充分利用消息编码方法,精心模拟随机密文,以便能够恢复关联的挑战明文。
1.2.4 相关结论
从选择密文安全的结果可以看出,给出内存紧致归约的能力与定义选择密切相关。在内存无界的情况下,对解密预言机建模的不同等效方法在内存有界的情况下可能并不等效。因此,在选择合适的定义时需要更加谨慎。例如,m\$CCA - m 安全性的方法被认为更“自然”,因为它不需要人为地阻止解密预言机的输出,始终返回消息,但在某些情况下,其他定义选择可能更受青睐。
此外,认证加密结果表明,一些不可能结果并不排除以内存紧致归约形式出现的积极结果,可以通过利用特定方案的结构或考虑受限的安全概念来实现。
1.2.5 流程图示
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([开始]):::startend --> B(分析问题):::process
B --> C{是否为内存敏感问题?}:::decision
C -->|是| D(考虑内存紧致归约):::process
C -->|否| E(常规归约方法):::process
D --> F{是否可实现高效标记?}:::decision
F -->|是| G(使用高效标记技术):::process
F -->|否| H(考虑低效标记或消息编码):::process
G --> I(进行归约证明):::process
H --> I
E --> I
I --> J([结束]):::startend
综上所述,本文介绍的内存紧致归约技术为密码学安全证明提供了新的思路和方法,通过高效标记、消息编码等技术,在数字签名、认证加密和选择密文安全等多个领域取得了有意义的结果,同时也强调了定义选择在内存紧致归约中的重要性。在实际应用中,可以根据具体问题的特点选择合适的技术和定义,以实现更高效、更安全的密码方案。
1.3 论文结构
接下来介绍论文内容的具体结构:
1.
基础介绍
:引入了相关的符号、计算模型以及基本的密码学背景知识,为后续的讨论奠定基础。
2.
F - 预言机攻击者
:讨论使用 F - 预言机攻击者的约定。
3.
数字签名多挑战安全归约
:给出数字签名方案在允许多次伪造尝试时的内存紧致归约。其中,通用结果和针对 RSA - PFDH 的特定结果分别进行阐述。
4.
认证加密安全证明
:证明了通过添加 PRF 增加完整性的认证加密方案的安全性,并给出了从该方案的 INDR 安全性到完整 AE 安全性的内存紧致归约。
5.
选择密文安全结果
:给出了公钥加密中 1CCA 安全性与 mCCA 安全性之间的关系结果。分别针对传统的“左 - 右”概念和“与随机不可区分”变体进行了讨论。
1.4 技术总结
下面以表格形式总结本文介绍的主要技术及其应用场景和特点:
| 技术名称 | 应用场景 | 特点 |
| — | — | — |
| 高效标记 | 数字签名多挑战安全(xUFRMA/mxUFRMA)、认证加密安全 | 利用随机函数编码消息,可高效判断消息新鲜性,节省内存 |
| 低效标记 | 数字签名多挑战安全(wUFRMA)、选择密文安全(1CCA 到 mCCA 部分情况) | 需要线性时间检查消息,可能导致非时间紧致归约,但仍有助于推断内存需求 |
| 消息编码 | 选择密文安全(1\$CCA - m 到 m\$CCA - m) | 可存储复杂状态信息,通过控制随机值隐藏和恢复信息 |
| F - 预言机攻击者 | 多种安全证明场景 | 为内存紧致归约提供新视角,通过两种方式获得内存紧致性定理 |
1.5 操作步骤说明
1.5.1 高效标记技术操作步骤
在数字签名多挑战安全的 xUFRMA/mxUFRMA 场景中,使用高效标记技术将 mUFRMA 安全性归约到 UFCMA 安全性的操作步骤如下:
1. 定义单射随机函数 (f : [q] \to {0, 1}^\ell) 及其逆函数 (f^{-1})。
2. 对于第 (i) 个签名查询,设置 (m_i \leftarrow f(i))。
3. 当模拟伪造查询 ((m^
, \sigma^
)) 时,检查 (f^{-1}(m^
) \in [q])。
- 若成立,则判断 (m^
) 为新鲜的签名查询;
- 若不成立,则继续处理。
4. 处理可能出现的不完美情况,如使用经典的“切换引理”处理原始 (m_i) 不唯一的问题。
1.5.2 低效标记技术操作步骤
在数字签名多挑战安全的 wUFRMA 场景中,使用低效标记技术的操作步骤如下:
1. 定义函数 (h) 和随机函数 (f)。
2. 对于第 (i) 个签名查询,设置 (m_i \leftarrow h(f(i)))。
3. 当模拟伪造查询 ((m^
, \sigma^
)) 时,遍历 (i \in [q]),检查是否存在 (m^
= h(f(i)))。
- 若存在,则判断 (m^
) 为旧的签名查询;
- 若不存在,则判断为新鲜查询。
1.5.3 消息编码技术操作步骤
在选择密文安全的 1\$CCA - m 到 m\$CCA - m 归约中,使用消息编码技术的操作步骤如下:
1. 精心设计随机密文的模拟方式,将关联的挑战明文信息隐藏在随机密文中。
2. 当接收到解密查询时,根据密文的特征和预先设计的规则,恢复关联的挑战明文。
1.6 总结与展望
本文提出的内存紧致归约技术为密码学安全证明带来了新的突破。通过高效标记、低效标记、消息编码以及 F - 预言机攻击者等技术,在数字签名、认证加密和选择密文安全等多个重要领域实现了内存紧致的归约。这些技术不仅解决了传统归约方法在内存利用上的不足,还为密码方案的安全性分析提供了更精确的工具。
然而,密码学领域的发展是持续的,仍有许多问题值得进一步探索。例如,如何在更多类型的密码方案中应用和优化这些技术,以实现更广泛的内存紧致归约;如何更好地处理非时间紧致归约带来的效率问题,使其在实际应用中更具可行性;以及如何进一步完善 F - 预言机攻击者的理论,使其在不同场景下的应用更加灵活和有效。
未来的研究可以围绕这些方向展开,不断拓展内存紧致归约技术的应用边界,为构建更安全、更高效的密码系统提供坚实的理论支持。
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([开始研究]):::startend --> B(选择密码方案):::process
B --> C{是否适合内存紧致归约?}:::decision
C -->|是| D(选择合适技术):::process
C -->|否| E(探索新方法):::process
D --> F{是否为高效标记适用场景?}:::decision
F -->|是| G(应用高效标记技术):::process
F -->|否| H{是否为低效标记适用场景?}:::decision
H -->|是| I(应用低效标记技术):::process
H -->|否| J(应用消息编码技术):::process
G --> K(进行归约证明):::process
I --> K
J --> K
E --> K
K --> L(评估结果):::process
L --> M{是否满足安全要求?}:::decision
M -->|是| N([结束研究]):::startend
M -->|否| B
通过上述的研究和探索,我们有望在密码学的安全证明领域取得更多的进展,为数字时代的信息安全保驾护航。
超级会员免费看

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



