Pedersen 承诺方案:同态性与隐藏性原理

密码学概念 · 2026-10-09

概述

承诺方案(Commitment Scheme)是密码学中的基础原语,类似于"密封的信封":发送方可以承诺一个值,而接收方在承诺期间无法得知该值;但承诺一旦发出,发送方也无法更改它。

1991 年,Vigené Pedersen 在"Non-Interactive and Information-Theoretic Secure Verifiable Secret Sharing"一文中提出了著名的 Pedersen 承诺方案。这个方案的核心优雅之处在于:

  • 计算绑定性:在离散对数问题困难假设下,承诺者无法找到两个不同的值产生相同的承诺
  • 信息论隐藏性:承诺值对观察者完全隐藏,即使拥有无限计算能力也无法获取信息
  • 加法同态性:两个承诺的乘积等于它们对应值的和的承诺
这些特性使 Pedersen 承诺成为盲签名、零知识证明、电子投票、加密货币等系统的基石。

数学构造

基本设定

Pedersen 承诺在循环群 $G$ 上定义,其中离散对数问题困难。设:

  • $G$ 是一个阶为素数 $q$ 的循环群
  • $g, h$ 是 $G$ 的两个生成元
  • 关键要求:已知 $g$ 和 $h$,但不知道离散对数关系 $log_g h$
群的选择通常是:
  • 有限域 $\mathbb{Z}_p^*$ 的素数阶子群($p$ 为大素数,$q | p-1$)
  • 椭圆曲线群

承诺算法

承诺过程:给定消息 $m \in \mathbb{Z}_q$ 和随机数 $r \in_R \mathbb{Z}_q$,承诺值为:

$$C = g^m \cdot h^r \mod p$$

或用乘法记号:$C = \text{Commit}(m, r) = g^m h^r$

参数公开:$(p, q, g, h)$ 是系统公共参数,所有参与者都知道。

验证算法

打开承诺时,承诺者公开 $(m, r)$,验证者检查:

$$C \stackrel{?}{=} g^m \cdot h^r \mod p$$

安全属性证明

隐藏性(Hiding)

定理:Pedersen 承诺是信息论隐藏的。

证明:对于任意承诺 $C$ 和任意消息 $m'$,存在唯一的随机数 $r'$ 使得:

$$C = g^{m'} \cdot h^{r'}$$

解得:$r' = log_h(C \cdot g^{-m'})$

由于 $r'$ 均匀分布在 $\mathbb{Z}_q$ 中(因为 $r$ 是均匀随机的),观察者看到的承诺分布与消息无关。即使拥有无限计算能力,也无法从 $C$ 推断出 $m$。

关键点:隐藏性不依赖计算假设,是信息论安全的。

绑定性(Binding)

定理:Pedersen 承诺是计算绑定的,基于离散对数问题的困难性。

证明(反证法):假设攻击者能找到碰撞,即:

$$g^m \cdot h^r = g^{m'} \cdot h^{r'}$$

其中 $m \neq m'$ 或 $r \neq r'$。则:

$$g^{m-m'} = h^{r'-r}$$

令 $\Delta m = m - m'$,$\Delta r = r' - r$,则:

$$g^{\Delta m} = h^{\Delta r} = g^{x \cdot \Delta r}$$

其中 $x = log_g h$。因此:

$$\Delta m \equiv x \cdot \Delta r \pmod{q}$$

$$x \equiv \Delta m \cdot (\Delta r)^{-1} \pmod{q}$$

由于 $\Delta m \neq 0$ 且 $\Delta r \neq 0$(否则 $m=m'$ 且 $r=r'$),攻击者可以计算 $x = log_g h$,这与离散对数问题困难性矛盾。□

关键点:绑定性依赖于离散对数问题的困难性。如果知道 $log_g h$,就可以自由改变承诺。

同态性(Homomorphism)

定理:Pedersen 承诺支持加法同态。

证明:

$$\text{Commit}(m_1, r_1) \cdot \text{Commit}(m_2, r_2) = g^{m_1} h^{r_1} \cdot g^{m_2} h^{r_2} = g^{m_1 + m_2} h^{r_1 + r_2} = \text{Commit}(m_1 + m_2, r_1 + r_2)$$

同理,标量乘法:

$$\text{Commit}(m, r)^k = g^{km} h^{kr} = \text{Commit}(km, kr)$$

这个同态性质是 Pedersen 承诺最重要的特性,使其能够在不知道具体值的情况下对承诺进行运算。

与椭圆曲线的结合

在实际应用中,Pedersen 承诺通常在椭圆曲线群上实现,以获得更高的安全强度和小尺寸。

EC-Pedersen 承诺

设 $E$ 是定义在有限域 $\mathbb{F}_p$ 上的椭圆曲线,$G$ 是 $E$ 上一个阶为素数 $q$ 的子群。

  • 选择两个生成元 $G, H \in G$,使得不知道 $log_G H$
  • 承诺:$\text{Commit}(m, r) = mG + rH$
  • 验证:$C \stackrel{?}{=} mG + rH$
