快速离散高斯采样与后量子TLS

快速离散高斯采样和后量子TLS密码套件

1 引言

1.1 背景

自开创性的Diffie‐Hellman密钥交换协议以来,各种公钥算法已被提出并广泛应用 于现实世界中 [6]。然而,随着量子计算机的出现,人们认为当前大多数公钥密码构造将不再安全, 而基于格的算法则能够幸存下来。目前密码系统最著名的攻击方法是肖尔算法 [20]和格罗弗算法[11]。当实用的量子计算机可用时,肖尔算法能够高效地破 解大多数公钥算法。格罗弗算法可以加速对大多数对称密码和哈希函数的攻击, 但这些算法仍被认为相对安全[3]。本奈特等人证明,量子计算机在暴力穷举密 钥搜索中可能提供二次加速比[2],而这种攻击可以通过加倍密钥长度来抵御。然而,对于公钥密码系统而言,在保持实用性的同时增加密钥长度并不可行。

在过去几年中,基于格的密码原语因其诸多吸引人的特性而受到认可,包 括抗量子攻击能力、可证明安全性和高效率。目前尚无公开算法能够有效解决 困难的格问题。在过去十年中,带错误学习(LWE)[19]和环上带错误学习 (RLWE)[15]已成为众多现代基于格的密码系统的基石。基于这些困难问题 的构造方法具有强可证明安全性和高效率。LWE/RLWE 中的秘密、新鲜且随 机的误差项 e使得当参数被恰当选择时,这两个问题都极难求解。在实际应用 中, e和私钥 s通常从离散高斯分布中进行采样,因此高效的采样算法对于实 用的 LWE/RLWE 基础密码构造至关重要。然而,一些论文指出,采样在实践 中可能耗费过多时间。Weiden 等人[21]报告称,在实现 Lyubashevsky 签名 方案[14]时,采样时间占总运行时间的> 50%。在 EUROCRYPT 2015[22], 提出的基于理想格的认证密钥交换协议中,他们报告采样操作可能占据总运行 时间的> 60%。因此,设计并实现兼具高效率和良好统计质量的高斯采样器成 为一个主要的技术挑战。

1.2 相关工作

Buchmann等人在SAC 2013的[5]中首次提出了基于金字形塔的离散高斯采样 器。本工作将原本为连续高斯分布设计的zigzag采样算法适配到离散情况。他们声称,当标准差 σ较大时,其采样器优于几种常见的采样方法。佩克特在 CRYPTO 2010[18]中提出了一种使用累积分布表(CDT)的采样器。该采样 器在 σ较小时已被证明极为高效,但在 σ较大时效率较低。杜卡斯等人在 CRYPTO 2013[9]提出了一种新的采样器,在时间和内存之间具有更好的权衡。它不使用预计算表,且他们声称即使 σ较大时该采样器仍然高效。Knuth‐Yao算法[12]可通过二叉树搜索技术从高斯分布中进行采样。它虽然高 效,但可能消耗过多内存。存在多种构造方法(例如,同态加密),这些需要从具有大 σ的离散高斯分布中获取样本。这种技术被称为噪声注入。一种基于RLWE的认证密钥交换协议在EUROCRYPT上被提出 2015[22](记为AKE15)。该协议以HMQV方式运行,其安全性直接基于RLWE问题。该协议具有相互认证性,在Bellare‐Rogaway模型下被证明是安全的,并且具 备前向安全。[1] Bos等人在电气与电子工程师协会安全与隐私研讨会上提出 了RLWE密钥交换协议的一种实现 2015[4](记为BCNS15)及其在TLS中的集 成。他们的密码套件采用RSA或ECDSA作为签名算法,而这些算法易受量子计 算机攻击。此外,这些密码套件无法实现相互认证。

1.3 贡献

