形式陈述
非交互承诺方案为每个安全参数 理路 安全参数 Security parameter 共同索引密码算法族、资源规模与失败概率的渐近尺度。 固定消息空间 M λ ,并包含
p p ← Setup ( 1 λ ) , ( c , d ) ← Commit ( p p , m ) , VerifyOpen ( p p , c , m , d ) ∈ { 0 , 1 } . 本页诚实算法采用 uniform 多项式时间实现,时间按安全参数及合法消息长度计;Setup 与 Commit 可用随机币,VerifyOpen 为确定性验证。计算安全实验的攻击者为获得 1 λ 的经典 uniform PPT 算法。
正确性要求对每个 m ∈ M λ ,概率
Pr [ VerifyOpen ( p p , c , m , d ) = 1 : p p ← Setup ( 1 λ ) , ( c , d ) ← Commit ( p p , m ) ] ≥ 1 − negl ( λ ) , 完美正确性则把右侧换成 1 。
隐藏实验先生成 p p ,让攻击者 A 0 ( 1 λ , p p ) 输出两条合法等长消息 m 0 , m 1 和状态 s t ;挑战者均匀采样 b ,生成 ( c , d ) ← Commit ( p p , m b ) ,只把 ( 1 λ , s t , c ) 交给 A 1 猜测 b ′ 。在计算安全 理路 计算安全 Computational security 仅要求任何资源受限攻击者的成功优势足够小的安全概念。 层次,计算隐藏要求每个 PPT A 的优势
| Pr [ b ′ = b ] − 1 2 | 可忽略。统计隐藏使用同一个实验,但允许两阶段对手计算无界,仍要求优势可忽略;消息选择也可以依赖已经看到的 p p 。完美隐藏要求这些对手的优势恰为零。仅对预先固定的消息对比较 ( p p , c 0 ) 与 ( p p , c 1 ) ,不足以覆盖随机参数生成后再选择消息的能力。
绑定实验生成 p p 后,把 ( 1 λ , p p ) 交给攻击者,让它输出
( c , m 0 , d 0 , m 1 , d 1 ) , m 0 ≠ m 1 , 并在两个 VerifyOpen 调用都接受时获胜。计算绑定量化所有 PPT 攻击者并要求成功概率可忽略;统计绑定允许计算无界攻击者,但成功概率仍须可忽略;完美绑定要求对每个 Setup 支持中的 p p 都不存在可同时验证的两种不同打开。
参数 p p 的来源是安全模型的一部分:它可以是无陷门公开参数、CRS 或可验证群描述,并须说明任何 setup trapdoor 由谁掌握。extractable binding 要求提取器,equivocal commitment 允许带陷门模拟器改变打开;二者都超出普通绑定与隐藏。若承诺阶段是交互式协议,c , d 接口必须改成双方 view 的交互实验。
一个完整构造:Pedersen 承诺
群生成算法按安全参数输出素数阶循环群 理路 循环群 Cyclic group 能由一个元素的全部整数次幂生成的群。 G = ⟨ g ⟩ ,群阶为 q ,并提供高效群运算、相等性和成员验证。另从 G ∖ { 1 } 均匀选择 h ,公开 p p = ( G , q , g , h ) 。数学上可以写 h = g α 、α ∈ Z q ∗ ;绑定实验不把 α 交给发送方或其辅助信息。
消息是 m ∈ Z q ,随机数 r 独立均匀取自 Z q ,定义
C ( m , r ) = g m h r , ( c , d ) = ( C ( m , r ) , r ) . 打开时提交 ( m , r ) 。验证器先检查群成员与标量的规范编码,再检查 c = g m h r 。正确性直接由定义成立,概率为一。这里 h ≠ 1 是必要的:若 h = 1 ,随机项消失,c = g m ,已知两条不同候选消息的接收者可直接比较它们的承诺。
对每个合法公开参数,这一构造完美隐藏。计算绑定则使用明确的离散对数假设 :给定由上述群族生成的 ( G , q , g , h ) ,其中 h 为均匀非单位元,任何经典 PPT 算法输出 α 使 g α = h 的成功率可忽略。下面分别证明两项性质;不知道一个数与假设没有高效算法求出它,是不同强度的陈述。
直觉
承诺像把消息放进只能稍后打开的保险箱:隐藏性防接收者提前得知内容,绑定性防发送者事后改口。两项性质面对不同攻击者,也使用不同实验;“承诺看起来随机”与“目前找不到第二种打开”都不能替代量词化定义。
在上面的非交互接口中,若至少允许两条不同的合法等长消息且完美正确,就不能同时完美隐藏与完美绑定。固定同一公开参数,完美隐藏让两条消息产生相同承诺分布;任取其中一个正概率承诺,两条消息都存在能产生它的随机选择,正确性便给出两种合法打开。计算绑定正是把“不存在”改成“高效对手找不到”。
图片加载失败 Pedersen 承诺的隐藏与计算绑定
例子与边界
哈希承诺可写成 c = H ( encode ( r , m ) ) ,开放时公布 ( r , m ) 。足够长的随机盐 r 可阻止低熵消息被直接枚举,抗碰撞或适当的第二原像性质帮助绑定;但结论依赖具体哈希模型。编码若有歧义,同一字符串可能解析为不同 ( r , m ) ;随机性复用、盐太短或参数后门也会破坏安全。
Merkle认证树 理路 Merkle认证树 Merkle authentication tree · Merkle tree · 哈希认证树 以有序叶、分域哈希和逐层兄弟路径认证某个位置的值,把错误打开归约到真实碰撞,并明确可信根、树形与隐藏性的边界。 提供按位置打开的绑定型摘要,未经随机化的根并不满足本页选择消息隐藏实验;少量候选列表可直接枚举其根。它与本页Pedersen构造承担不同接口,本页的隐藏分布、陷门与离散对数归约仍然保留。
十一个群元素上的承诺与打开
取模 23 乘法群中由 g = 2 生成的 11 阶子群
G = { 1 , 2 , 4 , 8 , 16 , 9 , 18 , 13 , 3 , 6 , 12 } . 它不是整个 22 阶非零剩余类群。为观察陷门作用,显式选 α = 7 ,于是 h = 2 7 mod 23 = 13 。消息与随机数取 ( m , r ) = ( 4 , 3 ) ,则
c = 2 4 ⋅ 13 3 mod 23 = 16 ⋅ 12 mod 23 = 8. 验证器收到 ( 4 , 3 ) ,重复这次计算便接受。若接收者尚未拿到打开,承诺如何隐藏消息?把随机数 r = 0 , … , 10 全部列出:
消息
按 r = 0 , 1 , … , 10 得到的承诺
m = 4
16 , 1 , 13 , 8 , 12 , 18 , 4 , 6 , 9 , 2 , 3
m = 9
6 , 9 , 2 , 3 , 16 , 1 , 13 , 8 , 12 , 18 , 4
两行顺序不同,每个群元素却恰出现一次。均匀随机数使任何承诺值的概率都是 1 / 11 ;即使知道 α = 7 ,也无法由这份分布区分消息 4 与 9 。下面会把这个排列观察证明为任意素数阶群上的双射结论。
知道陷门,怎样保持承诺却改变打开
持有一次打开 ( m , r ) 和非零 α 时,对目标消息 m ′ 令
r ′ = r + ( m − m ′ ) α − 1 ( mod q ) . 那么 m ′ + α r ′ = m + α r ,故 g m ′ h r ′ = g m h r 。本例 7 − 1 = 8 ( mod 11 ) ,改为 m ′ = 9 得
r ′ = 3 + ( 4 − 9 ) ⋅ 8 ≡ 7 ( mod 11 ) , 2 9 ⋅ 13 7 ≡ 6 ⋅ 9 ≡ 8 ( mod 23 ) . 同一个 c = 8 因而有 ( 4 , 3 ) 与 ( 9 , 7 ) 两种合法打开。反过来,仅由这两对数,就能恢复
α = ( 4 − 9 ) ( 7 − 3 ) − 1 ≡ ( − 5 ) ⋅ 3 ≡ 7 ( mod 11 ) . 这十一个幂可以直接枚举,因此小例检验的是代数、隐藏分布和陷门机制。计算绑定需要随安全参数增长的困难群族。另一个细节是,改变打开的公式要求已知一次打开;仅知道 α ,并不自动给出任意外来承诺 c 的初始打开。
编码、随机数与参数各有边界
消息按模 q 解释。本例整数 4 和 15 用相同随机数产生同一承诺,因为它们表示同一个 Z 11 元素。若业务需要对普通整数绑定,就必须先限制范围并单射编码;余额是否非负、相加是否溢出并不由群等式证明。
若发送方自行选 h = g α 并保留 α ,就能执行上面的改变打开攻击。验证 h 是合法非单位元只能检查代数条件,不能证明无人知道离散对数关系。参数生成和陷门持有者因此必须与绑定实验一致。
隐藏证明也要求每次使用独立均匀随机数。复用同一个 r 时,两个承诺之比为 c 1 c 2 − 1 = g m 1 − m 2 ;若消息差只取少量可能值,接收者可以枚举辨别它。单个承诺的完美隐藏不会自动保证相关随机数下的联合隐藏。
承诺不等于加密:接收者通常不持有解密密钥,协议目标是“先固定、后揭示”。它也不自动满足不可延展性;Pedersen 的同态等式
C ( m 1 , r 1 ) C ( m 2 , r 2 ) = C ( m 1 + m 2 , r 1 + r 2 ) 在模 q 中成立,所以任何人都能把 c 变成 g c ,产生消息加一的相关承诺。构造相关承诺和对同一个承诺找到两条不同打开,是两种攻击任务。
多项式承诺 理路 多项式承诺 Polynomial commitment · KZG commitment · Kate–Zaverucha–Goldberg commitment 以 KZG 构造将多项式压缩为一个群元素,用商多项式证明单点取值,并由 d-SDH 推出逐点求值绑定性。 把“打开整个消息”改成“证明某个点的取值”。基本确定性 KZG 将 f 编码为 g f ( τ ) ,并在 d -SDH 假设下阻止同一个承诺在同一个点被打开为两个不同的值;常数多项式 0 与 1 的承诺却分别是 1 与 g ,可以完全区分。这个例子说明:名称中含有“承诺”,并不意味着未经随机化的版本同时满足本页的选择消息隐藏实验;求值绑定也需要按它自己的打开接口陈述。
推论与应用
完美隐藏:固定参数下的均匀双射
G 的阶为素数且 h ≠ 1 ,所以 h 也生成整个群。映射 r ↦ h r 从 Z q 到 G 是双射,再乘固定的 g m 仍是双射。因此对每个 u ∈ G 、每条消息 m ,
Pr [ C ( m , r ) = u ∣ p p , m ] = 1 / q . 两条候选消息在每个合法 p p 下产生相同分布,连同公开参数交给观察者仍相同。这证明完美隐藏。若进一步公开 α ≠ 0 ,指数 m + α r 仍均匀;隐藏不依赖离散对数困难性,依赖的是这次均匀随机化。
计算绑定:两次打开给出一个离散对数算法
假设对手给出两个合法打开,满足
于 g m h r = g m ′ h r ′ , m ≠ m ′ 于 Z q . 整理等式得到 g m − m ′ = h r ′ − r = g α ( r ′ − r ) 。若 r ′ = r ,就有 g m − m ′ = 1 ,与 m ≠ m ′ 矛盾。因此 r ′ − r 是非零域元素,可以求逆:
α = ( m − m ′ ) ( r ′ − r ) − 1 ( mod q ) . 归约算法收到随机非单位元离散对数挑战 ( G , q , g , h ) 后,把它原样作为公开参数交给绑定对手。若对手成功,验证两份打开并按上式输出 α ;失败时报告失败。对手看到的参数分布与真实绑定实验完全相同,每次绑定成功都转成正确的离散对数解,成功概率没有损失。额外工作只有验证、模减法和一次求逆。
这用的是离散对数假设,不必引入更强的CDH 理路 计算 Diffie–Hellman 假设 Computational Diffie–Hellman assumption · CDH assumption 在参数化循环群族中,由随机群幂高效计算共享群元素 g^(ab) 的成功概率可忽略。 或DDH 理路 判定 Diffie–Hellman 假设 Decisional Diffie–Hellman assumption · DDH assumption 随机 Diffie–Hellman 三元组与以独立随机群元素结尾的三元组对高效判别器不可区分。 假设。计算无界者仍可枚举出 α ,再构造不同打开;与完美隐藏并存的正是计算绑定,而不是完美绑定。
终点自测:先从两行承诺排列解释隐藏,再从 ( 4 , 3 ) 与 ( 9 , 7 ) 恢复 α = 7 ;最后说明为什么 h = 1 、重复随机数、整数编码不取模和发送方保留陷门分别破坏了哪一步条件。
承诺用于零知识、抛硬币、安全多方计算、拍卖和区块链协议。抗碰撞性 理路 抗碰撞性 Collision resistance 攻击者公开选择两个不同输入仍难以找到同摘要;解释生日尺度、目标消息差异和序列化歧义。 与群困难假设可实现不同承诺,零知识证明 理路 零知识证明 Zero-knowledge proof 证明者使验证者相信陈述为真而不泄露额外知识的交互证明。 常用承诺固定挑战前的选择;coin flipping、MPC 与 Sigma 协议 理路 Sigma 协议 Sigma protocol · Σ-protocol 具有首消息—随机挑战—响应三步结构,并满足特殊可靠性与诚实验证者零知识的公开币协议。 编译都依赖“先锁定、后揭示”的时序。
将Pedersen承诺逐系数放在Shamir多项式上,可得到可验证秘密共享 理路 Pedersen可验证秘密共享 Pedersen verifiable secret sharing · Pedersen VSS 用一组隐藏系数承诺检查Shamir份额,证明接受子集重构一致与完整公开视图的隐藏,并执行投诉修复、无效份额过滤及陷门反例。 :各点局部检查,授权子集插值后都给出C₀的一次打开,因此不同重构值会触发本页的双打开归约。隐藏证明须同时计入全部公共承诺与腐化者份额;只分别说明每个承诺均匀,不能代替这项联合分布检查。
参考资料
Torben Pryds Pedersen, “Non-Interactive and Information-Theoretic Secure Verifiable Secret Sharing” , Advances in Cryptology — CRYPTO ’91 , LNCS 576, Springer, 1992, pp. 129–140;§2,p. 130,素数阶子群;§3、Theorem 3.1,p. 131,承诺的均匀分布及双打开到离散对数。本文显式固定非单位元参数、规范标量编码与经典 PPT 归约实验。
Jonathan Katz and Yehuda Lindell, Introduction to Modern Cryptography , 3rd ed., CRC Press, 2020, Chapters 4–5.
Oded Goldreich, Foundations of Cryptography , Vol. 1, Cambridge University Press, 2001, Chapters 2–4.