比特承诺协议
随着互联网金融的飞速发展,越来越多互不信任的通信者需要通过互联网终端来实现合作,因此需要各终端之间建立必要的信任关系,实现安全的“比特承诺”则是其重要的理论基础。作为现代密码学中的重要基础协议,比特承诺协议可用于构建零知识证明、可验证秘密共享等协议,同时可与不经意传输等一起构成安全双方计算的基础。
1982 年,时任美国加州大学伯克利分校教授的曼纽尔·布卢姆(Manuel Blum)提出了比特承诺(Bit Commitment,BC)协议。1995 年,布卢姆教授因其在计算复杂性和密码系统(包括比特承诺协议)等方面的开创性贡献获得图灵奖。
“比特承诺”机制的学术化描述:
A、B 为互不信任的通信终端。
(1)承诺阶段,发送方 A选择一个要承诺的比特b(b等于0或者1),并把能表示该预测的信息c从给B;
(2)揭示阶段,A 把打开承诺的消息d和b发给B。B用d打开c,并且验证b是否是A承诺的比特。
由此,A、B 双方均可确信对方信守承诺,从而双方建立了信任关系并实现通信。如果在承诺阶段 A 所承诺的是多个 bit,则称该承诺为比特串承诺。
比特承诺协议的特点
通常,比特承诺协议应满足下列性质要求:
正确性。若 A、B 双方都能够诚实地执行比特承诺协议,在揭示阶段,B 将正确获得 A 所承诺的预测比特值 b(0 或 1)。
保密性。在揭示阶段之前,B 无法获知 A 有关 b 的任何信息,保险箱不能被暴力破解。
绑定性。在承诺阶段结束后,B 只能在揭示阶段获得唯一的 b。
从比特承诺的定义中可以看出,似乎其与公钥签名有一定的相似性,但他们也有区别:比特承诺并不是公开可以验证的,必须是A给出信息d,验证者B才能验证。
比特承诺协议的实现
为了实现安全的“比特承诺”,出现了多种具体的解决方案。经典密码学提供了两种解决思路:使用第三方公共平台利用计算复杂性假设。其中,使用对称密码算法、单向函数、伪随机序列数的比特承诺方案应用较为广泛。
基于对称密码算法的比特承诺协议使用对称密码算法作为计算函数,具体步骤如下:
<1> 初始化阶段。接收方 B 首先生成一个随机比特串 R,并将其发送给 A。
<2> 承诺阶段。A 生成一个想承诺的 b 组成的消息(实际上 b 可为若干比特),使用某个随机密钥 K 对 b 及 B 发来的随机串 R 使用对称密码算法加密,并将结果 EK(R, b)发送给 Bob。
<3> 揭示阶段。A 将密钥 K 发送给 B;B 使用 K 对 A 发送来的 EK(R, b)进行解密,得到 DK(EK(R, b))=(R, b),从而揭示出比特 b。B 通过检测解密消息中包含的随机串 R 来证实 A 所承诺的比特 b 的有效性。