我们的贡献总结如下:首先,我们提出了一种更快的离散化ziggurat高斯采样 器。我们对原始的zigzag采样算法进行了离散化,并结合多种改进技术以提高 其效率。我们证明了由该采样器生成的分布与离散高斯分布之间的统计距离小 于 2−80,因此可将其用于基于格的密码系统中。我们的优化实现在性能上的表 现显示,当 σ较大时,该采样器相较于[5,9,18]实现了两倍以上的加速比。这一优势有助于使用大标准差分布来淹没小噪声的构造方法(例如同态加密等)。其次,我们优化了一个基于RLWE的认证密钥交换协议[22]。我们将原始 AKE15中用于从标准差较大的分布进行采样的采样器替换为高效的离散高斯采 样器。在主要参数选择下,该协议的总运行时间实现了1.14倍的加速比。第三,我们将优化后的AKE实现集成到TLS v1.2中,作为后量子TLS密码 套件。我们还提供了概念验证实现和基准测试。我们的密码套件继承了 AKE15和TLS v1.2的优势,包括相互认证、抗量子攻击能力以及前向保密性。我们的密码套件性能接近标准TLS v1.2密码套件和BCNS15。

1.4 组织结构

在第2节中,我们回顾背景知识。在第3节中,我们提出高效的基于离散 Ziggurat的高斯采样器、安全证明、实现、基准测试以及与相关工作的比较。在第4.1节中,我们展示我们的采样器如何优化AKE15,并报告在6个参数选择 上的基准测试结果,涵盖80到256位安全强度。第4.2节介绍我们的后量子 TLS密码套件、实现、运行时间和与相关工作的比较。我们在第5节中总结全文。

2 预备知识

2.1 符号说明

设环 R= Z[x]/(xn+ 1) 和 Rq= Zq[x]/(xn+ 1)。多项式 xn+ 1 是第 n 个分圆多项式,其中 n 是 2 的幂。 χ 是定义在 Rq 上的概率分布, ← χ 表示 根据分布 χ 进行采样, ←r 表示从有限集中随机选择一个元素。均值为 c ∈ Z、 标准差为 σ> 0 的在 Z 上的离散高斯分布记为 DZ,σ,c。若 c 为 0,则将 DZ,σ,c 记为 DZ,σ。log 表示自然对数。令 L 为 Zm 的一个离散子集。对于任意向 量 c ∈ Rm 和任意正参数 σ ∈ R> 0,设 ρσ,c(x)=e− ‖x−c‖2 2σ2 为在 Rm 上 以 c 为中心、参数为 σ 的高斯函数。记 ρσ,c(L)=∑x∈L ρσ,c(x) 为 ρσ,c 在 L 上的离散积分,并记 DL,σ,c 为在 L 上以 c 为中心、参数为 σ 的离散高斯分 布。具体地,对于所有 y ∈ L,有 DL,σ,c(y)= ρσ,c(y) ρσ,c(L) [7]。

2.2 LWE和RLWE

LWE 及其环变体 RLWE 在参数选择适当时是困难问题。这两个问题的核心思 想是使用小噪声扰动随机线性方程。由于误差项的扰动,很难将这些方程与真 正均匀的方程区分开来。在平均情况下的 LWE 问题与最坏情况下的困难的格 问题之间存在量子 [19] 和经典归约 [17]。如果存在一个多项式时间算法能够求 解 LWE/RLWE 问题,那么就存在算法可以求解困难的格问题。L WE/RLWE 的困难性为众多密码构造方法提供了坚实的基础。在实践中,基于 RLWE 的方案比基于 LWE 的方案更受青睐,因为 LWE 在计算和通信方面具 有固有的二次开销(大矩阵),这导致了低效。RLWE 样本被构造为多项式对 (a, b),其中 a ∈ Rq 是均匀随机的,b= a· s+ e ∈ Rq, s 是小的且保密的项, e 是从离散高斯分布中采样的。搜索‐RLWE 问题是给定多个 RLWE 样本后恢 复 s。判定‐RLWE 问题是区分 b 与均匀随机的情况。对于搜索‐LWE 和判 定‐LWE 也存在类似的变体,因此我们忽略细节。基于 RLWE 的密码构造(例 如,公钥加密、签名、密钥交换、同态加密等)可以做到真正高效并适用于实 际部署。

