承诺方案
在介绍IPA多项式承诺方案方案前,我们要先明白承诺是什么,进而理解多项式承诺是什么。
承诺
承诺相当于将信纸放入密封的、防篡改的、单独编号的信封。之后纸上内容不能再进行更改,且内容不会被泄漏,只有打开信封才知道纸上的内容。
在密码学中,承诺方案是一个涉及两方的二阶段交互协议,双方分别为承诺方/证明方和验证方。主要包含以下两个阶段;
- 承诺阶段:承诺方对一个消息 m m m,以密文的形式发送给接收方,意味着信息 m m m将不会再被篡改。(密封)
- 打开阶段,承诺方公开消息 m m m与盲化因子(相当于秘钥),接收方以此来验证其与承诺阶段所接收的消息是否一致。(打开信封)
承诺必须具有两个基本性质:
- 绑定属性(binding):绑定属性可以理解为一个 m m m对应一个唯一承诺值,敌手在多项式时间内不可能找到另一个 m ′ m^{\prime} m′对应的承诺值与 m m m的承诺值相等。形式化定义如下。
- 隐藏属性:隐藏属性可以理解为对于敌手来说,无法区分承诺和一个随机数。因此承诺不会泄漏隐私信息 m m m。
Pedersen承诺
Pedersen承诺主要包含以下三个算法 $ (Setup,commit,open) $ 。
-
S e t u p ( 1 λ ) : Setup(1^{\lambda}): Setup(1λ): 生成公共参数 p p = ( G , G ∈ G , H ∈ G , F p ) pp=(G,G\in G,H\in G,F_p ) pp=(G,G∈G,H∈G,Fp),其中 G G G是p阶的循环群,这里假设为定义在椭圆曲线上的加法循环群, G , H G,H G,H是 G G G中的元素。 p p pp pp对于承诺方和验证方都是已知的。
-
C o m m i t ( p p , m , r ) : Commit(pp,m,r): Commit(pp,m,r): 承诺者选择随机数 r r