函数加密的定义框架
克里斯蒂安·马特和乌尔里希·毛雷
尔苏黎世联邦理工学院计算机科学系,
瑞士电子邮件:{mattc, maurer}@inf.ethz.ch
摘要
函数加密(FE)是多种加密类型的强大泛化。我们研究了可信权威如何利用函数加密在不可信存储库中实施访问控制策略。直观上,如果将(函数性)加密的数据项放入公开可读的存储库中,则加密的效果应使得每个用户只能访问那些他之前已获得相应解密密钥的数据项函数。也就是说,在理想世界视图中,密钥机构C能够灵活地管理用户对存储库的读取权限。
这似乎正是函数加密应当实现的目标,大多数函数加密的自然应用均可被理解为这种具有访问控制的存储库的具体使用方式。然而令人惊讶的是,目前尚不清楚已知的安全定义是否真正实现了这一目标,因此也无法确定已知的函数加密方案能否用于此类应用。事实上,密码学界普遍认为,为函数加密确定合适的安全定义仍然是一个开放问题。
为了解决这一问题,我们在构造性密码学框架中处理函数加密,并提出一种新的传统安全性定义,称为可组合功能加密安全性(CFE‐安全性),该定义恰好与所描述的理想世界解释相匹配。已证明该定义(以及相应的应用)在标准模型中无法实现,但在随机预言模型中可以实现。此外,通过对理想世界存储库施加一定的操作限制,可以获得某些较弱但可在标准模型中实现的定义,从而明确满足此类定义的方案能够(以及不能够)如何有意义地被使用。最后,通过对接收库进行直接的操作扩展并提取相应的安全定义,可以得到FE的推广形式(如多输入、随机化函数、恶意密文生成等)的适当安全定义。这推动了对函数加密安全性的统一处理。
1. 引言
1.1. 函数加密
函数加密(FE)是一个非常通用的概念,由Boneh、Sahai和Waters正式提出[1]。许多类型的加密,如公钥加密、基于身份的加密[2],[3],[4],和基于属性的加密可以将[5]视为函数加密的一个特例。简而言之,一个函数加密方案由一个值空间和该值空间上的一组函数所参数化。持有与主公钥相对应的主私钥的可信权威可以为该函数集中的所有函数生成私钥。给定主公钥,可以对消息进行加密;而给定某个特定函数 f 的私钥以及对某个值 x的加密密文后,可以高效地计算出 f(x),但不会获得关于 x的任何其他信息。此外,即使汇集了多个函数 f1,… fk的私钥,也只能精确计算出这些函数在加密值 x 上的输出结果,即 f1(x)…, fk(x),而无法获取其他任何信息。
形式化这些直观的安全需求所造成的困难超出了人们的预期,文献中存在多种函数加密的安全定义。虽然其中一些定义被证明过于宽松,因为某些本不应被视为安全的方案却能够满足这些定义,而另一些定义又过于严格,以至于即使对于非常简单的函数集合,在标准模型[1],[6],[7],[8],[9]中也不存在满足它们的方案。研究界似乎普遍认为,目前尚不清楚哪种定义适用于特定应用场景,甚至无法确定哪个定义是“正确”的。这引发了一个问题:在特定应用中应采用哪种安全定义才合适。
然而,在理想世界视图中,描述人们对函数加密(FE)的期望似乎非常自然。如果存在一个公开可读的数据存储库(例如,一个公共网络存储库)可用,那么通过在将数据项放入存储库之前对其进行加密,就可以构造出一个数据现在为秘密状态的存储库,并且特定实体能够赋予其他实体访问该存储库中数据项的某些函数(且仅限这些函数)的权利。显然,在这一理想世界视图中,向某个实体授予访问权限,在现实世界中对应的是提供相应函数的解密密钥,而访问数据则对应于解密相应的密文。
与函数加密相比,标准公钥加密方案实现了为存储库提供访问控制的相同目标,但访问是全有或全无的:如果拥有私钥,则可以解密,否则无法解密。基于身份的加密实现了更灵活的访问控制机制,它允许可信方授予用户针对特定身份的数据访问权限,其中输入数据包含数据本身和身份
2015 IEEE 第28届计算机安全基础研讨会 osium
© 2015,克里斯蒂安·马特。经许可授权给 IEEE。DOI 10.1109/CSF.2015.22
217 授权给IEEE。
本文档由 funstory.ai 的开源 PDF 翻译库 BabelDOC v0.5.10 (http://yadt.io) 翻译,本仓库正在积极的建设当中,欢迎 star 和关注。
应该能够访问它。可以使用基于属性的加密来实现更高级的访问策略。FE 的高灵活性体现在文献[10],[11]中提出的以下 FE 应用中:假设某个用户接收到存储在其服务提供商服务器上的加密电子邮件,并且他不想下载很可能为垃圾邮件的邮件,以避免不必要的流量。在此情况下,可信方(可以与邮件收件人一致)为服务提供商生成一个特殊的私钥,该私钥仅允许计算垃圾邮件过滤器的评分函数。现在,服务提供商无法读取邮件内容,但仍能够过滤掉垃圾邮件,并仅向收件人通知剩余的 incoming 消息。此处的存储库对应于邮件服务器,将数据输入存储库即相当于向收件人发送加密电子邮件。
1.2. 问题陈述
本文探讨了以下问题:上述关于安全存储库的直觉描述是否真的成立?现有的某个安全性定义是否意味着这种观点是有效的,如果成立,是哪一个?那么,其他定义又实现了什么?是否存在这样的可能:当使用满足现有安全定义的方案时,上述直接的应用会变得不安全?
1.3. 安全定义及其语义
在解释我们解决这些问题的方法之前,我们先讨论密码学安全定义中的一个普遍问题。对于单向函数、消息认证码、公钥加密或函数加密等密码学原语的安全性定义,可能服务于两种完全不同的目的,而这两者常常未被明确区分。
安全定义的首要目的是作为一个(技术)参考点,一方面用于设计基于弱假设而可证明满足该定义的方案(例如,基于DDH假设[14]的CCA安全的公钥加密方案),另一方面用于从任何满足该定义的方案构建更复杂的原语(例如,利用CPA安全的基于身份的加密方案和一次性签名方案构造CCA安全的公钥加密方案[15])。关于安全定义的结果通常表现为某种比较形式,例如等价性或分离声明,意味着一个定义严格强于另一个定义。
1. 一个安全定义失败的显著例子表明,这种缺陷在检查定义时并不明显,并且近20年来一直未被发现:在[12]中展示了一个被证明安全的量子密钥协商协议,但当该密钥用于一次一密加密(应用)时却变得不安全。这种不匹配是如何发生的,又该如何防止?原因在于该定义对于生成的密钥能否在应用中使用而言,其强度不够。(这一问题在[13],中得到了修正,其中提出了如今公认且强得多的安全定义。) 简而言之,密钥协商的安全定义必须保证所生成的密钥在任何应用中都与均匀密钥一样好。
技术安全定义的第二个目的是,当使用满足该(技术)安全定义的方案时,确保某一类应用的安全性。尽管安全定义通常是基于对特定应用需求的大量直觉而设计的(实际上,这些定义往往由应用场景驱动),但必须指出的是,出于两个独立的原因,密码学原语的传统技术安全定义通常无法直接保证相关应用的安全性。第一,必须精确指定该原语在协议中的具体use方式。例如,待加密的消息是如何构造的,发送给谁,通过何种通道传输,以及某些字段(如IP地址)是否包含在 MAC中。第二,还必须对应用及其安全要求进行精确的形式化描述。例如,密钥协商的基于游戏的安全定义并未明确保证密钥在给定上下文中可以安全使用,也未说明协议执行所依赖的信道需要满足哪些要求(例如,信道必须是经过认证的)。
1.4. 解决问题
在技术性(例如基于游戏的)安全定义与使用该原语的预期应用的安全性之间弥合差距这一普遍问题是一个基础性问题,它同样适用于其他密码学原语。探索这一问题对于函数加密似乎特别有价值,因为与其他密码学原语不同,函数加密的定义问题似乎尚未得到解决。
构造性密码学(CC)框架[16],[17]的一个目标正是做到这一点:为技术性的安全定义提供构造性语义,并基于这些语义比较不同的安全定义,从而识别出适当的安全定义。
所采用的方法在密码学中是成熟且非常自然的,或许可以被视为将安全定义与应用紧密联系起来的唯一可行方法。具体而言,将应用形式化为一个理想世界系统,在构造性密码学(CC)中称为资源,该资源既描述了期望发生的情况,也描述了不希望发生的情况。例如,安全通信可以建模为一个安全信道,其中对手最多只能获知消息的长度。其他通过定义理想功能来捕获安全属性的框架包括(变体形式的)通用可组合性(UC)[18],[19],[20]和反应式可模拟性(RSIM)[21],[22]。
2这些框架的关注点不同,它们从特定的机器模型出发采用自下而上的设计方式,而构造性密码学框架则遵循自上而下的方法,从而得到更简洁的描述并避免了技术细节。
2. 论文[23]在UC框架下为函数加密提供了一个理想功能,但仅针对一类特殊的函数加密方案,即基于属性的加密。因此,他们的结果不适合用于推导出像本文这样的一般性函数加密定义框架。
1.5. 本文的贡献
我们证明了将函数加密(FE)精确地描述为通过公共仓库以及某些信道(用于传输密钥和公钥)来构造特定访问控制仓库的做法确实是形式上正确的。这意味着,特别是可以依据构造性密码学的组合定理进行构造的组合。具体而言,如果某个应用是通过在某个(假设的)具有访问控制的存储库之上定义而设计的,则当该存储库使用公共仓库实现,并且数据通过满足适当定义的函数加密方案进行加密时,该应用仍然是安全的。
然而,要实现这一点,现有的安全定义似乎都不足够。因此,我们提出了一种新的函数加密传统安全定义,称为CFE‐安全性,该定义源自构造性观点,是对博恩、萨海和沃特斯[1, Definition 4]提出的已有基于游戏的安全定义进行适当修改后的版本。这表明,当需要强安全性保证时,CFE‐安全性是合适的安全定义。我们证明了在标准模型中[1], 的CFE‐安全性无法实现,但在随机预言模型中可以实现。在此过程中,我们也举例说明了如何将(可编程)随机预言机模型中的结果转化为构造性密码学(CC)中的构造。
CFE‐安全性的充分性可能看起来令人惊讶,因为它类似于[1,定义 4] ,而来自[24]的一个例子本应表明该定义是不足的。我们回顾该例子,并解释为何这种批评是无效的。这表明,函数加密的传统安全性定义并未被充分理解,从而导致了一些误解,而这些误解在构造性方法中不会出现。
此外,我们证明了戈尔布诺夫、瓦伊昆塔纳桑和韦提出的一个较弱的安全定义,该定义在标准模型中是可实现的,足以用于构建一个限制交互次数和顺序的存储库,从而明确说明此类方案在哪些情况下可以(以及不能)被有意义地使用。
最后,我们展示了如何通过以下方式为FE的推广(多输入、随机化函数、恶意密文生成等)获得适当的安全定义
存储库的直接扩展。对于一个构造性安全定义(要求构造某个特定的存储库),可以提取相应的传统安全定义,并将其与现有的广义定义进行比较。我们推测,后者通常并不对应于存储库的有意义的构造,但对所有定义进行全面分析超出了本文的范围。
总体而言,这实现了对多种函数加密变体的统一处理,并明确说明了它们如何在更高级别的协议内进行组合。
2. 预备知识
2.1. 资源、转换器和区分器
本文的结果采用构造性密码学理论进行表述。在本节中,我们参考[16]以及[25]中的阐述,介绍相关概念。
我们考虑不同类型的系统,这些对象通过接口与其环境进行交互。接口用大写字母记为。可以通过连接每个系统的其中一个接口来组合两个系统,所得到的组合对象仍然是一个系统。
我们考虑的系统类型包括资源、转换器和区分器。
资源具有一个有限的接口集 I,并用大写粗体字母或大写无衬线字体表示。具有接口集 I的资源称为 I‐资源。
转换器有一个内部接口和一个外部接口,用小写希腊字母表示。转换器 α的内部接口可以连接到资源R的接口 I ∈I,从而生成一个新的资源,记为 αIR。此时, α的外部接口作为组合资源 αIR的新接口 I。对于转换器 αI,我们也写作 αIR而不是αI IR。两个转换器 α和 β的串行组合自然地定义为(α ◦ β)IR := αI(βIR)。对于 I‐资源R1, . . . , Rm,其并行组合[R1, . . . , Rm]被定义为一个I‐资源,其中每个接口 I ∈ I允许将所有子系统 Ri的对应接口作为子接口进行访问。转换器 α1, . . . , αm的并行组合[α1,…, αm]定义为[α1,…, αm] I [R1, . . . , Rm]:=[α I mRm]。
一个用于具有 n个接口的资源的区分器D是一个具有 n+1个接口的系统,其中 n个接口连接到某个资源的接口,剩余的一个接口输出一个比特。我们用 P(DR= 1)表示当D连接到资源R时输出比特1的概率。
区分器的目标是通过在连接到不同资源时输出不同的比特来区分两个资源。其成功程度由区分优势来衡量。
定义2.1。 区分器D针对资源R和S的区分优势定义为
Δ D (R, S):= |P(DR= 1)− P(DS= 1)| .
如果对于所有区分器D, Δ D (R,S)= 0成立,则称R和S等价,记为R ≡S。如果该区分
219
| R πA πB
πC|R πA πB
πC|R πA πB
πC|
| —|—|—|
| |||
A
B
C
≈
| |S||
| —|—|—|
| |S||
| |S||
| |||
A B
C
图1. 定义2.4中的正确性条件
对于所有高效区分器,若其优势可忽略,则称R和S是计算上不可区分的3,,记为R ≈ S。
2.2. 资源示例
资源的一个重要例子是通信信道。它们允许发送方 A 从消息空间 M:={0, 1}∗ 向接收方 B 发送任意数量的消息。我们定义了两种这样的信道,它们的区别在于窃听者 E 能够获知关于消息的哪些信息。接口 E 的输出对应于泄露给所有不诚实方的信息。本文考虑的信道可以传输任意数量的消息。
定义2.2. 一个从 A到 B的认证信道,记为AUTA,B,是一个具有三个接口A、 B和 E的资源。在接口 A输入一条消息 m ∈ M时,相同消息将在接口 B和 E输出。该通道被称为经过认证的,因为 E无法修改消息。
下文定义的安全信道还保证了窃听者只能获知传输的消息的长度。
定义2.3 一个从 A到 B的安全信道,记为SECA,B,是一个具有三个接口 A、 B和 E的资源。在接口 A输入一条消息 m ∈ M时,相同消息将在接口 B输出,且消息的长度 |m| 将在接口 E输出。
2.3. 资源的构造
一个协议是一个转换器元组,其目的是从一个可用的假设资源构造出具有期望属性的资源。根据被认为可能不诚实的参与方不同,我们会得到不同的构造概念。
以[26],中的一个例子为例,考虑在存在不诚实的窃听者 E的情况下,使用诚实的A和 B构建公钥加密场景,目标是从经过认证的信道AUTB,A和AUTA,B构造出一个安全信道SECA,B。在此场景中,假设资源是R:=[AUTB, A,AUTA,B],而构造资源是
3. 实际上,本文所考虑的系统是渐近对象,即它们对应于由安全参数索引的系统族。区分优势是该参数的函数,高效意味着运行时间在安全参数上是多项式。为了简化表述,本文省略了安全参数。
R πA
A B
πC
C
≈
| |S|
| —|—|
| |S|
| |S|
| ||
A
σB
B
C
图2. 定义2.4中的安全条件
S:= SECA,B。在此设定下,协议 π=(πA, πB)通过可能不诚实的 E从R构造出S,当且仅当存在一个高效转换器 σE(称为模拟器),使得
πAπB⊥ ER ≈ ⊥ES and πAπBR ≈ σES,
其中 ⊥阻断相应接口上的所有交互,而 σE为区分器提供针对构成假设资源的两个信道的子接口。第一个条件称为正确性条件,确保在没有窃听者的情况下协议能够实现所需功能。第二个条件称为安全条件,确保无论伊芙在连接到假设资源时(不一定遵循协议)能够做什么,她通过使用模拟器 σE连接到构造资源时也能够做到同样的事。
虽然在上述示例中,伊芙可被视为无需对其提供任何保证的攻击者,但本文所讨论的场景包含一个可能是不诚实的参与方,该参与方也可能是诚实的。因此,所有参与方都被分配了一个协议,并且构造资源所提供的所有交互均对遵循其协议的所有诚实方提供保证。另一方面,不诚实方不应能够做出超出构造资源所规定范围的行为。我们考虑一种针对三方 A、 B 和 C 的构造概念,其中 B 是潜在的不诚实方。以下定义是来自[16]的抽象概念的一个特例,该抽象概念考虑了多个不诚实且相互不信任的参与方。
定义2.4. 设R和S为{A, B, C}‐资源,且设 π=(πA, πB, π C)是一个协议。我们称 π从 R(在可能不诚实的情况下)构造出 S,记为
R
π ==⇒ S,
如果存在一个高效转换器 σB,使得 4
πAπBπCR ≈ S and πAπCR ≈ σBS.
另请参见图1和图2,以图形化方式表示上述定义中的条件。与上面的公钥加密示例类似,第一个条件确保协议的正确性,第二个条件确保 B对协议的所有攻击都
可以通过 σ B转化为对构造资源 S的攻击。
4. 注意,我们要求对所有高效区分器都存在一个模拟器。因此,该模拟器不依赖于区分器,因而是黑盒的。
220
构造概念是可组合的,直观上意味着S可以在任何上下文中被 πAπBπCR替换而不影响安全性,如果我们有R ==π⇒ S。更准确地说,对于所有资源R、R′ S、 S′和T,以及对于所有协议 π=(πA, πB, πC)、 π′=( π′A, π′B, π′C)和 φ=(φA, φB, φC)
R ==π⇒ S ∧ S φ ==⇒ T=⇒ R =φ=◦⇒π T,
R ==π⇒ S ∧ R′ π′ ==⇒ S′=⇒[R, R′]=[π=,π⇒′][S, S′], 其中 φ ◦ π:=(φA ◦ πA, φB ◦ πB, φC ◦ πC)且[π, π′]:= ([πA, π′ A],[πB, π′ B],[πC, π′ C])。第一个性质保证构造步骤的组合产生一个安全的整体构造,第二个性质确保构造在任何上下文中都是安全的,即无论并行发生什么操作。
参见[16],[17]以获取这些陈述的证明及进一步讨论。
2.4. 函数加密
函数加密方案是一种针对函数集合 F定义的广义公钥加密方案,这些函数具有共同的定义域 X。给定公钥后,可以对数据 x ∈ X进行加密;给定某个函数 f ∈ F的私钥后,可以从 x ∈ X的密文高效计算出 f(x)。所有 f ∈ F对应的私钥均可通过一个称为主私钥的密钥生成,该主私钥与公钥一同生成。为了描述密文关于被加密数据泄露的信息,引入了一个特殊的泄露函数 f0 ∈ F。直观的安全要求是:给定某个 x的密文以及 f1,…, fn的私钥时,关于 x所能获得的信息不应超过从 f0 (x)…, fn(x)中所能获得的信息。本文仅定义函数加密方案的语法和正确性条件,形式化安全定义将在后续章节中讨论。此处的定义仅涵盖一元确定性函数。关于更一般的函数加密概念的讨论,请参见第8节。
定义2.5. 设 X为一个非空集合, F为定义域是 X的函数集,且 F包含一个特定的泄露函数 f0。一个用于 F的函数加密方案由高效的概率算法setup、keygen、enc和dec组成。setup算法生成一个公钥pk和一个主私钥mk。给定 mk和某个 f ∈ F,keygen为此 f生成一个私钥skf,其中skf0为空字符串。给定pk和某个 x ∈ X,enc计算出一个密文 c,使得dec(skf, c)= f(x)成立的概率可忽略,其中该概率取决于所有算法的随机性。
备注。根据[1], ,我们假设每个人始终能够计算 f0 。这可能被视为一种较为人为的要求;如果 f0( x),例如揭示了 x的比特长度 |x| ,则必须存在一种高效算法,能够从 x精确计算出 |x|
5. [ 1 ] 中的定义要求dec(skf , c)= f(x)以概率1成立,但我们不需要这个更强的条件,因为我们的构造概念不要求完全正确性,参见定义2.4。
一个密文。一种更自然的方法不会保证所有参与方都能计算 f0,而是在安全性定义中不排除不诚实方可能做到这一点。为了形式化“某事未被保证但可能实现”这一概念,构造性密码学框架提供了过滤资源的概念(详见 [16])。尽管本文中的所有结果均可扩展到此类定义,但我们仍采用上述定义以简化表述。
3. 仓库和访问控制
3.1. 仓库资源
在本节中,我们介绍一种仓库资源,它允许用户输入和访问数据,并自然地描述了存储库的工作方式。我们首先定义一个具有访问控制的存储库,然后将无访问控制的公共仓库作为其特例进行说明。用户可以将来自 data set X的输入数据存入该存储库。在输入数据后,该资源会从集合 H中返回一个句柄(例如,URL 或内存地址),以便日后通过该句柄访问数据。此句柄可由资源自行选择、由输入数据的用户选择,或通过交互式协议由双方共同决定。由于生成句柄的具体过程与我们的目的无关,我们将引用一种称为getHandle的方法来返回 H中的一个元素,而不描述其实现细节。我们仅假设所返回的句柄是唯一的,即不会覆盖已有数据。
受函数加密语法的启发,我们考虑一个包含定义域为 X的访问函数的集合 F,并允许用户检索这些输入数据的函数。用户能够访问哪些函数取决于该用户的权限,即对于每个 f ∈ F,用户可以有权获取先前输入的 x ∈ X的 f(x)。每个人都有权获取特殊函数 f0的 f0(x),而可信权威可以授予用户额外的权限。
我们考虑一种资源,该资源为爱丽丝提供输入数据的接口,为鲍勃提供访问数据的接口,并为可信方查理提供向鲍勃授予权限的接口。爱丽丝和鲍勃不一定是单个用户,而是代表用户可能具有的角色。本文的所有结果都将鲍勃视为唯一潜在的不诚实方。如果他是不诚实的,也可以将其视为一组不诚实且合谋的参与方,他们可能试图结合各自的权限以访问某些数据的函数,而这些数据是他们任何一方单独都无法访问的。因此,一个不诚实方足以涵盖抗合谋性。类似地,该资源也可用于具有多个诚实方输入数据的上下文环境中。
定义 3.1。 设 X 为一个非空集合, F 为定义域为 X 和 f0 ∈ F的函数集。资源REPF 具有接口 A、 B和 C。它在内部管理鲍勃被允许访问的函数集合 R,以及一个映射 M,该映射将句柄 h ∈ H 分配给值 M[h] ∈ X ∪{⊥},其中 ⊥/ ∈ X 是一个特殊符号。初始时, R={f0} 且对所有 h ∈ H有M[h]= ⊥。该资源的工作方式如下:
221
πA πB
πC
(pk,mk) ← setup()
| |pk|pk||(f, skf)|(f, skf)||||
| —|—|—|—|—|—|—|—|—|
| |||||||(f, skf)|(f, skf)|
| |AUTC,A||||SECC,B||(f, skf)|(f, skf)|
| |AUTC,A||||SECC,B||(f, skf)|(f, skf)|
| |AUTC,A||||SECC,B||pk||
| |||||||pk||
| |||||||h||
| |||||||h||
| |PREPC|PREPC|PREPC|PREPC|PREPC||h||
| |PREPC|PREPC|PREPC|PREPC|PREPC||||
| |PREPC|PREPC|PREPC|PREPC|PREPC||c|c|
| |||||||||
pk
f
skf ←密钥生成(mk f)
f
x
h
c ← enc(pk x)
| c|
| —|
| |
| h|
(f, h)
y
y ←解密(skf, c)
图3. 协议(πA, πB, πC)的概览。虚线矩形表示假设资源,对应于AUTC,A、SECC,B和PREPC的并行组合;点线表示不诚实的Bob可以获知公钥,但协议本身并不使用该公钥。整个图对应于图1左部分的一个精化。根据引理3.3,该资源与REPF计算上不可区分。
接口 A
x ∈ X
h ← getHandle
M[h] ← x 输出 h在接口 A
接口 B
输入:(f, h) ∈ F × H
如果 f ∈ R且 M[h] ≠ ⊥则
输出f(M[h])在接口 B
接口 C
f ∈ F
R ← R∪{f}
output f在接口 B
所有不符合给定格式的输入都将被忽略。6
备注. 请注意,鲍勃需要知道句柄才能访问数据。因此,当此资源用于更大的协议中时,爱丽丝需要通过额外的通道向鲍勃发送句柄。这实际上是非常自然的:如果爱丽丝将文档上传到她的网络服务器并希望鲍勃下载,她需要通过电子邮件等方式告知他URL。参见本文的完整版本,其中给出了该资源的一个应用示例,展示了其他协议如何使用所构建的存储库以及如何应用构造性密码学框架的组合定理。
我们现在定义一个没有访问控制的公共仓库,它将作为我们构造中的假设资源。它对应于上述定义的存储库,其中 f0是 X上的恒等函数,即每个人都可以访问(存储数据的)恒等函数。
6. 我们定义所有资源均忽略无效输入。或者,资源也可以返回错误消息。尽管这种替代方式可能更接近真实系统的行为,但我们决定简单地忽略无效输入,因为它们对我们的结果并不重要。
定义3.2。 设 X为一个非空集合, f0:= idX: X →X,x → x, 以及 P:={f0}。我们将 X的公共仓库定义为PREPX:= REPP。对于鲍勃接口上的输入,为简化表示法,我们写作 h,而不是(idX, h)。
3.2. 通过函数加密实现访问控制
一个多功
能存储库支持一大类访问函数,并尽可能限制鲍勃的初始权限。在本节中,我们描述如何利用函数加密从一个公共仓库构造这样一个存储库。更准确地说,设 E=(setup, keygen, enc,dec)是一个针对定义域为 X的函数集合 F的函数加密方案,且设 C是enc的值域。我们的目标是从PREPC构造REPF 。为了分发密钥,我们还需要一条从查理到爱丽丝的认证信道AUTC,A,以及一条从查理到鲍勃的安全信道SECC,B,即我们构造中的假设资源对应于7{PREPC, AUTC,A,SECC,B]}。
为了实现该构造,我们为函数加密方案 E 定义协议π= (πA, πB, πC)如下:开始时, π C 调用(pk, mk) ← setup(), 存储mk并通过认证信道将pk发送给爱丽丝。该公钥由 πA 内部存储。在其外部接口接收到输入x ∈ X 时, π A 在其内部接口输出 c ← enc(pk x)到存储库,并在其外部接口输出返回的句柄 h。在其外部接口接收到输入 f ∈ F 时, π C 计算sk f ←keygen(mk f)并通过安全信道将(f, skf)发送给 B。相应的私钥由πB 存储,并在 f 的外部接口输出。在其外部接口接收到输入(f, h) ∈ F × H 时,π B 若满足条件则在内部接口向存储库输出 h。
7. 对于这两个信道,不诚实的Bob都充当窃听者的角色。也就是说,他可以获知从查理发送给爱丽丝的认证信道上的公钥。如果该资源在包含多个Bob的上下文中使用,则重要的是从查理到每个Bob的通道都是安全的,以防止不诚实用户窃听私钥。
222
CFE‐ExpReal E,Adv
(pk,mk) ← setup()
(l, τ) ←(0, 0)
重复l ← l+1
xl ←攻击者keygen(mk,·) 1 [τ]
cl ← enc(pk xl)
t ←攻击者2(cl)[[τ]] 直到 t= true
返回 τ
CFE‐ExpIdeal E,Adv,S
(公钥 s) ← S1()
(l, τ) ←(0, 0)
重复l ← l+1
xl攻击者
O [[s]] 1
x1 xl−1
[[τ]]
(·,,…,)(公钥)
(f1,…, fq) ←攻击者到目前为止的所有查询
cl ← S3(f0(xl)…, fq(xl))[[s]]
t ←攻击者cl[[τ]]
直到 t=为真
返回 τ
图4. CFE安全定义的实验。预言机 O定义为 O(f, x1,…, xl−1)[[s]]:= S2(f, f(x1)…, f(xl−1))[[s]]。
它已为该函数存储了一个私钥skf ,或满足f= f0。如果从存储库收到一个密文 c,则在其外部接口输出 y ← dec(skf, c)。所有其他输入均被忽略。协议示意图见图3。
以下引理表明,如果所有参与方都诚实,则该协议构造了所需资源。这直接来源于函数加密方案的正确性。
引理3.3. 对于上述定义的协议 π=(πA, πB, πC),我们有
πAπBπC[PREPC, AUTC,A, SECC,B] ≈ REPF.
4. 函数加密方案的安全性
4.1. CFE‐安全性的定义
上一节中描述的协议仅在底层函数加密方案满足适当的安全定义时,才能为不诚实的Bob构造出所需资源。我们基于[1,定义 4],提出了这样的安全定义,并将其称为可组合功能加密安全性8 (简称为CFE-安全性)。我们将该定义扩展到能够根据先前消息的密文选择后续消息的自适应对手。这一扩展已在那篇论文中被提及,但尚未形式化。我们的定义还额外限制了相关算法的预言机访问。这些修改将在定义后进行讨论。我们注意到, [8]中定义的SS1‐安全性也对应于[1,定义 4]的一种自适应变体,但在其他方面有所不同,且与我们在此提出的定义不等价。特别是,SS1‐安全性包含了一些辅助输入,其作者声称这可以消除[24]中描述的一个弱点。然而,正如我们在第4.3节中所解释的,[24]中指出的问题实际上并非弱点,因此无需修复。
8. 此名称由定理4.4证明是合理的,该定理结合构造性密码学框架的组合定理表明CFE安全方案确实保证了可组合性。在本文的早期版本中,它被称为“完全自适应安全性”(“FA‐安全性”)。
我们采用[1],中的符号表示,即对于算法 A和 B, AB(·) (x)表示 A以 x作为输入,并具有对 B的预言机访问权限,也就是说, B(q)是对 A提出的预言机查询 q的响应结果。此外, A(·)[[s]]意味着 A将s作为一个额外输入并可更新其值。更准确地说, A(x)[[s]]对应于调用(y, s) ← A(x, s)并返回 y的算法。
定义4.1。 设 E=(setup, keygen, enc,dec)是一个针对函数集合 F(其定义域为X)的函数加密方案。我们引入图4中的实验, 其中包含一个高效概率预言机算法Adv1以及高效的概率算法 Adv2、 S1和 S3。区分器D用于区分这些实验输出结果的优势记为 ΔD(CFE‐Exp Real E ,Adv,CFE‐Exp Ideal E ,Adv S)。 如果存在 S1, S2和 S3,使得对于所有攻击者1,攻击者2以及所有高效区分器,其区分优势均可忽略,则称 E是CFE安全的。
注意, τ可用于在Adv1和Adv2之间共享状态,并且 s用于在 S1、 S2和S3之间共享状态。直观上, S1模拟公钥的生成, S2生成模拟私钥,而 S3仅根据对手已请求私钥的函数下 x的映像来为 x的值模拟密文。如果这些模拟值与实际协议生成的相应值不可区分,则认为该方案是安全的。其直观含义是,在这种情况下,密文不会泄露关于加密值的任何信息,即对手无法从他本应获得的函数值之外推断出更多信息。
如前所述,此定义接近于[1]中给出的定义的完全自适应版本。一个不同之处在于,在我们的定义中,Adv 2未被赋予对密钥生成预言机的预言机访问权限。这特别简化了理想实验,且在此处并非必要,因为Adv 2 可以将其查询存储在 τ中,然后Adv 1 可以查询其预言机,并在接下来的迭代中继续执行Adv 2 。此外, S 3 在[1]中具有对Adv 2 的预言机访问权限,因此可以在多个输入上运行Adv 2 并丢弃不期望的输出。我们的定义更强,因为我们不允许这样做。文献[7]中已经指出, 这种预言机访问可能是有问题的。注意,与[1,定义 4],相比, 它
223
| REPF||
| —|—|
| REPF|(f, hi)|
| REPF||
| REPF|yi
(fi, h)|
| REPF||
| REPF|yi|
σB
接口内部 接外口部
子接口
模拟SECC,B
子接口
模拟AUTC ,A
子接口
模拟PREPC
| (pk s) ← S1()
skf ← S2(f, . . . , yi, . . .)[[s]]
c ← S3(. . . , yi, . . .)[[s]]|(f, skf)|(f, skf)|
| —|—|—|
| (pk s) ← S1()
skf ← S2(f, . . . , yi, . . .)[[s]]
c ← S3(. . . , yi, . . .)[[s]]|||
| (pk s) ← S1()
skf ← S2(f, . . . , yi, . . .)[[s]]
c ← S3(. . . , yi, . . .)[[s]]|||
| (pk s) ← S1()
skf ← S2(f, . . . , yi, . . .)[[s]]
c ← S3(. . . , yi, . . .)[[s]]|pk|pk|
| (pk s) ← S1()
skf ← S2(f, . . . , yi, . . .)[[s]]
c ← S3(. . . , yi, . . .)[[s]]|||
| (pk s) ← S1()
skf ← S2(f, . . . , yi, . . .)[[s]]
c ← S3(. . . , yi, . . .)[[s]]|||
| (pk s) ← S1()
skf ← S2(f, . . . , yi, . . .)[[s]]
c ← S3(. . . , yi, . . .)[[s]]|||
| (pk s) ← S1()
skf ← S2(f, . . . , yi, . . .)[[s]]
c ← S3(. . . , yi, . . .)[[s]]|||
f
h
c
图5. 与引理4.2的证明相关联的模拟器 σB的概览,该模拟器附属于REPF。此图对应于图2右半部分的细化。引理4.2表明,如果所使用的函数加密方案是CFE安全的,则该资源与从图3中移除 πB后得到的资源是计算上不可区分的。
足以返回 τ,因为Adv2可以在其中编码所有相关信息,而 S3无法篡改它。
与许多其他定义(例如[6],[11],[24],[27])不同,我们允许 S1 和 S2 分别“伪造”公钥和私钥。与[24],中声称的情况相反,事实证明这并不是一个问题(详见 第4.3节)。这表明,在定义函数加密的安全性实验时存在多种自由度,而特定选择所带来的后果往往并不明确。另一方面,本文所采用的构造性方法通过明确指定所构造的资源,清楚地说明了满足这些定义的协议所能实现的目标。
4.2. CFE‐安全性与存储库构造的等价性
本节的目标是证明:第3.2节中定义的协议当且仅当其底层函数加密方案是CFE安全时,才能构造出相应的仓库资源。这意味着CFE‐安全性正是我们所需的确切定义。以下引理表明,CFE‐安全性对于该构造而言是充分的。
引理4.2. 设 S1, S2以及 S3为高效的概率算法。则存在一个高效的转换器 σB,使得对于所有高效的区分器 D和πAπC[PREPC , AUTC,A, SECC,B]以及 σBREPF,均存在一个高效概率预言机算法Adv1, 、一个高效概率算法Adv 2,以及一个针对CFE实验的高效区分器D′,使得
Δ D (πA π C[PREPC , AUT C,A , SEC C,B], σB REP F) =Δ D′ (CFE-Exp Real E,Adv , CFE-Exp Ideal E,Adv,S) .
证明: 我们按如下方式定义 σ B 。模拟器的图形概览见 图5。
初始化
(l, q) ←(0,0)
(公钥 s)← S1()
output公钥 在外部子接口模拟AUTC,A
内部接口
f ∈ F q ← q+1 fq ← f
对于 i= 1,......, l do
在内部接口处,output(f, hi),设 yi为返回值
skf ← S2(f, y1, . . . , yl)[[s]]
output(f, skf)在外部子接口模拟SECC,B
外部接口
h ∈ H如果∃k ∈{1,…, l}: hk= h 那么在模拟 PREP 的外部子接口输出 ck C否则,如果在内部接口输出(f0, h)未被 忽略,则 为句柄存储某些数据 hl ← l+1hl ← h对于 i= 0, .. ., q 在内部接口输出(fi, h),令 yi 为返回值 cl ← S3(y0, . . ., yq)[[s]]在模拟 PREP 的外部子接口输出 cl C
现在设D为资源πAπC[PREPC, AUTC,A, SECC,B]和 σBREPF的一个高效区分器。我们不妨假设D仅在接口 B输入 h ∈ H,当且仅当该 h此前已在接口 A输出过,因为其他 h将被两个资源均忽略。我们进一步假设每个 h ∈ H最多输入一次,因为两个资源对同一句柄 h的每次输入均返回相同值。
我们现在描述算法Adv 1 和Adv 2 。当Adv 1 以pk 和 τ= 0被调用时,它会启动对区分器D的一次新模拟,在认证信道的接口 B 输出pk。当D 在接口 C输入 f ∈ F 时,Adv 1 使用查询 f 调用其预言机,并输出 f 和
224
在安全信道的接口 B处回答D。当D在接口 A输入 x ∈ X时, 攻击者1调用getHandle并在接口 A输出返回的句柄 h。它进一步为映射 M设置 M[h] ← x。当D在接口 B输入 h ∈ H时, 攻击者1将 M和D的状态保存在 τ中,并返回M[h]。当D返回一个比特 b时,攻击者1设置 τ ←(return b)并返回一个随机的 x ∈ X。在攻击者1终止后,攻击者2以密文 c和 τ作为输入被调用。如果对于某个 b ∈{0, 1}, τ=(return b)成立,则 攻击者2返回true;否则,它将 c保存在 τ中并返回false。随后,攻击者1以pk和 τ= 0作为输入被调用。在这种情况下,它从 c读取数据和D的状态,并通过从存储库输出 c在接口 B继续模拟。攻击者1随后按上述方式继续执行。
区分器D′在输入 τ=(return b)时输出比特 b。
注意,当区分器D′接收真实实验的输出时,其输出分布等于区分器D连接到资源πAπC[PREPC, AUTC,A, SECC,B]时的输出分布;而当区分器D′接收理想实验的输出时,其输出分布等于区分器D连接到 σBREPF时的输出分布。因此,相应的区分优势相同。
下一个引理表明,CFE‐安全性不仅是构造所需仓库资源的充分条件,而且是必要条件。由于这一概念甚至比[1, 定义 4],已知的不可能性结果更强,因此可转化为我们的模型。
引理4.3。 设 σB为一个高效转换器。则存在高效的概率算法 S1、 S2和 S3,使得对于所有高效的概率预言机算法攻击者1,、所有高效的概率算法攻击者2,以及所有针对CFE实验的高效区分器D,均存在一个针对 πAπC[PREPC,AUTC, A, SECC,B]和 σBREPF的高效区分器D ′,满足
ΔD(CFE-Exp Real E,Adv , CFE-Exp Ideal E,Adv,S) =ΔD′ (πAπC[PREPC, AUTC,A, SECC,B], σBREPF).
证明: 算法 S1、 S2和 S3共同模拟了 σB的一次执行。 S1启动模拟,准备一个初始为空的映射 M(即对所有 f和 h均有 M[f][h]= ⊥),并设置(l, q) ←(0, 0)。它将 σB的外部接口上的第一个输出连同 σ B、 l、 q和 M的状态编码一起在 s中返回。在输入 f ∈ F、 f(x1)…, f(xl)以及某个 s时, S 2从 s中提取出 M、 l、 q、 h 1、…、 h l以及 σ B的状态,设置 q ← q+1、 fq ← f以及M[fq][hi] ← f(xi)用于 i= 1,…, l。然后在 σ B 的内部接口处输入 f。当 σ B 在其外部接口输出(f, skf)时, S 2 将 σ B 的状态连同 M、 q和 f q 一起存储到 s中,并返回skf。在输入(f0( x)…, fq( x))和 s时, S 3 从 s中提取出 σ B 、 M、 l、 q和 f1 ,…, f q 的状态,设置 l ← l+1,调用h l ← getHandle(如果getHandle需要与接口 A交互, S 3 则使用任意固定策略进行模拟),设置 M[fi][hl] ← fi( x)用于 i= 0,…, q,并在 σ B 的外部子接口处输入 h以模拟存储库。当σ B 在其外部接口输出 c时, S 3 将 σ B 、M、 l和 h l 的状态保存到 s中, 并返回 c。形如(f, h)的输出在 σB的内部接口处, S1、S2和 S3通过在其内部接口 输入 M[f][h]来同等处理。否则,该输入将被忽略。 注意,当且仅当 f尚未在 σB的内部接口输入,或 h尚未在其外部接口输入时,该输入才会被忽略。如果在接口 A返回的所有句柄都立即在之后输入到接口 B,则这与REPF保持一致。下文定义的区分器始终会这样做。
现在令Adv1为一个高效概率预言机算法,Adv2为一个高效概率算法,并令D为CFE实验的一个高效区分器。我们针对资源πAπC[PREPC,AUTC,A,SECC,B]和 σBREPF定义一个区分器D′如下:它首先在接口 B和 τ= 0上以 初始输出pk作为输入运行Adv1。当Adv1向其预言机发出 查询 f ∈ F时,通过在接口 C输入 f,从接口 B接收(f, skf),并将skf作为答案返回。当Adv1返回 x后,D′在 接口 A输入 x,然后将返回的句柄 h通过接口 B输入 到存储库中(其中D′对getHandle在接口 A的输入采用与 S3相同的策略,以确保句柄分布均匀)。当在接口 B输出 c时,区分器D′以 c和 τ作为输入调用Adv2。如果它返 回 t= false,则D′通过以pk和 τ作为输入重新运行Adv1 来重复此过程;否则,D′以 τ作为输入调用D。最后,D′ 输出D的输出结果。由于当D′连接到πAπC[PREPC,AUTC, A,SECC,B]时, τ的分布与真实CFE实验中的分布相同, 而当D′连接到 σBREPF时,该分布与理想情况下的分布相 同,因此相应的区分优势相等。
结合引理3.3、4.2和4.3,我们得到以下定理:
定理4.4. 对于上述定义的协议 π,我们有
[PREPC, AUTC,A, SECC,B] π ==⇒ REPF ⇐⇒ E is CFE-secure.
4.3. BSW安全性定义的所谓不足
上一节的结果似乎与[24],中给出的一个示例相矛盾, 该示例旨在说明[1,定义 4]并不充分,且该示例可轻松扩展至我们的定义。我们首先回顾完整版[24]中关于固定函数集的示例,然后解释为何在我们的上下文中这并非问题。
假设E=(setup, keygen, enc, dec) 是一个针对函数集 F的函数加密方案,其定义域为 X ,标识为X ∈ F和 P ⊆ F,其中 P是定义在 X上的陷门单向置换族。我们考虑一个改进方案E′=(setup′,keygen ′,enc, dec′ ),具体如下:算法setup′首先运行setup,并根据陷门单向置换的密钥生成算法采样一个置换 p ∗ ∈ P。然后将其描述包含在公钥pk ′中:=(pk p ∗ ) 和主密钥mk′中:=(mk p ∗ )(并丢弃陷门)。算法keygen ′在输入(mk′, f)时,若 f不等于 p∗ ∈ P的逆,则其行为与keygen相同。
225
f= p∗,如果 f= p∗,则返回(p∗, skid),其中skid ← keygen(mk, idX)。算法enc 未作修改,dec′ 在输入((p∗, skid) c) 时返回 p∗(dec(skid, c)),在输入(skf, c) 时返回 dec(skf, c)。与[24], 类似,可以证明如果 E 是CFE‐安全 的,则 E′ 也是CFE‐安全 的。直观上,生成公钥的模拟器可以存储陷门,从而能够从p∗(x) 计算出 x,使其能够进行模拟。
根据[24],,该方案不应被视为安全的,因为给定一个用于 p∗的密钥时,可以学习 x而不是仅学习 p∗(x)。他们得出结论:因此不应允许模拟器生成公钥。我们则认为这实际上并不是一个问题:对手无法选择他想要从中学习 x而不是 p(x)的 p ∈ P,而是由陷门单向置换的密钥生成算法随机选择一个 p∗。通过自行调用该算法,所有用户都可以获得这样一个随机置换 p∗的陷门,从而即使使用原始方案,也能从 p∗(x)计算出 x。唯一的区别在于,在改进方案中,这个特定的置换包含在公钥和主私钥中。如果在基于改进方案构建的组合协议中使用该置换,则可能会出现问题,特别是当组合协议的设计者假设在给定该 p∗的密钥时无法计算 x(在原始方案中这是成立的,前提是随机 p∗的描述包含在公钥中,但在改进方案中并非如此)。然而,如果按照构造性密码学框架来组合方案,则此类混淆不会发生,因为协议转换器仅在内部使用这些密钥,而不会将其发布到外部接口。因此,构造资源不会向任何参与方提供对应于公钥中置换的特定函数。这意味着当构造资源被用于另一个协议时,该协议不能显式使用此特定的 p ∗。由于 p∗ ∈ P是随机选择的,并且 P需要足够大,它在其他上下文中仍被使用的概率是可忽略的。因此,只要协议被正确组合,改进方案在所有应用中与原始方案一样安全。
5. 特殊情况与不可能性结果
5.1. 公钥加密及其不可能性
如[1],所述,许多类型的加密可以被视为函数加密的特例。我们重申了标准公钥加密如何作为特例被涵盖,并解释了这为何立即导致强不可能性结果。
考虑明文空间为 M的公钥加密。我们可以设定 X: = M和 F PKE :={f0 , id X},其中 f0 : X →N x → |x| 揭示了 x的比特长度。这提供了与公钥加密[1]相同的功能:私钥持有者(对应于id X的密钥)可以将密文解密为加密消息,而在没有私钥的情况下,只能获知消息的长度。根据加密方案的预期用途,需要不同的安全属性。通常情况下,假设存在一个从开始就知晓私钥的合法接收方Bob,以及一个从未获知私钥的窃听者Eve。然而,仓库资源 REPFPKE允许自适应地授予Bob获取输入数据的权限。在Bob不诚实的情况下,这使得区分器能够在接收到密文后自适应地获取私钥。因此,我们处于自适应对手 [28]的情形。于是,可以直接应用尼尔森[29]得出的结果,即任何自适应安全方案中私钥长度必须至少等于需加密的总比特数,该结论也是[1],[8]中不可能性结果的基础。由于爱丽丝可向存储库输入的消息数量没有限制,区分器可以输入总长度超过私钥长度上限的消息,然后再授予Bob访问权限。因此,作为定理4.4以及[29]中结果的直接推论,我们得到以下定理。这体现了我们构造性方法的另一个优势,即通过协议所实现的功能来定义其安全性,从而简化了已有结果的复用,而无需像[1]和[8]中那样针对新定义重新证明。
定理5.1 对于 FPKE,不存在CFE安全的函数加密方案。
正如我们所见,尽管公钥加密可以被视为函数加密的一种特例,但公钥加密的典型安全定义并不对应于函数加密所给出的安全定义。这并非是我们安全定义的缺陷,而是因为公钥加密通常在特定场景下使用,因此较为宽松的定义已足够。参见[26]中关于构造性密码学框架下公钥加密的讨论。类似地,对于函数加密的其他特例(如基于身份的和基于属性的加密),考虑这些方案预期使用方式的安全定义仍然是有意义的。
5.2. 绕过不可能性结果
如前一节所述,即使对于非常简单的函数集合,要在没有额外假设的情况下实现CFE安全的功能性加密方案也是不可能的。通常,有两种方法可以绕过此类不可能性结果:一种是基于更强的假设资源开始,另一种是构造一个更弱的资源。[1]中的作者使用随机预言机实现了大量函数类的安全函数加密方案。这属于第一种情况,在我们的模型中可以理解为在假设资源中添加一个随机预言机。在第 6节中,我们将[1]中的方案重新置于我们的框架下,并证明它可以用于从[PREPC ,AUTC,A,SECC,B, RO]构造出REPF。
贝尔尔和奥尼尔[8]推广了[1]的结果,通过允许密钥长度超过所有加密消息的总长度,实现了无需随机预言机的安全函数加密方案。这也可以被解释为限制存储库可存储的数据量。因此,这是削弱构造资源的一个例子。
226
许多论文考虑了不同的安全定义[6], [7],[8],[11],[27],[30],这些定义不受不可能性结果的限制。然而,更改安全定义可能导致安全性概念不充分,并且可能不清楚所得到的方案如何被使用。一项来自 [9]的结果展示了如何将满足弱安全定义的、针对所有 n输入布尔电路的函数加密方案转换为在随机预言模型中满足更强安全定义的方案。这为考虑较弱定义与使用更强假设资源(即包含随机预言机)以实现强安全性概念之间提供了桥梁。
在第7节中,我们遵循构建较弱资源的方法。特别是,我们引入了受限仓库,并证明满足[27]中某个定义的方案可用于构造此类仓库。
6. 随机预言模型中的构造
我们将[1] 中提出的方案重新表述为框架中的“改进型‘暴力’构造”。该构造允许我们为所有仅包含多项式数量(相对于安全参数)函数的REPF 进行构造,这些函数的定义域均为 X ,陪域均为{0, 1}k,其中 k ∈ N。此构造中的假设资源包含一个陪域为{0, 1}k 的随机预言机。我们现在将此类随机预言机定义为一种资源。
定义6.1。 资源RO具有接口 A、 B 和 C。在接口 I ∈{A, B, C} 输入 x ∈{0, 1}∗ 时,如果 x 之前未在任何接口输入过,RO 会均匀随机地选择 y ∈{0, 1}k,在接口 I 输出 y,并在内部存储(x, y);如果 x 之前已被输入过, RO 将在接口 I 输出与 x 一起存储的值 y。
备注。 在构造的证明中,模拟器将回答区分器对随机预言机的查询。由于模拟器可以任意回答这些查询,只要它们与之前的回答保持一致且看起来是均匀分布的,因此模拟器具有额外的能力,这使我们能够克服第5.1节中的不可能性结果。这种设定通常被称为可编程随机预言模型,因为模拟器在某种意义上可以“重新编程”随机预言机。
设 X 为某个非空集合,且 F=(f0, . . . , fs) 满足 fi: X →{0, 1} k。进一步设(K, E, D) 是一个语义安全的公钥加密方案。令 C 表示由 s+ 1‐元组构成的集合,其中第一个分量是一个 k‐比特串,其余分量包含来自 E 的取值范围的一个元素和一个 k‐比特串。我们定义协议 π RO =(π RO A , π RO B , π RO C),通过[PREPC 、AUTC、 A、SECC、 B 和RO] 构造 REP F ,具体如下:开始时,π RO C 在 i ∈{1,…, s} 上调用 (pki, ski) ← K(),存储ski ,并通过认证信道将(pk1, . . . , pks) 发送给爱丽丝。这些公钥由 π RO A 内部存储。在其外部接口接收到输入 x ∈ X 后, π RO A 从{0, 1} λ 中均匀随机选择r1 , . . . , rs ,其中 λ 是安全参数。然后它在其内部接口输出 ri 随机预言机并接收每个 i ∈{1,…, s} 的答案 r′i。最后,它在其内部接口向存储库输出 c ←(f0(x),(E(pk1, r1) r1′ ⊕f1(x)) . . . ,(E(pks, rs) r′s⊕fs(x))),并在其外部接口输出返回的句柄 h。当在其外部接口接收到输入 fi ∈ F 时, πRO C 通过安全信道将(fi, ski) 发送给 B。转换器 πRO B 随后存储该私钥,并在其外部接口输出 fi。当在其外部接口接收到输入(fi, h) ∈ F×H 时,如果 πRO B 已存储私钥ski 或满足 i= 0,则它在内部接口向存储库输出 h。如果它从存储库接收到 c=(c0, . . . , cs), 则在满足 i= 0 时,它在外部接口输出 c0;若满足 i= 0,则使用 D(ski,·) 解密 ci 的第一个分量,并将结果在内部接口输出至RO。当RO 以 r 回应时, πRO B 在外部接口输出 r 与 ci的第二个分量的按位异或结果。所有其他输入均被忽略。
定理6.2。 我们有
[PREPC, AUTC,A, SECC,B, RO] πRO ==⇒ REPF.
证明概要: 正确性易于验证。为了证明安全性条件,我们考虑模拟器 σB,它最初为i ∈{1,…, s}生成(pki, ski) ← K(),并在其模拟AUTC,A的外部子接口输出(pk1, . . . , pks)。为回答对模拟随机预言机的查询,模拟器维护一个列表 O以记录所有先前的输入和输出。对于 O中的查询,均一致地进行响应。对于新输入,模拟器从{0, 1}k中均匀随机选择一个值,在其模拟RO的外部子接口输出该值,并更新 O。为了模拟PREPC,如同引理4.2的证明中的模拟器, σB跟踪所有已查询的句柄和生成的密文,对重复查询一致地响应,并忽略对无效句柄的查询。针对句柄 h的新密文生成为(y0, (E(pk1, r1) r′ 1) . . . ,(E(pks, rs) r′ s)),其中 y0通过查询(f0, h)从REPF获得,而 r1, . . . , rs ∈{0, 1}λ, r′ 1, . . . , r′ s ∈{0, 1}k则均匀随机选择。此外,模拟器对所有已授予权限的 fi,通过查询(fi, h)从REPF获得 yi,并将(ri, r′ i ⊕ yi)添加到 O中。
在其内部接口接收输入 fi ∈ F后, σB在外部子接口输出(fi,ski),以模拟SECC,B。此外,它通过查询(fi, h j) 从 REPF获取yj, i,针对所有已模拟密文的 h j 。设(yj,0, (E (pk1, rj,1) r′ j,1) . . . ,(E(pks, r j, s) r′ j, s))为这些密文。最后, σ B将(rj, i, r′ j, i ⊕yj,i)添加到 O中。每当需要将条目(x, y)添加到 O, 而该列表中已存在关于 x的条目时,模拟器将中止。
注意,如果模拟器没有中止,并且 ri由 σ B选择的所有值都是唯一的,且与区分器之前的预言机查询不同,并且区分器不会在某个值 r上查询随机预言机,使得 E (pki, r)包含在由 σ B为某个 i生成的某个密文中,则该模拟是完美的。由于(K, E, D)是语义安全的,可以证明这些事件的概率是可忽略的。因此,π RO A π RO C[PREPC , AUTC ,A,SECC ,B, RO]和 σ B REP F 是计算上不可区分的。
227
NA‐SIM‐ExpReal E,Adv
(pk,mk) ← setup()
(x, τ) ←攻击者keygen(mk,·) 1 (公钥)
c ← enc(公钥 x)
α ←攻击者2(公钥 c, τ)
return (α, x)
NA‐SIM‐ExpIdeal E,Adv,S
(pk,mk) ← setup()
(x, τ) ←攻击者keygen(mk,·) 1 (pk)
(f1,…, fq) ←预言机查询由 攻击者1
(sk1,… skq) ←来自 keygen预言机的回复
(y0, . . . , yq) ←(f0(x) . . . , fq(x)) c ← S(公钥f1, . . . , fq, sk1, . . . skq, y0, . . . , yq) α ←攻击者2(pk c, τ) return (α, x)
Figu关于 Q‐NA‐SIM安全定义的实验。注意,对于最多进行 Q次查询的Adv1。
7. 较弱的安全定义和仓库资源的受限变体
7.1. 定义
我们现在定义仓库资源的受限变体,这些变体可能仍足以满足某些应用的需求。
定义7.1 设 L, Q ∈ N ∪{∞}, X为一个非空集合,且设 F是一个定义域为 X和f0 ∈ F的函数集。我们定义资源REP AD F,L,Q与定义3.1中的REPF相同,但仅允许在接口 A上最多 L个输入,在接口 C上最多 Q个输入,并忽略后续输入(如果 L 或 Q等于 ∞,则对输入数量不作限制,即REP AD F,∞,∞ ≡ REPF)。我们进一步定义一个非自适应变体REP NA F,L,Q,该变体
5541

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