椭圆曲线版本的优势:
  • 相同安全强度下密钥尺寸更小(256 位曲线提供 128 位安全)
  • 运算效率更高(标量乘法比模幂运算快)
  • 与国密 SM2 曲线兼容

国密适配

在国密体系中,可以使用 SM2 曲线的参数:

  • 曲线方程:$y^2 = x^3 + ax + b \mod p$
  • 素数 $p = $ FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFF
  • 基点 $G = (x_G, y_G)$
  • 阶 $n = $ FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 72035605 AAAAAAAB
选择另一个点 $H = sG$($s$ 随机选取,保密),则 EC-Pedersen 承诺为:

$$C = mG + rH = mG + rsG = (m + rs)G$$

应用场景

盲签名(Blind Signature)

Pedersen 承诺与盲签名天然契合。Chaum 的盲签名方案中,用户先对消息做盲化(使用随机数 $r$),然后请求签名者签名。Pedersen 承诺提供了更安全的盲化机制:

  • 用户计算 $C = g^m h^r$
  • 签名者对 $C$ 签名(不知道 $m$)
  • 用户解开签名,得到对 $m$ 的有效签名
这种方案被应用于电子现金系统(如 DigiCash)和匿名凭证。

零知识证明

Pedersen 承诺是构建零知识证明的基础组件:

证明知晓承诺值:用户可以向验证者证明他知道 $C = g^m h^r$ 中的 $m$ 和 $r$,而不泄露具体值。这通过 Schnorr 协议实现:

  • 用户选择随机 $k$,计算 $t = g^k h^s$
  • 验证者发送挑战 $c$
  • 用户响应 $z = k + cm$
  • 验证者检查 $g^z h^w \stackrel{?}{=} t \cdot C^c$
范围证明:证明承诺的值在某个范围内(如 $0 \leq m < 2^n$),用于隐私保护的电子投票和加密货币。

安全多方计算

在多方的秘密共享和投票系统中,Pedersen 承诺用于:

  • 验证秘密共享的正确性
  • 防止恶意参与者的欺骗行为
  • 实现可验证的阈值签名

与 RSA 承诺的对比

Pedersen 承诺与基于 RSA 的承诺方案(如 Goldwasser-Micali)有重要区别:

属性PedersenRSA 型
隐藏性信息论安全计算安全
绑定性计算安全(DLP)计算安全(因子分解)
同态性加法同态乘法同态
参数设置需选择 $g, h$需选择 $n, e$
密钥大小$O(\log p)$$O(\log n)$
Pedersen 承诺的信息论隐藏性是其独特优势,在需要强隐私保护的场景中更有价值。

实现示例

安全考虑与最佳实践

参数选择

  • 素数大小:建议使用至少 2048 位的 $p$,或 256 位的椭圆曲线
  • 生成元选择:$g$ 和 $h$ 应该是独立的生成元,不知道 $log_g h$
  • 随机数:$r$ 必须使用密码学安全的随机数生成器

常见攻击

  • 已知离散对数攻击:如果知道 $log_g h$,可以伪造承诺
  • 防护:选择参数时确保不知道这个关系
  • 小群攻击:如果群的阶有小因子
  • 防护:使用素数阶群
  • 随机数重用:如果 $r$ 重用,可以恢复消息
  • 防护:每次承诺使用唯一的随机数

国密标准中的位置

目前国密标准中尚未正式规定 Pedersen 承诺方案,但其在以下场景有潜在应用价值:

  • 国密盲签名系统
  • 基于 SM2 的可验证秘密共享
  • 国密电子投票系统

总结

Pedersen 承诺方案以其优雅的安全属性和实用的同态特性,成为现代密码学不可或缺的工具。它的核心价值在于:

  • 信息论隐藏性:即使在理论上的无限计算能力下也无法破解
  • 计算绑定性:基于离散对数问题的困难性
  • 加法同态性:支持在承诺值上进行运算
从盲签名到零知识证明,从电子投票到加密货币,Pedersen 承诺的应用无处不在。理解其原理和设计思想,对于掌握现代密码学系统至关重要。

在国密领域,虽然还没有官方标准的 Pedersen 承诺实现,但随着区块链技术的发展和隐私保护需求的增加,基于 SM2 曲线的 Pedersen 承诺方案有望在未来国密标准中得到应用。

参考

  • Pedersen, V. G. (1991). Non-Interactive and Information-Theoretic Secure Verifiable Secret Sharing. *CRYPTO 1991*, LNCS 576, Springer.
  • Damgård, I. (1991). Ideal System Independence for Oblivious Transfer. *Journal of Cryptology*, 14(1), 33-48.
  • Benaloh, J. (1987). Dense Secret Sharing Scheme. *Workshop on the Theory and Application of Cryptographic Techniques*.
  • NIST SP 800-57 Part 1 Rev. 5 - 密钥管理指南
  • GM/T 0003-2012 - SM2 椭圆曲线公钥密码算法

相关实践