源自壹賬通公開的一個(gè)專利
初始化
1) 有一個(gè) 群贫途,基點(diǎn)g
2) 有一個(gè)雙線性pairing? e(p,q)
3)? 可信第三方(或一堆人構(gòu)成的整體可信第三方共同)生成隨機(jī)數(shù)a,這個(gè)a的知識意味著莫大的能力。注意作為一個(gè)整體的可信第三方并不一定知道a
4)? 可信第三方計(jì)算 ,??并公布之 。共同生成的時(shí)候赁豆,實(shí)際生成的a = a1*a2*a3...*an。只要有一個(gè)人誠實(shí)地銷毀了自己的ai冗美,a就無人知道了魔种。
5) 數(shù)值v用Pedersen承諾表示:?,? r是隨機(jī)數(shù)
6)為便于打字,記號pow(g, r) =?
同態(tài)加法
Pedersen承諾直接是加法同態(tài)的
?
準(zhǔn)同態(tài)乘法(達(dá)到乘法的效果)
兩個(gè)數(shù)值v1和v2,各自的Pedersen承諾是?,??,?
據(jù)此構(gòu)造一個(gè)對v1和v2乘積的承諾
pow(k, r1 * r2)被看作某個(gè)公鑰后公開粉洼,同時(shí)附帶一個(gè)sig := sign( cm3, r1 * r2)务嫡,這樣可以證明示證人真的知道對應(yīng)的私鑰 (r1 * r2)甲抖。?
現(xiàn)在各方都可以計(jì)算 cm4 := cm3 * pow(k, r1*r2),并且驗(yàn)證 e(g, cm4) ?= e(cm1, cm2)心铃。
當(dāng)該驗(yàn)證通過時(shí),驗(yàn)證者確認(rèn)cm3確實(shí)是對v1*v2的承諾
有2個(gè)承諾
如果同一個(gè)人知道兩個(gè)承諾的opening方式弹惦,要證明 v1 = v2 很簡單:cm = cm1/cm2乎婿,看作公鑰怪与,用(r1-r2)當(dāng)私鑰作一個(gè)簽名,就證明了這個(gè)愉棱。如果直接提供(r1-r2)給人驗(yàn)證pow(h, r1-r2) ?= cm也可以。
下面是另外一個(gè)很好的方法: