布比可靠的隱私保護與許可權控制 | 商用區塊鏈BubiChain詳解(四)

買賣虛擬貨幣
區塊鏈技術逐漸從小眾的極客圈子走向規模化商用。從整體來看,區塊鏈技術的規模化商用還處在相對初期的階段,企業對區塊鏈技術效能、易用程度的較高需求,與區塊鏈技術本身的可拓展性瓶頸及較低的執行效率構成了當前限制行業發展的主要矛盾。基於自身大量的商業實踐和對區塊鏈商用的探索與創新,布比打造了完全自主智慧財產權、高效能可擴充套件、產品化成熟的商用級區塊鏈底層平臺BubiChain。
商用級區塊鏈底層平臺BubiChain取得底層技術關鍵突破:應用開發友好的智慧合約、安全高效的共識演算法、可靠的隱私保護、並行快速的多鏈,以及可擴充套件的跨鏈技術等創新;實現了產品化重要突破:應用可快速構建、視覺化運維、技術合規及資金賬戶體系等,形成完整的產品服務能力。本文為商用區塊鏈BubiChain詳解系列文章的第四篇——布比可靠的隱私保護與許可權控制,以下為正文內容。1. 綜述
布比區塊鏈結合同態隱藏、零知識證明等多項密碼學技術,實現非互動式的隱私保護,可隱藏交易金額、地址以及交易附加資料。利用代理重加密演算法實現對鏈上資料的授權訪問。非互動式的隱私保護:透過ECDH演算法為對方生成致盲因子,對方可還原,而第三方不可。接收方可以透過接收方的私鑰與傳送方的公鑰做代數運算還原致盲因子,而第三方沒有雙方的私鑰無法還原該致盲因子,從而達到對第三方隱藏的目的。交易金額隱藏:Pederson承諾實現了對金額的同態隱藏,即數字加密前的運算結果經過加密,與加密後運算的結果是一致的,區塊鏈節點只需要對加密後的資料做等式運算,即可保證輸入值等於輸出值。

交易地址隱藏:透過附加“根據接收者公鑰按照某種規則變換後的公鑰”實現所有權的轉移,不同的output產生不同的公鑰,所有權發生轉移、其他人不能關聯出變換前的公鑰,達到對地址隱藏的效果。

2. 交易金額的隱私保護

布比隱私保護技術的交易結構採用的是UTXO結構,透過Pederson承諾隱藏交易的金額,透過Range Proof演算法確保輸出的金額必須大於0。

· Pedersen Commitment

協議把每筆交易的輸入或者輸出表示為以下形式:C=r*G+v*H

r 是一個大隨機數,代表致盲因子,v 為金額,G 和H為生成元,C是該筆輸出金額的承諾,對交易金額進行盲化處理。G和H是橢圓曲線密碼的兩個生成元,一個明文數值乘以生成元之後是一個經過橢圓曲線密碼簡單加密過後的密文。這項運算是單向的,透過明文和生成元可以推出密文,但是透過密文和生成元倒推不出明文,這個難題叫做“離散對數問題”。

致盲因子r是交易的構造者自己選的隨機數,這個隨機數相當於非對稱加密演算法中的私鑰,只有自己知道不能告訴其他人。對每一個交易金額進行致盲操作後的好處是可以保持“加法同態性”,公式如下:

其中 v1、v2 為交易金額,r1和r2為致盲因子,G和H為生成元,對加密後的數字進行代數加法操作,和對加密之前的數字進行加法操作後再進行加密,是等價的。

· 餘項(Excess)

交易的傳送者和接收者,彼此不知道對方的致盲因子,但知道交易金額。

這會導致等式兩邊交易金額那一項可以被配平抵消掉,但致盲因子這一項無法抵消。把輸出減去輸入,最後一項為:

ro 為交易輸出的致盲因子之和,ri 為交易輸入的致盲因子之和,G 為生成元,可以把它叫做“餘項”。

· Range Proof

對金額的部分,需要證明金額沒有負數,比如有人構造一筆惡意交易,交易輸入是 10 交易輸出是 20 和 -10,就會憑空製造出一些錢,而等式驗證是透過的。為了證明這個交易所有的輸出都大於0,交易的每個輸出都附帶一個 Range Proof,一個簡短的零知識證明,用來證明該輸出值大於0。

一般的Range proof利用環簽名演算法,佔用的儲存空間與證明值的二進位制位數相關,位數越大,消耗的空間越大。有沒有一種不佔用大量的空間的Range Proof呢?Bulletproofs能在完成同樣工作的前提下佔用少量的空間。

· 交易金額隱藏實現

在上文分別介紹了Pedersen Commitment、餘項(Excess)、Range Proof各自在金額隱藏中的作用。下圖表示了交易的具體結構。

該交易表示了一筆輸入v1、一筆輸出v2及一筆找零v3的機密交易,當C給定時,必然有對應的r和v滿足,r*G +v*H = C,該承諾實現了對v值的同態隱藏。

校驗交易有效性規則:

· C1 = C2 + C3 + C4;
· 校驗C2的Range proof,C3的Range proof;
· 校驗C4是基點G的有效公鑰,透過驗籤演算法校驗;
· 校驗透過即證明:
· 餘額守恆;
· 交易經過r1授權;

3. 交易地址的隱私保護

在布比區塊鏈中,採用一次性金鑰實現地址的隱藏,保證了接收方的隱私。其本質思想是,當傳送者發起一筆交易時,使用接收者的公鑰計算出一個一次性公鑰,然後將加密資產轉移至該一次性地址,接收方透過監聽網路中的交易,利用自身私鑰,透過解密演算法來找到屬於自身的交易,從而進行再次花費。而網路中其它節點無法確認兩筆交易是傳送給同一接收方的,實現了交易的不可連結性。

一筆標準交易流程的實現過程如下:

1) Alice想要給Bob轉移一筆資金,Bob向Alice公佈它的標準地址,Alice解析Bob的地址為Pubkey。2) Alice選取交易、共享秘鑰、id算取hash作為Bob的一次性公鑰,PubKey=R2+Hash(Hash(tx),Hash(r1*r2*G),0)*G,其中Hash為密碼學雜湊函式,定義為:。
3) Alice使用PubKey作為交易輸出的公鑰地址,並且將地址Pubkey放入交易,Alice在網路中廣播交易。4) Bob監聽網路中所有交易,並使用自身私鑰r2檢查交易,計算Pubkey ‘= r2*G+Hash(Hash(tx),Hash(r2*r1*G),0)*G。由於r2*G=R2和r2*r1*G=r2*R1= r1*r2*G=r1*R2,則Pubkey=Pubkey’,那麼Bob就知道Alice確實向自己轉移了資金。5) 擁有私鑰即擁有交易輸出的所有權, 像大多數隱私保護方案一樣,交易輸出透過擁有ECC私鑰來保證其所有權,Bob能夠恢復出相應的一次性私鑰:x=r2+ Hash(Hash(tx),Hash(r2*R1),0)因為P=xG。Bob可以隨時使用私鑰r2來獲取x來花費該筆資金。
布比隱私保護透過附加“透過接收方變換後的公鑰”實現所有權的轉移,達到對地址隱藏的效果:所有權轉移、其他人不能關聯出變換前的公鑰。

Hash(r2*r1*G) :為傳送者和接受者可知的致盲因子
P=R1,接受者可以運算Hash(P*r2)為該output的致盲因子
Enc,對稱加密函式,接收者可以還原v2的值
Pubkey,接收方變換後的公鑰,只有透過對應的公鑰簽名才可花費該輸出
Rang: v2值大於0的範圍證明

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;