高效失败 - 停止签名方案及其应用
1. 引言
失败 - 停止签名在密码学领域有着重要的地位。传统的失败 - 停止签名存在签名和密钥长、计算量大等问题。不过,在电子支付系统的 3 阶段协议中,失败 - 停止签名展现出了独特的优势,客户使用其向银行签名请求时,无需担忧银行强大的计算能力会破解签名方案的底层假设。本文旨在提出一种复杂度与 RSA 签名相当的失败 - 停止签名方案。
2. 失败 - 停止签名概述
失败 - 停止签名方案具有以下特性:
- 一个公钥对应多个(与安全参数呈指数关系)私钥,不同私钥对同一消息签名大概率不同。
- 签名者仅知晓一个私钥,只能生成一种签名。通过公开测试函数的签名为有效签名。
- 伪造者即使有无限计算能力,也难以猜出签名者对新消息的签名。若伪造出有效签名,签名者能证明其为伪造,之后应停止使用该方案。
具体而言,失败 - 停止签名方案需满足以下三个要求:
| 要求 | 描述 |
| — | — |
| (i) | 给定公钥 PK 和消息 m 的签名 S = sign(SK, m),存在指数级(与安全参数 k 相关)的可能私钥 SK
对应 PK 使得 S = sign(SK
, m)。随机选取 SK
,对于新消息 m
≠ m,sign(SK, m
) = sign(SK
, m*) 的概率可忽略不计。 |
| (ii) | 存在多项式时间可计算函数 proof,输入私钥 SK、公钥 PK、消息 m 和有效伪造签名 S’ ≠ sign(SK, m),输出证明 S’ 为伪造的证据。 |
| (iii) | 具有多项式时间计算能力的签名者无法构造有效签名 S 并同时构造证明 S 为伪造的证据。 |
前两个要求保证了签名者的无条件安全性,第三个要求保证了签名接收者的安全性,不过接收者的安全性依赖于复杂度理论假设。
3. 符号说明
- p 和 q 为大素数,且 q 整除 p - 1。
- (G_q) 是 (\mathbb{Z}_p^*) 中阶为 q 的唯一子群。
- 对于 (b \in G_q) 且 (b \neq 1),(\log_b(\alpha)) 表示 (\alpha \in G_q) 以 b 为底的离散对数。
4. 签名方案
该方案基于离散对数假设:
-
密钥生成
:设 (g, h \in G_q),且无人知晓 (\log_g(h))。签名者 A 的私钥 (SK = (x_1, x_2, y_1, y_2) \in \mathbb{Z}_q^4),公钥 (PK = (p_1, p_2) = (g^{x_1}h^{y_1}, g^{x_2}h^{y_2}))。
-
签名过程
:对于消息 (m \in \mathbb{Z}_q),签名 (S = sign(SK, m) = (\sigma_1(SK, m), \sigma_2(SK, m))),其中 (\sigma_1(SK, m) \equiv x_1 + my_1 \pmod{q}),(\sigma_2(SK, m) \equiv x_2 + my_2 \pmod{q})。
-
验证过程
:接收者验证 (p_1^{\sigma_1}p_2^{\sigma_2} = g^{\sigma_1}h^{\sigma_2})。
-
伪造证明
:伪造证明为 (\log_g(h))。
以下三个引理证明该方案为失败 - 停止签名方案:
-
引理 1
:公钥 PK 和消息 m 的签名 sign(SK, m) 不包含关于使用 q 个可能私钥中哪一个的信息。
-
引理 2
:给定 PK、消息 m 的签名 S = sign(SK, m) 和消息 m’ ≠ m 的有效签名 S’ = ((\tau_1), (\tau_2)),存在唯一私钥 SK
对应 PK 使得 S = sign(SK
, m) 且 S’ = sign(SK
, m’)。
-
引理 3
*:若签名者收到有效伪造签名 S’ = ((\tau_1), (\tau_2)) 且 S’ ≠ sign(SK, m),则可计算 (\log_g(h))。
该私钥为一次性私钥,若用同一私钥对两条不同消息签名,易从签名计算出私钥。
此外,可通过碰撞自由哈希函数 H 减小公钥大小,此时公钥 (PK^* = (H(p_1), p_2)),签名验证变为 (H(g^{\sigma_1}h^{\sigma_2}p_2^{-m}) = H(p_1))。长消息可先哈希为短消息再签名,伪造证明可能为 (\log_g(h)) 或哈希函数 H 的碰撞。
5. 一个公钥签署多条消息的方法
一个公钥和私钥通常只能使用一次,以下介绍三种解决此问题的方法,使公钥可签署 k 条消息,且签名者仍具无条件安全性。
方法 1
:
-
密钥生成
:签名者 A 的私钥 (SK = (x_1, y_1, x_2, y_2, \cdots, x_{k + 1}, y_{k + 1})),公钥 (PK = (p_1, \cdots, p_{k + 1}) = (g^{x_1}h^{y_1}, \cdots, g^{x_{k + 1}}h^{y_{k + 1}}))。
-
签名过程
:对于消息 (m \in \mathbb{Z}
q),签名 (sign(SK, m) = (\sigma_1, \sigma_2)),其中 (\sigma_1 \equiv x_1 + mx_2 + \cdots + m^k x
{k + 1} \pmod{q}),(\sigma_2 \equiv y_1 + my_2 + \cdots + m^k y_{k + 1} \pmod{q})。
-
验证过程
:接收者验证 (p_1^{\sigma_1}p_2^{\sigma_2}\cdots p_{k + 1}^{\sigma_{k + 1}} = g^{\sigma_1}h^{\sigma_2} \pmod{p})。
签署 k 条不同消息后,签名者仍具无条件安全性。给定 k 个签名,有 (q) 个可能私钥,k + 1 个签名可唯一确定私钥,(\log_g(h)) 为伪造证明。
方法 2
:
-
密钥生成
:与方法 1 相同。
-
签名过程
:若 A 已签署 i - 1 条消息((1 \leq i \leq k)),消息 m 的签名 (sign[SK, m, i] = (i, \sigma_1, \sigma_2)),其中 (\sigma_1 = x_i + m x_{i + 1}),(\sigma_2 = y_i + m y_{i + 1})。
-
验证过程
:接收者验证 (p_i^{\sigma_1}p_{i + 1}^{\sigma_2} = g^{\sigma_1}h^{\sigma_2})。
此方法虽在签名中加入计数器,但签名者和接收者的计算更简单。同样,(\log_g(h)) 为伪造证明,通过证明矩阵 (A_k) 的秩为 2k + 1 可证明签名者的无条件安全性。
方法 3 :使用树认证方法,可参考相关文献如 [MerkW] 和 [PW91]。
6. 可转换不可否认签名
可转换不可否认签名允许签名者将不可否认签名转换为普通数字签名。这里构建了一种对签名者无条件安全的不可否认签名方案,且签名者可将其转换为失败 - 停止签名。
-
密钥生成
:签名者 A 的私钥 (SK = (x_1, x_2, y_1, y_2) \in \mathbb{Z}_q^4),公钥 (PK = (p_1, p_2) = (g^{x_1}h^{x_2}, g^{y_1}h^{y_2}))。
-
签名过程
:消息 (m \in \mathbb{Z}_q) 的不可否认签名 (\sigma_1(SK, m) \equiv x_1 + my_1 \pmod{q})。
-
验证过程
:验证签名 (\sigma_1) 时,A 和接收者计算 (u \equiv p_1^{\sigma_1}p_2^{-m}g^{- \sigma_1} \pmod{p}),A 通过零知识协议使接收者相信其知道 (\sigma_2) 使得 (u = h^{\sigma_2} \pmod{p})。
-
转换为失败 - 停止签名
:签名者公布 (\sigma_2 \equiv x_2 + my_2 \pmod{q}),不可否认签名即转换为第 4 节的失败 - 停止签名。
7. 应用
失败 - 停止签名可用于电子支付系统,客户向银行签名请求时,使用本文方案可避免传统的 3 阶段协议,只需向银行发送单条消息即可完成签名请求。
8. 总结
本文提出的失败 - 停止签名方案计算效率高,签名长度仅为消息的两倍(长消息可先哈希)。该方案可避免电子支付系统中的 3 阶段协议,还构建了对签名者无条件安全的可转换不可否认签名方案。不过,该方案的主要缺点是只能用于签署固定数量的消息,这是不可避免的,因为签名者无条件安全的签名方案要求私钥长度与待签名消息数量呈线性关系。
高效失败 - 停止签名方案及其应用
9. 方案优势分析
该失败 - 停止签名方案具有多方面的优势,以下通过表格进行详细对比:
| 对比项目 | 传统失败 - 停止签名 | 本文提出的方案 |
| — | — | — |
| 签名和密钥长度 | 长 | 相对较短,公钥约 1000 位,私钥约 2000 位,500 位消息的签名为 1000 位 |
| 计算复杂度 | 签名和验证计算量大 | 签名仅需两次模素数乘法和两次加法,验证仅需略多于一次模素数幂运算 |
| 应用便捷性 | 电子支付需 3 阶段协议 | 可避免 3 阶段协议,客户只需发单条消息 |
从上述表格可以清晰地看出,本文提出的方案在各个方面都有显著的改进,大大提高了签名的效率和应用的便捷性。
10. 安全性分析
该方案的安全性主要体现在对签名者和接收者的保护上,其安全性依赖的因素如下:
-
签名者的无条件安全性
:
- 一个公钥对应多个私钥,伪造者难以猜出签名者对新消息的签名。
- 若收到伪造签名,签名者可计算 (\log_g(h)) 证明伪造。
-
接收者的安全性
:依赖于离散对数问题的难解性,即计算 (\log_g(h)) 是困难的。若伪造者能伪造签名,签名者可通过计算 (\log_g(h)) 证明其伪造,从而保护接收者的利益。
以下是安全性的流程分析:
graph TD
A[签名者签名] --> B[接收者验证签名]
B --> C{签名是否有效}
C -- 是 --> D{是否为伪造签名}
C -- 否 --> E[签名无效,拒绝]
D -- 是 --> F[签名者计算log_g(h)证明伪造]
D -- 否 --> G[签名有效,接受]
11. 实际应用场景拓展
除了电子支付系统,该失败 - 停止签名方案还可应用于其他多个领域:
-
云计算环境
:在云计算中,用户将数据存储在云端,需要对数据的操作请求进行签名。使用失败 - 停止签名方案,用户无需担心云服务提供商强大的计算能力会伪造签名,保证了数据操作的安全性。
-
物联网设备
:物联网设备数量众多且资源有限,该方案计算效率高,可用于设备之间的身份认证和消息签名,确保设备通信的安全。
-
区块链
:在区块链中,交易签名的安全性至关重要。失败 - 停止签名方案可以增强区块链交易的安全性,防止恶意节点伪造交易签名。
12. 未来发展方向探讨
虽然该方案已经取得了显著的成果,但仍有一些方面值得进一步研究和改进:
-
签名数量限制问题
:目前方案只能签署固定数量的消息,未来可研究如何突破这一限制,使方案更加灵活。
-
与其他密码学技术的结合
:探索与同态加密、零知识证明等其他密码学技术的结合,进一步拓展方案的应用场景和功能。
-
性能优化
:继续优化签名和验证的计算复杂度,提高方案在大规模应用中的性能。
13. 结论
本文详细介绍了一种高效的失败 - 停止签名方案,该方案在计算效率、安全性和应用便捷性方面都有出色的表现。通过对方案的深入分析,我们看到了其在电子支付、云计算、物联网和区块链等多个领域的应用潜力。虽然方案存在一些不足之处,但未来的研究方向为其进一步发展提供了广阔的空间。相信随着密码学技术的不断发展,失败 - 停止签名方案将在更多领域发挥重要作用,为信息安全提供更可靠的保障。
5万+

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



