问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

密码学 | 承诺:常见的承诺方案

创作时间:
作者:
@小白创作中心

密码学 | 承诺:常见的承诺方案

引用
CSDN
1.
https://blog.csdn.net/m0_64140451/article/details/137916855

密码学承诺是密码学领域中的一个重要概念,它通过特定的数学算法确保承诺方在做出承诺后无法随意更改承诺内容。本文将详细介绍几种常见的密码学承诺方案,包括哈希承诺、Pedersen承诺、量子比特承诺和量子模糊承诺,帮助读者深入了解这一技术及其应用场景。

1 简介

密码学承诺涉及承诺方、验证方两个参与方,以及以下两个阶段:

  • 承诺阶段:承诺方选择一个敏感数据v vv,为它计算出相应的承诺c cc,然后将承诺c cc发送给验证方。通过使用承诺c cc,验证方可以确定承诺方对于尚未解密的敏感数据v vv只能有一种的解读方式,即承诺方没有办法指鹿为马。

  • 揭示阶段:承诺方公布敏感数据v vv和用于计算承诺c cc的相关参数。验证方重新执行承诺的计算过程,比较新生成的承诺c ′ c'c′与之前接收到的承诺c cc是否一致,一致则表示验证成功,否则验证失败。

你没看错,揭示阶段就是直接公布承诺方的敏感数据。个人认为,承诺的作用不在于保护敏感数据的隐私,而在于防止承诺方随意解读这一敏感数据。

一个设计良好的密码学承诺具备如下特性:

  • 隐藏性:在打开承诺c cc之前,验证方不知道承诺方选择的敏感数据v vv是什么。

  • 绑定性:在承诺c cc生成之后,承诺方难以将已承诺的敏感数据解读为另一个不同的数据v ′ v'v′。

一旦做出承诺,就必须在揭示阶段使用之前已经承诺的敏感数据,否则谎言会被戳穿。

几乎每一篇博客都会重复上述内容,大家常看常新啊😇

2 哈希承诺

哈希承诺是密码学承诺中最简单的一种实现方式。

哈希承诺通过以下公式计算关于敏感数据v vv的承诺:

c = H ( v ) c=H(v)c=H(v)

其中H HH是一个密码学安全的单向哈希算法。

基于单向哈希的单向性,难以通过哈希值H ( v ) H(v)H(v)反推出敏感数据v vv,以此提供了一定的隐藏性;基于单向哈希的抗碰撞性,难以找到不同的敏感数据v ′ v'v′产生相同的哈希值H ( v ) H(v)H(v),以此提供了一定的绑定性

验证方拿着承诺c = H ( v ) c=H(v)c=H(v)却无法反推出敏感数据v vv,体现了隐藏性;只有使用敏感数据v vv才能产生哈希值H ( v ) H(v)H(v),而其他数据v ′ v'v′却不行,体现了v vv和承诺c = H ( v ) c=H(v)c=H(v)之间的绑定性。

哈希承诺的构造简单、使用方便,满足密码学承诺基本的特性,适用于对敏感数据机密性要求不高的应用场景。对敏感数据机密性要求高的应用,需要注意哈希承诺提供的隐匿性比较有限,不具备随机性

对于同一敏感数据v vv,H ( v ) H(v)H(v)值是固定的。因此可以通过暴力穷举的方法,列举出所有可能的v vv值,来反推出H ( v ) H(v)H(v)中实际承诺的v vv。

与其他类型的承诺相比,哈希承诺不支持在密文形式下的直接运算和交叉验证。这意味着,在某些需要进行复杂密码学协议构造和安全多方计算的场景中,哈希承诺不如其他承诺技术那样有效。

3 Pedersen 承诺

Pedersen 承诺是目前隐私保护方案中使用广泛的密码学承诺,相比哈希承诺,构造略微复杂,但提供了一系列优异的特性:

  • 信息论安全的理论最强隐藏性

  • 基于离散对数困难问题的强绑定性

  • 具有同态加法特性的密文形式

Pedersen 承诺的具体构造如下:

其中g gg和h hh是循环群内的两个生成元,v vv是敏感数据。

Pedersen 承诺引入了盲因子r rr,其中r rr是一个随机数。这样一来,即便敏感数据v vv不变,最终的承诺c cc也会随着r rr的改变而改变,从而提供了信息论安全的隐藏性。

与此不同,哈希承诺对于同一个v vv会产生相同的承诺H ( v ) H(v)H(v)。

由于 Pedersen 承诺在构造中采用了离散对数运算,因此也具有加法同态性

具体来说,两个分别关于v 1 v_1v1 和v 2 v_2v2 的 Pedersen 承诺c 1 c_1c1 和c 2 c_2c2 相加,得到的新承诺是关于v 1 + v 2 v_1+v_2v1 +v2 的 Pedersen 承诺。证明过程非常简单:

