任意模数下陷门格的快速高斯采样
1 引言
格密码学提供了强大的技术来构建各种先进的密码原语,例如基于身份的加密[2–4,11,23,31],基于属性的加密[14,16,17,19,33],某些类型的全同态加密和签名 [12,13,24,32,35],群签名[21,36,44,45,54]以及更多(例如参见 [6,10,34,46,51,56,57,60])。格密码学的大多数高级应用依赖于在[31],中引入的强格陷门概念,该概念允许从 n维格 L中以高斯型分布进行点的采样。这种高斯采样操作通常是实现使用强格陷门的先进密码函数时的主要瓶颈,因此改进生成和使用格陷门的方法已成为多项研究的主题[5,7,31,55]。
格陷门生成与采样的当前最优技术由Micciancio和Peikert的工作给出 [51],,该工作引入了一种新的格陷门概念,专门针对密码学中使用的 q‐ary格,即模 L ⊆ Zn具有周期性的整数格 q· Zn。然后利用该陷门高效地在给定目标周围按高斯分布采样格点。基于[55],的技术,[51]的采样算法包含在线阶段和离线阶段,并[51]着重于改进在线阶段的复杂度,因为在线阶段在应用中更为关键。然而,[51]中为(在线阶段)原像采样所提出的最高效算法仅适用于模数 q= 2k等于2的幂(或更一般地,小素数 q= pk的幂)的格,这与许多应用的功能性或效率要求不兼容。此外,只有[51]的在线阶段充分利用了代数格的结构[48——50]这种结构通常在格密码学的高效实例化中被采用,对于将格操作的运行时间从二次(关于格维度)降低到准线性至关重要。对离线阶段的直接实现(例如使用通用的Cholesky分解算法)会完全破坏代数结构,使(离线)算法的运行时间从准线性退化到二次甚至更差。对于“2的幂”分圆环上的格(密码学中最常用的代数格类别),Ducas和Nguyen在[27,第 6],节提出了离线阶段的更快算法,随后由杜卡斯和普雷斯特的快速傅里叶正交化(FFO)进行了简化、改进并推广到更广泛的分圆环类别[28]。
我们的贡献
我们提出了使用[51]的格陷门进行高斯原像采样的改进算法。具体而言,我们提出了一种新的(在线阶段)算法,能够处理任意模数 q(包括某些应用所需的大素数模数),同时仍能达到[51]针对二次幂模数q= 2k的专用算法的同等性能水平。这将[51]在任意模数下的运行时间从立方的log3 q(或通过预计算和大量存储实现的二次的log2 q)优化至仅关于log q的线性时间,并且具有极低的存储需求。
作为额外的贡献,我们提出了一种改进的算法,用于离线扰动生成问题,该算法充分利用了环格的代数结构。我们注意到,此问题已经可以通过[28],的(FFO)算法在准线性时间 O(n)内解决,该算法首先生成正交化格基(或协方差矩阵)的紧凑表示,然后利用它快速生成格样本。我们在两个方面改进了 [28]的算法。首先,FFO算法在环维数上是准线性的,但在模维度上是二次的(而在我们的应用中,模维度为log q)。我们将[28]与[9]的“稀疏矩阵”优化相结合,得到一种在环维数和log q上均为线性的算法。此外,我们提供了一种FFO算法的变体,其执行的操作实质上与[28],相同,但无需预计算和存储FFO(结构化)矩阵,从而简化了实现并改进了[28]的空间复杂度。
G‐采样1的改进总结在表中。这些改进不仅仅是渐近意义上的:我们的新算法相当简单,隐含常数较小,并且包含了对参数的精心选择,使得大多数步骤只需使用非常小的数字进行整数运算即可实现。在第3.3节中,我们提供了实验对比,表明新算法在模数取较小值时就已经优于[51]的通用方法,因此即使在模数q= nO(1)具有对数位大小的应用中,它也是实现上的理想选择。对于使用指数级大q= exp(n)的应用,预计性能提升将非常显著。我们的算法在完整密码学应用背景下的具体效率,最近已通过独立实现工作[25,37,38]得到验证。
技术细节
为了描述我们的技术,我们需要首先提供更多关于格陷门采样问题的细节。给定一个格 L和一个目标点t,格高斯采样问题要求生成(可能借助某些陷门信息)一个随机的格点v ∈ L,其概率与exp(−c‖v −t‖2)成正比。
基于[55],中的技术,该问题在[51]中通过将 L映射到一个固定的(与密钥无关的)格Gn,在 Gn中生成一个高斯样本,然后将结果映射回 L来解决。(将 Gn映射到 L的线性函数 T充当了陷门。)如果不做进一步调整,这将在 L中产生一个具有椭球形高斯分布的格点,其协方差依赖于线性变换 T。为了生成应用所要求的1球形样本,[51]采用了Peikert的扰动技术[55],即在将目标点t用作 Gn‐格采样操作的中心之前,先向其添加一些噪声(具有互补协方差)。总之,[51,55]的采样算法包含两个阶段:
– 一个离线(与目标无关)阶段,用于生成协方差矩阵由陷门变换 T定义的扰动向量,以及
– 一个在线(依赖目标)阶段,用于从一个(易于采样的)格 Gn生成高斯样本。
在[51]中,扰动生成并未受到太多关注,因为它不依赖于目标向量t,且在应用中其时间敏感性远不如其他部分。2至于在线阶段,使该格易于采样的性质之一是:它是 n个(log q)维格G的正交和。因此,即使使用具有二次运行时间的通用算法, G采样总共也只需要 O(nlog2 q)次操作。当模数 q= nO(1)为格维度 n的多项式时,这将导致准线性运行时间 O(nlog2 n)。然而,由于 G‐采样操作直接影响签名算法的在线运行时间,即使是一个多对数项log2 q也可能非常不理想。为此,[51]提出了一种特别高效的(且易于实现的) G‐格采样算法,适用于格模数 q= 2k为2的幂(或更一般地,小素数 p的幂 q= pk)的情况。这种专用的 G‐采样算法的运行时间为log q,仅与格维度成线性关系,并具有最小的(常数级)存储需求。由于其简洁性和高效率,该算法已迅速被应用于基于格的密码原语的具体实现中(例如参见[9]),在很大程度上解决了 q= 2k的高效格采样问题。然而,将 q设置为2的幂(或更一般地,小素数的幂)可能与格密码学中的其他应用和技术不兼容,例如属性基加密(ABE)方案[14]以及通过数论变换的快速实现[47,49]。对于任意模数 q,[51]只能退回到具有二次复杂度的通用算法(针对任意格)。当模数 q相对较小时,这或许仍可接受。但即便如此,仍然不够理想,因为即使是多对数因子也会显著影响密码函数的实际性能(很容易使运行时间增加一个数量级),而当模数 q=exp(n)为指数级大时,可能导致应用完全无法使用。最能清楚说明[51]局限性的一个具体例子是[20],最近提出的合取混淆器,它要求模数 q为素数,且位长log(q)= O(n)与安全参数成线性关系。在此设定下,[51]提出的专用算法(适用于 q= 2k)不再适用,而使用通用算法会使在线阶段变慢 O(n)倍,更具体地说,在典型参数设置下会导致多个数量级的性能下降。另一个不那么极端的例子是[14]提出的算术电路ABE方案,其中 q为 O(2n ε ),其中 0< ε< 1/2为某个固定值。此处的性能下降渐近更小 nε,,但仍为安全参数 n的多项式。
不幸的是,来自[51]的专用算法在 q= 2k时严重依赖于 G‐基的结构,难以适配到其他模数。(详见第3节)。为了解决这个问题,我们采用与[51,55]中生成任意格样本时相同的方法:通过一个易于计算的线性变换 T′将 G映射到一个更简单的格 D上,在 D中执行高斯采样,然后将结果映射回 G。通常,通过添加具有适当协方差矩阵的扰动项来校正误差形状。需要解决的主要技术问题是找到一个合适的线性变换 T′使得 D能够被高效采样,并且扰动项可以轻松生成。在第3节中,我们展示了一种具有所有这些理想性质的变换 T′的选择。特别是,通过精心选择的变换 T′,我们得到的格 D以及扰动矩阵是三角形的、稀疏的,且其元素具有简单的(可高效计算的)闭式表达式。因此,甚至无需显式存储这些稀疏矩阵,因为它们的元素可以随时快速计算。这使得G‐采样算法具有线性运行时间,且除了存储算法输入、输出和随机性所需的空间外,空间需求极小(为常数级)。
接下来,在第4节中,我们转向高效生成离线阶段扰动的问题。需要注意的是,生成这些扰动比通过 T′将 G映射到 D所面临的问题要困难得多。区别在于,虽然 G、 D、 T′是固定的(稀疏的、精心设计的)矩阵,但变换 T是一个随机选择并用作私钥的矩阵。在这种情况下,无法期望将计算时间降低为与格维度成线性关系,因为即使读取/写入矩阵 T通常也需要二次时间。然而,当使用代数格时,矩阵 T具有紧凑的(线性大小)表示形式,因此可以合理期望获得更快的扰动生成算法。如前所述,这可以通过杜卡斯和普雷斯特提出的快速傅里叶正交化算法[28],实现,该算法在环维数上具有准线性运行时间,但在矩阵 T的维度(环上的维度)上仍为二次的,在我们的设定中该维度为 O(log q)。通常情况下,对于多项式模数 q= nO(1),这仅导致一个准对数级别的减慢,但在实践中可能相当显著[9]。我们通过对班萨尔哈尼和布赫曼提出的一种优化方法[9]加以利用以发挥 T的稀疏性,从而改进了直接应用FFO算法的方式。(这对应于图4中的顶层函数 SamplePz。)这种优化使得计算复杂度在T的维度上变为线性的(在我们的设定中为log q),同时保持了来自[28]的关于环维数 n的准线性依赖关系。我们进一步改进了这一组合算法,提出了FFO的一个变体(由图4中的两个相互递归函数SampleFz/Sample2z描述),该变体无需预计算和存储FFO矩阵。
与FFO的比较。由于我们的 SamplePz函数(图4)使用了一个子程序 SampleFz,该子程序与FFO算法[28],密切相关,因此我们在此对两者进行详细比较。回顾一下,FFO首先计算一个二叉树数据结构[28,算法 3],,其中根节点标记为一个 n维向量,其两个子节点标记为(n/2)维向量,依此类推,直到标记为一维向量的 n叶节点为止。然后,[28,算法 4]在Babai的最近平面算法的分块/递归变体中使用该二叉树数据结构。3我们的 SampleFz是基于以下观察:可以融合/交错[28,算法 3]和[28,算法 4],的计算过程,从而实现显著的(渐近)内存节省。具体而言,将这两个算法结合后,完全避免了预先计算并存储FFO二叉树数据结构的需求,现在该结构是隐式地逐节点/向量实时生成,并以类似于深度优先树遍历的方式在使用后尽快丢弃每个节点/向量。由此带来的空间复杂度降低可轻松估算。原始FFO构建了一个具有log n层的树,其中第 l层存储 2l个维度为 n/2l的向量。因此,每一层的总存储需求为 n,整体空间复杂度为 nlog n。我们的FFO变体每层仅存储一个节点/向量,空间复杂度为 ∑l(n/2 l),相比原始FFO算法的空间复杂度实现了 O(log n)的提升。此外,这些节点/向量隐式地存储在程序的执行栈中,而非显式构造的二叉树数据结构中,从而降低了开销并使算法更易于实现。为简化表述,我们将讨论专门限定于2的幂次分圆多项式,这在格密码学中最为常用,但本文所有方法同样适用于文献[28]中考虑的标准嵌入下的更广泛的分圆环类。
2 预备知识
我们将复数记为 C,实数记为 R,有理数记为 Q,整数记为 Z。一个数用小写字母表示,例如z ∈ Z。我们用 y∗表示复数 y的共轭。当q为正整数时,log q表示其以二为底的向上取整对数,即log2 q。用尾数长度为 m的浮点数表示x ∈ R记为 x¯。前 n个自然数的索引集是[n]={1,…, n}。向量用粗体小写字母v表示,默认为列向量形式(vT为行向量)。两个向量的内积为〈x,y〉=xTy。矩阵用粗体大写字母B或大写希腊字母(用于正定矩阵)表示。矩阵的转置为BT。矩阵B在第 i行第 j列的元素记为Bi,j。除非另有说明,向量的范数指 2范数。矩阵 ‖B‖=maxi‖bi‖的范数是其列向量的最大范数。给定可数域上的两个概率分布 D,它们之间的统计距离为Δsd(X, Y)= 1 2∑ω∈D |X(ω)−Y(ω)|。为了在统计距离计算中避免追踪无关项,我们定义εˆ= ε+ O(ε2)。
我们将从分布 D 中采样的随机变量 x 记作 x ← D。服从 D 分布的随机变量记作 x ∼ D。我们将拥有对另一个算法 B(分布 D)进行预言机访问的算法 A记作 AB(AD)。
最大对数,或ML距离,是最近由[53]引入的,用于证明具体安全性的更紧界。相同支撑集上的两个离散分布之间的ML距离,即 S,如
Δml(P, Q)= max
x ∈ S
| ln Q(x)− lnP(x)|.
设 P, Q是定义在可数域上的分布,且 S为 P的支撑集。无穷阶下 Q相对于 P的R´enyi散度
R∞(P||Q)= max
x∈S
P(x)
Q(x).
实数集R´enyi散度被用于[8]以实现比使用统计距离更严格的安全性分析。
2.1 线性代数
一组线性无关的有序向量集格拉姆-施密特正交化(前向)B={b1,…,bk}为B={b1,…,bk},其中每个bi是bi在span(b1,…,bi−1)上的正交分量(后向GSO定义为b† i= bi ⊥span(bi+1,…,bn))。一个反循环矩阵是形如 n × n的矩阵
⎡ ⎢⎢⎢⎣
a0 −an−1… −a1
a1 a0 … −a2
… … ......
an−1 an−2… a0
⎤ ⎥⎥⎥⎦.
对于任意两个(对称)矩阵 Σ, Γ ∈ Rn×n,我们写成 Σ Γ,如果对所有(非零)向量x ∈ R n都有xT(Σ −Γ)x ≥ 0;写成 Σ Γ,如果xT(Σ − Γ)x> 0。容易验证 是一个偏序关系。关系 和 ≺ 被对称地定义。当两个矩阵之一 Γ= sI为标量时,我们简记为Σ s 或 Σ s。若对称矩阵Σ ∈ R n×n 满足Σ 0,则称其为正定的;若满足Σ 0,则称其为半正定确的。等价地,Σ 是半正定确的当且仅当它可以表示为 Σ=BBT 的形式,其中 B是某个(方)矩阵,称为 Σ 的平方根,记作B=√Σ。(注意,任何 Σ 0 都有无穷多个平方根B=√Σ。) Σ 是正定的当且仅当它的平方根 B是一个方的非奇异矩阵。当B为上(下)三角形的时,分解式 Σ=BBT 称为 Σ的上(下)三角形乔列斯基分解。任何正定 Σ ∈R n×n 的乔列斯基分解可以通过 O(n3)次浮点算术操作计算得到。对于任意标量 s, Σ s 当且仅当 Σ 的所有特征值都严格大于 s。特别地,正定矩阵是非奇异矩阵。
对于任意 n× n矩阵S和非空索引集 I, J ⊆{1,…, n},我们用S[I, J]表示从S中选取位于(i, j)位置的元素所构成的 |I| × |J| 矩阵。当 I= J时,我们简记S[I]为S[I, I]。¯对于任意非奇异矩阵S ∈ R n×n和索引划分I ∪ I={1,…, n},¯I ∩ I= ∅,该 I × I矩阵
S/I= S[I] − S[I, I¯] · S[I¯] −1 · S[I¯, I] ¯ ¯被称为舒尔补,通常记为S/S[I]= S/I。特 别地,如果S=[A B BT D],那么A的舒尔补是该矩阵
具有任意模数的格陷门的快速高斯采样181
S/A= D − BTA−1B。对于任意指标集 I,对称矩阵S是正定的当且仅当S[I]及其舒尔补S/S[I]都是正定的。
设 Σ=[A B BT D] 0。我们可以将其分解为一个主子矩阵(例如D) 及其舒尔补 Σ/D= A −BD−1BT,分解方式如下:
Σ=[I BD−1 0 I][Σ/D 0 0 D][ I 0 D−1BT I].
关于正定矩阵的主子矩阵和舒尔补的谱的接下来两个定理将在第4节中使用。在这两个定理中, λi是 i个(按非递增顺序,含重数)对称矩阵的特征值。
定理1(柯西) 。对于任意对称矩阵S ∈ Rn×n, I ⊆{1,…, n}和 1 ≤ i ≤ |I|
λi(S) ≥ λi(S[I]) ≥ λi+n−|I| (S).
定理2 ([61,推论2.3])。 对于任意正定Σ ∈ Rn×n, I ⊆{1,…, n} 和 1 ≤ i ≤ |I|
λi(Σ) ≥ λi(Σ/I) ≥ λi+n−|I| (Σ).
换句话说,正定矩阵的主子矩阵和舒尔补的特征值均被原矩阵的最小和最大特征值从下方和上方所限定。
2.2 高斯分布与格
一个格Λ ⊂ R n是 R n的一个离散子群。具体而言,一个秩为k的格是基B={z1 b1+ ···+ zkbk | zi ∈ Z}的整数张成 L(B)。对于给定的格,存在无穷多个基,因为将一个基右乘以一个幺模变换会得到另一个基。对偶格记为 Λ∗,定义为格{x ∈ span(Λ)| 〈x Λ〉 ⊆Z}。容易看出,对于满秩格(n= k),B−T是 L(B)∗的一个基。
n维的高斯函数 ρ: R n →(0, 1]定义为 ρ(x):=exp(−π‖x‖2)。对高斯函数应用可逆线性变换B得到
ρB(x)= ρ(B −1x)= exp(−π · xTΣ−1x)
在 Σ= BBT 0下。对于任意c ∈span(B)= span(Σ),我们也定义以c为中心的平移高斯函数为ρ√Σ,c(x)= ρ √Σ(x −c)。将函数ρB,c(x)关于B的张成空间测度归一化后,得到协方差为 Σ/(2π)的连续高斯分布,记作D√Σ,c。设 S ⊂ R n为 R n中的任意离散集合,则ρ√Σ(S)= ∑s ∈ Sρ√Σ(s)。格 Λ上的离散高斯分布定义为
DΛ,√Σ,c(x) := ρ√Σ,c(x)/ρ√Σ,c(Λ),对所有x ∈Λ成立。定义在格陪集 Λ+c上的离散高斯分布(其中c ∈ span(Λ))类似地定义为Pr{y ← DΛ+c,√Σ,p}= ρ√Σ,p(y)/ρ√Σ,p(Λ+ c),对所有y ∈Λ+c成立。为简洁起见,我们记DΛ+c,√Σ,p(y) :=Pr{y ← DΛ+c,√Σ,p}= ρ√Σ,p。
对于格Λ 和任意(通常较小的)正数 ε> 0,,平滑参数 ηε(Λ)[52]是满足 ρ(s·Λ∗) ≤ 1+ε的最小 s> 0。具有截尾的一维离散高斯分布 t是指将离散高斯分布DZ,c,s 限制在支撑集 Z∩[c−t·s, c+t·s]上。我们将此截断离散高斯分布记为Dt Z,c,s。为了在第3节中使用ML距离,我们将所有截尾离散高斯分布限制在某个 smax对应的统一支撑集 Z ∩[c− t · smax, c+ t · smax] 上。
Lemma 1 ([31,引理4.2])。 对于任意 ε> 0,任意s ≥ ηε(Z),以及任意 t> 0, Pr
x←DZ,s,c [|x − c| ≥ t · s] ≤ 2e−πt2 · 1+ ε 1 − ε.
更一般地,对于任意正定矩阵 Σ和格 Λ ⊂span(Σ),我们写作√Σ ≥ ηε(Λ),或Σ η2 ε(Λ),如果 ρ(√Σ T ·Λ∗) ≤ 1+ ε。有关平滑参数的更多资讯,请参阅[31,5这2,55]里我。们回顾两个界和一个离散高斯卷积定理,以供后续使用。
引理2 ([31,引理3.1])。设 Λ ⊂ Rn是一个具有基B的格,且ε> 0。那么,ηε(Λ) ≤‖ B˜‖√log(2n(1+ 1/ε))/π.
引理3 ([55,引理2.5])。对于任意满秩的 n维格Λ,向量c ∈ R n,实数 ε ∈(0,1),以及正定的 Σ η2 ε(Λ),
ρ√Σ(Λ+ c) ∈[1 − ε 1+ ε , 1] · ρ√Σ(Λ).
定理3 ([55,定理3.1])。 对于任意向量c1,c2 ∈ R n、格Λ1,Λ2 ⊂ R n以及正定矩阵 Σ1,Σ2 0, Σ= Σ1+Σ2 0,Σ−1 3 = Σ−1 1+ Σ−1 2 0,若 √Σ1 ηε(Λ1)且 √Σ3 ηε(Λ2)对某个0< ε ≤ 1/2,成立,则分布
X={x | p ← DΛ2+c2,√Σ2 , x ← DΛ1+c1,√Σ1,p}
在统计距离 Δ(X, Y) ≤ 8ε 内,接近离散高斯 Y=DΛ1+c1,√Σ。
下面是我们针对标准的随机化Babai的最近平面算法的正确性定理。术语 statistically close是密码学中的标准概念,表示可忽略的统计距离。准确地说,一个函数 f:N → R ≥0是可忽略的,如果对于每个 c> 1,都存在一个 N,使得对所有 n> N,f(n)< n−c。我们强调,该算法归结为对DZ,s,c的采样。
定理4 ([31,定理4.1])。 给定一个满秩格基B∈ R n×n、一个参数 s ≥‖ ˜B‖ω(√log n),以及一个中心c ∈ R n,存在一个运行时间为 O(n 2 )、预处理时间为 O(n 3 )的概率算法,其输出统计上接近DL(B),s,c。
2.3 分圆域
设 n为一个正整数。 n次分圆域定义为数域 Kn= Q[x]/(Φn(x)) =∼ Q(ζ),其中 ζ是一个 n次本原单位根,而Φn(x)是 ζ在 Q上的极小多项式。第 n个分圆环为 On=Z[x]/(Φn(x))。设 ϕ(n)为欧拉函数。 Kn是复数集C上的一个 ϕ(n)维向量空间,我们可以通过将 ζ视为复数域中的一个 n次本原单位根,从而将 Kn看作 C的一个子集。
固定元素的乘法 f, g → f · g是将 Kn 视为 Q‐向量空间上的一个线性变换。我们通常通过系数嵌入将域元素视为 ϕ(n)维有理数向量。该映射定义为f(x)= ∑ϕ(n)−1 i=0 fixi →(f0,···, fϕ(n)−1) T,即将域元素映射为其在幂基 {1, x,···, xϕ(n)−1}(或等价地{1, ζ,···, ζϕ(n)−1})下的系数向量。我们可以用Q ϕ(n)×ϕ(n)中的一个矩阵来表示域元素,该矩阵对应于其在系数嵌入下乘法运算所对应的线性变换。该矩阵称为域元素的系数乘法矩阵。当 n 是2的幂时,该元素的系数乘法矩阵是反循环的。
一个同构是从域 F到域 K的双射 θ: F → K,使得对所有 f, g ∈ F, 有 θ(fg)= θ(f)θ(g)且 θ(f+ g)= θ(f)+ θ(g)。一个自同构是域到自身的同构。例如,如果我们把分圆域 Kn视为复数集C的子集,则共轭映射 f(ζ) → f(ζ)∗= f(ζ∗)是一个自同构,并且可以在线性时间 O(n)内计算。在2的幂次分圆域中,域元素的共轭对应于该元素反循环乘法矩阵的矩阵转置。
另一种嵌入是标准嵌入,它将元素 f ∈Kn映射为多项式 f在 Φn(x)的每个根处取值所组成的向量。当 n是2的幂时,系数嵌入与标准嵌入之间的线性变换是一个缩放等距。
设 n为2的幂,则域 K2n可视为一个二维的 Kn‐向量空间,通过将多项式 f (x) ∈ K2n拆分为 f(x)= f0(x 2)+ x· f1(x 2)(其中 fi ∈ Kn)得到。现在,我们可以将由某个 f ∈ K2n相乘所给出的线性变换视为在 Kn ⊕ Kn =∼ K2n上的线性变换。设 φ2n:K2n → Q n×n为从该域到元素的反循环矩阵的单射环同态。于是,我们有以下关系,其中P是一个简单的重索引矩阵,称为步长置换(在{0, 1,…, n −1}中为先递增偶数后递增奇数)。
Pφn(f)P T=[φn/2(f0) φn/2(x · f1) φn/2(f1) φn/2(f0)].
3 采样G‐格
对于任意正整数 b ≥ 2、 k ≥ 1 和非负整数 u< b k,我们用[u] k b 表示 u的基‐b展开,即唯一向量(u0 ,…, u k−1)条目 0 ≤ ui< b 使得 u= ∑i uibi。通常, b= 2 和[u]2k 只是 u的k位二进制表示,但可以使用更大的 b 值以获得有趣的效率权衡。在本节中,我们将 b 和 k 的值视为固定值,所有定义和算法都隐式地由它们参数化。
在本节中,我们研究所谓的G‐格采样问题,即在格陪集上采样离散高斯分布的问题
Λu⊥(gT)={z ∈ Zk: gT z= u mod q}
其中q ≤ bk, u ∈ Zq, k= logb q,且g=(1, b,…, bk−1)。G‐格采样被用于许多采用陷门的格方案中。具有多项式模数的方案(如身份基加密(IBE) [2,4,11,18],群签名[36,44,45,54],以及其他(防止双重认证和谓词认证防止签名、 约束隐藏伪随机函数(PRFs))[15,22],以及具有超多项式模数的方案 [1,17,19,20,33,35,42](属性基加密(ABE)、混淆、水印等),均使用G‐格采样。[39],使用G‐格采样。
解决此问题的一种高效算法在[51]中针对 q= bk是基 b的幂这一特殊情况给出。该算法如图1所示,非常简单。此算法将对 k维格陪集 Λu⊥(gT)在 u ∈ Zq上的采样问题转化为对一维格陪集 u+ bZ在 u ∈ Zb上采样的更简单问题。该算法的简洁性源于以下事实:当 q= bk恰好是 b的幂时,格 Λ⊥(gT)具有一个非常特殊的基
Bbk=
⎡ ⎢⎢⎢⎢⎢⎢ ⎣
b −1 b
−1…
… b
−1 b
⎤ ⎥⎥⎥⎥⎥⎥ ⎦
它是稀疏的、三角形的,且具有小整数元素。(特别是,其˜格拉姆‐施密特正 交化Bbk= bI是一个标量矩阵。)因此,[31,43]的通用格采样算法(通常需要 O(k3)‐时间预处理,以及 O(k2)存储和在线运行时间)可以简化为图1中所示的更简单算法,该算法在 O(k)内以线性时间运行,具有最小内存需求且无需任何预处理。
我们给出了一种专用算法,用于在 q<bk为任意模数时解决相同的采样问题。这在许多密码学应用中是必需的。
其中模数 q通常是一个素数。正如在[51]格Λ⊥(gT)仍然具有一个相当简单且稀 疏的基矩阵
Bq=
⎡ ⎢⎢⎢⎢⎢⎢⎣ b q0
−1 b q1
−1… …
… b qk−2
−1 qk−1
⎤ ⎥⎥⎥⎥⎥⎥⎦
其中(q0,..., qk−1)=[q]bk= q是模数 q的基‐b表示。该基仍具有良好的几何性质,因为其(从左到右)格拉姆‐施密特正交化中的所有向量的长度至多为 O(b)。因此,可以结合[31,43]的算法用于在标准差较小的格陪集上生成高质量的高斯样本。然而,由于该基不再为三角形的,其格拉姆‐施密特正交化也不再稀疏,导致[31,43]的算法无法像图1中那样被优化为线性时间运行。在 q= nO(1)关于安全参数 n为多项式级别的应用中,矩阵维度 k= O(log n)相对较小,通用采样算法(具有 O(k2)存储和运行时间)仍然可以使用,尽管存在可接受但显著的性能下降。然而,对于更大的 q,这在实践中变得不可行。此外,即使对于较小的 q,若能有一个运行时间为 O(k)、与矩阵维度成线性的最优采样算法,就像精确幂情况那样,也是理想的。本文提出了这样一个算法,它基于
任意模数下陷门格的快速高斯采样 185
SampleG(q= bk, s, u)
for i= 0,…, k −1:
xi ← DbZ+u,s
u:=(u − xi)/b ∈ Z.
return(x0,…, xk−1).
图1.当模数 q 是基 b的完美幂时,针对 G‐格的采样算法。该算法隐式地由基 b 和维度 k
参数化。
其中模数 q通常是一个素数。正如在[51]格Λ⊥(gT)仍然具有一个相当简单且稀 疏的基矩阵
Bq=
⎡ ⎢⎢⎢⎢⎢⎢⎣ b q0
−1 b q1
−1… …
… b qk−2
−1 qk−1
⎤ ⎥⎥⎥⎥⎥⎥⎦
其中(q0,..., qk−1)=[q]bk= q是模数 q的基‐b表示。该基仍具有良好的几何
性质,因为其(从左到右)格拉姆‐施密特正交化中的所有向量的长度至多为 O
(b)。因此,可以结合[31,43]的算法用于在标准差较小的格陪集上生成高质量 的高斯样本。然而,由于该基不再为三角形的,其格拉姆‐施密特正交化也不再 稀疏,导致[31,43]的算法无法像图1中那样被优化为线性时间运行。在 q= nO(1)关于安全参数 n为多项式级别的应用中,矩阵维度 k= O(log n)相对 较小,通用采样算法(具有 O(k2)存储和运行时间)仍然可以使用,尽管存在可 接受但显著的性能下降。然而,对于更大的 q,这在实践中变得不可行。此外, 即使对于较小的 q,若能有一个运行时间为 O(k)、与矩阵维度成线性的最优采 样算法,就像精确幂情况那样,也是理想的。本文提出了这样一个算法,它基 于[55],的卷积方法,但通过一系列具体的技术选择进行了专门化设计,从而实 现了简单且非常快速的实现,可与精确幂情况下的专用算法[51]相媲美。
读者可能会注意到,Bq、b1,b3、⋯⋯以及b2,b4、⋯⋯的交替列是成对正交的。
我们分别称这些集合为B1 和B2,。那么Λ⊥(gT)的另一个基是(B1, B2, q),这可能
暗示该基的GSO是稀疏的。不幸的是,这会导致GSO变为(B1,B∗ 2,q ∗),其中B∗ 2 是
一个稠密的上三角块。设b为B2中的 i − th 向量,则在B1和B∗ 2中有 2+ i−1
个非正交向量位于b之前,˜ 填充 在b的上部。
概述。其思想如下。我们不是直接对 Λ ⊥ u(g T )进行采样,而是将格基Bq = TD表示 为某个具有非常简单(稀疏、三角形)结构的矩阵D在某个线性变换T下的像。接下来, 我们
186N.格尼塞和D.米奇安奇奥
在 L的适当陪集上采样离散高斯分布(例如,方差为 σ2)D。最后,我们通过 应用线性变换T将结果映射回原始格。注意,即使 L(D)是根据球形高斯分
布进行采样的,所得分布也不再是球形的,而是遵循具有(缩放后)协方差σ2
TTT的椭球高斯分布。该问题通过[55],的卷积方法解决,即最初向目标添加
一个具有互补协方差 s2I−σ2TTT的扰动,使得最终输出的协方差为σ2TTT+
(s2I − σ2TTT)= s2I。总之,在非常高的层次上,该算法执行了(至少隐式 地)以下步骤:
1.计算协方差矩阵Σ1= TTT以及 r谱范数的上界TTT2.计算互补协方差矩
阵 Σ2= r2I −Σ13.从某个方便的格中,利用的乔列斯基分解对p← DΛ1,σ√Σ2
进行样本采样4.计算原像c= T−1(u −p)5.对z← DL(D),−c,σ进行采样6.输
出u+ Tz
技术难点在于找到合适的矩阵T和D,以实现所有步骤的高效执行。特别 地,我们希望T是一个非常简单的矩阵(例如稀疏、三角形且具有小整数元素), 从而使T具有较小的谱范数,并且两个线性变换T和T−1都能被高效计算。矩 阵D(由B和T唯一确定)也应是稀疏且三角形的,以便能够高效地对 L(D)陪 集上的离散高斯分布进行采样。最后(这也是实现高效实例化的最困难部分), 互补协方差矩阵Σ2= r2I −Σ1也应具有一个简单的乔列斯基分解 Σ2= LLT, 其中L为三角形、稀疏且具有小元素,以便能够高效生成扰动。理想情况下, 所有矩阵还应具有简单、规则的结构,从而无需显式存储,并可在运行时以最 小开销即时计算。
在下一小节中,我们将提供一个满足所有这些性质的实例化方案。接着, 在第3.2节中,我们描述由该实例化方案得到的专用采样算法,并分析其正确性 和效率特性。
3.1实例化
在本小节中,我们描述了一种特定的线性变换和矩阵分解的选择方案,该方案 满足我们所有的期望性质,并且能够在 G‐格上高效地实例化卷积采样算法。
一个诱人的想法可能是将格基Bq映射到基Bb k,然后使用图 1中的高效采样算法。
然而,这种方法并不可行,因为它会导致一个相当糟糕的变换T,该变换同时具有
任意模数下陷门格的快速高斯采样 187
几何性质较差且具有稠密矩阵表示。事实证明,当 q是 b的幂时,一个非常合 适的线性变换T恰好由描述基的矩阵T=Bbk给出。我们指出,T被用作线性 变换,而非格基。因此,它等于Bbk这一事实似乎并不具备任何特殊的几何意 义,仅仅有效而已!特别地,此处的操作不应与将Bq映射到Bbk相混淆。所得 的因式分解为
Bq=
⎡ ⎢⎢⎢⎢⎢⎢⎣ b q0
−1 b q1
−1… …
… b qk−2
−1 qk−1
⎤ ⎥⎥⎥⎥⎥⎥⎦ =
⎡ ⎢⎢⎢⎢⎢⎢⎣ b −1 b
−1…
… b
−1 b
⎤ ⎥⎥⎥⎥⎥⎥⎦ ⎡ ⎢⎢⎢⎢⎢⎣
1 d0
1 d1
… …
1 dk−2 dk−1
⎤ ⎥⎥⎥⎥⎥⎦ = BbkD
其中D的末列元素由递推关系 di=
di−1+qi
b d−1= 0 di 定义,初始条 件为。注意所有均在范围[0, 1)内,且 bi+1 · di恒为整数。从某种意义上说,从 L(D)采样 甚至比从 L(Bbk)采样更简单,因为D的前 k−1列是正交的,相应的坐标可独立并行采样。
(这与图1中的顺序算法形成对比。)
我们现在研究生成扰动的几何结构和算法复杂度。T= Bbk的协方差矩阵由
Σ1= BbkB T bk=
⎡ ⎢⎢⎢⎢⎢ ⎣
b2 −b −b(b2+ 1) −b
… … …
−b(b2+ 1) −b −b (b2+ 1)
⎤ ⎥⎥⎥⎥⎥ ⎦ .
下一步是找到Σ2的谱范数的一个上界r2,并计算互补协方差矩阵Σ2= r2I
−Σ1的乔列斯基分解LLT。根据盖尔什戈林圆盘定理, Σ1的所有特征值都位 于区间(b ± 1)2内。因此,我们可以设 r= b+ 1。数值计算还表明,这种 r的 选择是最优的,因为当 k趋于无穷大时, Σ1的谱范数趋近于 b+ 1。通常情 况下,乔列斯基分解定义为取L为一个下三角矩阵。然而,就采样而言,使用 上三角L同样有效。事实上,在分解过程中使用上三角L会得到一个更简单的 解,其中所有(平方)元素都有一个简单、闭式表达式,并且可以在线轻松计 算,而无需任何预处理计算或存储。(相比之下,数值计算表明,采用下三角 L的标准乔列斯基分解规律性差得多,甚至预先计算它所需的算术精度也比我 们的上三角解法高出指数级。)因此,我们令L为一个上三角矩阵,并设置 r= b+1。
188N.格尼塞和D.米奇安奇奥
对于任意 r,扰动的协方差矩阵 Σ2= r2I−Σ1 具有乔列斯基分解Σ2=
L·LT,其中L是由以下方程定义的稀疏上三角矩阵:
L=
⎡ ⎢⎢⎢⎢⎢⎣ l0 hl11 .h.2....
hk−1 lk−1
⎤ ⎥⎥⎥⎥⎥⎦ where
l02+ h21= r2 − b2
l2i+ h2i+1= r2 −(b2+ 1)(i= 1,…, k −2)
l2k−1= r2 −(b2+ 1)
lihi= b (i= 1,…, k −1)
可以很容易地验证这些方程具有以下简单的闭式解:
r= b+ 1, l02= b(1+ 1 k)+ 1, l2i= b(1+ 1 k − i), h2i+1= b(1 − 1 k − i(1))
我们注意到逆变换B−1 bk 也有一个简单的闭式解:即B−1 bk 的第 i列等于(0,···,
0, 1 b,…,(1b)k−i)。注意该矩阵不是稀疏的,因为它有 O(k2)个非零元素。然而,
无需存储该矩阵,相应的变换仍可通过回代求解稀疏三角形系统Tx= b 在线 性时间内完成计算。
3.2算法
采样算法 SampleG如图2所示。它以模数 q、整数方差s、陪集 u of Λ⊥
(gT)作为输入,并输出一个统计上接近DΛ⊥ u(gT) s的样本。 SampleG依赖于 子程序 Perturb和 SampleD,其中 Perturb(σ)返回一个扰动p,该扰动 在统计上接近DL(Σ2) σ·√Σ2,而 SampleD(σ,c)返回一个样本z,使得Dz在 统计上接近DL(D),−c,σ。
Both Perturb和 SampleD都是随机化最近平面算法[31,43]的实例。因此, 这两个算法都依赖于一个子程序 SampleZt(σ, c, σmax),该子程序返回一个在固定 支撑集 Z ∩[c− t · σmax, c+ t · σmax]上统计上接近一维离散高斯分布且具有尾部截
断 t, D t Z,σ,c的样本。我们为所有一维离散高斯分布固定其支撑集,以兼容ML距离。
此外,我们仅输入SampleZ中心 c ∈[0, 1),因为我们总可以通过整数进行平移。
存储。标量 ci在 SampleG中,表示c= B−1 b k(u −p),以及 di在 SampleD中,表示D的最后一列,均为形如x/bi的有理数,其中 x为小整数 且 i ∈[k]。数值 li、 hi是小于 √2b+ 1的正数。
一种简单的算法实现需要存储浮点数 ci、 di、hi和 li,总共需要 4k个浮点 数的存储空间。然而,由于这些值由简单的递推关系(ci, di)或简单公式(hi, li) 确定,因此可以调整为常数时间存储。
任意模数下陷门格的快速高斯采样 189
SampleG(s,u=[u]bk,q=[q]bk)Perturb(σ)σ:= s/(b+ 1)p ← Perturb(σ)对于
i= 0,..., k −1:β:= 0对于 i= 0,..., k −1:ci:= β/li,且 σi:= σ/lici:=(
ci−1+ ui −pi)/b zi ← ci+ SampleZt(σi,ci[0,1), s)z
← SampleD σ
= qk−1 · zk−1 − zk−2+ uk−1
β
… k −2
= b· zi − zi−1+ qi · zk−1+ ui tk−1
i= 0
ti
(,c)对于,,::::
= −zihi
p0= 2b+ 1:()
z0+ bz1对于 i:= 1,..., k −1:pi:= b(zi−1+ 2zi+ zi+1)返回t返回p
SampleD(σ, c)
zk−1 ← −ck−1/dk−1
zk−1 ← zk−1+ SampleZt(σ/dk−1,−ck−1[0,1), s) c:= c − zk−1d
for i ∈{0,…, k −2}:
zi ← −ci+ SampleZt(σ,−ci[0,1), s) return z
图2.用于任意模数 q< bk的 G‐格的采样算法。该算法将 b和 k作为隐式参数, SampleG输出
一个在统计上接近DΛ⊥ u(g
T c−1= z−1= zk= 0
s SampleZt σ c σmax
)分布的样 本。任何下标超出范围的标量均为0,即。(,,)是任意一种在 Z上精确或近似地从离散高斯分布中 采样的算法,其中心位于[0, 1,且具有固定的截断支撑集 Z ∩[c− t · σmax, c+ t · σmax](t为尾 部截断参数)。我们将 x−x记作 x[0,1)。
时间复杂度。假设对 SampleZ和标量运算的采样时间为常数,则 SampleG的运行时间为 O(k)。现在我们考虑所有操作:包括 6k次整数加减 法、 3k+ 2次整数乘法、3(k+ 1)次浮点除法、 2k次浮点乘法以及 2k次浮点 加法。以下分析表明,对于大多数应用,我们可以使用双精度浮点数。
统计分析与浮点精度。我们现在使用完美的一维采样器(无尾界)对 SampleG进行统计分析,然后使用有尾界的非完美采样器从ML距离的角度 进行分析。这使我们能够度量具体安全性上的损失。有关ML距离和完整的具体 安全性分析的更多细节,请参阅[53,第 3]节。
为了理解定理3中“Σ3条件”的含义,需要以下引理。
引理4。设Σ3由 Σ −1 3 =(b+1)
2 s 2[Σ −1 1 +[(b+ 1) 2I −Σ] −1]定义,则其特征值为
Θ(s 2/b)。此外,若 λi 是 Σ1的第 i−个特征值,则Σ3 的第 i−个特征值为
(s/[b+ 1]) 2 · λ i (b+1)
2 −λ i 2。
190N.格尼塞和D.米奇安奇奥
证明。设 Σ1= QTDQ为其对角化。则, Σ−1 1= QTD−1Q,其余部分由各
个特征值的代数操作以及盖尔什戈林圆盘定理在 Σ1上的应用得出。
令Cε,k= √log(2k(1+ 1/ε))/π。现在我们可以轻松地从下方限定 s。我们需要对 s满足以下三个条件: s ≥(b+ 1)ηε(D), √Σ3 ≥ ηε(Σ2),以及 s ≥(b+ 1)ηε(L)。中间 的条件决定了 s 的下界为s ≥√2b·(2b+ 1) · Cε,k(最后两个条件均有 s=Ω(b1.5 · Cε,k))。
推论1.固定 0< ε ≤ 1/2 并令 s ≥√2b·(2b+ 1) · Cε,k。那么,当 Perturb 和 SampleD 使用完美的一维采样器时, SampleG返回的扰动与DΛu⊥(gT) s 之间的统计距离小于 Θ(kεˆ),适用于任意q< bk。此外,使用完美的一维采样 器时,DΛu⊥(gT) s相对于SampleG的无穷阶R´enyi散度小于或等于 1+Θ(kεˆ)。
统计距离界 Θ(kεˆ)会导致安全参数ε= 2−κ下约损失loglog q比特的安 全性,这由[53,引理31]得出。(乘性因子 k 来自随机化最近平面算法的分 析:见[31,定理41]。) 接下来,我们转向ML距离,以对使用非完美的一维采样器 SampleG时
损失的安全比特数进行更紧密的分析。由于提供给 SampleZ的中心 c和方差 s
是通过两到三次浮点计算得到的,我们假设 ¯c和 ¯s相对于 c和 s的相对误差都 在 2−m以内。
命题1。固定一个 ε> 0,令 s ≥(b+1)·ηε(Z)。对于任意输入为近似中心 ¯c ∈[0, 1
和方差 σ¯ ∈[s/(b+ 1) s · b/(b+ 1)](表示为尾数长度为 m的浮点数)的一维
采样器 SampleZt(σ¯, ¯c, s), Δml(SampleG D t Z,σ,c, SampleG SampleZt(σ¯,¯c)) ≤ 2k[O(b2t22−m)+ maxσ¯,¯cΔml(SampleZt( ε> 0, ¯c, s) D t Z,σ¯,¯c)].
假设使用完美采样器对DΛ⊥ u(g T ) s的密码系统具有 κ比特的安全性,我们可
以结合推论1、命题1以及[53,引理33]的结果得出结论:当 m= κ/2、Δml(
SampleZt(¯s, ¯c)D t Z,¯s,¯c)< 2−κ/2且 ε= 2−κ时,将DΛ⊥ u(g T ) s替换为 SampleG可 获得约 κ − 2log(tb2) − 3 loglog q − 5比特的安全性。
3.3实现与比较
在本小节中,我们比较了 SampleG和G‐格设置中使用的通用随机最近平面算 法[31,第 4]节所述的简单实现。这些实现在Inteli7‐26003.4GHzCPU上使用 C++语言并通过双精度浮点数表示非整数进行。时钟周期通过“time.h”库测 量,结果如图3所示。
一维采样器 SampleZ是Karney采样器[41], 的离散版本的一个实例,而 该采样器是一种改进的拒绝采样器。模数 q选自[40,第4节2],的公共参数子部分。
任意模数下陷门格的快速高斯采样 191
图 3 q={4093, 12289, 1676083, 8383498, 4295967357,≈
9 · 1018} s= 100 100,000
。
测量的时钟周期数,取多次运行的平均值。最后三个模数的时钟周期数,GPV为 {19.4, 31.9, 73.9}, SampleG在预计算下为{5.5, 7.5, 13.1}。
除了任意的60位模数外。大多数实际方案所需的模数不超过30位模数[9],适 用于格维度(n)高达1024的情况。然而,更高级的方案,如属性基加密 [14,19],谓词加密[34],和混淆[20,26],,则需要超多项式模数,通常为90位 或更多位(假设ABE和谓词加密方案中的电路具有对数深度)。
对于通用随机最近平面采样器,我们预先计算并存储了基Bq的格拉姆‐施
密特正交化,之后仅统计运行算法所需的时钟周期。我们有两种版本的 Samp-
leG:第一种是直接使用原算法,第二种则会为每个G‐格样本存储来自 Perturb(σ)的预计算扰动。这种带有预计算的SampleG版本在时钟周期上节 省了约两倍因子。
4CyclotomicRings中的扰动采样
[51]的格原像采样算法需要生成
n Σ p =
s 2·
2+ q −α 2 · T ∈ Z (2+lo g q n×n q
(log)维 高斯扰动向量p,其协方差为ITT,其中T)log是具有小元素的矩阵,用作格陷门, α是
一个小常数因子, s是 αT的谱范数上界。在[51]中,这是通过 Σ p 的Cholesky分解实
现的,该过程需要 O(nlog q) 3预计算以及 O(nlog q) 2存储和运行时间。
192N.格尼塞和D.米奇安奇奥
[51]的陷门矩阵T具有一些额外的结构:存在某个 ¯T ∈ Z2n×n log q,使
得TT=[¯TT,I]。此外,在处理代数格时,¯ ˜T= φn(T)是某个矩阵 ˜
T ∈ R2×log q n (其元素属于秩为 n的环 Rn)在环嵌入 φn: Rn → Zn×n下的 像。通常情况下,Rn= O2n= Z[x]/(xn+1)是第2n个分圆域 K2n的整数环,其中 n= 2k为2的幂。[9]中指出,利用Σp的稀疏性,噪声扰动的预处理存储和在线 计算成本可降至 O(n2 log])。4这相较于通用实现有一个log q的性能提升,但仍 在主安全参数 n上呈二次关系。这在实践中可能是一个显著改进,但算法的整体 开销仍然较大。当使用通用陷门 ¯T ∈ Z2n×n log q时,几乎无法将运行时间降低
到 O(n2 log q)以下,因为仅读取矩阵 ¯T就需要这么多¯ ˜时间。然而,当 使用代数格时,陷门T= φn(T)具有一个紧凑表示T,仅由 2nlog q个整数构成, 因此有可能将运行时间降至关于 n的线性或准线性级别。
在本节中,我们给出一种替代算法,用于生成具有协方差 Σp 的整数扰动 向量p,其中T= φn(T)。我们的算法充分利用了 Rn的环结构,将执行算 法过程中生成的 Σp以及所有其他矩阵紧凑地表示为环 Rn中元素构成的矩阵的 像。特别地,与[27,28],类似,我们的算法在 n上具有准线性的时间和空间复 杂度,但不需要任何预处理/存储。该算法可以以模块化方式表达为三个步骤的 组合: 1.首先,从协方差为Σp 的 O(nlog q)维整数向量p中进行采样的问题被转 化为在一个 Rn上由 2 × 2 矩阵表示协方差的 2n维整数向量的采样问题。
2.接着,协方差在R2×2 n 中的整数向量采样问题被转化为采样两个 n维整数向 量的问题,每个向量的协方差由 Rn中的一个环元素表示。3.最后,若 n> 1, 协方差在 Rn 中的采样问题被进一步转化为在较小的环 Rn/2上由 2×2矩阵 表示协方差的 n维扰动Perturb的采样问题。
重复最后两个步骤log n 次可将原问题简化为在R1= Z中进行采样。下一小节 将详细介绍每一步的细节。我们指出,该算法仅为了便于描述和分析而表述为 一个递归过程,实际上可以像许多类FFT算法一样,简单地使用嵌套循环来实 现。
4.1二的幂分圆数的离散扰动算法
在本小节中,我们提出扰动算法算法,该算法可在 O˜(n log q)时间内从
Z n(2+log q)上的离散高斯分布生成 n(2+ log q)维的扰动。
稀疏性还将预处理运行时间减少到 O(log q · n 2 + n 3 )= O(n 3 ),但在 n上仍然是立方的。
任意模数下陷门格的快速高斯采样193
该算法的入口点是 SamplePz过程,其输入为两个整数参数 n, q,矩阵 ˜
T ∈ R2×log q n , Σ2 ∈ R2n× 2,以及三个正实数 s2, α2, z=(α−2 − s−2)−1,预期
生成一个 n(2+ log q)维向量p,其服从(非球形)离散高斯分布DZn(2+log q),
√Σp,协方差为
Σp= s2 · I − α2[φn(T˜) I] ·[φn(T˜)T I]
=[ Σ2 −α2φn(T˜) −α2φn(T˜)T(s2 − α2)I].
该算法调用两个子程序: – SampleZ(s2−α2),该函数用于生成一个方差为 s2−α2、中心在0的一维离 散高斯分布变量的样本,可通过任意标准技术实现。
– Sample2z(a, b, d),其输入为三个紧凑描述一个正定矩阵的环元素 a, b, d
Σ2=[φn(a) φn(b) φn(b)T φn(d)],
预计要对一个(2n)维向量p ← DZ2n,√Σ2进行样本抽取。
反过来, Sample2z (也在图4中描述)利用了一个过程SampleFz(f),
该过程在输入一个具有正定 φn(f)的环元素 f后,返回一个样本p ← D Zn,
√φn(f)。
效率。乘法运算在域 Ki中进行,对于维度为i ∈{1, 2,…, 2n}的元素,使用中
国剩余定理变换(CRT)可在时间 Θ(i log i)内完成。[49]。
通过将标量运算视为常数时间, SamplePz 的时间复杂度为Θ(n log n log q),因为T的变换是Θ(nlog nlog q),而SampleFz 的复杂度为 Θ(n
log2 n)(由递推关系 R(n)=2R(n)+ 2log n/2+ 4.5n表示)。该算法在陷门 T上需要 2n log q标量存储。
注意,如果将 Ki中的多项式存储在标准嵌入(傅里叶域)中,则
SampleFz更加高效,为 Θ(nlog n)。此时可修改 SamplePz,以得到a, b, d,
c0, c1的傅里叶/规范表示,并对p=(p0,
p1)执行逆CRT/FFT。
这样我们就可以使用FFT蝶形变换,将 f(x)= f0(x 2)+ xf1(x 2) ∈ K2n的傅里 叶表示转换为 f0, f1 ∈ Kn的傅里叶表示,此时乘法/求逆运算变为线性时间(我 们仅需对傅里叶域中的非零元素进行求逆,因为这对应于拉回到域、求逆后再 通过由中国剩余定理给出的嵌入映射推送到循环环)[28,引理 1]。(从规范
194N.格尼塞和D.米奇安奇奥
˜SamplePz(n, q, s, α,T Σ2, z)
对于 i= 0,...,(nlog q −1): qi ← SampleZ(s2 −α2)(c0, c1):
= − α2 s2−α2 ˜Tqc′(x):= c0(x 2)
+ x · c1(x 2))p ← Sample2z(a, b,
d, c′)返回(p,q)
Sample2z(a, b, d, c)
let c(x)= c0(x2)+ x · c1(x2) q1 ← SampleFz(d, c1) c0:= c0+ bd−1(q1 − c1) q0 ← SampleFz(a − bd−1b∗, c0)
返回(q0, q1)
SampleFz(f, c)
如果dim(f)= 1返回 SampleZ(f, c)
否则令 f(x)= f0(x 2)+ x · f1(x 2)
(q0, q1) ← Sample2z(f0, f1, f0, c)
let q(x)= q0(x 2)+ x · q1(x 2)
返回 q
˜图4.用于整数扰动的采样算法 SamplePz,其中T= φn(T)是定义在2的幂次分圆环上的紧致 陷门。注意, ˜Ti对每个 i ∈{0, 1}都是Rn上的一个向量。该算法使用一个子程序 SampleZ(σ2, t), 用于在 Z上以方差 σ2、中心为 t的离散高斯分布进行采样。标量 z=(α−2−s−2)−1。
到FFT域的嵌入是线性时间的,因为我们对非本原单位根的位置填充零[28,第 A节2]。然而,这并不会改变 SamplePz的渐近时间复杂度,因为现在在标准嵌 入中生成q的时间为 Θ(nlog nlog q)。
正确性。在初步尝试证明图4中算法的正确性时,人们会使用Peikert卷积 定理(定理3)。然而,这只能确保p在SamplePz和 q0在 Sample2z中的 边缘分布的正确性,而不能保证它们各自的联合分布(p,q)和(q0, q1)的正确性。
即使仅需满足边缘分布的正确性,追踪定理3中Σ3条件在上述算法的递归调用 过程中的变化也是繁琐的。因此,我们推导出一个无需 Σ3条件的卷积引理,
用于简单格 Z n上离散高斯卷积的联合分布。
首先,我们展示高斯函数ρ√Σ(·)关于舒尔补分解以一种有用的方式进行分解。
引理5。设 Σ=[ABBT D] 0为正定矩阵,其中A ∈ R n×n和D ∈ R m×m,
且 Σ/D=A −BD−1BT是D的舒尔补,令x1 ∈R n和x2 ∈ R m为任意的。则高
斯函数ρ √Σ(x)可分解为 ρ √Σ/D(x1 −BD−1x2)· ρ√D(x2)= ρ √Σ(x),其中x=(x1,
x2) ∈ R n+m。
证明(概要)。通过将 Σ的逆定义为 Σ/D的形式,并将ρ √Σ(x)表示为 Σ/
D的形式即可看出。矩阵分解
Σ=[I BD −1
0 I][Σ/D 0 0 D][ I 0 D−1BT I]
得出 Σ −1的公式,以证明该结果。
任意模数下陷门格的快速高斯采样195
上述引理的一个推论是,高斯和ρ√Σ(Zn+m)可以用高斯函数ρ√D
1291

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