2.3 统计距离

由于离散高斯分布具有无限长尾且采样点的概率需要高精度,因此无法通过有 限计算生成真正的离散高斯分布。因此,要求采样器生成的分布与离散高斯分 布之间的统计距离非常小。

统计距离定义如下:如果 X和 Y是定义在 L上的给定分布对应的两个随机变量, 则统计差异定义为:

$$
Δ(X, Y)= \frac{1}{2} \sum_{x∈L} | Pr(X= x)− Pr(Y= x) |
$$

如果两个分布之间的统计距离非常小(例如< 2−80),则这两个分布之间的差 异是可忽略的。

3 更快的离散高斯采样器

通常,基于LWE/RLWE的方案的私钥 s和误差项 e是从离散高斯分布中进行 采样的。在实现中,采样占据了运行时间的很大一部分,因此采样算法的效率 至关重要。ziggurat采样算法 [16]可以非常高效地从高斯分布中进行采样。然而,ziggurat算法是为连续分布设计的,而基于格的方案需要其离散化版本。我们的采样器是[16]的离散化版本,我们通过消除采样操作中的计算来提 高采样器的效率。我们证明了我们的采样器与离散高斯分布具有非常接近的统 计距离,因此我们的采样器可以安全地用于基于LWE/RLWE的密码系统中。我们还引入了优化实现。在接下来的章节中,我们将解释我们采样器的构造,通 过证明分析其统计质量,提供实现细节、基准测试、讨论以及与其他几种采样 器的比较。

3.1 Ziggurat 高斯采样算法

我们回顾Ziggurat高斯采样算法[16]:区域 A用 n个矩形包围概率密度函数 ρσ (x)。这些矩形以相等面积的方式被选择。(xi, yi)表示每个矩形 Ri的右下角坐标。Rl i位于 ρσ(x)的区域内,而 Rr i部分被 ρσ(x)覆盖。我们首先随机选择 i ∈[1, n] 来选定一个矩形,然后通过选择 x′ ∈[0, xi]在 Ri内对 x‐坐标进行随机采样。如果 x′ ≤ xi−1,则接受并返回 x′;否则,我们采样一个值 γ ∈[yi+1, yi]。如果 γ+yi+1 ≤ρσ(x′),则接受并返回 x′,否则拒绝并重新开始。由于这些矩形大小 相同且随机选择,因此在这些矩形中采样点的概率是相等的。马尔萨利亚还提 出了一种用于尾部区域的算法:重复以下过程直到 2y> x2:在(−1, 0)上均匀 采样 a ∈,在(0, 1)上均匀采样 ∪和 b ∈, x= − 1 r log |a|, y= −log b。如果 a> 0,返回(r+ x),否则返回 −(r+ x)。

3.2 我们的快速离散高斯采样和统计质量分析

我们的采样器直接基于原始的zigzag采样算法设计,该算法原本用于连续高斯分布。我们对其进行了离散化处理,并通过多种优化技术提高该算法的效率。结果是,我们的采样器能够以高统计质 量高效地获取服从离散高斯分布的样本。

我们注意到,原始Ziggurat算法中最耗时的部分是指数计算,因为原始 Ziggurat算法需要大量指数计算。该计算直接与某个 σ相关,因此当 σ较大时 效率更低。我们通过从标准连续高斯分布(σ= 1)中采样(而非具有特定 σ的分 布),然后将采样值乘以 σ和一个随机生成的符号来改进这一点。最后,将其 四舍五入到最近的整数以获得离散值。我们的方法有效避免了诸多采样器无法 高效处理大 σ的低效问题。

我们进一步优化了我们的采样器。我们使用3个预计算表: ytab、ktab和 wtab,以减少在线计算。生成这些表的计算与采样计算以及不同的标准差无关, 因为这是一次性计算。预计算表的值在实现中是硬编码的。我们在处理不同标 准差时可以方便地使用相同的表。预计算表的生成方式如下:ytab= ρ1(xi), 用于存储每一级ziggurat的高度的查表值。ktab用于快速接受性检查,其中 ktab0= 2128 · r · ρ1(r)/v、 ktabi=、2128·(xi−1/xi)、 r= x127 ≈ 3.444286476761、 v为每个矩形的大小。 wtab用于快速值转换,通 过 wtab0= 0.5128·v/ρ1(r)和 wtabi= 0.5128·xi实现。我们注意到,当 σ变化时, 其他采样器可能需要重新生成预计算表,而我们的采样器则不需要。

我们采样器的伪代码如算法1所示(urandom() 指生成一个在 0 到 1 之间 均匀分布的 128位精度随机浮点数):

算法1. 快速离散高斯采样

输入: ytab, ktab, wtab, r, σ
输出: 根据离散高斯分布分布的整数

  1. 当 true 时循环执行
  2. i ←r{0,···, 127}, s ←r{−1, 1}
  3. r ←r urandom() j ← r · 2^128, x ← j · wtab[i]
  4. 如果 j < ktab[i] 那么
  5. 跳出
  6. 结束 if
  7. 如果 i < 127 那么
  8. y0 ← ytab[i], y1 ← ytab[i+1]
  9. y ← y1 + (y0 − u1) · urandom()
  10. else
  11. x ← r − log(1−urandom())/r
  12. y ← e−r(x−0.5r) · urandom()
  13. 结束 if
  14. 如果 y < e−0.5x² then
  15. 中断
  16. 结束 if
  17. 结束 while
  18. 如果 s = 1 则
  19. 返回 ⌊s·σ⌋
  20. 否则
  21. 返回 −⌊s·σ⌋
  22. 结束如果

这里我们证明了由我们的采样器生成的分布与离散高斯分布之间的统计距 离非常小。我们近似地将由我们的采样器生成的分布与离散高斯分布之间的统 计距离估计为小于 2−80 ,针对 n= 1024个样本和σ= 869.632。我们采用了 与[5]类似的方法,因为我们的采样器从 Z上的离散高斯分布中取 n个样本, 以获得 Zn上的离散高斯分布样本。该结论对其他参数选择仍然成立。我们首先 从[10]中回顾两个在证明中有用的引理:

引理1。 设 σ> 0和 n ∈ N为固定值。考虑分布DZ n ,σ。令k ∈ N,并假设 c ≥ 1 满足:

$$
c > \sqrt{1 + 2 \log c + 2(k/n) \log 2}
$$

然后:

$$
Pr_{v←DZ n ,σ}(‖v‖ > c√nσ) < \frac{1}{2^k}
$$

引理2。 设 σ> 0, ε> 0给定。令 k ∈ N和 t> 0满足尾部界限Pr(‖v‖> tσ)如 引理1中所述至多为 1/2k。对于 x ∈ Z,记 ρx为从分布 Dσ中采样得到 x的概 率。假设已计算出近似值 0 ≤ px ≤ Q,对所有 x ∈ Z, −tσ ≤ x ≤ tσ满足:

$$
|px − ρx| < ε
$$

且满足

$$
\sum_{x=-tσ}^{tσ} px ≤ Q
$$

记 D′ 为在 Z 上的分布,该分布对应于对所有 x ∈ Z, −tσ ≤ x ≤ tσ,有 Pr(v=x) = px / Q。记 D′′ 为在 Zn 上的分布,该分布对应于从 D′ 中独立采样 n 次得到 vi,并构成向量 v=(v1,···, vn)。则:

$$
Δ(D′′, DZ n ,σ) < 2^{-k} + 2ntσε
$$

设 χβ表示由我们的采样器生成的分布, DZ n,β表示在 Zn上的离散高 斯分布。我们展示了使用表3中参数选择I的参数时,我们的采样器的近似性。为了使用引理2,我们首先需要计算引理1中 c对于 k= 81和 n= 1024的值, 因此我们得到 c= 1.242617,这给出了尾部 t= c√n ≈ 40。注意该尾部截断远大于大多数采样器(例如,[5]的尾部截断为 t= 13)。对于我们的采样器,我们有Δ(χ, DZn,β) < 2−k+ 2ntβε。通过将预计算表的精度级别设为128,我们可以根据引理近似 px,使得尾部截断在 Z中接近离散高斯分布,误差常数 ε 为2−128,因此我们得到Δ(χ, DZn,β) < 2−81+2·1024·40·869.632·2−128< 2−80。拒绝过程效率估计为98.78% [16],这对我们的采样器性能有所贡献。

3.3 实现和运行时间

我们使用MPFR、GMP和NTL库实现采样器。我们将精度设置为128位,以实 现高精度计算。我们使用128位种子和128位随机数,以抵御暴力量子攻击。预计计算表中的每个值具有40个有效数字。在一次执行中,生成一个包含2048个样 本的向量。每个采样值对一个78位素数取模 p并存储在vecZZ p类型向量中。我们在一台配备3.6 GHz 英特尔酷睿 i7‐4790处理器、运行Ubuntu 14.04 64位 版本并具有3GB内存的联想ThinkCentre M8500t上进行测试。我们的实现由 g++ 4.8.4使用‘‐O3 ‐m64’编译标志编译,并仅在单核上运行。我们报告了 采样器在不同标准差下进行1000次执行的平均运行时间 σ,见表1:

表1. 我们采样器的性能

σ 百万 样本/s σ 百万 样本/秒 σ 百万 样本/s
5 2.94 106 2.95 1012 2.91
50 3.01 107 2.92 1013 2.89
102 2.99 108 2.93 1014 2.87
103 3.02 109 2.90 1015 2.88
104 2.97 1010 2.88 1016 2.85
105 2.99 1011 2.89 1017 2.84

我们还使用Valgrind来分析内存开销。我们的实现在生成2048个样本时最 多消耗11.07 MB内存。每个预计算表消耗约6KB内存。生成三个预计算表耗时 0.173秒,但这些表是离线计算的,其值在我们的实现中是硬编码的。每次执行 时都使用相同的预计算表,且它们与不同的标准差无关。报告此时间是为了完 整性。

3.4 比较和讨论

我们详细介绍了与其他采样器的分析和比较,见 [5,9,12,18]。我们还使用与第3.3节相 同的测试环境、编译器和编译标志对这些采样器的实际性能进行了测试,并采用了各种 σ。

提出了一种基于ziggurat算法的离散高斯采样器 [5]。他们将原始 Ziggurat算法应用于离散情况的方法与我们的不同。与他们的工作相比,我们 的高斯采样器具有以下改进和差异:

  1. 我们有效避免了由标准差引起的昂贵计算。这是提高我们采样器效率的主要因素。他们的采样器的瓶颈是:
    - 超过50%的总运行时间花费在计算 e−x²/2σ² (x也与 σ相关) 用于构造每个 矩形。
    - 拒绝判断中的计算(在判断 e−0.5x²是否小于 y时计算 e−0.5x²)。
    - 尾部区域中的计算( y= e−r(x−0.5r)·urandom(),算法 1第12行)。

显然,当 σ较大时,大量时间被消耗在指数计算上。我们的采样器通过首先 从正态分布中进行采样来避免这一问题,从而更加高效。

  1. 我们使用3个预计算表来存储采样过程中所需的值,而他们的实现中仅使用 1个表来存储 xi。我们的采样器可以直接从这些表中获取结果,而无需在线计 算,因此性能进一步提升。在我们的实现中,乘法、转换和生成随机数占用了 大部分时间。我们使用他们的实现在相同的测试环境和精度下测试其采样器, 使用不同的 σ。他们声称当 σ= 1.6 · 10⁵时,他们的采样器是最快的。在我们 的测试环境中,他们的采样器产生每秒134万样本,生成预计算表耗时1.23秒, 而我们的采样器产生每秒297万样本,且不产生额外的时间开销。由于他们的 代码崩溃,我们无法测试 σ> 10⁸的情况。

  2. 当 σ不同时,他们的实现需要重新计算预计算表。这显著增加了总的采样时 间。在比较表2中的采样性能时,生成这些表所花费的时间甚至未被计入。如果 将这部分时间也包括在内,他们的采样器会慢得多。我们的采样器可以在0.2秒 内生成预计算表。这些表在实现中是硬编码的,且与不同的 σ无关。

  3. 他们的采样器在106位精度下的统计距离为< 2−100,优于我们的采样器。我们能够在一定程度上以牺牲统计质量为代价实现更快的采样速度,但我们采 样器的统计质量仍然足够好,可以应用于基于LWE/RLWE的构造方法中。

