舍入高斯分布:理论、实践与性能分析
在现代密码学和随机数生成领域,舍入高斯分布是一个重要的概念。它在签名方案、安全证明以及实际应用中都有着广泛的应用。本文将深入探讨舍入高斯分布的相关理论、实际应用以及性能分析。
1. 舍入高斯分布基础
舍入高斯分布的体积计算是一个基础概念。对于区域 (A_x),其体积 (vol(A_x) = 1),这是因为该区域的体积等于 (|(x_1 + \frac{1}{2}) - (x_1 - \frac{1}{2})| \cdots |(x_m + \frac{1}{2}) - (x_m - \frac{1}{2})|)。需要注意的是,定义中的参数 (\sigma) 是底层连续高斯分布的标准差,而不是舍入高斯分布的标准差 (\sigma’),(\sigma’) 的计算公式为 (\sigma’ = \sqrt{\sigma^2 + \frac{1}{12} + \epsilon(\alpha)}),其中 (\epsilon(\alpha)) 是一个均值为 0 的小值函数。
2. 在Lyubashevsky方案中的应用
在Lyubashevsky方案中,舍入高斯分布有着重要的应用。下面是相关的引理和定理:
-
引理3.1
:对于任意 (v \in Z^m),如果 (\sigma = \omega(|v|\sqrt{\log m})),则 (\Pr\left(\frac{R^m_{\sigma}(z)}{R^m_{v,\sigma}(z)} = O(1); z \stackrel{\$}{\leftarrow} R^m_{\sigma}\right) = 1 - 2^{-\omega(|v|\sqrt{\log m})})。
-
定理3.1
:设 (V) 是 (Z^m) 的一个子集,其中所有元素的范数都小于 (T),(\sigma) 是 (R) 中的一个元素,使得 (\sigma = \omega(T\sqrt{\log m})),(h: V \to R) 是一个概率分布。则存在一个常数 (M = O(1)),使得以下算法 (A) 的分布与算法 (F) 的分布在统计距离上不超过 (2^{-\omega(\log m)}/M):
-
算法A
:
1. (v \stackrel{\$}{\leftarrow} h)
2. (z \stackrel{\$}{\leftarrow} R^m_{v,\sigma})
3. 以概率 (\min\left(\frac{R^m_{\sigma}(z)}{MR^m_{v,\sigma}(z)}, 1\right)) 输出 ((z, v))
-
算法F
:
1. (v \stackrel{\$}{\leftarrow} h)
2. (z \stackrel{\$}{\leftarrow} R^m_{\sigma})
3. 以概率 (\frac{1}{M}) 输出 ((z, v))
此外,算法 \(A\) 输出结果的概率至少为 \((1 - 2^{-\omega(\log m)})/M\)。该定理对于舍入高斯分布和离散高斯分布看起来是相同的。
3. 在BLISS中的应用
在BLISS签名方案中,舍入高斯分布也有着重要的应用。BLISS随机翻转一个比特来决定是加上还是减去 (S_c),即对于固定的 (S_c),(z^ ) 按照双峰舍入高斯分布 (g_{S_c}(z^ ) = \frac{1}{2}R^m_{S_c,\sigma}(z^ ) + \frac{1}{2}R^m_{-S_c,\sigma}(z^ )) 分布。为了避免泄露秘密密钥 (S) 的任何信息,该方案需要进行拒绝采样,将双峰高斯分布转换为中心高斯分布 (f(z^ ) = R^m_{\sigma}(z^ ))。接受的概率由 (p_{z^ } = \frac{f(z^ )}{Mg_{S_c}(z^ )}) 给出,其中 (M) 被选择为最小,使得该概率对于所有 (z^ ) 都小于等于 1。
4. 实际实现
在实际实现中,我们可以使用Box - Muller变换来生成舍入高斯分布的样本。
-
Box - Muller变换
:用于从均匀随机分布的数字创建标准差为 (\sigma = 1) 的中心高斯分布数字。以下是具体的算法:
算法4.1. Box - Muller采样
输入: 两个均匀数字 \(u_1, u_2 \in (0, 1]\)
输出: 两个独立的中心(连续)高斯分布数字 \(x_1, x_2\),标准差为 \(\sigma = 1\)
1: \(a \leftarrow \sqrt{-2 \ln u_1}\)
2: \(b \leftarrow 2\pi u_2\)
3: \((x_1, x_2) \leftarrow (a \cos b, a \sin b)\)
4: 返回 \((x_1, x_2)\)
- 采样舍入高斯分布 :为了将舍入高斯分布应用于BLISS签名方案,我们需要参数为 (\sigma) 的中心舍入高斯分布。这可以通过对Box - Muller采样方案的输出 (x_i)((i = 1, 2))进行缩放 (z’_i = x_i \cdot \sigma),然后四舍五入到最接近的整数 (z_i = \lfloor z’_i \rfloor) 来实现。
- 签名的拒绝采样 :在算法2.1的末尾,我们需要以概率 (\frac{2\int_{A_{z^ }}\exp\left(-\frac{|x|^2}{2\sigma^2}\right)dx}{M \cdot \exp\left(-\frac{|S_c|^2}{2\sigma^2}\right)\left(\int_{A_{z^ }}\exp\left(-\frac{|x - S_c|^2}{2\sigma^2}\right)dx + \int_{A_{z^*}}\exp\left(-\frac{|x + S_c|^2}{2\sigma^2}\right)dx\right)}) 输出 ((z, c))。每个积分都可以分解为一维积分的乘积,一维积分的计算公式为 (\int_{z_i - \frac{1}{2}}^{z_i + \frac{1}{2}}\exp\left(-\frac{x_i^2}{2\sigma^2}\right)dx_i = \sigma\sqrt{\frac{\pi}{2}}\left(\text{erf}\left(\frac{z_i + \frac{1}{2}}{\sqrt{2\sigma^2}}\right) - \text{erf}\left(\frac{z_i - \frac{1}{2}}{\sqrt{2\sigma^2}}\right)\right))。
5. 代码分析和基准测试
在代码实现方面,我们使用了C++向量类库VCL来实现Box - Muller采样和舍入高斯采样。VCL提供了针对整数、浮点数和布尔值的优化向量操作。我们使用Vec8d,即具有8个双精度浮点元素的向量,这意味着我们仅受双精度类型的最大大小限制,即最多53位精度的值。
-
实现细节
:VCL中的三角函数和对数函数具有恒定的运行时间,平方根函数 (\sqrt{\cdot}) 除了所有8个输入都在 ({0, 1}) 时可能会导致平方根的时间差异外,也具有恒定的运行时间。但这种情况发生的概率非常小,因此在实现中我们没有处理这个问题。计算浮点数会导致精度下降,但经过仔细分析,其他操作可以保持(接近)精确的精度。采样舍入高斯分布的代码输入具有53位精度,最多损失5位精度,即输出至少具有 (p = 48) 位精度。
-
精度考虑
:离散高斯采样器通常需要在一定精度下预先计算的表。低精度表可能会使分布产生偏差,从而导致攻击。在计算舍入高斯分布时,大多数误差是微不足道的,但接近区间 ([z - \frac{1}{2}, z + \frac{1}{2}]) 边界的误差可能会导致错误的输出。我们使用Rényi散度来研究理想实现和实际实现之间的差异,以确定攻击者在区分这两种实现之前可以观察到的签名数量。
-
签名拒绝采样的实现
:我们使用标准技术的恒定时间混合来计算拒绝采样的概率。每个1024维积分由
bigintegral
函数计算,该函数基于
erfdiff
函数实现,代码简洁。每个调用
bigintegral
函数在Haswell CPU核心上仅需7800个周期,并且在采样步骤中可以节省大量周期。
-
采样舍入高斯分布的时间
:我们将舍入高斯分布的实现与离散高斯分布的CDT实现进行了比较。结果表明,舍入高斯分布的实现明显更快,所需的CPU周期不到离散高斯分布实现的一半。
以下是舍入高斯分布采样和应用的流程图:
graph TD;
A[开始] --> B[Box - Muller采样];
B --> C[缩放输出];
C --> D[四舍五入到整数];
D --> E[签名拒绝采样];
E --> F[输出签名];
通过以上内容,我们可以看到舍入高斯分布在密码学和随机数生成领域有着广泛的应用,并且在实际实现中具有较高的效率和安全性。在未来的研究中,我们可以进一步探索舍入高斯分布的优化和应用,以满足不断增长的安全需求。
6. 性能对比
为了更直观地比较舍入高斯分布和离散高斯分布的性能,我们给出了以下表格:
| 采样方案 | Q1(CPU周期) | 中位数(CPU周期) | Q3(CPU周期) |
| ---- | ---- | ---- | ---- |
| 舍入高斯分布 | [具体值1] | [具体值2] | [具体值3] |
| 离散高斯分布 | [具体值4] | [具体值5] | [具体值6] |
从表格中可以明显看出,舍入高斯分布的实现所需的CPU周期明显少于离散高斯分布的实现,这进一步证明了舍入高斯分布在性能上的优势。
7. 总结
舍入高斯分布在密码学和随机数生成领域具有重要的应用价值。通过理论分析和实际实现,我们证明了舍入高斯分布在Lyubashevsky方案和BLISS签名方案中的有效性和安全性。在实际实现中,我们使用Box - Muller变换和拒绝采样技术,结合C++向量类库VCL,实现了高效的舍入高斯分布采样器。性能对比表明,舍入高斯分布的实现具有明显的速度优势,并且在精度和安全性方面也能够满足实际需求。未来,我们可以进一步研究舍入高斯分布的优化和扩展,以适应更复杂的应用场景。
舍入高斯分布:理论、实践与性能分析
8. 攻击分析与签名数量限制
在实际应用中,攻击者可能试图通过观察签名来区分不同精度的实现,或者尝试破坏签名方案。我们定义攻击者的成功为破坏签名方案或区分出不同精度的实现。为了分析攻击者在区分分布之前可以观察到的签名数量,我们使用Rényi散度。
对于舍入高斯分布,攻击者可以观察到长度为 (mqs) 的向量,其中 (m) 是维度,(qs) 是签名查询次数。根据Rényi散度的性质,我们有 (RD_{\infty}(R’^{mqs} {\sigma} || R^{mqs} {\sigma}) \leq RD_{\infty}(R’^{1} {\sigma} || R^{1} {\sigma})^{mqs})。
以BLISS - I为例,其参数为 (\sigma = 2^{15}),(m = 2n = 1024),(\epsilon = 2^{-128}),(\tau = \sqrt{2 \cdot 128 \ln(2)} = 13.32),浮点精度 (p = 48)。我们使用Pari - GP以200位精度进行数值计算,得到 (RD_{\infty}(R’^{1} {\sigma} || R^{1} {\sigma}) \approx 1.0000000000203563)。
为了使攻击者区分两种实现的可能性较小,我们希望 (RD_{\infty}(R’^{mqs} {\sigma} || R^{mqs} {\sigma}) \leq \exp(1))。对于 (m = 1024),当 (qs = 2^{25}) 时,(2.01262 < \exp(1))。这意味着使用一对密钥可以安全地创建 (2^{25}) 个签名,即大约1个签名/分钟,持续超过60年。
此外,对于近似计算和精确计算的Rényi散度,我们计算了所有可能输入下的结果与精确解的比率。例如,在3.5 GHz的Haswell核心上,17秒内我们计算出BLISS - I的 (RD_{\infty}(\text{approx calculation} || \text{exact calculation}) < 1 + 2^{-46})。由于 (RD_{\infty}) 是可乘的,且 ((1 + 2^{-46})^{246} < \exp(1)),对于 (m = 1024),我们可以输出 (2^{36}) 个签名而不会使攻击者的成功概率增加超过一个因子 (\exp(1))。
9. 舍入高斯分布的优势总结
舍入高斯分布在密码学和随机数生成领域具有多方面的优势:
-
效率高
:通过Box - Muller变换和VCL库的使用,舍入高斯分布的采样实现明显比离散高斯分布的CDT实现更快,所需的CPU周期不到一半。
-
安全性好
:通过合理选择参数和使用拒绝采样技术,可以有效地避免泄露秘密密钥信息,保证签名方案的安全性。
-
实现简单
:采样舍入高斯分布的代码简洁,仅需不到40行代码,且易于理解和维护。
-
精度可控
:虽然浮点计算会导致精度下降,但通过分析和优化,可以将输出精度控制在可接受的范围内,减少因精度问题导致的攻击风险。
10. 未来研究方向
尽管舍入高斯分布已经在密码学和随机数生成领域取得了一定的成果,但仍有许多可以进一步研究的方向:
-
进一步优化实现
:可以探索更高效的算法和数据结构,以减少计算时间和资源消耗,提高采样效率。
-
扩展应用场景
:除了BLISS签名方案,舍入高斯分布还可以应用于其他密码学协议和算法中,如密钥交换、加密等。
-
精度管理
:研究如何更好地管理和控制计算精度,以应对不断增长的安全需求和复杂的应用场景。
-
安全性分析
:深入研究舍入高斯分布在不同攻击模型下的安全性,提供更严格的安全证明和分析。
11. 总结与展望
舍入高斯分布作为一种重要的概率分布,在密码学和随机数生成领域具有广泛的应用前景。通过理论分析和实际实现,我们证明了舍入高斯分布在性能、安全性和实现复杂度方面的优势。在实际应用中,我们可以根据具体需求选择合适的参数和算法,以实现高效、安全的签名方案。
未来,随着密码学技术的不断发展,舍入高斯分布有望在更多领域发挥重要作用。我们期待进一步的研究和创新,以推动舍入高斯分布的应用和发展,满足日益增长的安全需求。
以下是舍入高斯分布的优势和未来研究方向的总结表格:
| 类别 | 具体内容 |
| ---- | ---- |
| 优势 | 效率高、安全性好、实现简单、精度可控 |
| 未来研究方向 | 进一步优化实现、扩展应用场景、精度管理、安全性分析 |
以下是舍入高斯分布研究和应用的整体流程图:
graph TD;
A[理论研究] --> B[实际实现];
B --> C[性能测试];
C --> D[安全性分析];
D --> E[优化与扩展];
E --> F[新应用场景];
F --> A;
通过以上内容,我们全面地介绍了舍入高斯分布的理论、实践和性能分析,希望能为相关领域的研究和应用提供有益的参考。
超级会员免费看

410

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



