智能合約隱私保護論文:NIZK隱私保護方案
論文提出了:
1、壹種智能合約下保護用戶余額和交易金額的方案,該方案在隨機預言模型下是可證明安全的。
2、壹種高效零知識證明方案NIZK(non-interactive zero knowledge),該方案以產生的proof size更大為代價來提高生成proof的時間效率。
比較:zk-SNARK (Zerocash) & NIZK (DSC)
同態加密 HE(homomorphic encryption):允許用戶直接以密文形式來更新賬戶余額。
零知識證明 ZK(zero knowledge):證明交易的正確性。保障equivalence 和 enough ,發送方減少 V 的情況下接收方應該接收 V,證明發送方有多於 V 的賬戶余額來發送給接收方。
相關區塊鏈隱私保護工作:Monero(門羅幣)、RingCT(環簽名)、Zerocoin、Zerocash
1、雙線性映射
2、同態加密
可以保證在密文狀態下進行余額的更新操作。E(1)+E(2)=E(3)
這是壹種 ElGamal 方案的變型,但是不懂為什麽引入h,可能是為了更好的安全性吧,而且余額都為數值型的,相比之下明文空間是比較小的,所以可以解出明文m。
3、基於的困難問題
也是離散對數問題的變型使用。
4、Boneh-Boyen簽名方案
6、零知識證明 NIZK
本文中使用的是壹種非交互式的零知識證明,且使用了由可信第三方產生 CRS(common reference string) 的模型, 而沒用使用到證明密鑰 PK 和驗證密鑰 VK。
CRS 可以只產生壹次而用來生成多個 proof
7、A 發送 t 個幣給 B 的交易形式:
驗證程序直接以智能合約形式部署在區塊鏈上,可以自動驗證並進行資產轉移操作。
1、Setup
輸入安全參數 n ,生成系統公***參數 PP,其中用到了Boneh-Boyen 簽名方案,且PP中已經包含零知識證明中的 CRS
各參與方的初始化:使用上述同態加密方案對自己的余額進行加密,在賬戶模型中只存儲余額的密文。
此處考慮的明文空間大小為[0,20^30)
,對於擁有私鑰的人來說可以很容易的解密出明文,即賬戶余額值。
3、Transfer
A 發送 t 個幣給 B:
x 表示傳輸語句,其中包含 A、B 的公鑰,A 的賬戶余額由同態加密生成的密文,以及對 t 分別用 A、B 的公鑰用同態加密生成的密文。
w 表示 witness ,其中包含 A 的私鑰,生成密文時使用的隨機數,A 的賬戶余額及傳輸金額
π 為生成的 proof
(x , PP , π)上傳到區塊鏈上由驗證程序驗證其有效性。
4、Redeem
驗證程序部署在區塊鏈上,收到相應輸入後驗證其有效性:若無效則忽視;若有效,則公開此次交易(交易金額是加密過的),並對發送方和接收方的賬戶余額進行更新。
5、安全性