在CRYPTO 2010上,佩克特提出了一种使用累积分布表(CDT)的高效高 斯采样器(记为PKT)[18]。我们实现了该方法,基准测试显示,当 σ< 10⁶时, PKT效率极高且远快于其他所有方法,但当 σ较大时,它可能变得非常慢,因 此更适用于处理较小 σ的分布。在比较采样速度时,我们未将生成预计算表所 花费的时间计入表2中。

杜卡斯等人在CRYPTO 2013上提出了一种采样算法,该算法在时间和内存之间提供 了更好的权衡(记为DDLL)[9]。它能够无需使用预计算表即可高效采样。我们实现了DDLL,当 σ较大时,它比其他所有 采样器(除我们的外)都快,而我们的采样器在 σ> 10⁸时速度快一倍。需要注意 的是,DDLL消耗的内存比我们的采样器少,因此在资源受限的设备上更为适用。

Knuth‐Yao算法(记为KY)[12]能够高效地从高斯分布中进行采样。根据[5],他们的KY实现分别在 σ= 10、32、1000和 1.6 · 10⁵时输出近似580万、490万、320万和120万样本/秒。然而,当 σ= 1.6·10⁵时,KY消耗的内存多出 424倍,但在[5],中仅比ziggurat采样器快4.26%,其中他们的ziggurat实现在 我们性能分析下使用30.57 MB内存处理2048个样本。我们采用另一种KY实现 并在相同环境中测试以验证其结果。当 σ= 10³时,它输出785万样本/秒,但 消耗超过200 MB内存。当 σ= 10⁴时,由于内存消耗过大,进程被操作系统终 止。

开发适用于大标准差的高效采样器的重要性在于,各种构造方法需要从此 类分布中进行采样。对于同态加密等构造方法,需要使用噪声淹没技术来保护 电路等的隐私与安全。然而,当前的各种采样器无法高效处理大标准差。我们的高效采样器解决了这一问题,这对于这些构造方法的效率和实用性至关重要。

我们公平地实现了 [9,18]以测试其性能。对于 [5]的实现,我们使用的是 论文中提供的版本。所有实现均在相同的机器上进行测试,使用相同的编译标 志进行编译,执行相同次数,并在表2中报告平均性能。采样速度以每秒百万样 本数给出。生成预计算表所花费的时间以秒为单位。

表2。 我们的采样器与相关工作的性能比较

标准偏差 本工作 离散 zigguart([5]) PKT([18]) DDLL([9])
采样速度 生成 CDT(秒) 采样速度
10² 2.99 1.67 1.11
10³ 3.02 1.61 1.12
10⁴ 2.97 1.52 1.14
10⁵ 2.99 1.46 1.09
10⁶ 2.95 1.25 1.12
10⁷ 2.92 1.17 1.22
10⁸ 2.93 1.04 1.11

我们可以看到,当标准差为> 10⁴时,我们的采样器比[5,9,18]高效得多。众所周知,噪声注入使用大得多的标准差比 10⁴,更小,因此我们的采样器具有优势。此外,我们的采样器和 DDLL在采样之外不需要额外的预计算。在采样操作之前,[5,18]首先需要分 别计算zigurat表和CDT。这会耗费额外的时间,效率较低。

4 应用:优化RLWE密钥交换和后量子TLSCiphersuite

4.1 优化AKE15

瓶颈与我们的方法。AKE15[22]是HMQV的RLWE变体。它具有相互认证性, 并在Bellare‐Rogaway模型下被证明是安全的,且增强了对弱完美前向保密性 的支持。通信双方无需加密或签名消息。该协议的一个主要瓶颈是从高斯分布中进行采样。根据[22],,采样操作在某些参数选择下可能占总运行时间的> 60 %。在他们的实现中,长期静态密钥、多项式 c和 d的生成采用PKT采样器。临时密钥的生成和共享会话密钥的计算则采用DDLL采样器。正如我们在第3.4节中讨论的那样,当 σ较大时,DDLL采样器的效率低于我们的采样器,因此 我们用自己的采样器替换DDLL采样器以从DZn和β中进行采样,从而减少总运 行时间。在一次完整的密钥交换执行过程中,需要在线从DZn和β进行3次采样操 作:其中2次用于临时密钥生成,1次用于共享密钥计算,因此我们的采样器可 以提高其实现的效率。从DZn、α和DZn以及γ的采样仍使用原始工作中的PKT采 样器。协议的参数选择保持不变,我们在表3中回顾如下:

表 3. AKE15 协议的参数选择

参数 选择 安全 (位) n α γ β 比特长度 of q
I 80 2048 3.3971 61.371 8.7 · 10² 40
II 80 2048 3.3971 61.371 4.56 · 10⁸ 78
III 128 4096 3.3972 56.495 1.78 · 10⁶ 63
IV 128 4096 3.3972 56.495 3.82 · 10¹⁵ 125
V 192 4096 3.3972 56.495 2.33 · 10¹¹ 97
VI 256 4096 3.3972 56.495 9.12 · 10⁸ 81

实现与性能。 我们报告了原始AKE15的初步实现以及我们的优化版本的平均运 行时间。我们的实现在128位精度下使用NTL 9.6.2、MPFR 3.1.3和GMP 6.1.0库。AKE15的实现执行了1,000次,并采用与第3.3节相同的测试环境。平 均运行时间如表4所示:

表4. 原始与优化AKE15协议的采样与运行时间

参数选择 DDLL (ms) 本工作 (ms) 采样加速比 原始AKE15 运行时间(毫秒) 优化AKE15 运行时间(毫秒) 运行时间 加速比
I 0.312 0.355 0.88倍 2.993 4.687 0.64倍
II 1.635 0.694 2.36倍 11.673 10.361 1.13倍
III 1.269 0.721 1.76倍 9.963 9.132 1.09倍
IV 2.591 1.397 1.85倍 26.741 21.964 1.22倍
V 2.514 1.394 1.80倍 22.865 21.457 1.07倍
VI 3.349 1.394 2.40倍 24.887 21.064 1.18倍

通过采用我们的采样器,对于最后5个参数选择,该协议的总运行时间实现 了近1.14倍的加速比。我们未能优化参数选择I,因为当 σ不够大时,我们的采 样器性能不如DDLL,从而导致了减速。

4.2 实用的后量子TLS密码套件

引言。 TLS旨在确保在由攻击者控制的网络中进行安全通信,为两个通信方提 供保密性和数据完整性。它已在现实世界中广泛部署,占总网页流量的50%以 上。TLS支持多种用于密钥交换、认证、加密和消息完整性检查的算法。由于 TLS至关重要,并且我们正在进入量子计算时代,我们认为TLS也应采用后量 子密码原语。然而,最新版本TLS中的大多数密码套件未能满足这一需求,因 为现有的密钥交换和签名算法均可被量子计算机攻破。

我们的后量子TLS密码套件。 我们将优化AKE15集成到TLS v1.2中,从而形成 我们的后量子TLS密码套件。我们详细给出了该密码套件的密码学原语组合:

密钥交换与认证 :我们集成优化AKE15以实现抗量子密钥交换和认证,不再 需要抗量子不安全的数字签名。参数选择遵循表3。
认证加密 :我们选择 AES‐128‐GCM,它为数据提供机密性、完整性和真实性保障。
哈希函数 :我们选择SHA‐256。我们的选择遵循NIST提出的弃用SHA‐1的原则。