c 3 = c 1 + c 2 = C o m m i t ( v 1 , r 1 ) + C o m m i t ( v 2 , r 2 ) = ( v 1 ∗ g + r 1 ∗ h ) + ( v 2 ∗ g + r 2 ∗ h ) = ( v 1 + v 2 ) ∗ g + ( r 1 + r 2 ) ∗ h = C o m m i t ( v 1 + v 2 , r 1 + r 2 ) \begin{alignat}{2} c_3 &= c_1 + c_2 \ &= Commit(v_1, r_1)+Commit(v_2, r_2) \ &= (v_1g+r_1h)+(v_2g+r_2h) \ &= (v_1+v_2)*g+(r_1+r_2)*h \ &= Commit(v_1+v_2, r_1+r_2) \end{alignat}c3 =c1 +c2 =Commit(v1 ,r1 )+Commit(v2 ,r2 )=(v1 ∗g+r1 ∗h)+(v2 ∗g+r2 ∗h)=(v1 +v2 )∗g+(r1 +r2 )∗h=Commit(v1 +v2 ,r1 +r2 )

其中C o m m i t ( ) Commit()Commit()代表生成承诺的方法。

Pedersen 承诺还可以用来构造v 1 ∗ v 2 v_1*v_2v1 ∗v2 、v 1 ∣ ∣ v 2 v_1 || v_2v1 ∣∣v2 等更复杂的承诺c 3 c_3c3 ,通过基于离散对数的通用零知识证明系统,来证明新承诺c 3 c_3c3 满足与原始承诺c 1 c_1c1 和c 2 c_2c2 之间存在指定的约束关系。

Pedersen 承诺重在承诺,适用于数据所有者向第三方证明承诺中的敏感数据满足一定的约束关系。Pedersen 承诺不直接提供解密功能,不支持需要互不透露敏感数据明文的多方协同计算,这一点与密码学领域的同态加解密算法有很大区别,切勿混淆概念。

4 量子比特承诺

量子比特承诺是基于量子力学原理构造的比特承诺方案,具体实现可以抽象为一个带随机输入的单向哈希算法。具体构造如下:

根据单向函数的单向性,承诺方向验证方发送r 1 r_1r1 和c cc后,验证方也无法推知v vv,满足对v vv的隐藏性。根据单向哈希的抗碰撞性,承诺方难以找到r 2 ′ r_2'r2′ 和v ′ v'v′,使得H ( r 1 , r 2 , v ) = H ( r 1 , r 2 ′ , v ′ ) H(r_1 , r_2 , v) = H (r_1 , r_2', v')H(r1 ,r2 ,v)=H(r1 ,r2′ ,v′),因此承诺方难以违约,满足对v vv的绑定性。

不知道为什么需要两个随机数,也不知道为什么要分开发送😇

量子比特承诺的构造看似简单,但其实现需要借助量子协议完成计算,同时也有一定的理论局限性。

早在 1996 年,Hoi-Kwong Lo 和 Hoi Fung Chau 团队、Dominic Mayers 团队分别独立地证明了不存在满足信息论安全的理论最强绑定性的量子比特承诺方案。这个不存在性被称为 MLC no-go 定理。其主要原因是,如果验证方完全没有任何承诺的信息,那么承诺方可以通过量子纠缠随意地改变承诺内容,而验证方既不能阻止也不能发现承诺方的违约行为。

这就是为什么要先发一个r 1 r_1r1 给验证方吗?

5 量子模糊承诺

后量子密码学承诺的研究尚处于早期阶段,充满了各类挑战,目前难以直接应用到实际业务系统中。除了量子比特承诺之外,基于模糊算法的量子模糊承诺也是一类热门研究方向,目标应用领域为生物特征识别相关的隐私安全系统。具体构造如下:

其中,v vv是敏感数据(如密钥),x xx是模糊特征(如指纹),f ff是一个模糊数据恢复算法,当输入值x ′ x'x′接近x xx时,输出v ′ = v v'=vv′=v。

6 总结

本论中,我们重点介绍了哈希承诺Pedersen 承诺,在往后的文章中,我们还会进一步介绍其他重要的密码学承诺,例如 z k-SNARKs 零知识证明系统中使用的多项式承诺、向量承诺等。

怎么还有啊,想鼠😇

对于需要在数据的密文形式上直接进行运算和交叉验证的业务,只要不涉及互不透露数据明文的多方协同计算,相比现有同态加密算法,以 Pedersen 承诺为代表的密码学承诺往往可以提供更好的性能。这一优势与密码学承诺的同态性密不可分,如何构造和应用同态性,敬请关注下文分解。

下文:密码学原语如何应用?解析密文同态性的妙用

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号