基于格密码学的舍入高斯分布快速安全恒定时间采样
1. 引言
后量子密码学中,基于格的密码学是一个有前景的候选方案。从应用角度看,它的一个关键优势是能基于格假设构建高效的签名和加密/密钥交换方案,这两个基本要素在许多应用中都不可或缺,且使用格密码学能实现代码复用,仅依赖一种密码学难题假设。而其他成熟的后量子密码学候选领域,往往只能构建高效且可靠的签名方案或加密/密钥交换方案。
在基于格的签名方案中,目前最有效的是 BLISS(双峰格签名方案),它由 Ducas、Durmus、Lepoint 和 Lyubashevsky 设计。BLISS 是少数已有生产级实现的后量子方案之一,其改进版 BLISS - b 可在开源 IPsec Linux 库 strongSwan 中使用。
BLISS 基于 Lyubashevsky 的签名方案,该方案引入了拒绝采样,使签名分布与所使用的秘密密钥无关。在这些方案的基本版本中,会将离散高斯向量添加到依赖于秘密密钥的向量上,得到的向量遵循由依赖于秘密密钥的向量偏移的离散高斯分布。为避免泄露秘密密钥,会执行拒绝步骤,确保输出分布与秘密密钥无关,即输出再次遵循中心离散高斯分布。
然而,高效地从离散高斯分布中采样并非易事。近年来,虽有许多关于离散高斯高效采样例程的研究,但都未实现恒定时间采样。2016 年的 CHES 会议上,有研究表明这些采样方法会使 BLISS 易受缓存攻击,不到 5000 个签名就能恢复秘密密钥。一些实现恒定时间离散高斯采样器的直接方法,对签名方案的效率影响较大,使其难以实际应用。还有一种启发式方法试图使攻击复杂化,但并未真正修复漏洞。
为解决这些问题,本文提出用舍入高斯分布替代离散高斯分布。舍入高斯分布具有与离散高斯分布类似的优点,即(略微)偏移的分布与中心分布相对接近。本文证明了在 Lyubashevsky 方案和 BLISS 中用舍入高斯分布替代离散高斯分布是安全的,且拒绝率相同。
2. 预备知识
- 向量和矩阵的表示与运算 :向量作为列向量,用小写粗体字母表示;矩阵用大写粗体字母表示。对于向量 $\mathbf{a} = (a_1, a_2, \ldots, a_n) \in \mathbb{R}^n$,欧几里得范数定义为 $|\mathbf{a}| = \sqrt{\sum_{i = 1}^{n} a_i^2}$,$\infty$-范数定义为 $|\mathbf{a}| {\infty} = \max (|a_1|, |a_2|, \ldots, |a_n|)$,汉明重量 $wt(\mathbf{a})$ 是 $\mathbf{a}$ 中非零位置的数量。对于两个向量 $\mathbf{a} = (a_1, a_2, \ldots, a_n)$ 和 $\mathbf{b} = (b_1, b_2, \ldots, b_n)$,内积定义为 $\langle\mathbf{a}, \mathbf{b}\rangle = \sum {i = 1}^{n} a_i b_i$。
-
拒绝采样引理 :设 $V$ 是任意集合,$h : V \to \mathbb{R}$ 和 $f : \mathbb{Z}^m \to \mathbb{R}$ 是概率分布。如果 $g_v : \mathbb{Z}^m \to \mathbb{R}$ 是由 $v \in V$ 索引的概率分布族,且满足 $\exists M \in \mathbb{R} : \forall v \in V : Pr[Mg_v(\mathbf{z}) \geq f(\mathbf{z}); \mathbf{z} \stackrel{\$}{\leftarrow} f] \geq 1 - \varepsilon$,则以下算法 $A$ 的输出分布与算法 $F$ 的输出分布在统计距离 $\varepsilon/M$ 内:
-
算法 $A$
:
- $v \stackrel{\$}{\leftarrow} h$
- $\mathbf{z} \stackrel{\$}{\leftarrow} g_v$
- 以概率 $\min \left(\frac{f(\mathbf{z})}{Mg_v(\mathbf{z})}, 1\right)$ 输出 $(\mathbf{z}, v)$
-
算法 $F$
:
- $v \stackrel{\$}{\leftarrow} h$
- $\mathbf{z} \stackrel{\$}{\leftarrow} f$
-
以概率 $1/M$ 输出 $(\mathbf{z}, v)$
此外,算法 $A$ 输出结果的概率至少为 $(1 - \varepsilon)/M$。
-
算法 $A$
:
-
离散高斯分布 :
- 连续高斯分布 :在 $\mathbb{R}^m$ 上,以 $v \in \mathbb{R}^m$ 为中心、标准差为 $\sigma$ 的连续高斯分布,对于 $x \in \mathbb{R}^m$,其(联合)密度为 $\rho_m^{v,\sigma}(x) = \left(\frac{1}{\sqrt{2\pi\sigma^2}}\right)^m e^{-\frac{|x - v|^2}{2\sigma^2}}$。当 $v = 0$ 时,简记为 $\rho_m^{\sigma}(x)$。
- 离散高斯分布 :在 $\mathbb{Z}^m$ 上,以 $v \in \mathbb{Z}^m$ 为中心、参数为 $\sigma$ 的离散高斯分布,对于 $x \in \mathbb{Z}^m$,定义为 $D_m^{v,\sigma}(x) = \frac{\rho_m^{v,\sigma}(x)}{\rho_m^{\sigma}(\mathbb{Z}^m)}$,其中 $\rho_m^{\sigma}(\mathbb{Z}^m) = \sum_{z \in \mathbb{Z}^m} \rho_m^{\sigma}(z)$。由于离散高斯分布中,大元素样本的概率可忽略不计,实际实现中会使用尾部截断 $\tau$,通常只对 $[-\tau\sigma, \tau\sigma]^m$ 内的整数进行采样,$\tau$ 常取 $\sqrt{2\lambda \ln 2}$,其中 $\lambda$ 是安全级别。
-
Lyubashevsky 的签名方案 :2012 年,Lyubashevsky 设计的签名方案使用一个系数较小的 $m \times n$ 矩阵 $S$ 作为秘密密钥,两个矩阵作为公钥:一个随机矩阵 $A \in \mathbb{Z}_q^{n\times m}$($m = 2n$)和 $n \times n$ 矩阵 $T = AS \bmod q$。签名时,签名者根据 $m$ 维离散高斯分布选取向量 $y$,计算 $c = H(Ay \bmod q, \mu)$($H$ 是哈希函数)和潜在签名向量 $z = Sc + y$。系统使用拒绝采样将 $z$ 的分布调整为中心离散高斯分布,以决定是否输出候选签名 $(z, c)$。
-
BLISS(双峰格签名方案) :BLISS 是 Lyubashevsky 签名方案的改进,签名更小且生成更快。其简化签名算法如下:
-
算法 2.1:使用矩阵的简化 BLISS 签名算法
- 输入 :消息 $\mu$,公钥 $A \in \mathbb{Z} {2q}^{n\times m}$,私钥 $S \in \mathbb{Z} {2q}^{m\times n}$
-
输出
:消息 $\mu$ 的签名 $(z, c)$
1. $y \leftarrow D_m^{\sigma}$
2. $c \leftarrow H(Ay \bmod 2q, \mu)$($c \in {0, 1}^n$,$wt(c) = \kappa$,$\kappa$ 为小常数)
3. 选择一个随机比特 $b \in {0, 1}$
4. $z \leftarrow y + (-1)^bSc$
5. 以概率 $\frac{1}{\sqrt{M \exp\left(-\frac{|Sc|^2}{2\sigma^2}\right) \cosh\left(\frac{\langle z, Sc\rangle}{\sigma^2}\right)}}$ 输出 $(z, c)$
BLISS 使用拒绝采样使输出 $z$ 的分布为中心高斯分布,签名算法一轮中大部分时间用于第一步生成 $m$ 个一维高斯样本,重复次数取决于 $M$ 和 $Sc$ 的大小。同时,为控制目标分布 $D_m^{\sigma}$ 和输入分布的重叠程度,需要对 $|Sc|$ 进行界定。定义了一个新的度量 $N_{\kappa}(X)$,对于任何整数 $\kappa$,$N_{\kappa} : \mathbb{R}^{m\times n} \to \mathbb{R}$ 定义为:$N_{\kappa}(X) = \max_{I\subset{1,\ldots,n},|I|=\kappa} \sum_{i \in I} \left(\max_{J\subset{1,\ldots,n},|J|=\kappa} \sum_{j \in J} W_{i,j}\right)$,其中 $W = X^T \cdot X \in \mathbb{R}^{n\times n}$。对于任何 $c \in {0, 1}^n$ 且 $wt(c) \leq \kappa$,有 $|Sc|^2 \leq N_{\kappa}(S)$,此上界使参数 $\sigma$ 比 Lyubashevsky 方案降低约 $\sqrt{\kappa}/2$ 倍。
-
算法 2.1:使用矩阵的简化 BLISS 签名算法
3. 舍入高斯拒绝采样
舍入高斯分布在基于拒绝采样的签名方案中的适用性是本文的重点。下面我们将详细介绍舍入高斯分布的定义,并证明它可以替代 Lyubashevsky 签名方案和 BLISS 中的离散高斯分布。
-
舍入高斯分布的定义 :直观上,舍入高斯分布是将连续高斯分布的样本四舍五入到最接近的整数 $x_i$ 得到的。为计算整数 $x_i$ 处的概率,我们计算区间 $(x_i - \frac{1}{2}, x_i + \frac{1}{2}]$ 上的积分。
定义 3.1 :在 $\mathbb{Z}^m$ 上,以 $v \in \mathbb{Z}^m$ 为中心、参数为 $\sigma$ 的舍入高斯分布,对于 $x \in \mathbb{Z}^m$ 定义为:
$R_m^{v,\sigma}(x) = \int_{A_x} \rho_m^{v,\sigma}(s)ds = \int_{A_x} \left(\frac{1}{\sqrt{2\pi\sigma^2}}\right)^m \exp\left(-\frac{|s - v|^2}{2\sigma^2}\right) ds$
其中,$A_x$ 表示由 $\left[x_1 - \frac{1}{2}; x_1 + \frac{1}{2}\right] \times \cdots \times \left[x_m - \frac{1}{2}; x_m + \frac{1}{2}\right]$ 定义的区域。
为了简化比较并证明舍入高斯分布可以替代离散高斯分布,我们紧密遵循相关文献的表述和结构。主要区别在于,舍入高斯分布的定义需要对长度为 1 的区间进行积分,而离散高斯分布的定义需要除以所有整数处的概率质量。我们需要为舍入高斯分布证明与离散高斯分布类似的引理,虽然最终结果相似,但分析过程比离散高斯分布复杂得多,因为需要处理积分的边界问题。
下面是舍入高斯分布和离散高斯分布在签名方案应用中的对比表格:
| 分布类型 | 定义特点 | 安全分析复杂度 | 采样难度 | 在签名方案中的应用 |
| ---- | ---- | ---- | ---- | ---- |
| 离散高斯分布 | 基于连续高斯分布,通过除以所有整数处的概率质量定义 | 相对简单 | 难以实现恒定时间采样 | 传统基于格的签名方案常用 |
| 舍入高斯分布 | 通过对连续高斯分布样本四舍五入,计算区间积分定义 | 较为复杂,需处理积分边界 | 可高效且恒定时间采样 | 有望替代离散高斯分布 |
舍入高斯分布在签名方案中的应用流程如下:
graph TD;
A[开始] --> B[采样连续高斯分布];
B --> C[四舍五入到整数];
C --> D[计算舍入高斯分布概率];
D --> E[应用于签名方案拒绝采样];
E --> F[输出签名];
综上所述,舍入高斯分布在基于格的签名方案中具有潜在的应用价值,虽然其安全分析和定义相对复杂,但在采样效率和安全性方面有一定优势。后续我们将进一步探讨其在签名方案中的具体应用和安全性证明。
4. 舍入高斯分布的采样与实现
舍入高斯分布的采样通过对连续高斯分布进行采样并将结果四舍五入为整数来完成。其中,Box - Muller 方法是一种从均匀随机数开始高效计算连续高斯样本的方式,并且所有生成舍入高斯样本的步骤都能高效且轻松地在恒定时间内完成。
-
Box - Muller 方法
:该方法可以从两个独立的均匀分布随机变量 $U_1$ 和 $U_2$ 生成两个独立的标准正态分布随机变量 $Z_1$ 和 $Z_2$。具体公式如下:
- $Z_1 = \sqrt{-2\ln U_1} \cos(2\pi U_2)$
- $Z_2 = \sqrt{-2\ln U_1} \sin(2\pi U_2)$
通过上述公式,我们可以得到连续高斯分布的样本,再将其进行四舍五入操作,就可以得到舍入高斯分布的样本。
- 实现对比 :我们针对 BLISS - I 参数集实现了一个恒定时间的舍入高斯分布采样器,并将其与基于累积分布表(CDT)的采样器进行了比较。CDT 采样器使用预先计算的大表来加速采样,但在 2016 年的 CHES 会议上已被证明易受攻击。我们的实验结果表明,舍入高斯分布采样器比 CDT 采样器快两倍以上。并且,舍入高斯分布采样器无需预先计算的表,代码库小,实现也极其简单。
以下是舍入高斯分布采样的具体步骤:
1. 生成两个独立的均匀分布随机数 $U_1$ 和 $U_2$。
2. 使用 Box - Muller 方法计算连续高斯分布的样本 $Z_1$ 和 $Z_2$。
3. 将 $Z_1$ 和 $Z_2$ 四舍五入为整数,得到舍入高斯分布的样本。
5. 舍入高斯分布的安全性分析
我们的第二个理论贡献是证明使用我们基于 Box - Muller 实现采样的舍入高斯分布是安全的。为了进行安全性分析,我们从以下几个方面进行了详细研究:
- 统计距离和 Rényi 散度 :我们使用统计距离和 Rényi 散度来研究(完美)舍入高斯分布和有限精度 $p$ 实现之间的差异。统计距离可以衡量两个概率分布之间的接近程度,而 Rényi 散度则提供了更丰富的信息,用于比较不同分布的差异。
- 渐近结果比较 :我们比较了使用不同度量(统计距离和 Rényi 散度)得到的渐近结果。通过这种比较,我们可以更好地理解舍入高斯分布在不同情况下的性能。
- 基于 BLISS 参数的实例计算 :我们针对 BLISS 参数和我们的 Box - Muller 实现所达到的精度进行了计算,以得出每对密钥允许的签名数量的界限。这有助于我们确定在实际应用中,舍入高斯分布在保证安全性的前提下能够生成的签名数量。
舍入高斯分布安全性分析的流程如下:
graph TD;
A[开始] --> B[定义统计距离和 Rényi 散度];
B --> C[计算完美舍入高斯分布和有限精度实现的差异];
C --> D[比较不同度量的渐近结果];
D --> E[基于 BLISS 参数实例计算];
E --> F[得出允许的签名数量界限];
F --> G[结束];
6. 结论
本文提出了在基于拒绝采样的格签名方案(如 BLISS 或 Lyubashevsky 的签名方案)中使用舍入高斯分布替代离散高斯分布的方法。我们的主要贡献包括:
-
理论证明
:证明了在这些方案中用舍入高斯分布替代离散高斯分布是安全的,且拒绝率相同。
-
高效实现
:提出了一种基于 Box - Muller 方法的恒定时间舍入高斯分布采样器,该采样器比基于 CDT 的采样器快两倍以上,并且无需预先计算的表,代码库小,实现简单。
-
安全性分析
:通过统计距离和 Rényi 散度对舍入高斯分布的安全性进行了详细分析,得出了每对密钥允许的签名数量的界限。
舍入高斯分布在基于格的签名方案中具有显著的优势,它不仅解决了离散高斯分布采样难以实现恒定时间的问题,还提高了采样效率和安全性。未来,我们可以进一步研究舍入高斯分布在其他密码学方案中的应用,以及如何优化其实现以提高性能。
以下是离散高斯分布和舍入高斯分布的综合对比表:
| 特性 | 离散高斯分布 | 舍入高斯分布 |
| ---- | ---- | ---- |
| 采样难度 | 难以实现恒定时间采样 | 可高效且恒定时间采样 |
| 安全分析复杂度 | 相对简单 | 较为复杂,需处理积分边界 |
| 代码实现 | 需要大的预计算表 | 无需预计算表,代码库小 |
| 性能 | 较慢 | 比 CDT 采样器快两倍以上 |
| 安全性 | 易受缓存攻击 | 可避免基于时间的侧信道攻击 |
通过以上对比可以看出,舍入高斯分布在多个方面都优于离散高斯分布,是基于格的签名方案中一种更具潜力的选择。
超级会员免费看

3949

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