实现和运行时间。 我们使用mbedTLS 1.3.10、WinNTL 9.6.2、MPFR 3.1.1 和MPIR 2.6.0来实现我们的密码套件。测试程序模拟客户端与服务器之间的 TLS会话。服务器在本地主机的端口443上监听,客户端与本地服务器通信。我 们测量会话初始化和握手的运行时间。测试程序在以下环境中运行:

联想ThinkCentre M8500t,配备3.6 GHz 英特尔酷睿 i7‐4790处理器和8 GB 内存, 运行Windows 7 SP1 64位版本。测试程序使用Visual Studio 2010编译,并启用 优化标志,单核执行1000次。针对80、128、192和256位安全的参数选择,平均耗 时分别为24.417 ms、51.224 ms、123.443 ms和98.842 ms,密钥交换消息的通 信开销分别为33.125 KB、102.25 KB、312.25 KB和264.5 KB。在我们的密码套件 中,大部分时间消耗在发送/接收公钥和密钥交换消息上,因为它们比标准TLS大得 多。这可能是我们密码套件的一个瓶颈。

比较。 我们将标准TLS中一些密码套件的性能与我们在IEEE S&P 2015提出的后量子TLS密 码套件以及我们的工作进行了比较。在某些情况下,我们的密码套件更快,但在其他情况下 较慢。

标准TLS v1.2 :我们选择两个标准TLS密码套件:0x9F(1024位DH+2048‐位 RSA)和0xC030(椭圆曲线secp521r1+2048‐位RSA)。测试环境和测试流程与 第4.2节相同。这两个密码套件的运行时间分别为30.959毫秒和49.742毫秒。作为 对比,我们的80位参数选择I比密码套件0x9F更快,256位参数选择VI比密码套件 0xC030更慢。

BCNS15 :本工作提出了一种面向128位安全的非认证后量子密钥交换的实现, 并将其集成到TLS协议中。我们使用[8]中的代码实现了客户端/服务器端测试 程序,并测试了以下密码套件:RLWE‐RSA‐AES128‐GCM‐SHA256 和 RLWE‐ECDSA‐AES128‐GCM‐SHA256。测试环境与第3.3节相同。对于第一 个密码套件,服务器采用自签名的3072位RSA证书,平均执行时间为44.536 ms。对于第二个密码套件,服务器采用基于secp26k1曲线的自签名 ECDSA证书,平均执行时间为41.539 ms。我们的后量子TLS密码套件在相同 的128位安全级别下运行较慢,平均运行时间为51.224 ms。与本工作相比,我 们的密码套件通信开销更大(约10 KB)。另一个区别是,我们的密码套件可 实现相互认证,而本工作仅对服务器进行认证。此外,我们使用了不同的库和 操作系统进行测试,因此难以直接且公平地比较。我们认为他们的密码套件性能更优、通信成本更低,但我们的方案更接近一个完整的后量子TLS密码套件。

5 结论

本文中,我们基于zigzag采样算法提出了一种更快的离散高斯采样器。我们采 用了多种优化技术来改进该采样器,使其在计算效率方面具有优势。我们证明 了由该采样器生成的分布与离散高斯分布之间的统计距离非常小,因此我们的 采样器适用于基于格的密码学。我们还提供了与其他几种相关采样器的优化实现和比 较。结果表明,我们的采样器具有很高的计算效率,特别是当 σ较大时。这可 以有益于使用噪声淹没技术的构造方法(例如,同态加密)。我们还给出了两 个应用:第一个是优化基于RLWE的认证密钥交换协议。在主要参数选择下, 该协议的总运行时间实现了1.14倍的加速比。另一个应用是我们提出了实用的 后量子TLS密码套件。该密码套件的性能接近标准TLS v1.2密码套件和 BCNS15。我们相信,我们的采样器和后量子TLS密码套件将会有进一步的优化 和更多应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值