文章主要翻译自Hash Functions are not (Quantum) Random Oracles, but only Technically,部分内容摘录自下方参考文献。
本文介绍随机预言机模型(Random Oracle Model-ROM)与量子随机预言机模型(Quantum ROM-QROM),通过举例说明它们的用途和缺陷。最后证明 QROM 与 ROM 一样是一种不健全的模型,但不妨碍我们在证明中使用它们。
太长不看: QROM是为了应对量子计算机可以使用量子比特查询哈希函数而设计的,在证明密码算法的量子安全性的时候需要考虑QROM模型,如果一个基于ROM模型的算法安全性证明是无历史的(history-free)1,那么这个算法也是QROM下安全的。
ROM部分假设读者有一定的密码学基础和计算机基础,QROM部分假设读者大概知道量子计算机是什么。
可以将图灵机想象为运行由某种编程语言指定的程序的(抽象)机器。就像你的电脑一样!
随机预言机是一种抽象概念,可以将其当做一个黑盒,图灵机可以查询RO并从中获得响应。这里将随机预言机当做“黑盒”而不是“图灵机程序”,因为RO不是现实中存在的程序(随机预言“机”不是机器)。它是一种我们对其内部运作方式一无所知的抽象概念。在讨论RO的时候,我们不关注其内部怎么实现,而是关注他的功能性。例如,当我们想要表达图灵机 A \mathcal{A} A可以访问预言机 O \mathcal{O} O时,我们将其记作 A O \mathcal{A}^{\mathcal{O}} AO。这意味着 A \mathcal{A} A可以在任何输入 x x x上调用RO得到 O ( x ) \mathcal{O}(x) O(x)。
定义(非正式):密码系统中的随机预言机是可公开访问的预言机(即所有各方都可以查询它),它会产生随机且一致的响应。 “随机”意味着,在首次对某个输入查询时,他的输出是随机的(即输出的所有可能性相等)。 “一致”意味着 O \mathcal{O} O在某个给定输入上始终返回相同的值。
请注意,实现随机预言机是很困难的。您必须构建一个包含所有可能输入和输出的表。这个表会很大,当我们在实践中模拟随机预言机时,我们通常会在运行时实时完成这些操作。也就是说,对于每个新输入,我们生成一个新的随机值并将其与输入一起保存在表中。这样,预言机就可以对之前看到的查询做出一致的响应来满足“一致性”。
这里有必要回顾一下图灵规约的定义,因为随机预言模型的目的就是为了做规约。
(非正式的)定义:从问题 X X X到问题 Y Y Y的图灵规约是指如果存在一个图灵机 A \mathcal{A} A,它能够访问解决问题 Y Y Y问题的图灵机 Y \mathcal{Y} Y,那么 A Y \mathcal{A}^\mathcal{Y} AY就能高效2解决问题 X X X。称“ X X X规约到 Y Y Y”,或者“ X ≤ Y X \le Y X≤Y”。
在这个定义中,我们把“问题”理解为“这个东西是否满足关系 R R R”或者“什么是使这满足关系 R R R的东西”这样的问题。例如:
随机预言机模型(Random Oracle Model,ROM)于1993年由Bellare和Rogaway提出,其目的是为了解决90年代密码学社区中的一种分裂:密码学实践者在实际应用中使用哈希函数来构造密码协议,而理论密码学家无法证明这些方案是安全的。ROM的目标是通过形式化许多人已经在做的一个小假设来弥合这个差距:哈希函数看起来像是随机的。“看起来像随机”这个概念更像是一种哲学,而不是数学,所以我们不在此深入。但是,这种形式化的要点可以通过以下定义来捕捉:
(非正式的)定义:如果说在随机预言机模型下 X X X可以规约到 Y Y Y。那么存在从 X X X到 Y ′ Y' Y′的规约,其中 Y ′ Y' Y′与 Y Y Y相同,区别是 Y Y Y中哈希函数在 Y ′ Y' Y′被替换为随机预言机。
随机预言机模型是一种理论模型,它假设存在一个理想的随机函数(或称为随机预言机),这个函数能返回完全随机的输出。然而,如果在ROM中成立的规约(reduction),当使用哈希函数代替随机预言机时不一定成立。因此,ROM更多的是被视为使用哈希函数的密码体系的一种启发性证明,而不是对这些体系准确无误的证明。Bellare和Rogaway在介绍ROM时就特别强调了这一点。
In order to bring to practice some of the benefits of provable security, it makes sense to incorporate into our models objects which capture the properties that practical primitives really seem to possess, and view these objects as basic even if the assumptions about them are, from a theoretical point of view, very strong…We stress that the proof is in the random oracle model and the last step is heuristic in nature. It is a thesis of this paper that significant assurance benefits nonetheless remain.
为了将“可证明安全“一些优点带入实践中,我们需要在理论模型中纳入一些实际的原语可能有的特点,并将这个模型视为证明的基础。从理论的角度来看,随机预言机模型的假设非常强……我们必须强调的是在随机预言机模型中的证明中,最后一步的证明是启发性的。本文的主旨是,尽管如此,随机预言机仍然是一个很有用的模型。
随机预言者模型被广泛应用于安全性证明中。使用随机预言者模型可以降低对潜在易受攻击的伪随机比特生成器的依赖。且能够得出某些在标准模型下无法证明安全性的密码学协议,比如Fiat-Shamir转换。使用随机预言者模型可以得出这些方案的安全性,而如果不使用随机预言者模型,则无法得到这些方案的可证安全性结果。
扩展阅读:Fiat-Shamir转换
Fiat-Shamir是一种将交互式证明变为非交互证明的技术,比如对于最简单的Sigma协议,包含四个步骤,“Commit”,“Challenge”,“Respond”,“Check”:Sigma协议用于Alice向Bob证明某个知识。
Alice Bob ----- ----- co,st = Commit(secret,public) ---------- co ---------> c = Challenge() <--------- c ---------- r = Respond(st,c) ---------- r ---------> Check(co,c,r)
Fiat-Shamir可以将这个过程变为一个非交互式的证明过程,Alice可以自己生成Challenge部分,并且一次生成后任何人都可以验证。
Alice World ----- ----- co, st = Commit(secret,public) c = H(public,co) r = Respond(st,c) ------ co,r -----------> c = H(public,co) Check(co,c,r)
为什么可以这么进行转换?如果把H看做是一个随机预言机,那么挑战显然是均匀随机的,并且与Alice的公开信息和承诺无关。在安全性证明中,Alice不能直接访问H函数,而是访问由模拟者提供的随机预言机 O H \mathcal{O}^H OH。在这种情况下,Alice在不遵循协议的情况下(特别当她不知道相应的secret,即co不是由正确的secret生成)伪造一个commit和respond的概率与H的范围大小的倒数成正比,也就是说,如果H的定义域是 X X X,值域是 Y Y Y,那么一个没有secret的人,最多进行 q q q次 O H \mathcal{O}^H OH的调用,伪造出能被Check函数接受的 r r r值的概率最多是 q / ∣ Y ∣ q/|Y| q/∣Y∣。通常 ∣ Y ∣ = 2 n |Y| = 2^n ∣Y∣=2n,其中 n n n是比特数, ∣ Y ∣ |Y| ∣Y∣是一个相当大的值,所以这个概率是可忽略的。
Koblitz and Menezes认为尽管在过去的二十年里,随机预言者模型引起了一些争议,但目前为止,尚未发现使用随机预言者模型的密码学协议在实际应用中存在安全性问题。因此,随机预言者模型仍然是分析密码学协议安全性的一种有效和有用工具。
所有这些都表明,虽然ROM只是一种启发式方法,但它非常非常有用。
不用随机预言机证明的密码算法称为标准模型下安全的算法,与随机预言机模型相对。
随机预言机模型具有的性质是:随机性(输出均匀分布)和一致性(相同的输入会得到相同的输出)。
(标准模型)哈希函数具有的性质是:抗原像性,抗碰撞性,抗第二原像性。
之前我提到,没有人声称哈希函数可以被模拟为随机预言机。这个观点是正确的,因为事实上,哈希函数确实不能被模拟为随机预言机。我们可以通过构造一个在随机预言机模型(ROM)中安全,但在任何哈希函数选择下都不安全的数字签名算法来证明这一点。这意味着,存在一个签名方案,在ROM中是安全的,但在任何哈希函数选择下都是完全不安全的。1998年,CGH首次提供了这种方案的一个示例,但本文使用HMR提供的另一个认为更清晰的示例。
假设有一个安全的签名方案 S \mathcal{S} S,其签名算法为 S i g n k ( m ) \mathsf{Sign}_k(m) Signk(m),其中 k k k是签名密钥。我们定义一个新的签名方案 E v i l \mathcal{Evil} Evil,其签名算法为 E v i l S i g n k H ( m ) \mathsf{EvilSign}^{H}_{k}(m) EvilSignkH(m),该算法可以访问某个预言机 H H H(下面将比较 H H H是预言机 O \mathcal{O} O还是哈希函数 f f f的情况)。用 λ \lambda λ表示安全参数。在输入 m m m时, E v i l S i g n H , k \mathsf{EvilSign}_{H,k} EvilSignH,k将计算 b : = D H ( m ) b:=D_H(m) b:=DH(m),其中 D D D是我们稍后要定义的一个算法。如果 b = 0 b=0 b=0,那么算法返回 S i g n k ( m ) \mathsf{Sign}_k(m) Signk(m),如果 b = 1 b=1 b=1,算法返回 k k k。
D H ( m ) D_H(m) DH(m)是我们用来区分随机预言机和哈希函数的算法。它利用了哈希函数可以作为程序表示的思想,而随机预言机需要一个庞大的真值表来描述其行为。 D H D_H DH将其输入 m m m解释为一个(通用图灵机)程序 π \pi π的描述。然后检查所有 π ( i ) = H ( i ) , 0 ≤ i < 2 ∣ π ∣ + λ \pi(i) = H(i),0 \leq i < 2|\pi| + \lambda π(i)=H(i),0≤i<2∣π∣+λ是否成立( ∣ π ∣ |\pi| ∣π∣为程序的输出长度)。如果对于任何 i i i,这个等式都失败,那么 D D D输出 0 0 0。否则,它输出 1 1 1。下面有两个声明:
声明:
(1) 如果 H H H是一个哈希函数 f f f,存在一个攻击者可以始终使 D D D输出 1 1 1。
(2) 如果 H H H是一个随机预言机 O \mathcal{O} O, D D D以高概率输出 0 0 0。
证明(I):这很简单:攻击者只需发送 f f f的编码。然后对所有的 i i i,有 π ( i ) = H ( i ) = f ( i ) \pi(i)=H(i)=f(i) π(i)=H(i)=f(i)。
证明(II):这可以通过限制存在一个能代表 O \mathcal{O} O的真值表的程序的可能性来证明。让我们暂时考虑长度最多为 ℓ \ell ℓ的程序。设查询随机预言机的次数为 q ℓ = 2 ℓ + λ q_{\ell} = 2^{\ell} + \lambda qℓ=2ℓ+λ。
令随机预言机的所有输出的集合大小为 q ℓ q_{\ell} qℓ,假设预言机的输出值为二进制,是 { ( O ( 1 ) , O ( 2 ) , … , O ( q ℓ ) ) : O : N → 0 , 1 } \left\{\left(\mathcal{O}(1), \mathcal{O}(2), \ldots, \mathcal{O}\left(q_{\ell}\right)\right): \mathcal{O}: \mathbb{N} \rightarrow{0,1}\right\} {(O(1),O(2),…,O(qℓ)):O:N→0,1}。这个集合的大小是 2 q ℓ 2^{q_{\ell}} 2qℓ。相比之下,考虑输出长度至多为 ℓ \ell ℓ 的程序的输出集合。同样,假设所有长度至多为 ℓ \ell ℓ 的程序都会停止并返回二进制值。那么集合 { ( π ( 1 ) , π ( 2 ) , … , π ( q ℓ ) ) : ∣ π ∣ ≤ ℓ } \left\{\left(\pi(1), \pi(2), \ldots, \pi\left(q_{\ell}\right)\right):|\pi| \leq \ell\right\} {(π(1),π(2),…,π(qℓ)):∣π∣≤ℓ} 的大小至多是 2 ℓ + 1 2^{\ell+1} 2ℓ+1。这个集合比预言机输出的集合小得多。所以,如果 O \mathcal{O} O 是随机选择的,那么存在一个长度至多为 ℓ \ell ℓ 的 π \pi π,该 π \pi π 可以正确描述 O \mathcal{O} O的 q ℓ q_{\ell} qℓ次查询的可能性为
p ℓ = Pr O [ ∃ π : ∣ π ∣ ≤ ℓ ∧ O ( 1 ) = π ( 1 ) ∧ ⋯ ∧ O ( q ℓ ) = π ( q ℓ ) ] = ∑ ∣ π ∣ ≤ ℓ Pr O [ O ( 1 ) = π ( 1 ) ∧ ⋯ ∧ O ( q ℓ ) = π ( q ℓ ) ] ≤ 2 ℓ + 1 2 q ℓ = 2 − ℓ − λ + 1 \begin{array}{c} p_{\ell}=\operatorname{Pr}_{\mathcal{O}}\left[\exists \pi:|\pi| \leq \ell \wedge \mathcal{O}(1)=\pi(1) \wedge \cdots \wedge \mathcal{O}\left(q_{\ell}\right)=\pi\left(q_{\ell}\right)\right] \\ =\sum_{|\pi| \leq \ell} \operatorname{Pr}_{\mathcal{O}}\left[\mathcal{O}(1)=\pi(1) \wedge \cdots \wedge \mathcal{O}\left(q_{\ell}\right)=\pi\left(q_{\ell}\right)\right] \leq \frac{2^{\ell+1}}{2^{q_{\ell}}}=2^{-\ell-\lambda+1} \end{array} pℓ=PrO[∃π:∣π∣≤ℓ∧O(1)=π(1)∧⋯∧O(qℓ)=π(qℓ)]=∑∣π∣≤ℓPrO[O(1)=π(1)∧⋯∧O(qℓ)=π(qℓ)]≤2qℓ2ℓ+1=2−ℓ−λ+1
任何程序 π \pi π 与随机预言机的前 2 ∣ π ∣ + λ 2|\pi|+\lambda 2∣π∣+λ 个值相等的概率 p p p 是p ≤ ∑ ℓ = 0 ∞ p ℓ ≤ ∑ ℓ = 0 ∞ 2 − ℓ − λ + 1 = 2 − λ + 2 p \leq \sum_{\ell=0}^{\infty} p_{\ell} \leq \sum_{\ell=0}^{\infty} 2^{-\ell-\lambda+1}=2^{-\lambda+2} p≤ℓ=0∑∞pℓ≤ℓ=0∑∞2−ℓ−λ+1=2−λ+2
这个概率与安全参数呈反指数关系,基本是可忽略的。
在ROM中,根据声明(II),构造 E v i l \mathcal{Evil} Evil方案中的伪造的唯一方法是在 S \mathcal{S} S方案中构造伪造。由于假设 S \mathcal{S} S是防伪造的,所以这是不可能的。因此,该方案在ROM中是安全的。
此外,根据声明(I),对于任何选择的哈希函数 f f f, E v i l S i g n \mathsf{EvilSign} EvilSign可以被攻击者完全破解。因此,我们已经构造了一个在ROM中安全,但在任何哈希函数选择下都不安全的方案!
答案是,并不是!这并不代表随机预言机模型下的安全性证明是无效的,只能说,如果你费尽心思设计一个不安全的方案,那么你可以设计出一个不安全的方案
上述的 E v i l \mathcal{Evil} Evil密码系统其实是一个病态的例子。签名函数实际在某些时候甚至会直接输出秘钥。像这样的奇特例子实际上是我们在现实世界中唯一发现的随机预言模型无法实现的例子。此外,还有少数例子,费尽心思避免使用随机预言模型可能甚至会在密码系统中引入了额外的漏洞[4]。这些漏洞通常来自于让签名具有过多的代数结构。
事实证明,当我们讨论 QROM(量子随机预言机模型)时,我们也需要经历同样的道德困境,因为在 QROM 中, E v i l \mathcal{Evil} Evil也是安全的!再次具体化,存在一个在 QROM 中对量子能力的敌手是安全的签名方案,但对于任何选择的哈希函数都是完全不安全的。(尽管如此,QROM还是很有用)要得出这个结论,我们需要一些量子计算理论的基础知识。
“Qubit”(量子比特)可能是你以前听过的一个专业术语。量子比特是量子计算领域中最基本的数据单位,因此,给出一个严格的定义是值得的。首先,我们通常通过固定系统的维数来固定系统中的量子比特数量。特别地,我们说一个 b b b-量子比特的系统是 C 2 b ≈ C 2 ⊗ ⋯ ⊗ C 2 \mathbb{C}^{2^b} \approx \mathbb{C}^2 \otimes \cdots \otimes \mathbb{C}^2 C2b≈C2⊗⋯⊗C2 (张量积 b b b 次)的子集。量子比特是单位球 B = { ∥ z ∥ = 1 : z ∈ C 2 b } B = \{ \|z\| = 1 : z \in \mathbb{C}^{2^b} \} B={∥z∥=1:z∈C2b} (其中范数是 L 2 L_2 L2 范数)中的元素。我们关心的对量子比特的操作是酉算子(unitary operators),即保持长度的线性函数,即从 C 2 b \mathbb{C}^{2^b} C2b 到 C 2 b \mathbb{C}^{2^b} C2b 的映射,将 B B B 映射到 B B B 。我们用 ⟨ b i n ( i ) ⟩ \langle bin(i) \rangle ⟨bin(i)⟩ 表示 C 2 b \mathbb{C}^{2^b} C2b 的第 i i i 个基向量(从0开始索引),其中 b i n ( i ) bin(i) bin(i) 表示 i i i 的二进制扩展。因此,例如, ⟨ 000 ⟩ \langle 000 \rangle ⟨000⟩ 表示 C 8 \mathbb{C}^8 C8 的第0个基向量(不是零向量!), ⟨ 011 ⟩ \langle 011 \rangle ⟨011⟩ 表示第3个基向量。有时我们可能希望将基向量标签分成两部分,写作 ⟨ x , y ⟩ = ⟨ x ∣ ∣ y ⟩ \langle x, y \rangle = \langle x || y \rangle ⟨x,y⟩=⟨x∣∣y⟩ ,即二进制字符串 x x x 和 y y y 的连接。例如, ⟨ 001 , 011 ⟩ = ⟨ 001011 ⟩ \langle 001, 011 \rangle = \langle 001011 \rangle ⟨001,011⟩=⟨001011⟩。
注意,长度为 b b b 的比特串集合与 C 2 b \mathbb{C}^{2^b} C2b 的基向量一一对应,所以我们可以以有意义的方式谈论"比特串的线性组合"。例如, v = ( 1 / 2 ) ⋅ ⟨ 110 ⟩ − ( i / 2 ) ⋅ ⟨ 010 ⟩ v = (1 / \sqrt{2}) \cdot \langle 110 \rangle - (i / \sqrt{2}) \cdot \langle 010 \rangle v=(1/2)⋅⟨110⟩−(i/2)⋅⟨010⟩ 是 B B B 中的一个向量。我们说这个量子比特 v v v 表示位串 ⟨ 110 ⟩ \langle 110 \rangle ⟨110⟩ 和 ⟨ 010 ⟩ \langle 010 \rangle ⟨010⟩ 的叠加态。这种作为比特串线性组合的表示法是唯一的,原因与矢量以标准基表示的唯一性相同。
我们可以定义作用在这些比特串上的线性运算符,通过定义从基元素到基元素的映射。例如,如果 f f f 是一个从 { 0 , 1 } 3 \{0,1\}^3 {0,1}3 到 { 0 , 1 } 3 \{0,1\}^3 {0,1}3 的函数(即,长度为3的比特串到长度为3的比特串),并且 f ( 010 ) = 111 f(010) = 111 f(010)=111,那么我们可以定义一个线性运算符 F F F,它将 ⟨ 010 ⟩ \langle 010\rangle ⟨010⟩ 映射到 ⟨ 111 ⟩ \langle 111\rangle ⟨111⟩。当 f f f 是比特串上的双射时, F F F是酉算子。但是如果 f f f 不是双射呢?如果 f ( 001 ) = f ( 010 ) = 111 f(001) = f(010) = 111 f(001)=f(010)=111 呢?那么可以使用一个巧妙的技巧:定义 F F F 使得它将基向量 ⟨ x , y ⟩ \langle x,y\rangle ⟨x,y⟩ 映射到 ⟨ x , y ⊕ f ( x ) ⟩ \langle x, y \oplus f(x)\rangle ⟨x,y⊕f(x)⟩。这个技巧之所以有效,是因为输出“记住”了输入,所以函数总是可逆的。例如,
F ( ⟨ 010 , 000 ⟩ ) = ⟨ 010 , 111 ⟩ 和 F ( ⟨ 001 , 000 ⟩ ) = ⟨ 001 , 111 ⟩ F(\langle 010, 000\rangle) = \langle 010, 111\rangle \quad \text{和} \quad F(\langle 001, 000\rangle) = \langle 001, 111\rangle F(⟨010,000⟩)=⟨010,111⟩和F(⟨001,000⟩)=⟨001,111⟩
像这样定义的操作符几乎总会得到 y = 0 y=0 y=0。所以一般的做法是要扩大空间的维度,从而增加我们系统中的量子位数以便承载更多的位。实际上,为了考虑到位值函数的非单射性,加倍空间维度是常见的做法。
好的,这就是介绍 QROM 和最终结果所需要的所有背景知识。
QROM(由Boneh等人在2010年引入)源自一个简单的洞察:如果我们相信量子计算机能够在叠加态下运行哈希函数电路,那么我们为什么不将哈希函数模拟为随机预言,但更具有量子性呢?本质上,这与ROM的想法相同,只是允许在量子叠加态下查询随机预言。更具体地说,
定义:给定一个随机预言 O \mathcal{O} O,相应的量子随机预言 O q u a n t \mathcal{O}_{quant} Oquant 是一个酉算子,它将比特串的叠加态映射到其在 O \mathcal{O} O 下求值的值的叠加态。具体地,对于每个基向量 ⟨ x , y ⟩ \langle x, y \rangle ⟨x,y⟩,定义 O q u a n t ( ⟨ x , y ⟩ ) : = ⟨ x , y ⊕ O ( x ) ⟩ \mathcal{O}_{quant}(\langle x, y \rangle) := \langle x, y \oplus \mathcal{O}(x) \rangle Oquant(⟨x,y⟩):=⟨x,y⊕O(x)⟩
根据这个定义, O q u a n t \mathcal{O}_{quant} Oquant 是一个酉算子,所以可以说
O q u a n t ( 1 3 ⟨ 010 , 000 ⟩ + i 3 ⟨ 011 , 000 ⟩ − i 3 ⟨ 110 , 000 ⟩ ) = 1 3 ⟨ 010 , O ( 010 ) ⟩ + i 3 ⟨ 011 , O ( 011 ) ⟩ − i 3 ⟨ 110 , O ( 110 ) ⟩ \mathcal{O}_{quant} \left( \frac{1}{\sqrt{3}} \langle 010, 000 \rangle + \frac{i}{\sqrt{3}} \langle 011, 000 \rangle - \frac{i}{\sqrt{3}} \langle 110, 000 \rangle \right) = \frac{1}{\sqrt{3}} \langle 010, O(010) \rangle + \frac{i}{\sqrt{3}} \langle 011, O(011) \rangle - \frac{i}{\sqrt{3}} \langle 110, O(110) \rangle Oquant(31⟨010,000⟩+3i⟨011,000⟩−3i⟨110,000⟩)=31⟨010,O(010)⟩+3i⟨011,O(011)⟩−3i⟨110,O(110)⟩
请注意,量子随机预言机至少与随机预言机一样强大,因为你总是可以使用单一值的叠加态进行查询:
O q u a n t ( ⟨ x , 0 ⟩ ) = ⟨ x , O ( x ) ⟩ O_{quant}(\langle x, 0 \rangle) = \langle x, O(x) \rangle Oquant(⟨x,0⟩)=⟨x,O(x)⟩
实际上,量子随机预言比经典随机预言更强大。Boneh等人展示了一个用于区分的结果3:他们提出了一个在ROM中安全,在QROM中不安全的身份验证方案。
由于QROM比ROM更强大,因此可以推断QROM的安全性暗示了ROM的安全性。但是,我们希望展示的是上述在ROM中安全的 E v i l \mathcal{Evil} Evil 方案也在QROM中安全。幸运的是,Boneh等人也给出了这个逆命题为真的条件。
定理:如果一个算法可以在ROM中规约到问题 P P P,并且规约是无历史的,那么也可以在QROM中规约到问题 P P P。
在论文中正式定义了无历史的规约,无历史的规约就是在规约中不对求解器 Y Y Y进行倒带操作(rewind),不记录预言查询,也不根据以前的查询修改预言行为。 回顾一下,在ROM中的安全性证明实际上是对底层假设签名方案 S S S 的安全性的规约。为了证明QROM的安全性,我们需要稍微调整一下假设:我们不再只是假设 S S S 对经典对手是安全的,我们需要进一步假设它对具有量子能力的对手也是安全的。承认这一点,唯一需要证明的是 E v i l \mathcal{Evil} Evil 的ROM安全性证明是无历史的。如果规约从未记录过查询,从未倒带过求解器,也从未修改过自己的行为,那么显然这个规约是无历史的。
尽管(Q)ROM无法反映现实世界的安全性,并不一定意味着我们应该停止使用它,就像Rogaway和Bellare说的那样,(Q)ROM捕捉到了"哈希函数似乎真正拥有的属性"。
[1] Michael Rosenberg :Hash Functions are not (Quantum) Random Oracles, but only Technically
[2] Erica Blum, Makana Castillo-Martin, Michael Rosenberg Survey on the Security of the Quantum ROM
[3] Bristol Cryptography: [52 Things: Number 47: What is the Fiat-Shamir transform?](Bristol Cryptography Blog: 52 Things: Number 47: What is the Fiat-Shamir transform?)
[4] NEAL KOBLITZ AND ALFRED J. MENEZES: [THE RANDOM ORACLE MODEL: A TWENTY-YEAR RETROSPECTIVE](140.pdf (iacr.org))
无历史就是规约过程中不对solver进行倒带(rewind)操作,不记录敌手查询预言机的表,不更改规约中的行为。 ↩︎
“高效”意味着输入大小在多项式时间内。当然,并不是每种图灵规约方法都是多项式时间的,但为了文章的简洁性这里就这么写了。 ↩︎
这是Boneh等人文章的第三部分。要点是,存在一种身份验证方案,如果对手能够在 O ( N 3 ) O(\sqrt[3]{N}) O(3N) 时间内计算出一些哈希碰撞,那么它要么做正确的事情,要么做不安全的事情。由于在经典情况下,最少只能在 O ( N ) O(\sqrt{N}) O(N) 时间以1/2的概率找到一个碰撞,所以对所有经典对手来说,这都是安全的。但是,一个运行Grover算法的量子对手可以在 O ( N 3 ) O(\sqrt[3]{N}) O(3N) 时间内以高概率计算出几个碰撞。 ↩︎