基于格的数字签名算法:BLISS(Bimodal Lattice Signature Scheme)
字数 1953 2025-10-31 12:28:54
基于格的数字签名算法:BLISS(Bimodal Lattice Signature Scheme)
题目描述
BLISS(Bimodal Lattice Signature Scheme)是一种基于格困难问题的后量子数字签名算法,其安全性依赖于环上最短向量问题(Ring-SVP)的难度。与传统签名算法(如RSA或ECDSA)不同,BLISS能抵抗量子计算机攻击,同时通过优化设计(如拒绝采样和稀疏向量)实现高效的签名生成。题目要求:解释BLISS的密钥生成、签名和验证过程,重点分析其如何利用格基陷门和概率技巧保障安全性。
解题过程
BLISS的核心思想是:通过格基陷门生成一对公私钥,签名时使用私钥构造一个满足特定关系的短向量,验证时通过公钥检查该向量是否满足格上的线性约束。下面逐步分解其流程。
1. 密钥生成
- 步骤1:参数设置
选择环 \(R = \mathbb{Z}[x]/(x^n+1)\),其中 \(n\) 是2的幂(如512)。固定整数 \(q\)(模数)和 \(\kappa\)(安全参数)。私钥是环上的短多项式向量。 - 步骤2:生成陷门格基
私钥 \(sk = (s_1, s_2)\),其中 \(s_1, s_2 \in R\) 的系数服从离散高斯分布,且满足 \(s_1 + s_2 \cdot a \approx 0 \mod q\)(\(a\) 是公钥的一部分)。公钥 \(pk = (a, t)\),其中 \(a\) 是随机环元素,\(t = a \cdot s_1 + s_2 \mod q\)。
关键点:私钥 \((s_1, s_2)\) 构成格 \(\Lambda = \{ (x,y) \in R^2 \mid a \cdot x + y \equiv 0 \mod q \}\) 的一组短基,用于后续签名。
2. 签名过程(含拒绝采样)
假设待签名消息为 \(m\),哈希函数输出 \(c = H(m) \in R\)。
- 步骤1:生成候选签名
- 随机采样 \(y_1, y_2 \in R\),其系数服从离散高斯分布。
- 计算 \(u = a \cdot y_1 + y_2 \mod q\),然后计算 \(c = H(\lfloor u \rceil_d, m)\),其中 \(\lfloor u \rceil_d\) 表示对 \(u\) 的系数进行精度 \(d\) 的取整(为了压缩签名大小)。
- 步骤2:构造签名向量
计算 \(z_1 = y_1 + (-1)^b \cdot s_1 \cdot c\),\(z_2 = y_2 + (-1)^b \cdot s_2 \cdot c\),其中 \(b\) 是随机比特(用于双模化减少签名长度)。 - 步骤3:拒绝采样
以概率 \(\min\left(1, \frac{\exp(-\|z\|^2/2\sigma^2)}{\exp(-\|\mathbf{y}\|^2/2\sigma^2)}\right)\) 接受签名 \((z_1, z_2, c)\),否则重试。这一步确保签名分布独立于私钥,防止信息泄露。 - 步骤4:稀疏化优化
BLISS通过选择稀疏的私钥(\(s_1, s_2\) 的系数多为0)进一步压缩签名大小。
3. 验证过程
验证者收到 \((z_1, z_2, c)\) 后:
- 步骤1:重构承诺
计算 \(u' = a \cdot z_1 + z_2 \mod q\),然后计算 \(c' = H(\lfloor u' \rceil_d, m)\)。 - 步骤2:检查短向量条件
验证 \(\| (z_1, z_2) \|\) 是否小于预设阈值(确保是短向量)。 - 步骤3:比较哈希值
若 \(c' = c\) 且短向量条件满足,则签名有效。
安全性原理:攻击者无法在不知陷门的情况下构造满足 \(a \cdot z_1 + z_2 \equiv u \mod q\) 的短向量 \((z_1, z_2)\)。
4. 关键技术与安全性分析
- 拒绝采样:避免签名向量泄露私钥的分布信息。
- 双模化(Bimodal):随机选择 \(b \in \{0,1\}\) 增加签名空间,降低被攻击概率。
- 格困难问题:伪造签名需解决Ring-SVP,目前无已知量子算法能高效破解。
通过以上步骤,BLISS在保障后量子安全的同时,实现了比传统格签名更短的签名长度和更高的效率。