利用不对称性:分支程序的高效ABE
谢尔盖·戈尔布诺夫1(B)和迪纳卡兰·维奈加穆尔西2
1 Aikicrypt,美国波士顿 sergey@aikicrypt.com 2滑铁卢大学,加拿大滑铁卢dvinayag@uwaterloo.ca
摘要
在属性基加密(ABE)方案中,用于加密消息 μ 的密文与一个公开的属性向量 x 相关联,而私钥 skP 与一个谓词 P 相关联。当且仅当 P(x) = 1 时,解密返回 μ。属性基加密为支持细粒度访问控制的数据共享提供了高效且简单的机制。此外,它还被用作构造简洁的功能性加密、可重用的混淆电路、基于令牌的混淆等方案中的关键组件。
在这项工作中,我们描述了一种新的高效ABE方案,适用于具有短私钥且基于温和假设的分支程序族。具体而言,在我们的构造中,针对分支程序 P 的私钥大小为 |P| + poly(λ),其中 λ 是安全参数。我们的构造安全性基于标准的带误差学习(LWE)问题,其近似因子为 nω(1)。之前的构造依赖于LWE的 nO(logn)近似因子(导致参数实例化效率较低),或具有大小为|P| × poly(λ)的大私钥。我们采用了博内等(EUROCRYPT’14)以及Brakerski等(ITCS’14)在电路属性基加密和全同态加密背景下发展的技术。
1 引言
基于属性的加密(ABE)由萨海和沃特斯提出[40]旨在实现对加密数据的细粒度访问控制。利用属性基加密,用户可以针对公开的属性向量 μ x 进行加密以得到密文ctx。任何持有与访问策略 P 相关联的私钥skP的用户,只要满足 P(x) = 1 即可解密消息 μ。此外,安全性概念保证:即使多个敌手共谋,若他们各自持有的私钥skP1,…,skPt均无法单独解密该消息,则他们也无法获得关于消息 μ 的任何信息。直到最近,属性基加密的候选构造方案仍局限于某些受限类别的访问策略,例如等值测试(身份基加密)、布尔公式和内积:[1,2,8,12,14,15,30–32,41]。
在麻省理工学院期间完成的工作,由微软博士奖学金支持。在多伦多大学期间完成的工作。c©国际密码学研究协会2015 岩田拓和J.H. 崔 (编者):ASIACRYPT 2015,第一部分, LNCS 9452,第550–574页,2015年。 DOI: 10.1007/978‐3‐662‐48797‐6 23
本文档由 funstory.ai 的开源 PDF 翻译库 BabelDOC v0.5.10 (http://yadt.io) 翻译,本仓库正在积极的建设当中,欢迎 star 和关注。
利用不对称性:高效的属性基加密用于分支程序 551
在最近的突破中,戈尔布诺夫、瓦伊昆塔纳坦和韦[26]以及加格、根特里、哈利维、萨哈伊和沃特斯[20]构造了适用于任意布尔谓词的ABE方案。GVW构造基于标准的带误差学习(LWE)问题,并使用次指数近似因子,而GGHSW则依赖于现有多线性映射候选方案上(目前)更强的假设[16,18,21]。
但在上述两种ABE方案中,私钥的大小与谓词的大小呈乘性关系:|P| · poly(λ, d)(其中 d 是谓词电路表示的深度)。在后续工作中,博内等[10]展示了如何构造具有短私钥的算术谓词属性基加密:私钥大小为 |P| + poly(λ, d),同样假设LWE在次指数近似因子下的困难性。然而,在[26]中,作者还展示了一种针对分支程序族的额外构造,该构造基于更弱且量化上更优的假设:即 LWE在多项式近似因子下的困难性。相较于次指数近似因子,基于多项式近似因子的LWE假设带来了两个主要优势:首先,所得构造的安全性依赖于一个明显更弱的LWE假设;更重要的是,所得到的实例化具有更优的参数——更小的模数 q ——从而直接带来实际的效率提升。
在本研究中,我们致力于在更弱的安全性假设下构建具有更好性能保证的 ABE方案。我们专注于针对分支程序族的属性基加密,该方案足以满足大多数现有应用的需求,例如医疗和多媒体数据共享[5,33,36]。
首先,我们总结一下将带误差学习问题通过标准的Barrington定理[7]转换到分支程序场景下的两个最高效的结果。设 L 为分支程序 P 的长度,并令 λ 表示安全参数。那么,
– [26]:存在一种针对长度为 L 的分支程序的ABE方案,该方案基于带有多项式近似因子的LWE的安全性,并具有大私钥。特别地,在实例化中 |skP| = |L| × poly(λ) 且 q=poly(L, λ)。
– [10]:存在一种针对长度为 L 的分支程序的ABE方案,该方案基于带有准多项式近似因子的LWE的安全性,并具有小私钥。特别地,|skP| = |L| + poly(λ, log L),q= poly(λ)log L。
为了在理论和实践上推进技术水平,自然会出现的问题是我们能否兼得两者之长并且:
基于带误差学习(LWE)在多项式近似因子下的安全性,构建具有小私钥的分支程序的属性基加密?
1.1 我们的结果
我们提出了一种基于温和的LWE假设、用于分支程序的高效属性基加密构造。我们的结果可以总结为以下定理。
定理1(非正式) . 存在一种针对长度为L的分支程序族的选择性安全的属性基加密,其基于具有多项式近似因子的LWE的安全性,并具有小私钥。更正式地说,私钥skP的大小为 L+ poly(λ,log L),模数为 q=poly(L, λ),其中 λ 是安全参数。
此外,我们可以通过将 q 设置为某个较小的超多项式来扩展我们的构造以支持任意长度的分支程序。
作为另一项贡献,我们的技术导致了一种用于分支程序的高效同态签名的新构造。特别地,戈尔布诺夫等人 [28] 展示了如何基于博内等人在属性基加密背景下提出的模拟技术来构造电路的同态签名。他们最终的构造安全性基于具有次指数近似因子的短整数解(SIS)问题(在分支程序的设定中为准多项式)。类似地,我们在第3.4节中提出的模拟算法可直接用于基于具有多项式近似因子的SIS构造分支程序的同态签名。
定理2(非正式) 。存在一种基于具有多项式近似因子的SIS安全性、针对长度为L的分支程序族的同态签名方案。
高层概述
我们属性基加密构造的起点是博内等人为电路设计的具有短私钥的 ABE方案 [10]。其构造的核心是一个完全密钥同态编码方案。
它使用公钥 A ←$ Z n×m q 对 a ∈{0, 1} 进行“带噪声”的样本加密:
ψA,a=(A+ a· G)Ts+ e 其中s ←$ Z n q 和G ∈ Z n×m q
在所有编码中保持固定,而e ←$χm (对于某个噪声分布 χ)每次独立选取。作者表明,可以将这种在编码值和公钥上同时满足同态性的同态密钥编码方案转化为适用于电路的属性基加密方案。
我们的第一个关键观察是他们在编码上的同态乘法中存在不对称的噪声增长。考虑 ψ1, ψ2 分别为 a1, a2 在公钥A1,A2下的编码。为了实现乘法同态性,他们的第一步是通过计算来实现 a1 和 a2 上的同态性
a1 · ψ2=(a1 · A2+(a1a2)· G) T s+ a1e2 (1)
现在,由于同态性在公钥矩阵上的要求必须独立于 a1、a2 在最终的编码中也得到满足,因此我们必须用仅涉及A1,A2的运算来替换公式1中的 a1 · A2。为此,我们可以使用第一个编码 ψ1=(A1+ a1 ·G)T+e1,并将 a1·G 替换为 a1·A2,具体如下:首先计算
˜ ˜ ˜A2 ∈{0, 1}m×m,使得G · A2= A2。
(由于G的“陷门”是公开已知的,因此找到这样的A2是可行的)。然后进行计算
(A˜2) T · ψ1= A˜T 2 ·((A1+ a1 · G)Ts+ e1)
=(A1 A˜2+ a1 · GA˜2) T
s+ A˜2e1
=(A1 A˜2+ a1 · A2) T s+ e′ 1 (2)
将式2从式1中减去,得到(−A1 ˜A2+(a1a2) · G)T s+ e′,这是在公钥 a1a2 下的˜A×:= −A1A2的编码。因此,
ψA×,a×:= a1 · ψ2 − A˜T 2 · ψ1
˜其中 a×:= a1a2。这里,e′仍然足够小,因为 ˜A2 具有较小的(二进制)元素。我们观察到新噪声 e′= a1e2 −A2e1 呈非对称增长。也就是说,poly(n) 倍的乘法增长始终与第一个噪声 e1 相关。直接评估 k 层乘法同态性会导致噪声幅度达到 poly(n)k。我们能否通过精心设计同态操作的顺序来控制噪声增长?
为此,我们提出了第二个想法:设计用于矩阵分支程序“顺序”表示的求值算法,以在全同态加密 [13] 的背景下遵循Brakerski‐Vaikuntanathan范式,谨慎管理噪声增长。
首先,为了生成关于属性向量x=(x1,…, x)的密文,我们发布其各个比特的编码:
ψi ≈(Ai+ xi · G) T s
我们还发布了初始状态 01 的编码:
ψv 0 ≈(A v T s
消息 μ 在编码uTs+ e下被加密(其中u被视为公钥),在解密过程中,用户应从{ψi}i∈[], ψ v 0 获得值 ≈uTs 当且仅当 P(x)= 1。
现在,假设用户希望在属性向量 x 上评估一个分支程序 P 。非正式地说,分支程序的评估通过逐步更新一个特殊的状态向量来进行。下一步的状态由当前状态和其中一个输入比特(与该步骤相关)决定。从以下角度看待这一过程:
分支程序的顺序表示使我们能够仅通过一次单次乘法和少量加法来更新状态。
假设 vt 表示程序 P 在第 t 步的状态,且用户持有其对应的编码ψtv(在某个公钥下)。为了获得 ψv t+1,用户需要使用 ψi(对于由程序确定的某些i)。利用不对称性,该状态可以通过将 ψi 与对应于编码ψv t 的矩阵A v t 相乘(然后执行一些简单的加法步骤)来进行˜更新。由于 ψi 始终包含一个“新鲜”的噪声(在程序求值过程中该噪声不会增长),因此 ψv t+1 中的噪声相较于 ψv t 仅增加了一个常数加性因子!因此,在求值过程经过 k 步后,噪声将被限制在 k · poly(n) 以内。最终,如果 P(x)= 1,用户将得知 ≈ uTs 并能够恢复 μ(具体细节请参见主要构造部分)。
在基于属性的加密中,“利用不对称性”面临的主要挑战是需要满足并行同态性质:我们必须设计独立的同态算法,分别用于在公钥矩阵和编码上进行操作,以实现正确解密。首先,我们定义并设计一种专门针对分支程序的公钥同态操作算法。其次,我们设计一种作用于编码的同态算法,该算法保持公钥矩阵和比特上的同态性2并谨慎管理噪声增长,如上所示。为了证明安全性,我们需要论证:即使拥有多个无法单独实现解密的程序对应的私钥,任何用户合谋也无法获得关于消息的任何信息。为此,我们设计了一个独立的公钥模拟算法来实现这一目标。
1.2 应用
我们总结了一些已知的属性基加密的应用。帕诺、雷科娃和瓦伊昆塔纳坦[37] 展示了如何利用ABE设计具有预处理阶段的(公开)可验证两消息委托方案。戈德瓦塞尔、卡拉伊、波帕、瓦伊昆塔纳坦和泽尔多维奇[24] 展示了如何将 ABE 用作关键构建模块,以构造简洁的单查询函数加密、可重用的混淆电路、基于令牌的混淆以及针对图灵机的同态加密。我们对分支程序的效率提升可以应用于所有这些场景。
1.3 其他相关工作
许多研究优化了针对布尔公式的属性基加密:阿特拉帕东等 [6] 和江原等 [17] 从双线性假设出发设计了具有常数大小密文的ABE方案。对于任意电路,博内等 [10] 也展示了从多线性假设出发实现常数大小密文的ABE。属性基加密也可视为函数加密 [9] 的一种特殊情况。戈尔布诺夫等人 [25] 提出了针对任意函数的函数加密。
在有界共谋模型中,基于标准公钥加密方案。加格等人 [19] 提出了一个针对任意函数的无界共谋的函数加密方案,该方案基于较弱的安全模型和多线性假设。
最近,戈尔布诺夫等人利用了噪声增长中的不对称性[10],在基于标准LWE的谓词加密方案设计的不同背景下[27]。
1.4 组织结构
在第2节中,我们介绍了格理论基础、ABE的定义以及分支程序。在第3节中,我们提出了主要的求值算法,并在第4节中构建了我们的ABE方案。我们在第5节中给出了参数的具体实例化。最后,我们在第6节中概述了扩展内容。
2 预备知识
符号说明
令PPT表示概率多项式时间。对于任意整数 q ≥ 2,我们用 Zq 表示模 q 的整数环,并将 Zq 表示为区间(−q/2, q/2]内的整数。我们用 Zn×m q 表示元素取自 Zq 的 n × m 矩阵的集合。我们使用粗体大写字母(例如A)表示矩阵,粗体小写字母(例如x)表示向量。符号AT表示矩阵A的转置。若A1是一个 n× m 矩阵,A2是一个 n× m′ 矩阵,则[A1‖A2]表示通过拼接A1和A2所形成的 n×(m+ m′)矩阵。类似的记号也适用于向量。在进行矩阵与向量相乘时,我们始终将向量视为列向量。此外,[n]表示数字集合1,…, n。
2.1 格理论基础
带误差学习(LWE)假设
带误差学习(LWE)问题由雷格夫 [39] 提出,他证明了在平均情况下求解该问题的难度等价于(量子地)在最坏情况下求解若干标准格问题。
定义 1(带误差学习) 。对于整数 q= q(n) ≥ 2 和定义在 Zq 上的误差分布 χ= χ(n),带误差学习问题 dLWEn,m,q,χ 是区分以下两对分布:
{A, ATs+ x} and {A, u}
其中 A ←$ Z n×m q ,s ←$ Z n q ,x ←$ χm,u ←$ Z m q。
与格的联系
令 B= B(n) ∈ N。一个分布族 χ={χn}n∈ N 被称为 B‐有界的,如果
Pr[χ ∈{−B,…, B −1, B}]= 1.
已知在最坏情况下的格中,dLWEn,m, q ,χ 与近似短向量问题之间存在已知的量子[39] 和经典[38] 归约,其中 χ 是某个适当 B 下的 B‐有界(截断)离散高斯分布。针对这些格问题的最先 进的算法运行时间在维度 n[4,35] 上近乎指数级;更一般地,我们可以在 2O(n/k) 时间内获得一个 2k‐˜近似解。在本文中,参数 m=为poly(n),此时我们将符号简写为LWEn,q,χ。
格和LWE的陷门
高斯分布 。设DZm,σ为定义在 Zm 上参数为 σ 的截断离散高斯分布,即当 || · ||∞ 范数超过 √m· σ 时,将输出替换为0。注意,DZm,σ 是 √m· σ‐有界的。
引理1(格陷门[3,22,34]) 。存在一个高效的随机化算法TrapSamp(1n, 1m, q),给定任意整数 n ≥ 1, q ≥ 2 以及足够大的 m= Ω(nlog q),输出一个奇偶校验矩阵A ∈ Zn×m q 和一个“陷门”矩阵TA ∈ Zm×m,使得A的分布与均匀分布的差距为negl(n)-接近。
此外,存在一个高效的算法SampleD,该算法在所有随机选择上以压倒性概率满足以下条件:对于任意u ∈ Zn q 以及足够大的 s= Ω(√n log q),随机算法SampleD(A,TA,u s)会输出一个向量r ∈ Zm,其范数为 ||r||∞ ≤ ||r ||2 ≤ s√n(概率为1)。此外,对于任意多项式 k ∈ N,以下元组(A,TA, U,R)的分布彼此之间的统计距离在negl(n)之内。
– (A, TA) ← 陷阱采样(1n, 1m, q);U ← Z n×k q ;R ← SampleD(A, TA, U s)。–
(A, TA) ← 陷阱采样(1n, 1m, q);R ←(DZ m,s) k;U :=AR (mod q)。
采样算法
我们将使用以下算法从特定格中采样短向量。提前说明,算法 SampleLeft [1,14] 将用于在真实系统中采样密钥,而算法 SampleRight [1] 将用于在模拟中采样密钥。
算法 SampleLeft(A,B,TA,u α):
输入:一个满秩矩阵A属于Z n×m q ,一个“短”基底TA对应Λ⊥ q(A),一个矩阵B属于 Z n×m1 q ,一个向量u ∈ Z n q,以及一个高斯参数 α。输出:令F:=(A ‖ B)。该算法输出一个向量e ∈ Z m+m1,位于陪集 ΛF+u 中。
定理3([1,定理 17],[14,引理3。2]) 。设 q> 2, m> n和α> ‖TA‖GS·ω(√ log(m+ m1)。则SampleLeft(A, B, TA, u α)以(3)中的形式作为输入,输出一个向量e ∈ Z m+m 1,其分布统计上接近于DΛ F + u ,α,其中F:=(A ‖ B)。
其中 ‖T‖GS 表示 T 的格拉姆‐施密特正交化的范数。更多细节请参见 [1]。
算法 SampleRight(A,G,R,TG ,u α):
输入:矩阵 A 在 Zn×k q 中和 R 在 Zk×m 中,一个满秩矩阵G在 Zn×m q 中,一个“短”基 TG 对应于 Λq⊥(G),一个向量 u ∈ Zn q,以及一个高斯参数α。
输出:令 F:=(A ‖ AR+G)。该算法输出一个位于陪集 ΛF+u 中的向量 e ∈ Zm+k。
通常,作为输入提供给算法的矩阵 R 将是 {1,−1}m×m 中的一个随机矩阵。令 Sm 为 m‐球面 {x ∈ Rm+1: ‖x‖= 1}。我们定义 sR:= ‖R‖:= supx∈Sm−1 ‖R· x‖。
定理4 ([1,定理 19]) 。令 q> 2, m> n 且 α> ‖TG‖GS ·sR · ω(√log m)。
则SampleRight(A, G, R, TG,u α)在输入如(3)中所示时,输出一个向量e ∈ Zm+k ,其分布统计上接近于DΛF+u,α,其中F:=(A ‖AR +G)。
原基矩阵
我们使用在 [34] 中定义的原基矩阵 G ∈ Zn×m q 。该矩阵具有陷门 TG,使得 ‖TG‖∞= 2。
我们还定义了一个算法 invG : Zn×m q → Zm×m q ,它能确定性地推导出一个满足 A 的原像,使得 G ·A= A。从 [34], 可知存在一种方法获得 ˜A,使得 ˜A ∈{0, 1}m×m。
2.2 基于属性的加密
一个针对具有比特输入和消息空间 M 的电路类 C 的基于属性的加密方案 ABE[30] 由一组概率多项式时间算法(Params, Setup, Enc, KeyGen, Dec)组成:
Params(1λ) → pp :参数生成算法接收安全参数 1λ,并输出公共参数pp,该参数隐式地提供给方案中所有其他算法。
Setup(1) → (mpk,msk) : Setup算法以输入索引长度为输入,输出主公钥mpk和主密钥msk。
Enc(mpk x, μ) → ctx :加密算法以mpk、一个索引x ∈{0, 1} 和一条消息 μ ∈M 为输入,输出一个密文ctx。
KeyGen(msk C) → skC :密钥生成算法以msk和由 C ∈C 指定的谓词为输入,输出一个私钥skC。
Dec(ctx,skC) → μ : 解密算法以ctx和skC为输入,输出要么是 ⊥,要么是一条消息 μ ∈M。
定义2(正确性) 。我们要求对于所有满足 C(x) = 1 的 (x C) 以及所有 μ ∈ M,有 Pr[ctx ←Enc(mpk, x μ); Dec(ctx, skC) = μ)]= 1,其中概率取自于 pp ← Params(1 λ )、(mpk, msk) ← Setup(1 ) 以及上述表达式中所有算法的随机源。
定义 3 (安全性) 。对于一个有状态的敌手 A,我们定义优势函数Advabe A(λ)为
Pr
⎡
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣ b= b′:
x, dmax ← A(1λ, 1); pp← Params(1λ, 1dmax); (mpk, msk) ← Setup(1λ, 1, x∗);
(μ0, μ1) ← AKeygen(msk,·)(mpk),
|μ0| = |μ1|; b←${0, 1}; ctx ← Enc(mpk, x, μb); b′ ← AKeygen(msk,·)(ctx)
⎤
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦ − 1 2
限制条件是,所有 y对KeyGen(msk ·)的查询均满足C(x∗)= 0 (即,skC 无法解密ctx)。如果对于所有PPT对抗者 A,其优势Advabe A(λ)是关于 λ的可忽略函数,则该基于属性的加密方案是选择性安全的。
2.3 分支程序
我们定义分支程序的方式类似于[13]。一个宽度为w、长度为 L、输入空间为{0, 1} 且具有 s个状态(由[s]表示)的分支程序BP,是由 L个形如(var(t)σt,0,σt,1)的元组组成的序列,其中
– σt,0 和 σt,1 是从[s]到其自身的单射函数。
– var : [L] → [] 是一个将第 t 个元组 σt,0,σt,1 与输入比特xvar(t) 相关联的函数。
分支程序BP在输入x=(x1,…, x)上的输出计算如下。在第 t 步,我们用 ηt ∈[s] 表示计算的状态。初始状态为 η0= 1。一般情况下, ηt 可以通过递归方式计算得出
ηt= σt,x var(t)( ηt−1)
最后,经过 L 步后,计算输出BP(x)为= 1(当 ηL= 1成立时),否则为0。
如[13]中所做的那样,我们用比特而非数字来表示状态,以限制噪声增长。具体而言,我们通过单位向量vt ∈{0, 1} s 来表示状态 ηt ∈[s]。其思想在于,vt[i]= 1 当且仅当σt, x var( t) (ηt−1) = i。注意,我们也可以将上述表达式写为vt[i]= 1 当且仅当以下之一成立:
– vt−1[σ −1 t,0(i)]= 1 and xvar(t)= 0
– vt−1[σ −1 t,1(i)]= 1 and xvar(t)= 1
这种后者形式对我们很有用,因为它可以用以下公式来表示。对于 t ∈[L] 和 i ∈[s],
vt[i]:= vt−1[σ −1 t,0(i)] ·(1 − xvar(t)) + vt−1[σ −1 t,1(i)] · xvar(t)
= vt−1[γt,i,0] ·(1 − x var(t)) + vt−1[γt,i,1] · xvar(t)
其中γt,i,0:= σ−1 t 0,(i) 和 γt,i,1= σ−1 t,1(i) 可以根据分支程序的描述公开计算得出。
因此,{var(t){γt,i,0, γt,i,1}i∈[s]}t∈[L] 也是分支程序BP的一个有效表示。
为了表述清晰,我们将处理宽度为5的置换分支程序,这已被证明等价于电路类 NC1[7]。因此,我们有 s= w= 5 且函数 σ0、 σ1 是[5]上的置换。
3 我们的求值算法
在本节中,我们将描述在我们的属性基加密构造中使用的关键求值和编码(密文)求值算法。这些算法经过精心设计,以控制LWE编码中的噪声增长和保持公钥及编码值上的并行同态性。
3.1 基本同态操作
我们首先基于博内等 [10] 提出的技术,描述作用于公钥和编码(密文)上的基本同态加法和乘法算法。
定义4 (LWE编码) 。对于任意矩阵 A ←$ Zn×m q ,我们定义关于(公钥)A 和随机性 s ←$ Zn q 的比特 a ∈{0, 1} 的 LWE 编码为
ψA,s,a=(A+ a· G)Ts+ e ∈ Z m q
对于误差向量 e ←$ χm 和一个(扩展的)原基矩阵 G ∈ Z n×m q 。
然而,在我们的构造中,所有编码都将基于相同的带误差学习密钥 s,因此为简便起见,我们将这种编码简单记为 ψA,a。
定义5(噪声函数) 。对于每个 A ∈ Z n×m q ,s ∈ Z n q 和位 a ∈{0, 1} 的编码 ψA,a ∈ Z m q,我们将其噪声函数定义为
Noises(ψA,a):= ||ψA,a −(A+ a· G)Ts mod q||∞
展望未来,在引理8中,我们证明了如果在执行同态计算后得到的噪声为 ≤ q/4,则我们的ABE方案将正确解密消息。现在,我们根据[10]定义此类编码的基本加法和乘法运算。在他们的上下文中,他们将矩阵A称为“公钥”,而ψA,a称为密文。
同态加法
该算法以两个编码ψA,a, ψA ′ ,a ′ 作为输入,并输出它们的和。设A += A+ A′ 和 a += a+ a′。
Adden(ψA,a, ψA ′ ,a ′): Output ψA + ,a +:= ψA,a+ ψA ′ ,a ′ mod q
引理 2 (Adden 中的噪声增长) 。 对于任意两个有效的编码ψA,a, ψA′,a′ ∈ Zmq,,设 A+= A+ A′ 和 a+= a+ a′ 以及 ψA+,a+=Adden(ψA,a, ψA′,a′),那么我们有
NoiseA+,a+(ψA+,a+) ≤ NoiseA,a(ψA,a)+ NoiseA′,a′(ψA′,a′)
证明 给定两个编码,我们有,
ψA+,a+= ψA,a+ ψA′,a′
=((A+ a· G)Ts+ e)+((A′+ a′ · G)Ts+ e′) =((A+ A′)+(a+ a′)· G)T s+(e+ e′) =(A++ a+ · G)Ts+(e+ e′)
因此,根据噪声函数的定义,可得
NoiseA+,a+(ψA,a+ ψA′,a′) ≤ NoiseA,a(ψA,a)+ NoiseA′,a′(ψA′,a′)
同态乘法
该算法接收两个编码ψA,a=(A+ a · G)Ts+ e1 和 ψA′,a′=(A′+ a′ · G)Ts+ e2,并输出一个编码 ˜ ψA×,a×,其中A×= −AA′ 且 a×= aa′ 如下所示:
Multiplyen(ψA,a, ψA′,a′): Output ψA×,a×:= −A˜′T · ψ+ a· ψ′.
请注意,此过程需要明文形式的属性 a .
引理 3(Multiplyen中的噪声增长) 。 对于任意两个有效的编码 ˜ ψA,a, ψA′,a′ ∈ Z m q,,设 A×= −AA′ 和 a×= aa′ 和 ψA×,a×=Multiplyen(ψA,a, ψA′,a′),那么我们有
NoiseA×,a×(ψA×,a×) ≤ m· NoiseA,a(ψA,a)+ a· NoiseA′,a′(ψA′,a′)
证明 给定两个有效的编码,我们有
ψA×,a×= −A˜′T · ψ+ a· ψ′
= −A˜′T((A+ a· G)Ts+ e)+ a·((A′+ a′ · G)Ts+ e′)
=((−AA˜′ − a· A′)Ts−A˜′Te)+((a· A′+ aa′ · G)Ts+ a· e′)
=((−AA˜2 ︸ ︷︷ ︸
A×
)+ aa′ ︸︷︷︸
a ×
·G) Ts+(−A˜′Te+ a· e′ ︸ ︷︷ ︸
e×
)
因此,根据噪声函数的定义,我们必须限制噪声e×。因此,
∥ ∥ e×∥ ∥∞ ≤ ∥ ∥ ∥ A˜′Te∥∥∥∞ + a· ‖e′‖ ∞ ≤ m· ‖e‖∞ + a· ‖e′‖ ∞
˜其中最后一个不等式成立是因为A′ ∈{0, 1} m×m。
注意:这种同态性与标准的全同态加密(FHE)不同,主要原因如下两点。
– 为了实现乘法同态性,这里我们需要其中一个输入值 以明文形式存在,但 FHE的同态操作是在不知道输入值的情况下执行的。
– 另一个主要区别在于,此处我们要求输出公钥矩阵A+,A×独立于输入值 a1, a2。更一般地,当给定一个包含AND和OR门的任意电路,以及其输入线对应的矩阵时,应当能够在不知道输入线值的情况下确定输出线对应的矩阵。然而,该性质在现有的任何 FHE方案中都不存在。
3.2 我们的公钥评估算法
我们定义一个(公共)密钥评估算法 Evalpk。该算法以分支程序 BP 的描述、一组公钥 {Ai}i∈[](每个属性位 xi 对应一个)、一组用于初始状态向量和辅助矩阵 V0,i Ac 的公钥作为输入,输出对应于该分支程序的一个“已评估”公钥。
Evalpk(BP,{Ai}i∈[],{V0,i}i∈[5], A c) → VBP
辅助矩阵Ac可以被视为用于编码常数1的公钥。我们还定义A′ i:= Ac −Ai为一个公钥,该公钥将用于编码1 − xi。输出VBP ∈ Z n×m q 是分支程序评估第 L步时,状态向量中位置1处同态定义的公钥VL,1。
该算法的执行过程如下。回顾由元组(var(t){γt,i,0, γt,i,1}i∈[5])表示的分支程序BP的描述。初始状态向量始终取为v0:=[1, 0, 0, 0, 0]。并且对于 t ∈[L],
vt[i]= vt−1[γt,i,0] ·(1 − xvar(t))+ vt−1[γt,i,1] · xvar(t)
我们的算法归纳地计算VBP,方法如下。假设在时间 t−1 ∈[L],状态公钥{ Vt−1,i}i∈[5] 已被分配。我们在时间 t
利用不对称性:高效的分支程序属性基加密 553
分支程序的顺序表示使我们能够仅通过一次单次乘法和少量加法来更新状态。
假设 vt 表示程序 P 在第 t 步的状态,且用户持有其对应的编码ψtv(在某个公钥下)。为了获得 ψv t+1,用户需要使用 ψi(对于由程序确定的某些i)。利用不对称性,该状态可以通过将 ψi 与对应于编码ψv t 的矩阵A v t 相乘(然后执行一些简单的加法步骤)来进行˜更新。由于 ψi 始终包含一个“新鲜”的噪声(在程序求值过程中该噪声不会增长),因此 ψv t+1 中的噪声相较于 ψv t 仅增加了一个常数加性因子!因此,在求值过程经过 k 步后,噪声将被限制在 k · poly(n) 以内。最终,如果 P(x)= 1,用户将得知 ≈ uTs 并能够恢复 μ(具体细节请参见主要构造部分)。
在基于属性的加密中,“利用不对称性”面临的主要挑战是需要满足并行同态性质:我们必须设计独立的同态算法,分别用于在公钥矩阵和编码上进行操作,以实现正确解密。首先,我们定义并设计一种专门针对分支程序的公钥同态操作算法。其次,我们设计一种作用于编码的同态算法,该算法保持公钥矩阵和比特上的同态性2并谨慎管理噪声增长,如上所示。为了证明安全性,我们需要论证:即使拥有多个无法单独实现解密的程序对应的私钥,任何用户合谋也无法获得关于消息的任何信息。为此,我们设计了一个独立的公钥模拟算法来实现这一目标。
1.2 应用
我们总结了一些已知的属性基加密的应用。帕诺、雷科娃和瓦伊昆塔纳坦[37] 展示了如何利用ABE设计具有预处理阶段的(公开)可验证两消息委托方案。戈德瓦塞尔、卡拉伊、波帕、瓦伊昆塔纳坦和泽尔多维奇[24] 展示了如何将 ABE 用作关键构建模块,以构造简洁的单查询函数加密、可重用的混淆电路、基于令牌的混淆以及针对图灵机的同态加密。我们对分支程序的效率提升可以应用于所有这些场景。
1.3 其他相关工作
许多研究优化了针对布尔公式的属性基加密:阿特拉帕东等 [6] 和江原等 [17] 从双线性假设出发设计了具有常数大小密文的ABE方案。对于任意电路,博内等 [10] 也展示了从多线性假设出发实现常数大小密文的ABE。属性基加密也可视为函数加密 [9] 的一种特殊情况。戈尔布诺夫等人 [25] 提出了针对任意函数的函数加密。
在有界共谋模型中,基于标准公钥加密方案。加格等人 [19] 提出了一个针对任意函数的无界共谋的函数加密方案,该方案基于较弱的安全模型和多线性假设。
最近,戈尔布诺夫等人利用了噪声增长中的不对称性[10],在基于标准LWE的谓词加密方案设计的不同背景下[27]。
1.4 组织结构
在第2节中,我们介绍了格理论基础、ABE的定义以及分支程序。在第3节中,我们提出了主要的求值算法,并在第4节中构建了我们的ABE方案。我们在第5节中给出了参数的具体实例化。最后,我们在第6节中概述了扩展内容。
2 预备知识
符号说明
令PPT表示概率多项式时间。对于任意整数 q ≥ 2,我们用 Zq 表示模 q 的整数环,并将 Zq 表示为区间(−q/2, q/2]内的整数。我们用 Zn×m q 表示元素取自 Zq 的 n × m 矩阵的集合。我们使用粗体大写字母(例如A)表示矩阵,粗体小写字母(例如x)表示向量。符号AT表示矩阵A的转置。若A1是一个 n× m 矩阵,A2是一个 n× m′ 矩阵,则[A1‖A2]表示通过拼接A1和A2所形成的 n×(m+ m′)矩阵。类似的记号也适用于向量。在进行矩阵与向量相乘时,我们始终将向量视为列向量。此外,[n]表示数字集合1,…, n。
2.1 格理论基础
带误差学习(LWE)假设
带误差学习(LWE)问题由雷格夫 [39] 提出,他证明了在平均情况下求解该问题的难度等价于(量子地)在最坏情况下求解若干标准格问题。
定义 1(带误差学习) 。对于整数 q= q(n) ≥ 2 和定义在 Zq 上的误差分布 χ= χ(n),带误差学习问题 dLWEn,m,q,χ 是区分以下两对分布:
{A, ATs+ x} and {A, u}
其中 A ←$ Z n×m q ,s ←$ Z n q ,x ←$ χm,u ←$ Z m q。
与格的联系
令 B= B(n) ∈ N。一个分布族 χ={χn}n∈ N 被称为 B‐有界的,如果
Pr[χ ∈{−B,…, B −1, B}]= 1.
已知在最坏情况下的格中,dLWEn,m, q ,χ 与近似短向量问题之间存在已知的量子[39] 和经典[38] 归约,其中 χ 是某个适当 B 下的 B‐有界(截断)离散高斯分布。针对这些格问题的最先 进的算法运行时间在维度 n[4,35] 上近乎指数级;更一般地,我们可以在 2O(n/k) 时间内获得一个 2k‐˜近似解。在本文中,参数 m=为poly(n),此时我们将符号简写为LWEn,q,χ。
格和LWE的陷门
高斯分布 。设DZm,σ为定义在 Zm 上参数为 σ 的截断离散高斯分布,即当 || · ||∞ 范数超过 √m· σ 时,将输出替换为0。注意,DZm,σ 是 √m· σ‐有界的。
引理1(格陷门[3,22,34]) 。存在一个高效的随机化算法TrapSamp(1n, 1m, q),给定任意整数 n ≥ 1, q ≥ 2 以及足够大的 m= Ω(nlog q),输出一个奇偶校验矩阵A ∈ Zn×m q 和一个“陷门”矩阵TA ∈ Zm×m,使得A的分布与均匀分布的差距为negl(n)-接近。
此外,存在一个高效的算法SampleD,该算法在所有随机选择上以压倒性概率满足以下条件:对于任意u ∈ Zn q 以及足够大的 s= Ω(√n log q),随机算法SampleD(A,TA,u s)会输出一个向量r ∈ Zm,其范数为 ||r||∞ ≤ ||r ||2 ≤ s√n(概率为1)。此外,对于任意多项式 k ∈ N,以下元组(A,TA, U,R)的分布彼此之间的统计距离在negl(n)之内。
– (A, TA) ← 陷阱采样(1n, 1m, q);U ← Z n×k q ;R ← SampleD(A, TA, U s)。–
(A, TA) ← 陷阱采样(1n, 1m, q);R ←(DZ m,s) k;U :=AR (mod q)。
采样算法
我们将使用以下算法从特定格中采样短向量。提前说明,算法 SampleLeft [1,14] 将用于在真实系统中采样密钥,而算法 SampleRight [1] 将用于在模拟中采样密钥。
算法 SampleLeft(A,B,TA,u α):
输入:一个满秩矩阵A属于Z n×m q ,一个“短”基底TA对应Λ⊥ q(A),一个矩阵B属于 Z n×m1 q ,一个向量u ∈ Z n q,以及一个高斯参数 α。输出:令F:=(A ‖ B)。该算法输出一个向量e ∈ Z m+m1,位于陪集 ΛF+u 中。
定理3([1,定理 17],[14,引理3。2]) 。设 q> 2, m> n和α> ‖TA‖GS·ω(√ log(m+ m1))。则SampleLeft(A, B, TA, u α)以(3)中的形式作为输入,输出一个向量e ∈ Z m+m 1,其分布统计上接近于DΛ F + u ,α,其中F:=(A ‖ B)。
其中 ‖T‖GS 表示 T 的格拉姆‐施密特正交化的范数。更多细节请参见 [1]。
算法 SampleRight(A,G,R,TG ,u α):
输入:矩阵 A 在 Zn×k q 中和 R 在 Zk×m 中,一个满秩矩阵G在 Zn×m q 中,一个“短”基 TG 对应于 Λq⊥(G),一个向量 u ∈ Zn q,以及一个高斯参数α。
输出:令 F:=(A ‖ AR+G)。该算法输出一个位于陪集 ΛF+u 中的向量 e ∈ Zm+k。
通常,作为输入提供给算法的矩阵 R 将是 {1,−1}m×m 中的一个随机矩阵。令 Sm 为 m‐球面 {x ∈ Rm+1: ‖x‖= 1}。我们定义 sR:= ‖R‖:= supx∈Sm−1 ‖R· x‖。
定理4 ([1,定理 19]) 。令 q> 2, m> n 且 α> ‖TG‖GS ·sR · ω(√log m)。
则SampleRight(A, G, R, TG,u α)在输入如(3)中所示时,输出一个向量e ∈ Zm+k ,其分布统计上接近于DΛF+u,α,其中F:=(A ‖AR +G)。
原基矩阵
我们使用在 [34] 中定义的原基矩阵 G ∈ Zn×m q 。该矩阵具有陷门 TG,使得 ‖TG‖∞= 2。
我们还定义了一个算法 invG : Zn×m q → Zm×m q ,它能确定性地推导出一个满足 A 的原像,使得 G ·A= A。从 [34], 可知存在一种方法获得 ˜A,使得 ˜A ∈{0, 1}m×m。
2.2 基于属性的加密
一个针对具有比特输入和消息空间 M 的电路类 C 的基于属性的加密方案 ABE[30] 由一组概率多项式时间算法(Params, Setup, Enc, KeyGen, Dec)组成:
Params(1λ) → pp :参数生成算法接收安全参数 1λ,并输出公共参数pp,该参数隐式地提供给方案中所有其他算法。
Setup(1) → (mpk,msk) : Setup算法以输入索引长度为输入,输出主公钥mpk和主密钥msk。
Enc(mpk x, μ) → ctx :加密算法以mpk、一个索引x ∈{0, 1} 和一条消息 μ ∈M 为输入,输出一个密文ctx。
KeyGen(msk C) → skC :密钥生成算法以msk和由 C ∈C 指定的谓词为输入,输出一个私钥skC。
Dec(ctx,skC) → μ : 解密算法以ctx和skC为输入,输出要么是 ⊥,要么是一条消息 μ ∈M。
定义2(正确性) 。我们要求对于所有满足 C(x) = 1 的 (x C) 以及所有 μ ∈ M,有 Pr[ctx ←Enc(mpk, x μ); Dec(ctx, skC) = μ)]= 1,其中概率取自于 pp ← Params(1 λ )、(mpk, msk) ← Setup(1 ) 以及上述表达式中所有算法的随机源。
定义 3 (安全性) 。对于一个有状态的敌手 A,我们定义优势函数Advabe A(λ)为
Pr
⎡
⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣ b= b′:
x, dmax ← A(1λ, 1); pp← Params(1λ, 1dmax); (mpk, msk) ← Setup(1λ, 1, x∗);
(μ0, μ1) ← AKeygen(msk,·)(mpk),
|μ0| = |μ1|; b←${0, 1}; ctx ← Enc(mpk, x, μb); b′ ← AKeygen(msk,·)(ctx)
⎤
⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦ − 1 2
限制条件是,所有 y对KeyGen(msk ·)的查询均满足C(x∗)= 0 (即,skC 无法解密ctx)。如果对于所有PPT对抗者 A,其优势Advabe A(λ)是关于 λ的可忽略函数,则该基于属性的加密方案是选择性安全的。
2.3 分支程序
我们定义分支程序的方式类似于[13]。一个宽度为w、长度为 L、输入空间为{0, 1} 且具有 s个状态(由[s]表示)的分支程序BP,是由 L个形如(var(t)σt,0,σt,1)的元组组成的序列,其中
– σt,0 和 σt,1 是从[s]到其自身的单射函数。
– var : [L] → [] 是一个将第 t 个元组 σt,0,σt,1 与输入比特xvar(t) 相关联的函数。
分支程序BP在输入x=(x1,…, x)上的输出计算如下。在第 t 步,我们用 ηt ∈[s] 表示计算的状态。初始状态为 η0= 1。一般情况下, ηt 可以通过递归方式计算得出
ηt= σt,x var(t)( ηt−1)
最后,经过 L 步后,计算输出BP(x)为= 1(当 ηL= 1成立时),否则为0。
如[13]中所做的那样,我们用比特而非数字来表示状态,以限制噪声增长。具体而言,我们通过单位向量vt ∈{0, 1} s 来表示状态 ηt ∈[s]。其思想在于,vt[i]= 1 当且仅当σt, x var( t) (ηt−1) = i。注意,我们也可以将上述表达式写为vt[i]= 1 当且仅当以下之一成立:
– vt−1[σ −1 t,0(i)]= 1 and xvar(t)= 0
– vt−1[σ −1 t,1(i)]= 1 and xvar(t)= 1
这种后者形式对我们很有用,因为它可以用以下公式来表示。对于 t ∈[L] 和 i ∈[s],
vt[i]:= vt−1[σ −1 t,0(i)] ·(1 − xvar(t)) + vt−1[σ −1 t,1(i)] · xvar(t)
= vt−1[γt,i,0] ·(1 − x var(t)) + vt−1[γt,i,1] · xvar(t)
其中γt,i,0:= σ−1 t 0,(i) 和 γt,i,1= σ−1 t,1(i) 可以根据分支程序的描述公开计算得出。
因此,{var(t){γt,i,0, γt,i,1}i∈[s]}t∈[L] 也是分支程序BP的一个有效表示。
为了表述清晰,我们将处理宽度为5的置换分支程序,这已被证明等价于电路类 NC1[7]。因此,我们有 s= w= 5 且函数 σ0、 σ1 是[5]上的置换。
3 我们的求值算法
在本节中,我们将描述在我们的属性基加密构造中使用的关键求值和编码(密文)求值算法。这些算法经过精心设计,以控制LWE编码中的噪声增长和保持公钥及编码值上的并行同态性。
3.1 基本同态操作
我们首先基于博内等 [10] 提出的技术,描述作用于公钥和编码(密文)上的基本同态加法和乘法算法。
定义4 (LWE编码) 。对于任意矩阵 A ←$ Zn×m q ,我们定义关于(公钥)A 和随机性 s ←$ Zn q 的比特 a ∈{0, 1} 的 LWE 编码为
ψA,s,a=(A+ a· G)Ts+ e ∈ Z m q
对于误差向量 e ←$ χm 和一个(扩展的)原基矩阵 G ∈ Z n×m q 。
然而,在我们的构造中,所有编码都将基于相同的带误差学习密钥 s,因此为简便起见,我们将这种编码简单记为 ψA,a。
定义5(噪声函数) 。对于每个 A ∈ Z n×m q ,s ∈ Z n q 和位 a ∈{0, 1} 的编码 ψA,a ∈ Z m q,我们将其噪声函数定义为
Noises(ψA,a):= ||ψA,a −(A+ a· G)Ts mod q||∞
展望未来,在引理8中,我们证明了如果在执行同态计算后得到的噪声为 ≤ q/4,则我们的ABE方案将正确解密消息。现在,我们根据[10]定义此类编码的基本加法和乘法运算。在他们的上下文中,他们将矩阵A称为“公钥”,而ψA,a称为密文。
同态加法
该算法以两个编码ψA,a, ψA ′ ,a ′ 作为输入,并输出它们的和。设A += A+ A′ 和 a += a+ a′。
Adden(ψA,a, ψA ′ ,a ′): Output ψA + ,a +:= ψA,a+ ψA ′ ,a ′ mod q
引理 2 (Adden 中的噪声增长) 。 对于任意两个有效的编码ψA,a, ψA′,a′ ∈ Zmq,,设 A+= A+ A′ 和 a+= a+ a′ 以及 ψA+,a+=Adden(ψA,a, ψA′,a′),那么我们有
NoiseA+,a+(ψA+,a+) ≤ NoiseA,a(ψA,a)+ NoiseA′,a′(ψA′,a′)
证明 给定两个编码,我们有,
ψA+,a+= ψA,a+ ψA′,a′
=((A+ a· G)Ts+ e)+((A′+ a′ · G)Ts+ e′) =((A+ A′)+(a+ a′)· G)T s+(e+ e′) =(A++ a+ · G)Ts+(e+ e′)
因此,根据噪声函数的定义,可得
NoiseA+,a+(ψA,a+ ψA′,a′) ≤ NoiseA,a(ψA,a)+ NoiseA′,a′(ψA′,a′)
同态乘法
该算法接收两个编码ψA,a=(A+ a · G)Ts+ e1 和 ψA′,a′=(A′+ a′ · G)Ts+ e2,并输出一个编码 ˜ ψA×,a×,其中A×= −AA′ 且 a×= aa′ 如下所示:
Multiplyen(ψA,a, ψA′,a′): Output ψA×,a×:= −A˜′T · ψ+ a· ψ′.
请注意,此过程需要明文形式的属性 a .
引理 3(Multiplyen中的噪声增长) 。 对于任意两个有效的编码 ˜ ψA,a, ψA′,a′ ∈ Z m q,,设 A×= −AA′ 和 a×= aa′ 和 ψA×,a×=Multiplyen(ψA,a, ψA′,a′),那么我们有
NoiseA×,a×(ψA×,a×) ≤ m· NoiseA,a(ψA,a)+ a· NoiseA′,a′(ψA′,a′)
证明 给定两个有效的编码,我们有
ψA×,a×= −A˜′T · ψ+ a· ψ′
= −A˜′T((A+ a· G)Ts+ e)+ a·((A′+ a′ · G)Ts+ e′)
=((−AA˜′ − a· A′)Ts−A˜′Te)+((a· A′+ aa′ · G)Ts+ a· e′)
=((−AA˜2 ︸ ︷︷ ︸
A×
)+ aa′ ︸︷︷︸
a ×
·G) Ts+(−A˜′Te+ a· e′ ︸ ︷︷ ︸
e×
)
因此,根据噪声函数的定义,我们必须限制噪声e×。因此,
∥ ∥ e×∥ ∥∞ ≤ ∥ ∥ ∥ A˜′Te∥∥∥∞ + a· ‖e′‖ ∞ ≤ m· ‖e‖∞ + a· ‖e′‖ ∞
˜其中最后一个不等式成立是因为A′ ∈{0, 1} m×m。
注意:这种同态性与标准的全同态加密(FHE)不同,主要原因如下两点。
– 为了实现乘法同态性,这里我们需要其中一个输入值 以明文形式存在,但 FHE的同态操作是在不知道输入值的情况下执行的。
– 另一个主要区别在于,此处我们要求输出公钥矩阵A+,A×独立于输入值 a1, a2。更一般地,当给定一个包含AND和OR门的任意电路,以及其输入线对应的矩阵时,应当能够在不知道输入线值的情况下确定输出线对应的矩阵。然而,该性质在现有的任何 FHE方案中都不存在。
3.2 我们的公钥评估算法
我们定义一个(公共)密钥评估算法 Evalpk。该算法以分支程序 BP 的描述、一组公钥 {Ai}i∈[](每个属性位 xi 对应一个)、一组用于初始状态向量和辅助矩阵 V0,i Ac 的公钥作为输入,输出对应于该分支程序的一个“已评估”公钥。
Evalpk(BP,{Ai}i∈[],{V0,i}i∈[5], A c) → VBP
辅助矩阵Ac可以被视为用于编码常数1的公钥。我们还定义A′ i:= Ac −Ai为一个公钥,该公钥将用于编码1 − xi。输出VBP ∈ Z n×m q 是分支程序评估第 L步时,状态向量中位置1处同态定义的公钥VL,1。
该算法的执行过程如下。回顾由元组(var(t){γt,i,0, γt,i,1}i∈[5])表示的分支程序BP的描述。初始状态向量始终取为v0:=[1, 0, 0, 0, 0]。并且对于 t ∈[L],
vt[i]= vt−1[γt,i,0] ·(1 − xvar(t))+ vt−1[γt,i,1] · xvar(t)
我们的算法归纳地计算VBP,方法如下。假设在时间 t−1 ∈[L],状态公钥{ Vt−1,i}i∈[5] 已被分配。我们在时间 t 按如下方式分配状态公钥{Vt,i}i∈[5]。
- Let γ0:= γt,i,0 and γ1:= γt,i,1.
- Let Vt,i= −A′
var(t)
V˜t−1,γ 0 − Avar(t) V˜t−1,γ 1 .
需要注意的是,状态向量每一步定义的公钥与任何输入属性向量都无关。现在, 令VL,1为分支程序第 L步位置1上分配的公钥A。我们只需输出VBP:=VL,1。
3.3 我们的编码评估算法
我们还定义了一个编码求值算法 Evalen,该算法将用于我们 ABE方案 的解密算法中。该算法的输入包括:一个分支程序 BP 的描述、一个属性向量 x、一组关于属性的编码(及其对应的公钥){Ai, ψi:= ψAi,xi}i∈[],、初始状态向量 的编码 {V0,i,ψ0,i:= ψV0,i,v0[i]}i∈[5],以及一个常数“1”的编码 ψc:= ψAc, 1。(今后,我们将使用简化的记号 ψi,ψ0,i, ψc 来表示这些编码)。Evalen 输出关于同态导出的公钥 VBP:=VL,1 的结果 y:=BP(x) 的编码。
Evalen(BP, x,{Ai, ψi}i∈[],{V0,i, ψ0,i}i∈[5], A c, ψc) → ψBP
回想一下,对于 t ∈[L],我们有对于所有 i ∈[5]:
vt[i]= vt−1[γt,i,0] ·(1 − xvar(t))+ vt−1[γt,i,1] · xvar(t)
该评估算法归纳地进行,以更新分支程序每一步的状态向量编码。实现期望噪声增长的关键思想是:我们仅将属性位的新鲜编码与公钥的二进制分解相乘。
然后将结果相加以更新状态向量的编码。因此,在计算的每一步中,状态编码 中的噪声仅以某个固定的加性因子增长。
该算法的执行过程如下。我们定义
ψ′ i 1 −
xi
= ψA′
i
, 1−x i = ′ i+
· T+ ′ i 1−xi ′ i= c− i
:()(A()G)se表示相
对于AAA的状态向量的编码。注意,该编码可通过Adden(ψAc,1,−ψAi ,x i)计算得到。假设在时间
t−1 ∈[L]我们已持有状态向量{ψVt−1,i ,v t[i]}i∈[5]的编码。现在,我们计算新状态值的编码:
ψt,i= Adden(Multiplyen(ψ ′ var(t), ψt−1,γ0), Multiplyen(ψvar(t), ψt−1,γ1))
其中 γ0:= γt,i,0且 γ1:= γt,i,1。正如我们下文(引理 4)所示,该新编码
的形式为 (Vt,i+ vt[i] · G) Ts+et,i(对于足够小的噪声项et,i)。
最后,令ψL,1为通过此过程在第 L步得到的、对应位置“1”处状态值的 编码。正如我们在引理5中所示,噪声项eBP具有“较低”的无穷范数,从而保 证正确解密(引理8)。该算法输出 ψBP:= ψL,1。
正确性与分析
引理4 。 对于位xvar(t)的任意有效编码 ψvar(t), ψ′
var(t) ,(1 −xvar(t))以及在步骤 t−1
时状态向量vt−1的{ψt−1,i}i ∈[5],该函数的输出
Adden(Multiplyen( ψ′
var(t) , ψt−1,γ 0), Multiplyen( ψvar(t) , ψt−1,γ 1)) → ψt,i
其中 ψt,i=(Vt,i+ vt[i] · G) Ts+ et,i,对于某个噪声项 et,i。
证明 。 给定有效的编码 ψvar(t), ψv′ar(t) 和 {ψt−1,i}i∈[5],我们有:
ψt,i= Adden(Multiplyen(ψ ′ var(t),ψt−1,γ0), Multiplyen(ψvar(t),ψt−1,γ1))
= Adden([(−A′ var(t) V˜t−1,γ0+(vt[γ0] ·(1 − xvar(t))) · G)Ts+ e1)], [(−Avar(t) V˜t−1,γ1+(vt[γ1] · xvar(t)) · G)Ts+ e2)])
=[(−A′ var(t) V˜t−1,γ0 − Avar(t) V˜t−1,γ1) ︸ ︷︷ ︸
Vt,i
+(vt[γ0] ·(1 − xvar(t))+vt[γ1] · xvar(t))
︸ ︷︷ ︸
vt[i]
·G]Ts+ et,i
其中第一步由Multiplyen算法的正确性得出,最后一步由Adden的正确性
得出,其中et,i= e1+ e2,且e1= −(˜Vt−1,γ0) T e′ var(t) −(1 − xvar(t)) · et−1,γ0
以及e2= −(˜Vt−1,γ1) T evar(t) − xvar(t) · et−1,γ1。
引理5 。设Evalen(BP, x{Ai, ψi}i∈[],{V0,i, ψ0,i}i∈[5],Ac, ψc) → ψBP,使得所有 噪声项{NoiseAi,xi(ψi)}i∈[],NoiseAc,1(ψc){NoiseV0,i,v0 i }i∈[5]均被 B所界, 则
NoiseVBP,y(ψBP) ≤ 3m· L· B+ B
证明 。 我们将通过归纳法来证明此引理。也就是说,我们将证明在任意步骤 t 时,
NoiseVt,i,vt i ≤ 3m· t · B+ B
对于 i ∈[5]。在基础情况下, t= 0,我们对初始状态向量v0的新鲜编码进行操作。因此, 我们有NoiseV0,i,v0 i ≤ B,对所有 i ∈[5]成立。令{ψt−1,i}i∈[5]表示在步骤 t −1时 状态向量vt−1的编码,使得
NoiseVt−1,i,vt−1 i ≤ 3m·(t −1)· B+ B
对于 i ∈[5]。我们知道 ψt,i= Adden(Multiplyen(ψ′ var(t) , ψt−1,γ0), Multiplyen(
ψvar(t), ψt−1,γ1))。因此,根据引理 2和 3,我们得到:
Noise V t,i , v t i ≤(m· Noise A ′
var( t)
, (1− x
var( t) )( ψ
′
var( t)) +(1 − x var( t)) · Noise V t − 1,γ 0
, v t − 1[ γ 0])
+(m· Noise A
var( t )
,x
var( t ) (ψvar( t )) + x var( t ) · Noise V t − 1,γ 1
, v t − 1[ γ 1])
=(m· 2B+(1 − x var( t )) ·(3m(t − 1)B+ B))
+(m· B+ x var( t ) ·(3m(t − 1)B+ B))
= 3m· t · B+ B
其中
Noise
A ′
var ( t )
, ( 1 − x var ( t ) ) (ψ
′
var( t ) ) ≤ Noise A c , 1(ψ c )+ Noise −A
var( t )
, − x
var( t ) (−ψ var( t )) ≤ B+ B= 2B
由引理2可知。由于 ψ BP是步骤 L处的编码,我们有NoiseVBP , y( ψ BP) ≤
3m· L· B+ B。因此,NoiseVBP , y( ψ BP)= O(m· L· B)。
3.4 我们的模拟公钥评估算法
在模拟过程中,我们将采用不同的方法为输入的每条线和状态向量分配公钥。
具体而言,Ai= A · Ri − xi ·G,其中共享公钥A和某个低范数矩阵Ri。类似 地,状态公钥为Vt,i − A ·Rt,i − vt[i] · G。该算法以分支程序BP的描述、属性 向量x、对应于输入公钥和初始状态向量的两组低范数矩阵{Ri},{R0,i}、用于 常数1的公钥的低范数矩阵Rc以及一个共享矩阵A作为输入。它输出一个同态 导出的低范数矩阵RBP。
EvalSIM(BP, x,{Ri}i∈[],{R0,i}i∈[5], R c, A) → RBP
该算法将确保输出RBP满足A · RBP −分支程序(x) · G=VBP,其中VBP为同态导出的 公钥。
该算法归纳地进行如下。假设在时间 t − 1 ∈[L],我们持有一组低范数矩阵
Rt−1,i和公钥Vt−1,i=A·Rt−1,i−vt[i]·G,它们对应于状态向量。令R′ i= R c−Ri对 所有 i ∈[]成立。我们展示如何推导出所有 i ∈[5]对应的低范数矩阵Rt,i:
- 令 γ0:= γt,i,0 和 γ1:= γt,i,1。2. 计算
Rt,i=(−R ′
var(t) V˜t−1,γ0+(1 − xvar(t)) · Rt−1,γ0)+(−Rvar(t) V˜t−1,γ1+ xvar(t) · Rt−1,γ1))
最后,令RL,1为上述算法在第 L步中对应状态值“1”所得的矩阵。输出 RBP:=RL,1。下面,我们证明RBP的范数保持较小,并且通过Evalpk同态计算 得到的公钥VBP满足VBP= A · RBP − BP(x) ·G。
引理6(EvalSIM的正确性) 。 对于 EvalSIM 的任意一组有效输入,我们有
EvalSIM(BP, x,{Ri}i∈[],{R0,i}i∈[5], R c, A) → RBP
其中 VBP= ARBP −分支程序(x) ·G。
证明 。 我们将通过归纳法证明此
987

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



