姚 爽, 張大偉, 李 勇, 王 偉
1. 北京交通大學(xué) 計算機(jī)與信息技術(shù)學(xué)院, 北京 100044
2. 智能交通數(shù)據(jù)安全與隱私保護(hù)技術(shù)北京市重點(diǎn)實驗室, 北京 100044
3. 北京交通大學(xué) 電子信息工程學(xué)院, 北京 100044
區(qū)塊鏈技術(shù)是一種去中心化、多方共識、公開透明的新型計算范式. 其去中心化的分布式數(shù)據(jù)處理、多方共識確認(rèn)和數(shù)據(jù)不可篡改的特性為解決數(shù)據(jù)安全和信息共享問題提供了新的解決方案. 同時, 隨著產(chǎn)業(yè)區(qū)塊鏈技術(shù)的普及和發(fā)展, 區(qū)塊鏈系統(tǒng)也從強(qiáng)調(diào)去中心化的開放式公有鏈發(fā)展到多中心化的聯(lián)盟鏈, 區(qū)塊鏈交易場景也從單一的去中心化密碼貨幣發(fā)展到面向行業(yè)應(yīng)用的多中心化數(shù)字資產(chǎn)交易系統(tǒng), 區(qū)塊鏈技術(shù)正成為目前的研究熱點(diǎn).
區(qū)塊鏈系統(tǒng)的交易模型同傳統(tǒng)中心化系統(tǒng)有很大的不同. 首先, 在交易內(nèi)容確認(rèn)方面, 中心化系統(tǒng)中所有交易過程的記錄和確認(rèn)都是由系統(tǒng)的中心機(jī)構(gòu)集中來完成的. 而在區(qū)塊鏈系統(tǒng)中, 客戶端首先將交易發(fā)送到區(qū)塊鏈網(wǎng)絡(luò)中, 由網(wǎng)絡(luò)中的特定節(jié)點(diǎn)來對交易進(jìn)行分布式共識確認(rèn); 其次, 在賬本數(shù)據(jù)存儲方面, 傳統(tǒng)交易系統(tǒng)采用由中心機(jī)構(gòu)集中安全存儲且賬本內(nèi)容不公開. 而區(qū)塊鏈交易系統(tǒng)則采用全網(wǎng)節(jié)點(diǎn)共同存儲賬本的方式, 賬本數(shù)據(jù)安全由共識機(jī)制、塊鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)共同確保, 賬本內(nèi)容公開透明. 由此可見, 區(qū)塊鏈系統(tǒng)在提供了靈活的分布式數(shù)據(jù)處理和交易共識確認(rèn)的同時, 也對交易數(shù)據(jù)的隱私保護(hù)提出了極大的挑戰(zhàn). 隨著產(chǎn)業(yè)區(qū)塊鏈應(yīng)用的普及和推廣, 對區(qū)塊鏈交易隱私保護(hù)的需求也在日益增強(qiáng). 首先, 在公開賬本中確保交易內(nèi)容隱私是在合作競爭環(huán)境下確保交易方合法利益的必然需求; 其次, 在面向行業(yè)應(yīng)用的數(shù)字資產(chǎn)交易系統(tǒng)中確保權(quán)威機(jī)構(gòu)能夠?qū)崿F(xiàn)對交易的有效審計和監(jiān)管也是規(guī)范市場行為、保護(hù)交易方合法權(quán)益的有效手段. 因此, 在交易數(shù)據(jù)公開存儲、全網(wǎng)共識的情況下確保交易內(nèi)容的隱私保護(hù)和可靠監(jiān)管是產(chǎn)業(yè)區(qū)塊鏈應(yīng)用發(fā)展面臨的主要問題之一, 對這一問題進(jìn)行深入研究也具有極其重要的意義.
區(qū)塊鏈系統(tǒng)中的交易由交易身份和交易內(nèi)容兩部分組成. 其中交易身份用于標(biāo)識數(shù)字資產(chǎn)的所有者,交易內(nèi)容用于表示數(shù)字資產(chǎn)本身的屬性. 區(qū)塊鏈交易內(nèi)容隱私是指對于區(qū)塊鏈系統(tǒng)中的某筆交易, 觀察者無法確認(rèn)交易的具體內(nèi)容, 如交易金額、交易類型等. 即對于觀察者而言, 或者無法訪問到交易內(nèi)容、或者無法獲得交易內(nèi)容的明文信息. 目前的文獻(xiàn)多將交易身份和交易內(nèi)容隱私保護(hù)同時討論, 但我們認(rèn)為在如下兩方面二者存在較大的不同: 首先, 二者的保護(hù)對象不同, 交易身份和交易內(nèi)容在基本屬性和操作方式上存在顯著差異. 區(qū)塊鏈系統(tǒng)中多采用公鑰作為用戶的身份標(biāo)識, 并由此作為用戶對數(shù)字資產(chǎn)UTXO 或賬戶的權(quán)屬標(biāo)記. 在交易過程中數(shù)字資產(chǎn)發(fā)生轉(zhuǎn)移時, 資產(chǎn)所屬用戶需使用對應(yīng)的私鑰對交易行為進(jìn)行簽名確認(rèn). 從交易安全的角度考慮, 交易身份的研究更關(guān)注于資產(chǎn)的權(quán)屬標(biāo)記和支付確權(quán)等. 交易內(nèi)容如交易金額多采用數(shù)字形式表示, 在交易過程中用于表示數(shù)字資產(chǎn)的轉(zhuǎn)移金額等信息. 從交易安全的角度考慮,交易內(nèi)容的研究更關(guān)注于支付金額范圍的合理性和交易金額的平衡性等; 其次, 二者在隱私保護(hù)過程中采取了完全不同的設(shè)計思路和技術(shù)手段. 交易身份的隱私保護(hù)更強(qiáng)調(diào)交易過程中的身份混淆, 即將真實交易者的身份混淆在匿名集合中以確保身份隱私, 但同時必須解決支付確權(quán)和防雙花問題以確保交易安全. 鑒于不同的混淆方案, 可基于匿名群組消息協(xié)議、環(huán)簽名和零知識證明等分別實現(xiàn)協(xié)同、自主和全局身份混淆以保護(hù)隱私[1]; 而交易內(nèi)容的隱私保護(hù)更強(qiáng)調(diào)交易信息的機(jī)密性和公開可驗證性, 即在交易明文信息不可見的情況下區(qū)塊鏈驗證節(jié)點(diǎn)可確保金額范圍的合理性和交易金額的平衡性以保證交易安全. 因此, 現(xiàn)有方案多通過消息加密、私有存儲確保交易信息的機(jī)密性, 通過零知識證明確保密態(tài)數(shù)據(jù)交易規(guī)則的可驗證性. 鑒于二者在研究目標(biāo)和技術(shù)路線上的不同, 本文將交易內(nèi)容同交易身份的隱私保護(hù)分離開單獨(dú)進(jìn)行研究討論, 聚焦于內(nèi)容隱私保護(hù)的自有特點(diǎn), 以期為讀者提供有益的研究借鑒.
區(qū)塊鏈交易內(nèi)容隱私保護(hù)是目前的研究熱點(diǎn), 國內(nèi)外已有多篇文獻(xiàn)涉及到區(qū)塊鏈系統(tǒng)安全隱私問題的研究, 但尚缺乏單獨(dú)對交易內(nèi)容隱私保護(hù)的系統(tǒng)性分析和深入探討. 2017 年, 祝烈煌等人[2]從數(shù)據(jù)失真、數(shù)據(jù)加密和限制發(fā)布三方面討論了區(qū)塊鏈交易內(nèi)容隱私保護(hù)問題; 2018 年, Genkin 等人[3]對公有鏈不同密碼貨幣所采用的內(nèi)容隱私技術(shù)進(jìn)行了討論; 王宗慧等人[4]從混幣方案、密碼學(xué)方案和安全通道方案三個方面對公有鏈數(shù)據(jù)隱私保護(hù)方案進(jìn)行了研究; 2019 年, 何德彪等人[5]重點(diǎn)對內(nèi)容隱私保護(hù)方面的零知識證明和同態(tài)密碼進(jìn)行了討論; 李旭東等人[6]從混幣技術(shù)、離鏈支付協(xié)議和密碼學(xué)方案三個方面對比特幣隱私保護(hù)問題和改進(jìn)方案進(jìn)行了研究; 2020 年, 張家碩等人[7]從零知識證明、安全多方計算、環(huán)簽名和可信計算等方面對區(qū)塊鏈隱私保護(hù)的實現(xiàn)技術(shù)手段進(jìn)行了探討; 張奧等人[8]依據(jù)隱私保護(hù)的不同技術(shù)手段從地址混淆、信息隱藏、通道隔離這三個方面主要對公有鏈中的隱私保護(hù)機(jī)制進(jìn)行了研究. 2021年, 李佩麗等人[9]主要從混合技術(shù)和零知識證明兩個方面討論了區(qū)塊鏈隱私保護(hù)技術(shù), 從身份追蹤和內(nèi)容監(jiān)管兩方面探討了隱私監(jiān)管技術(shù). 從隱私計算的范疇而言, 依據(jù)李鳳華等提出的泛在互聯(lián)環(huán)境下的隱私計算理論[10,11], 上述相關(guān)工作[2-9]所討論的區(qū)塊鏈交易隱私保護(hù)歸類為隱私防護(hù)技術(shù), 這些技術(shù)面向區(qū)塊鏈交易內(nèi)容隱私保護(hù)的特定場景, 側(cè)重于基于密碼學(xué)等傳統(tǒng)數(shù)據(jù)安全技術(shù)實現(xiàn)隱私防護(hù). 不同于隱私脫敏技術(shù)中采用失真且不可逆的方法進(jìn)行防護(hù), 區(qū)塊鏈交易隱私保護(hù)重點(diǎn)需解決密態(tài)交易數(shù)據(jù)的準(zhǔn)確運(yùn)算和規(guī)則校驗問題, 且對于交易對手方而言這些數(shù)據(jù)多具有可逆性. 面向交易內(nèi)容的隱私防護(hù)技術(shù), 上述相關(guān)工作[2-9]多以公有鏈密碼貨幣為研究對象, 將交易身份和交易內(nèi)容兩部分一起討論, 依據(jù)所采取的具體技術(shù)分類來進(jìn)行研究. 這一思路沒有集中分析面向交易內(nèi)容和交易身份的隱私保護(hù)在方案目標(biāo)、設(shè)計思路和實現(xiàn)手段上的差異, 研究范圍也未聚焦到交易內(nèi)容隱私保護(hù)及其監(jiān)管的詳細(xì)方案. 此外, 上述工作對聯(lián)盟鏈中的隱私保護(hù)機(jī)制涉及較少, 也未對目前產(chǎn)業(yè)區(qū)塊鏈中面臨的隱私交易監(jiān)管問題進(jìn)行深入探討.
鑒于上述問題, 本文基于區(qū)塊鏈交易模型公開可驗證的特點(diǎn), 將區(qū)塊鏈交易內(nèi)容隱私保護(hù)分為三方面的內(nèi)容進(jìn)行深入探討: 交易內(nèi)容隱藏、隱藏交易驗證和隱藏交易監(jiān)管. 其中, 交易內(nèi)容隱藏用于確保觀察者無法獲得交易明文數(shù)據(jù); 隱藏交易驗證用于確保共識節(jié)點(diǎn)可對隱藏后的交易內(nèi)容進(jìn)行正確性驗證; 隱藏交易監(jiān)管用于確保監(jiān)管方可對隱藏后的交易內(nèi)容進(jìn)行有效監(jiān)管. 本文從上述三個方面對公有鏈和聯(lián)盟鏈中內(nèi)容隱私保護(hù)的共性問題和解決方案進(jìn)行了系統(tǒng)性地梳理. 首先, 基于區(qū)塊鏈交易模型的特點(diǎn), 分析了區(qū)塊鏈交易內(nèi)容隱私保護(hù)所面臨的安全威脅及挑戰(zhàn); 其次, 我們認(rèn)為在區(qū)塊鏈賬本公開存儲、多方共識確認(rèn)情況下如何實現(xiàn)交易內(nèi)容的隱藏和隱藏交易的高效驗證是目前亟待解決的關(guān)鍵問題. 其中的隱藏交易驗證又是區(qū)塊鏈新型交易場景下的特定需求, 相關(guān)的研究工作非?;钴S. 在公有鏈和聯(lián)盟鏈中, 由于去中心化和多中心化交易處理驗證方式的不同, 又使得二者采取了不同的內(nèi)容隱藏和驗證方案. 由此本文從交易內(nèi)容隱藏和隱藏交易驗證兩個方面對目前區(qū)塊鏈系統(tǒng)中所采取的不同隱私保護(hù)手段, 如: 同態(tài)密碼、加密技術(shù)、隔離技術(shù)、環(huán)簽名和零知識證明等進(jìn)行了對比分析, 列舉了不同方案各自存在的優(yōu)缺點(diǎn), 從其所涉及的設(shè)計思路、密碼算法和安全協(xié)議等方面進(jìn)行了深入的探討; 此外, 隨著產(chǎn)業(yè)區(qū)塊鏈的發(fā)展, 隱私交易的監(jiān)管問題在行業(yè)應(yīng)用中日益凸顯. 因此, 本文也從隱藏交易監(jiān)管方面對現(xiàn)有方案進(jìn)行了總結(jié)分析. 最后,本文對交易內(nèi)容隱藏、隱藏交易驗證和隱藏交易監(jiān)管技術(shù)的未來發(fā)展進(jìn)行了展望.
本文組織結(jié)構(gòu)如下: 第1 節(jié)介紹了區(qū)塊鏈交易內(nèi)容隱私保護(hù)的基本概念和需解決的主要問題; 第2 節(jié)分析總結(jié)了當(dāng)前區(qū)塊鏈交易內(nèi)容隱私保護(hù)所面臨的安全威脅及挑戰(zhàn); 第3 節(jié)從交易內(nèi)容隱藏、隱藏交易驗證和隱藏交易監(jiān)管三個方面對目前主流區(qū)塊鏈平臺中交易內(nèi)容隱私保護(hù)所采取的不同技術(shù)手段進(jìn)行了對比分析; 第4 節(jié)對交易內(nèi)容和交易身份隱私保護(hù)技術(shù)的結(jié)合進(jìn)行了分析討論; 第5 節(jié)為總結(jié)及未來展望.
區(qū)塊鏈系統(tǒng)采用交易多方共識確認(rèn)模型提供了高效的信任構(gòu)建方法, 同時也為鏈上數(shù)據(jù)流轉(zhuǎn)帶來了更多的安全和隱私保護(hù)問題. 區(qū)塊鏈系統(tǒng)在交易內(nèi)容隱私保護(hù)方面面臨的威脅主要包括:
(1) 區(qū)塊鏈系統(tǒng)采用了交易賬本全網(wǎng)公開的方式來存儲全部的歷史交易數(shù)據(jù), 區(qū)塊鏈系統(tǒng)中的所有節(jié)點(diǎn)都可以看到鏈上的明文數(shù)據(jù)并追溯交易流程, 極易造成用戶身份、交易類型和賬戶余額等隱私信息的泄露,例如敵手可以通過交易圖分析發(fā)現(xiàn)不同賬戶間的關(guān)聯(lián)關(guān)系[12]、追蹤特殊交易[13]以及發(fā)現(xiàn)交易規(guī)則[14]等, 給交易內(nèi)容隱私保護(hù)帶來了威脅.
(2) 區(qū)塊鏈系統(tǒng)采用多方共識方式來完成交易的確認(rèn), 參與共識的節(jié)點(diǎn)必然需要掌握更多的交易信息以實現(xiàn)交易規(guī)則驗證, 一旦共識節(jié)點(diǎn)出現(xiàn)問題, 必然會影響交易的正確驗證以及造成隱私數(shù)據(jù)泄露, 給交易內(nèi)容隱私保護(hù)帶來威脅.
(3) 傳統(tǒng)區(qū)塊鏈隱私保護(hù)的去中心化特點(diǎn)使得鏈上交易缺乏合理監(jiān)管, 對于惡意違法交易無法實現(xiàn)交易追蹤溯源和內(nèi)容監(jiān)管, 在應(yīng)用層面可能帶來系統(tǒng)性的安全風(fēng)險.
在傳統(tǒng)交易系統(tǒng)中, 用戶是向中心機(jī)構(gòu)公開交易身份和交易內(nèi)容, 由中心機(jī)構(gòu)完成信息的隱私保護(hù).而區(qū)塊鏈系統(tǒng)中并無單一中心機(jī)構(gòu), 而是由系統(tǒng)整體安全機(jī)制來完成隱私保護(hù). 因此, 受限于區(qū)塊鏈系統(tǒng)中交易模型的設(shè)計, 交易內(nèi)容隱私保護(hù)方案也面臨著如下一些技術(shù)挑戰(zhàn):
(1) 區(qū)塊鏈系統(tǒng)采用多方共識方式來實現(xiàn)交易的確認(rèn)和信任的構(gòu)建, 有時交易雙方對于作為觀察者的驗證節(jié)點(diǎn)來說是存在交易內(nèi)容隱私保護(hù)需求的, 簡單的信息隱藏方法無法滿足既保護(hù)信息又可驗證內(nèi)容的需求. 因此, 如何在保護(hù)交易內(nèi)容隱私的同時實現(xiàn)正確有效的交易驗證具有一定的挑戰(zhàn)性.
(2) 區(qū)塊鏈系統(tǒng)中采用多方確認(rèn)后通過公開信道(區(qū)塊鏈賬本) 進(jìn)行交易信息發(fā)布, 這一過程耗時較長. 因此, 在區(qū)塊鏈系統(tǒng)中多采用交易發(fā)送方到區(qū)塊鏈節(jié)點(diǎn)的單向通信方式. 這使得傳統(tǒng)交易系統(tǒng)中的多輪雙向隱私保護(hù)協(xié)議不再適用. 因此, 如何在區(qū)塊鏈系統(tǒng)單向傳輸交易數(shù)據(jù)的過程中實現(xiàn)交易認(rèn)證和隱私保護(hù)也具有一定的挑戰(zhàn)性.
(3) 區(qū)塊鏈系統(tǒng)中的賬本數(shù)據(jù)采用追加存儲的方式, 添加的交易數(shù)據(jù)用于賬本的完整性驗證且不能刪除, 而隱私保護(hù)技術(shù)又帶來了額外的交易數(shù)據(jù)存儲開銷. 因此, 必須采取有效措施來降低隱私保護(hù)信息的存儲開銷, 以避免賬本數(shù)據(jù)的膨脹問題.
(4) 隨著區(qū)塊鏈系統(tǒng)在行業(yè)應(yīng)用中的不斷普及和發(fā)展, 行業(yè)監(jiān)管同隱私保護(hù)間的矛盾也逐漸凸顯. 一方面, 區(qū)塊鏈系統(tǒng)中缺乏單一交易中心機(jī)構(gòu); 另一方面, 傳統(tǒng)的公有鏈中無監(jiān)管式的隱私保護(hù)方法是不適合于很多行業(yè)應(yīng)用場景的. 因此, 如何在實現(xiàn)隱私保護(hù)的同時又可提供對于交易內(nèi)容的監(jiān)管也是一個頗具挑戰(zhàn)性的問題.
本文將從交易內(nèi)容隱藏、隱藏交易驗證和隱藏交易監(jiān)管三個方面介紹區(qū)塊鏈交易內(nèi)容隱私保護(hù)技術(shù).首先, 當(dāng)用戶提交交易時, 系統(tǒng)將通過交易內(nèi)容隱藏技術(shù)處理交易數(shù)據(jù)使得明文數(shù)據(jù)對于全網(wǎng)或部分未授權(quán)用戶不可見, 只有交易接收方可通過隱藏后的數(shù)據(jù)恢復(fù)出交易明文; 其次, 驗證節(jié)點(diǎn)使用隱藏交易驗證技術(shù)對交易密文信息進(jìn)行合法性驗證; 此外, 對于存在監(jiān)管需求的區(qū)塊鏈系統(tǒng), 可使用隱藏交易監(jiān)管技術(shù)對交易內(nèi)容進(jìn)行審計和監(jiān)管. 這一隱私保護(hù)模型在確保交易方明文交易數(shù)據(jù)保密性的同時, 又可保證共識節(jié)點(diǎn)對隱藏后的交易內(nèi)容進(jìn)行正確性驗證和監(jiān)管方對交易規(guī)則的有效監(jiān)管. 由上述三方面內(nèi)容構(gòu)成的交易內(nèi)容隱私保護(hù)模型如圖1 所示.
圖1 交易內(nèi)容隱私保護(hù)模型Figure 1 Model of transaction privacy protection
目前的區(qū)塊鏈系統(tǒng)多采用信息加密和數(shù)據(jù)隔離技術(shù)來實現(xiàn)交易內(nèi)容的隱藏.
3.1.1 交易信息加密
交易信息加密方案通過將含有隱私內(nèi)容的明文數(shù)據(jù)加密后上鏈, 達(dá)到區(qū)塊鏈交易內(nèi)容隱藏的目的. 只有擁有密鑰的用戶才能夠解密密文獲得隱私信息. 目前, 基于交易信息加密的隱私保護(hù)方案可分為同態(tài)密碼、非對稱/對稱加密和屬性加密三種.
同態(tài)密碼
同態(tài)密碼的同態(tài)性是指對明文進(jìn)行加法和(或)乘法運(yùn)算與對密文進(jìn)行相應(yīng)的運(yùn)算,結(jié)果是等價的. 當(dāng)前相關(guān)區(qū)塊鏈交易隱私保護(hù)方案所采用的主要同態(tài)密碼技術(shù)如表1 所示.
表1 同態(tài)密碼技術(shù)及相關(guān)區(qū)塊鏈交易隱私保護(hù)方案Table 1 Homomorphic encryption and its applications in blockchain privacy preserving
為了提高比特幣的隱私保護(hù)特性, Adam Back 和Gregory Maxwell 提出了保密交易的概念[15], 通過在比特幣網(wǎng)絡(luò)中使用Pedersen 承諾[16]實現(xiàn)對UTXO 中交易金額的隱藏.
定義1 (Pedersen 承諾) 設(shè)G為橢圓曲線點(diǎn)群G 中的生成元,H為橢圓曲線中的一個點(diǎn), 隨機(jī)選擇r ∈Zn, 則v ∈Zn的Pedersen 承諾為: commit(r,v)+vH.
Pedersen 承諾具有綁定性(binding) 和隱藏性(hiding).
定義2 (綁定性) 給定承諾值commit(r,v), 對于任何PPT 敵手, 找到(r′,v′) 滿足m/=m′和commit(r′,v′)=commit(r,v) 的概率是可以忽略的.
定義3 (隱藏性) 對于任何v,v′∈Zp以及隨機(jī)選擇的r,r′∈Zp, commit(r,v) 和commit(r′,v′) 的分布是相同的.
定義4 (Pedersen 承諾同態(tài)性) commit(r1,v1) + commit(r2,v2) = (r1+r2)G+ (v1+v2)H=commit(r1+r2,v1+v2).
保密交易技術(shù)中通過構(gòu)造基于橢圓曲線的Pedersen 承諾方案完成交易金額隱藏,v代表交易金額,r為隨機(jī)生成的盲化因子并且不公開. Pedersen 承諾所具有的隱藏性使得觀察者無法通過公開賬本中記錄的承諾值commit(r,v) 還原出交易金額, Pedersen 承諾的綁定性使得發(fā)送者無法再次更改交易金額, 從而在確保交易安全的情況下實現(xiàn)了交易內(nèi)容的隱私保護(hù). 保密交易技術(shù)在公有鏈Elements[17]、Zerocoin[18]、Mimblewimble[19-21]、門羅幣[22,23]和零幣Zcash (sapling 版本)[25]中都得到了實際應(yīng)用. 此外, 基于聯(lián)盟鏈Fabric 的FabZK[24]項目也使用了保密交易技術(shù)來實現(xiàn)交易內(nèi)容的隱藏.
此外, 目前已經(jīng)有相關(guān)研究提出使用Paillier 加法同態(tài)算法實現(xiàn)區(qū)塊鏈用戶交易金額的隱藏. Paillier加法同態(tài)算法基于復(fù)合剩余類困難問題, 其算法流程如下:
(3) Decrypt(sk,C)→m: 該算法為解密算法, 計算hm=Y/Xsk-1, 從hm中恢復(fù)明文m.
在PGC 方案中, 利用Twisted-ElGamal 加密實現(xiàn)交易金額隱藏和賬戶余額的隱藏. 首先, 交易參與者使用自己的公鑰加密賬戶余額. 當(dāng)發(fā)生轉(zhuǎn)賬交易時, 交易發(fā)送方分別使用發(fā)送方和接收方的公鑰(pks,pkr) 加密交易金額v得到交易密文(Cs,Cr). 同時生成零知識證明πcorrect證明交易的正確性, 接收者收到證明和簽名后的交易密文, 完成隱藏交易. 交易確認(rèn)完成后, 交易發(fā)送方和交易接收方可通過Twisted-ElGamal 算法的同態(tài)性使用交易密文(Cs,Cr) 各自更新加密的賬戶余額.
此外,PGC 方案[30]給出了在32 比特消息空間和128 比特安全強(qiáng)度下,Twisted-ElGamal 和Paillier算法運(yùn)行的性能對比. 其中Twisted-ElGamal 工作在prime256v1 橢圓曲線上, Paillier 算法的模長為3072 位. 比較結(jié)果如表2 所示. 由比較可知, Twisted-ElGamal 具有更好的運(yùn)算性能.
表2 Twisted-ElGamal 和Paillier 比較[30]Table 2 Benchmarks of Twisted-ElGamal and Paillier [30]
綜上所述, 基于同態(tài)承諾和同態(tài)加密的方案能夠保證交易內(nèi)容的隱私性, 其中, Twisted-ElGamal 算法不僅解密效率優(yōu)于Paillier 算法, 而且也是對零知識證明友好的. 但是以上方案實現(xiàn)交易內(nèi)容隱藏的同時也存在著一些問題: 雖然同態(tài)密碼方案實現(xiàn)了交易明文的隱藏, 但密文仍然會作為輸入輸出結(jié)果編碼存儲在公開賬本中, 如果未同時采取身份隱藏機(jī)制則會為交易路徑追蹤提供便利; 其次, 由于保密交易所基于的Pedersen 承諾具有單向特性, 即無法由承諾結(jié)果直接獲得被承諾值, 因此基于保密交易構(gòu)建的交易支付過程必須通過其他方式在發(fā)送方和接收方之間進(jìn)行交易明文的傳輸. 為了解決這一問題, 目前存在兩種解決方式, 第一種方式為交易雙方使用鏈外通道交互并記錄交易明文數(shù)據(jù), 如FabZK 即采用鏈外私有賬本的方式來實現(xiàn); 第二種方式為直接將交易數(shù)據(jù)明文進(jìn)行加密并存儲在公開賬本中, 例如, 在門羅幣的最新實現(xiàn)中, 發(fā)送方和接收方之間通過ECDH 密鑰協(xié)商協(xié)議生成共享加密密鑰, 然后使用該密鑰對交易金額進(jìn)行加密(異或) 并存儲在賬本上. 此外, 同態(tài)加密算法雖然可將交易金額直接加密存儲在鏈上, 但Paillier 算法的問題在于加解密效率較低. Twisted-ElGamal 算法在解密過程中采用區(qū)間計算離散對數(shù)的方式獲得m, 因此較適合于具有固定范圍的金額類數(shù)值. 因此, 在實際應(yīng)用時可根據(jù)不同的場景需求擇優(yōu)選取.
非對稱/對稱加密
Zerocash 方案中使用接收者的公鑰通過匿名公鑰加密模式(key-privacy public-key encryption)[31]對交易金額、序列號生成因子和貨幣承諾(v,ρ,rcm) 進(jìn)行加密, 然后將密文包含在隱蔽交易中并廣播到區(qū)塊鏈. 接收方需要監(jiān)聽區(qū)塊鏈上的交易, 嘗試用自己的私鑰解密隱蔽交易中包含的加密信息, 若解密成功, 則存儲解密后的敏感信息并在未來支付時使用. 零幣中的Sprout 版本則通過Curve25519 密鑰協(xié)商協(xié)議在發(fā)送方與接收方之間產(chǎn)生一個共同的會話密鑰, 然后通過一次性認(rèn)證對稱加密方案(authenticated one-time symmetric encryption)[32]對敏感交易信息進(jìn)行加密. Curve25519 密鑰協(xié)商協(xié)議協(xié)商會話密鑰的具體流程如圖2 所示:
圖2 Curve25519 密鑰協(xié)商協(xié)議Figure 2 Key agreement protocol on Curve25519
在密鑰協(xié)商過程中, 發(fā)送方首先隨機(jī)選擇一個臨時公私鑰對 epk/esk, 接收方擁有傳輸密鑰對(pkenc,skenc). 在密鑰交換過程中, 雙方利用自己的私鑰和對方的公鑰再使用一次Curve25519 函數(shù)就可以計算得到一個共同的秘密值, 然后利用這個秘密值派生出會話密鑰用于之后的對稱加密算法. 在交易發(fā)送時, 發(fā)送方連同密文Cenc和epk 一同發(fā)給接收者. 接收者監(jiān)聽區(qū)塊鏈上的交易, 嘗試?yán)米约旱乃借€skenc和交易中公開的epk 計算出加密密鑰Kenc, 解密隱蔽交易中包含的加密信息, 若解密成功, 則接收這筆交易.
使用一次性認(rèn)證對稱加密方案對敏感交易信息進(jìn)行加密的流程如下:
(1) 發(fā)送方產(chǎn)生一個密鑰對(epk,esk).
(2) 通過Curve25519 密鑰協(xié)商協(xié)議K計算共享秘密值sharedSecret :=KA.Agree(esk, pkenc).
(3) 通過密鑰派生方案KDF 計算加密密鑰Kenc:= KDF(i,hsig, sharedSecret, epk, pkenc).
(4) 通過認(rèn)證加密方案Sym 計算消息m對應(yīng)的密文C:=Sym.EncryptKenc(m).
屬性加密
為了解決更細(xì)粒度隱私保護(hù)場景下的數(shù)據(jù)隱私保護(hù)問題, 一些基于屬性加密(attribute-based encryption, ABE)[33,34]的區(qū)塊鏈數(shù)據(jù)隱私保護(hù)方案[35,36]相繼被提出. ABE 分為密文策略屬性加密(ciphertext policy attribute-based encryption, CP-ABE) 和密鑰策略屬性加密(key policy attribute-based encryption, KP-ABE). 現(xiàn)有的區(qū)塊鏈系統(tǒng)下基于屬性加密的交易隱私保護(hù)方案多使用CP-ABE 算法.CP-ABE 的算法流程如下:
(1) Setup(1λ,S)→(PP,MK), 初始化算法輸入安全參數(shù)λ和屬性集S, 輸出公開參數(shù)PP 和主密鑰MK;
(2) KeyGen(MK,S)→SK, 密鑰生成算法輸入主密鑰MK 和屬性集S, 輸出用戶屬性私鑰SK;
(3) Encrypt(PP,M,A)→CT, 加密算法輸入公開參數(shù)PP, 明文M和訪問結(jié)構(gòu)A, 輸出密文CT;
(4) Decrypt(PP,CT,SK)→M, 解密算法輸入公開參數(shù)PP, 密文CT 和用戶私鑰SK, 輸出明文M, 只有滿足訪問結(jié)構(gòu)A的用戶才能解密獲得M.
Yuan 等人[37]使用CP-ABE 實現(xiàn)了一種區(qū)塊鏈數(shù)據(jù)隱私保護(hù)方案, 保證了數(shù)據(jù)的機(jī)密性.同時通過ABE 完成不同用戶對高級、低級數(shù)據(jù)的訪問權(quán)限控制, 即高級用戶可以查詢高級和低級數(shù)據(jù), 而低級用戶只能查詢低級數(shù)據(jù). Cheng 等人[38]提出了基于屬性加密的區(qū)塊鏈隱私保護(hù)方案并將其應(yīng)用于車聯(lián)網(wǎng)用戶的隱私保護(hù), 該方案通過設(shè)置用戶的交通屬性集合將用戶分組并設(shè)置不同訪問策略加密隱私內(nèi)容,只有滿足密文訪問控制策略的用戶才能解密密文獲得隱私內(nèi)容; Qiu 等人[39]提出了一種基于屬性加密算法的Fabric 數(shù)據(jù)訪問控制方案, 該方案將通道ID、組織ID 和用戶ID 作為用戶屬性集合, 根據(jù)屬性集合設(shè)置訪問控制策略, 在通道和組織層面為Fabric 提供了更細(xì)粒度的數(shù)據(jù)內(nèi)容隱私保護(hù). 概括而言, 基于CP-ABE 方案的區(qū)塊鏈數(shù)據(jù)訪問控制方案通過設(shè)置屬性集合將用戶分組, 由數(shù)據(jù)發(fā)送方指定加密數(shù)據(jù)的用戶訪問控制列表, 一個屬性集可配置不同的多個訪問控制策略, 用戶可以根據(jù)需求使用不同嚴(yán)格程度的訪問控制策略加密隱私數(shù)據(jù)得到密文上鏈, 實現(xiàn)更多樣化、細(xì)粒度的交易內(nèi)容隱私保護(hù), 如圖3 所示. 基于CP-ABE 的區(qū)塊鏈數(shù)據(jù)隱私保護(hù)方案主要包括如下幾個步驟:
圖3 基于屬性加密的區(qū)塊鏈隱私保護(hù)方案Figure 3 ABE-based blockchain privacy protection scheme
(1) 初始化: 首先生成公開參數(shù)PP 和主密鑰MK, 然后設(shè)置屬性集S, 利用MK 和S為各用戶生成屬性私鑰SK, 通過某種安全方式將屬性私鑰SK 發(fā)送給對應(yīng)用戶.
(2) 數(shù)據(jù)加密上鏈: 數(shù)據(jù)發(fā)送方根據(jù)訪問結(jié)構(gòu)A加密明文M生成密文CT, 密文CT 經(jīng)過共識確認(rèn),存儲于區(qū)塊鏈中.
(3) 數(shù)據(jù)解密: 接收方用戶請求區(qū)塊鏈網(wǎng)絡(luò)中包含該交易密文的對應(yīng)信息, 得到對應(yīng)的密文CT, 滿足訪問結(jié)構(gòu)A的用戶能夠通過屬性密鑰SK 解密CT 得到對應(yīng)明文.
綜上所述, Zcash 等使用對稱加密技術(shù)通過密文交易實現(xiàn)了交易內(nèi)容隱藏, 基于CP-ABE 的隱私保護(hù)方案通過設(shè)置屬性集合和不同的訪問控制策略實現(xiàn)了更細(xì)粒度的基于屬性的數(shù)據(jù)內(nèi)容隱藏. 基于信息加密的內(nèi)容隱藏方法必須提供較為復(fù)雜的隱藏交易驗證機(jī)制, 如基于零知識證明的驗證方案. 這在一定程度上增加了驗證過程的計算復(fù)雜性, 降低了驗證效率, 也帶來了額外的賬本存儲開銷. 上述屬性加密的保護(hù)方案也并未提供密文共識驗證算法, 若將密文解密得到明文再驗證, 如果存在惡意共識節(jié)點(diǎn)參與交易驗證,那么就會產(chǎn)生交易數(shù)據(jù)的隱私泄露問題. 因此, 在區(qū)塊鏈公開可驗證交易模型下, 如何設(shè)計鏈上密態(tài)數(shù)據(jù)的高效可驗證機(jī)制以確保交易規(guī)則符合性仍有待進(jìn)一步深入研究.
3.1.2 基于業(yè)務(wù)邏輯的數(shù)據(jù)隔離技術(shù)
在目前得到廣泛應(yīng)用的聯(lián)盟鏈系統(tǒng)中, 多面向業(yè)務(wù)邏輯適度引入中心化處理機(jī)制來設(shè)計區(qū)塊鏈系統(tǒng)的總體架構(gòu). 這不同于公有鏈交易全網(wǎng)共識的實現(xiàn)方式, 也為聯(lián)盟鏈中隱私保護(hù)的設(shè)計帶來了便利. 因此,F(xiàn)abric、Corda 和Quorum 等聯(lián)盟鏈采用適度的中心化機(jī)制完成隱私交易的處理, 同時設(shè)計了基于業(yè)務(wù)邏輯的數(shù)據(jù)隔離技術(shù)來實現(xiàn)交易內(nèi)容的隱私保護(hù).
Hyperledger Fabric
Hyperledger Fabric[40,41]基于中心化的背書模型通過通道和私有數(shù)據(jù)集來實現(xiàn)交易內(nèi)容的隱私保護(hù). Fabric 中的背書節(jié)點(diǎn)受到交易各方的信任對交易合法性進(jìn)行背書驗證, 因此可以處理、訪問所有的隱私交易數(shù)據(jù), 這使得Fabric 無需使用復(fù)雜的密碼學(xué)機(jī)制來實現(xiàn)交易的驗證, 只需采用一定的機(jī)制來實現(xiàn)交易內(nèi)容隱藏即可.
為了保護(hù)交易內(nèi)容的數(shù)據(jù)隱私, Fabric1.0 引入了通道(channel) 機(jī)制. 所謂通道是指在Fabic 中多個成員間構(gòu)成的私有通信子集, 以用來執(zhí)行保密交易. 該機(jī)制下, 交易可見的最小范圍是通道, 通道內(nèi)的鏈上交易數(shù)據(jù)對于屬于該通道的所有成員是可見的, 但對于通道外的成員是不可見的. 通道可理解為基于共識服務(wù)提供的一種通訊機(jī)制, 它將背書節(jié)點(diǎn)、提交節(jié)點(diǎn)和共識服務(wù)連接在一起, 形成一個具有保密性的虛擬通訊子鏈路, 從而實現(xiàn)業(yè)務(wù)隔離, 通道機(jī)制如圖4 所示. 其中, 共識服務(wù)與(節(jié)點(diǎn)1、節(jié)點(diǎn)3)、(節(jié)點(diǎn)1、節(jié)點(diǎn)2、節(jié)點(diǎn)3)、(節(jié)點(diǎn)2、節(jié)點(diǎn)3) 組成了三個相互獨(dú)立的通道, 加入到不同通道的Peer 節(jié)點(diǎn)能夠維護(hù)各通道對應(yīng)的賬本和狀態(tài), 通道外的節(jié)點(diǎn)無法看到其中的賬本和交易數(shù)據(jù), 從而提高了交易內(nèi)容的隱私性.
圖4 Fabric 通道機(jī)制Figure 4 Channel in Fabric
通道的訪問控制機(jī)制通過“安全域” 劃分的方法在一定程度上保證了數(shù)據(jù)的隱私性, 但該機(jī)制只是粗粒度的數(shù)據(jù)隱私保護(hù). 通道內(nèi)成員往往隸屬于不同的組織, 如果通道內(nèi)的部分組織不希望其他組織能夠查看一些特殊數(shù)據(jù), 這些組織需要單獨(dú)創(chuàng)建一個新的通道, 使該通道僅包含這些特殊數(shù)據(jù). 若要保護(hù)任意多方間的隱私數(shù)據(jù), 則需要構(gòu)建大量的通道, 從而造成過多的資源開銷.
為了解決通道大量創(chuàng)建造成的資源浪費(fèi)問題, Fabric1.2 引入了私有數(shù)據(jù)(private data) 機(jī)制, 如圖5 所示, 它允許通道上的成員之間可以提交、查詢私有數(shù)據(jù)而無需創(chuàng)建單獨(dú)的通道, 從而實現(xiàn)一些特殊數(shù)據(jù)僅在通道內(nèi)部分成員間共享. 相對于通道機(jī)制, 私有數(shù)據(jù)機(jī)制是一種更細(xì)粒度的數(shù)據(jù)隱私保護(hù)機(jī)制.
圖5 Fabric 中的私有數(shù)據(jù)集機(jī)制Figure 5 Private data collection in Fabric
在原有通道狀態(tài)庫的基礎(chǔ)上, Fabric1.2 的私有數(shù)據(jù)機(jī)制加入了私有狀態(tài)庫, 即部分組織間的私有數(shù)據(jù)會被存儲到私有狀態(tài)庫中. 同時為了保證這些私有數(shù)據(jù)的有效性和不可篡改, 還需要將這些私有數(shù)據(jù)的哈希值存儲到通道狀態(tài)庫中, 即“上鏈”. 私有數(shù)據(jù)僅存儲在部分已授權(quán)節(jié)點(diǎn)中, 但是所有節(jié)點(diǎn)都會在通道狀態(tài)中存儲私有數(shù)據(jù)的哈希值. 經(jīng)過授權(quán)的節(jié)點(diǎn)可以訪問這些私有數(shù)據(jù)并通過鏈上哈希值來進(jìn)行完整性驗證, 而未授權(quán)的節(jié)點(diǎn)本身并沒有私有數(shù)據(jù). 通過這種方式在保證全局賬本一致的前提下, 實現(xiàn)了較通道機(jī)制更為細(xì)粒度的數(shù)據(jù)隱私保護(hù).
Fabric 中含有私有數(shù)據(jù)的交易流程如下:
(1) 客戶端的應(yīng)用程序向背書節(jié)點(diǎn)提交提案請求, 調(diào)用鏈碼讀取或?qū)懭胨接袛?shù)據(jù). 私有數(shù)據(jù)(或用于在鏈碼中生成私有數(shù)據(jù)的數(shù)據(jù)) 包含在提案的臨時字段中.
(2) 背書節(jié)點(diǎn)模擬執(zhí)行交易并將私有數(shù)據(jù)存儲在臨時數(shù)據(jù)緩沖區(qū)中,然后根據(jù)既定的策略使用Gossip協(xié)議將私有數(shù)據(jù)分發(fā)給授權(quán)用戶.
(3) 背書節(jié)點(diǎn)將公開數(shù)據(jù)以提案響應(yīng)的形式返回給客戶端, 其中包括私有數(shù)據(jù)哈希值.
(4) 客戶端應(yīng)用程序?qū)⑻岚疙憫?yīng)轉(zhuǎn)化為交易并發(fā)送給排序服務(wù)節(jié)點(diǎn). 排序服務(wù)會將這些交易打包成區(qū)塊, 然后將區(qū)塊分發(fā)給所有的記賬節(jié)點(diǎn). 通過這樣的方式, 通道上的所有節(jié)點(diǎn)都可以驗證交易的有效性而不需要知道具體的私有數(shù)據(jù).
(5) 提交區(qū)塊時, 接收到私有數(shù)據(jù)的授權(quán)節(jié)點(diǎn)會檢查臨時數(shù)據(jù)緩沖區(qū)中私有數(shù)據(jù)的哈希值是否與公開賬本全局狀態(tài)數(shù)據(jù)中的哈希值一致, 如果一致則將公開數(shù)據(jù)賬本追加到本地賬本, 并將私有數(shù)據(jù)寫入私有狀態(tài)庫中.
為了增強(qiáng)私有數(shù)據(jù)機(jī)制的功能, Fabric2.0 啟用了處理和共享私有數(shù)據(jù)的新模式. 之前的版本中私有數(shù)據(jù)僅在一個私有數(shù)據(jù)集合中共享, 但Fabric2.0 通過引入特定的API 函數(shù)實現(xiàn)了不同集合之間共享私有數(shù)據(jù)的功能.
Corda
Corda 是由R3 聯(lián)盟開發(fā)的適用于金融類應(yīng)用場景的分布式賬本系統(tǒng), 于2016 年11 月實施開源[42].Corda 是一個基于半信任環(huán)境的、服務(wù)于現(xiàn)實世界金融活動的分布式賬本平臺, 同時滿足信息適度可見和高性能兩個核心特性, 采用聯(lián)盟鏈或私有鏈的形式, 用于記錄、管理及自動化執(zhí)行金融合約.
不同于公有鏈平臺具有的全局交易驗證及共識、單位時間產(chǎn)出數(shù)據(jù)塊等特征, Corda 平臺具有如下特點(diǎn):
(1) 交易無需全網(wǎng)廣播, 而僅在交易的關(guān)聯(lián)方及驗證節(jié)點(diǎn)之間傳遞. 這樣可以減少節(jié)點(diǎn)接收的數(shù)據(jù)量,并且有效保證交易相關(guān)方的內(nèi)容隱私保護(hù).
(2) 共識機(jī)制僅存在于負(fù)責(zé)驗證交易的節(jié)點(diǎn)之間, 而不是所有的參與節(jié)點(diǎn), 從而加快了達(dá)成共識的速度, 提高了交易性能.
(3) 沒有“區(qū)塊” 的概念, 而是讓后續(xù)交易直接指向前序交易, 以達(dá)到數(shù)據(jù)不可篡改、可追溯的特性.
Corda 系統(tǒng)仍是基于UTXO 交易模型, 通過工作流來構(gòu)建各種復(fù)雜的業(yè)務(wù)流程. 但不同于其它區(qū)塊鏈系統(tǒng)的是, Corda 中的交易無需全網(wǎng)廣播, 交易數(shù)據(jù)的流動均通過基于TLS 安全信道的點(diǎn)對點(diǎn)傳輸來完成, 且僅在交易的關(guān)聯(lián)方及驗證節(jié)點(diǎn)之間傳遞. 這一基于業(yè)務(wù)邏輯相關(guān)性來構(gòu)建數(shù)據(jù)“安全域” 的方法有效地保護(hù)了交易對手方之間的數(shù)據(jù)隱私, 達(dá)到了“數(shù)據(jù)適度可見” 的安全目標(biāo).
此外, Corda 中存在一個受信任的公共服務(wù)Oracle 節(jié)點(diǎn), 用來將現(xiàn)實世界中的事實(例如股票價格、外匯牌價、銀行利率等等) 注入到Corda 網(wǎng)絡(luò)中, 使之可以成為交易的一個輸入項. 同時為了確保引入外部數(shù)據(jù)后賬本交易數(shù)據(jù)的確定性(deterministic), Oracle 節(jié)點(diǎn)會對嵌入外部事實的交易進(jìn)行簽名. 為了保護(hù)交易方的數(shù)據(jù)隱私, Oracle 節(jié)點(diǎn)采用了名為“交易部分屏蔽”(transaction tear-offs) 的數(shù)據(jù)簽名方案,系統(tǒng)將交易簽名數(shù)據(jù)的哈希計算過程構(gòu)造成一棵Merkle 樹, 待簽名數(shù)據(jù)的哈希結(jié)果為Merkle 樹的根值.從而可以實現(xiàn)將一個保留了必要哈希分支的子樹發(fā)送給Oracle 節(jié)點(diǎn), 使它仍然能按照簽名結(jié)構(gòu)完成對整個交易的簽名. Corda 對記錄交易歷史的Merkle 樹結(jié)構(gòu)進(jìn)行剪枝后只留下原始數(shù)據(jù)的哈希運(yùn)算結(jié)果, 從而保護(hù)了數(shù)據(jù)隱私. “交易部分屏蔽” 的哈希計算過程如圖6 所示.
圖6 Transaction tear-off的哈希計算過程Figure 6 Hash computation of transaction tear-off
Quorum
企業(yè)以太坊聯(lián)盟(enterprise ethereum alliance, EEA) 是一個會員驅(qū)動的標(biāo)準(zhǔn)化組織, 旨在開發(fā)基于以太坊的開放性企業(yè)級區(qū)塊鏈標(biāo)準(zhǔn)[43]. 摩根大通在EEA 框架的基礎(chǔ)上基于以太坊構(gòu)建了開源的企業(yè)級區(qū)塊鏈平臺Quorum[44], 其通過引入私有交易和私有存儲的概念來實現(xiàn)交易內(nèi)容隱藏.
以太坊所有公開交易的數(shù)據(jù)都存儲在區(qū)塊鏈上, 任何人都可以訪問所有交易數(shù)據(jù). 為了實現(xiàn)交易內(nèi)容的隱藏, Quorum 將系統(tǒng)中的交易分為公有交易和私有交易, 以對其采用不同的交易處理流程和存儲方式.私有交易的處理流程如圖7 所示.
圖7 Quorum 私有交易處理流程Figure 7 Quorum private transaction flow
首先, 不同于公有交易, 私有交易加入了一個交易接受者身份(公鑰) 列表, 表明該私有交易應(yīng)該只發(fā)送給這些列表成員. 其次, 為了單獨(dú)處理私有交易, Quorum 引入了交易管理器(Transaction Manager)和飛地(Enclave) 組件, Transaction Manager 專門用于處理和分發(fā)私有數(shù)據(jù); Enclave 則為同Transaction Manager 一一對應(yīng)的組件, 專門用于完成數(shù)據(jù)加解密和密鑰管理工作. 最終, 私有交易數(shù)據(jù)荷載加密存儲在Transaction Manager 中, 而相應(yīng)智能合約的執(zhí)行結(jié)果則存儲在相應(yīng)節(jié)點(diǎn)的私有存儲數(shù)據(jù)庫中,Quorum 區(qū)塊中存儲的則是公有交易以及私有交易加密后的哈希值. 這樣既保護(hù)了私有交易隱私, 又實現(xiàn)了私有交易和公有交易參與統(tǒng)一的共識. 私有交易的具體執(zhí)行流程如下:
(1) 客戶端發(fā)送私有交易到Quorum 節(jié)點(diǎn), 并在交易中直接指明每個接收者身份(公鑰).
(2) Quorum 節(jié)點(diǎn)將私有交易傳送至對應(yīng)的Transaction Manager.
(3) Transaction Manager 通過Enclave 為每個接收者生成加密交易荷載并計算其哈希值.
(4) Transaction Manager 將私有交易的加密荷載及其哈希值分別點(diǎn)對點(diǎn)的傳播至每個交易接收方的Transaction Manager.
(5) 數(shù)據(jù)傳播成功后, Transaction Manager 將私有交易加密荷載的哈希值返回至對應(yīng)的Quorum 節(jié)點(diǎn).
(6) Quorum 節(jié)點(diǎn)將私有交易加密荷載的哈希值打包進(jìn)Quorum 區(qū)塊. 當(dāng)每個Quorum 節(jié)點(diǎn)執(zhí)行該以太坊交易時, 需要基于該以太坊交易的荷載(即私有交易加密荷載的哈希值) 向?qū)?yīng)的Transaction Manager 請求原始的私有交易荷載.
(7) 根據(jù)Quorum 節(jié)點(diǎn)的請求, 各個交易接收方的Transaction Manager 通過Enclave 和接收到的加密私有交易荷載解密出原始的私有交易荷載.
(8) 交易接收方的Transaction Manager 將原始的私有交易荷載返回至對應(yīng)的Quorum 節(jié)點(diǎn), 非交易接收方則返回空消息.
(9) 交易涉及的每個Quorum 節(jié)點(diǎn)將私有交易提交至智能合約運(yùn)行, 智能合約會將執(zhí)行私有交易時生成的狀態(tài)數(shù)據(jù)存儲至私有存儲數(shù)據(jù)庫.
綜上所述, Corda 通過引入點(diǎn)對點(diǎn)交易和數(shù)據(jù)傳輸、交易部分屏蔽簽名方案來構(gòu)建交易關(guān)聯(lián)方之間的數(shù)據(jù)“安全域”, 從而實現(xiàn)了交易內(nèi)容的隱私保護(hù). 但這一方案也存在一定的問題: Corda 的整體架構(gòu)設(shè)計思想是基于中心化背書的點(diǎn)對點(diǎn)交易模式, 它在帶來信息適度可見和高處理性能優(yōu)勢的同時, 卻也具有不適合于“多方共識確認(rèn)” 交易模式的弱點(diǎn). 而“去(多) 中心化” 模式下的多方交易共識確認(rèn)恰恰是區(qū)塊鏈的典型應(yīng)用場景; Hyperledger Fabric 通過引入通道和私有數(shù)據(jù)集實現(xiàn)了細(xì)粒度的數(shù)據(jù)隱私保護(hù)機(jī)制, 以適用于多方交易過程中的私有數(shù)據(jù)保護(hù). Quorum 采用類似的設(shè)計思想, 通過引入私有交易和私有存儲的概念實現(xiàn)了私有交易的數(shù)據(jù)隱私保護(hù)機(jī)制. 但這一類方案也存在一定的問題: 首先, 需在公共區(qū)塊鏈存儲之外引入私有狀態(tài)庫和點(diǎn)對點(diǎn)數(shù)據(jù)分發(fā)機(jī)制用于實現(xiàn)隱私數(shù)據(jù)的存儲, 這在一定程度上增加了系統(tǒng)實現(xiàn)的復(fù)雜度; 其次, 隱私明文數(shù)據(jù)在被信任節(jié)點(diǎn)的集中單點(diǎn)處理也加大了數(shù)據(jù)泄漏和單點(diǎn)失效的安全風(fēng)險.
隱藏交易驗證需要實現(xiàn)密文條件下交易內(nèi)容的合法性和正確性驗證, 所要驗證的主要內(nèi)容包括: 隱藏交易的平衡性驗證, 即確保交易輸入輸出的金額相等, 一般通過同態(tài)密碼或零知識證明技術(shù)來實現(xiàn); 交易金額的范圍證明, 即確保交易金額在合法范圍內(nèi), 防止出現(xiàn)支付負(fù)值金額而憑空產(chǎn)生貨幣的問題, 一般通過零知識證明或環(huán)簽名技術(shù)來實現(xiàn); 貨幣的合法性驗證, 即在使用全局混幣方案的密碼貨幣中(如零幣),確保支付貨幣為一個已發(fā)行的合法貨幣, 一般通過零知識證明技術(shù)來實現(xiàn).
3.2.1 同態(tài)密碼
Pedersen 承諾的加法同態(tài)特性為礦工(驗證者) 使用金額承諾進(jìn)行隱藏交易驗證提供了便利. 假設(shè)一個交易的輸入為v1,v2, 輸出為v3. 為了確保交易平衡, 即:v1+v2=v3, 構(gòu)建的交易承諾應(yīng)滿足:
Wang 等人[28]希望使用Paillier 方案利用Paillier 算法同態(tài)性來實現(xiàn)交易平衡性驗證. 但在這一方案中會使用不同接收方的公鑰來對輸出金額(UTXO) 進(jìn)行Paillier 加密, 不同公鑰的加密結(jié)果使得無法利用Paillier 算法的同態(tài)特性進(jìn)行平衡性驗證. 因此, 該方案引入一個dumb account 賬戶, 并對每一個輸出金額均使用dumb account 公鑰來進(jìn)行Paillier 加密并將這一加密結(jié)構(gòu)構(gòu)造為一個承諾, 從而利用基于承諾的零知識證明方案來實現(xiàn)交易非負(fù)性和平衡性驗證. 交易驗證通過后會寫入?yún)^(qū)塊, 接收方通過查詢區(qū)塊收到各自隱藏金額并使用私鑰解密獲得明文交易金額. 因此, 該方案在使用Paillier 加密為接收方傳遞交易金額的同時, 還需引入dumb account 賬戶的加密(承諾) 金額, 這額外增加了系統(tǒng)的存儲開銷.
PGC 方案[30]則是為基于賬戶模型的區(qū)塊鏈交易系統(tǒng)而設(shè)計的, 它利用Twisted-ElGamal 同態(tài)加密算法對交易金額和賬戶余額進(jìn)行加密, 從而可實現(xiàn)交易過程中賬戶余額的密態(tài)加減操作. 同時, Twisted-ElGamal 算法又是對零知識證明友好的, 基于加密結(jié)構(gòu)便于構(gòu)建出金額非負(fù)性、金額上限、金額比例等交易規(guī)則審計算法.
綜上所述, 在隱藏交易驗證方面, 加法同態(tài)承諾如Pedersen 承諾和同態(tài)加密方案能夠?qū)崿F(xiàn)隱藏交易的平衡性驗證, 但同態(tài)承諾無法由承諾結(jié)果直接獲得承諾值, 而同態(tài)加密能夠?qū)崿F(xiàn)承諾金額的傳遞但不利于零知識證明方案的構(gòu)建. 因此, 二者均需增加額外的密碼運(yùn)算來實現(xiàn)完整的密態(tài)交易和公開驗證功能.Twisted-ElGamal 算法在基于賬戶的交易模型下構(gòu)建了高效的實現(xiàn)方案, 但如何在基于UTXO 的交易模型下實現(xiàn)密態(tài)交易驗證仍有待進(jìn)一步研究. 此外, 同態(tài)加密方案在性能上存在不足, 目前全同態(tài)加密算法(fully homomorphic encryption, FHE)[45,46]的運(yùn)行效率較低, 存在密文膨脹等問題, 只能適用于小數(shù)據(jù)規(guī)模場景, 無法在大規(guī)模數(shù)據(jù)場景中得到普遍應(yīng)用.
3.2.2 零知識證明
零知識證明(zero-knowledge proof) 在區(qū)塊鏈交易內(nèi)容隱私保護(hù)方面發(fā)揮了重要作用. 零知識證明[47,48]是一種涉及兩方或多方的密碼協(xié)議, 證明者能夠在不泄露任何秘密內(nèi)容的情況下向驗證者完成秘密信息的證明[49]. 目前很多方案如零幣和門羅幣[50]等都是用零知識證明來實現(xiàn)隱藏交易內(nèi)容的驗證.
零幣Zcash[25,32]使用zk-SNARKs[51,52]非交互式零知識證明完成隱藏交易的正確性驗證. zk-SNARKs 將任意計算條件用算術(shù)電路C表示, 輸入數(shù)據(jù)后, 0 或1 作為驗證結(jié)果返回. zk-SNARKs 在Zcash 系統(tǒng)中的應(yīng)用如圖8 所示. zk-SNARKs 主要有以下三個步驟:
圖8 Zcash 中的零知識證明協(xié)議Figure 8 Zero-knowledge proof in Zcash
(1) KeyGen(1λ,C)→(pk,vk). 輸入一個安全參數(shù)λ和F域-算術(shù)電路C, 生成零知識證明中的證明密鑰pk 和驗證密鑰vk.
(2) Prove(pk,x,a)→π. 輸入一個證明密鑰pk、公開信息x和證明者擁有的秘密信息a, 輸出一個非交互式證明π, 來表示證明者確實擁有某些知識.
(3) Verify(vk,x,π)→b. 輸入一個驗證密鑰vk 和公開信息x, 一個證明π, 如果驗證者被說服, 即他相信證明者確實擁有某種知識, 則驗證輸出為b=1.
表3 零知識證明系統(tǒng)比較Table 3 Comparison of three zero-knowledge proof systems
此外, Ma 等人提出了一種新的零知識證明方案NIZK[58], 該方案借鑒了Camenisch 等人于2008 年提出的基于Boneh-Boyen 簽名[59]的交互式范圍證明方案[60], 采用Fiat-Shamir 啟發(fā)式將方案構(gòu)造為非交互式零知識證明方案. 該方案大幅縮短了零知識證明的生成時間, 但生成的零知識證明信息長度更長.Ma 等人方案同其他零知識證明方案的性能比較如表4 所示.
方案使用jsnark[63]前端編譯工具生成電路, 電路規(guī)模在220量級. 通用零知識證明方案實現(xiàn)時選取的是橢圓曲線bn128 上的有限域, 滿足128 比特安全性. 表4 中的C為電路大小,u,l為限定明文消息空間大小的參數(shù), 明文消息空間為[0,2L) , 其中L=u×l.
表4 NIZK 同其他零知識證明方案的比較[58]Table 4 Comparison of NIZK scheme to existing ZKP systems [58]
3.2.3 環(huán)簽名
在Maxwell 提出的保密交易方案中采用了Borromean 環(huán)簽名[64]來實現(xiàn)承諾值的范圍證明. 在基于Borromean 環(huán)簽名的保密交易方案中, 范圍證明方案的思路為首先將要證明的金額v分解為二進(jìn)制形式,然后計算金額各位的承諾值, 并將承諾值作為公鑰生成環(huán)簽名, 接收方對簽名等進(jìn)行驗證判定交易是否有效. 假設(shè)金額v ∈[0,2n),n為公開參數(shù), 金額v的Pedersen 承諾為commit=kG+vH, 已知G,H ∈G,G是G 的生成元,H的離散對數(shù)未知. 證明者有承諾commit 以及k和v, 生成證明π表明v ∈[0,2n).Borromean 環(huán)簽名實現(xiàn)承諾金額范圍證明和驗證的具體步驟如下:
首先, 發(fā)送方根據(jù)金額v生成其范圍證明π:
綜上所述, 門羅幣使用環(huán)簽名技術(shù)實現(xiàn)了交易金額的范圍證明, 保證交易金額處于合理區(qū)間. 但基于Borromean 環(huán)簽名的范圍證明方案生成的證明長度較大, 證明長度與所要證明的區(qū)間上界成線性相關(guān), 交易大小主要受范圍證明長度影響, 導(dǎo)致效率較低. 因此最新的Monero 方案使用Bulletproofs 技術(shù)替換Borromean 環(huán)簽名, 優(yōu)化了范圍證明算法的性能, 基于Bulletproofs 方案的相關(guān)改進(jìn)算法[65]也被提出.Zcash 方案使用zk-SNARKs 零知識證明能夠在不泄露明文數(shù)據(jù)的情況下完成隱藏交易驗證, 僅需生成很小數(shù)據(jù)量的證明就可完成大量數(shù)據(jù)的驗證. 但零知識證明技術(shù)在提供了良好的交易內(nèi)容隱私保護(hù)的同時,也存在一些不足: 首先, 由于系統(tǒng)引入了零知識證明算法, 使得隱藏交易驗證算法的開銷增大, 吞吐量與響應(yīng)速度有待進(jìn)一步提高; 其次, zk-SNARKs 在系統(tǒng)初始化時需要信任中心安全地生成公共參數(shù), 存在初始化各方共謀偽造新幣的安全風(fēng)險, zk-STARKs 無需系統(tǒng)初始化, 并且是后量子安全的, 但其證明長度過長,在區(qū)塊鏈的實際應(yīng)用中有一定局限性; 此外, 以上這些方案均未考慮實際應(yīng)用中的交易內(nèi)容監(jiān)管問題.
為了解決區(qū)塊鏈隱私保護(hù)問題, 多種密碼技術(shù)應(yīng)用到區(qū)塊鏈系統(tǒng)中用于實現(xiàn)交易內(nèi)容隱藏和隱藏交易驗證, 但同時也對區(qū)塊鏈交易監(jiān)管提出了更多挑戰(zhàn). 基于公有鏈的密碼貨幣多強(qiáng)調(diào)隱私保護(hù), 無法實現(xiàn)交易內(nèi)容監(jiān)管, 為了滿足行業(yè)應(yīng)用的監(jiān)管需求, 一些具有監(jiān)管功能的隱私保護(hù)方案也陸續(xù)被提出[66-70], 例如PRCash[71]、zkLedger[72]、FabZK[24]、PGC[30]以及ACT[67]方案等.
PRCash[71]使用基于UTXO 的Mimblewimble 交易模型來構(gòu)建密態(tài)交易. 交易方使用交易金額的Perdersen 承諾在公開賬本中記錄交易, 同時系統(tǒng)引入監(jiān)管方, 基于用戶交易身份來限定用戶在一段時間內(nèi)的交易總額. 當(dāng)用戶向系統(tǒng)注冊時, 監(jiān)管方使用隨機(jī)化簽名(randomizable signature)[73]來為用戶公鑰pku簽發(fā)證書. 當(dāng)用戶接收到一筆新的交易輸出時, 如果用戶使用匿名身份進(jìn)行交易, 需通過私鑰sku和偽隨機(jī)函數(shù)(pseudorandom function)[74]生成匿名身份PIDe接收交易輸出, 同時通過零知識證明生成監(jiān)管證明信息, 以確保PIDe生成私鑰和簽發(fā)證書中公鑰的正確對應(yīng)以及匿名身份PIDe在當(dāng)前時段的合法性. 此外, 用戶還需累加PIDe身份對應(yīng)的所有UTXO 并通過范圍證明表明總額沒有超過限值; 如果用戶使用實名身份進(jìn)行交易, 需使用監(jiān)管方公鑰pkr加密用戶公鑰pku并通過零知識生成監(jiān)管證明信息,以確保加密的公鑰pku同之前簽發(fā)證書中的公鑰pku相同, 從而完成交易. 監(jiān)管方在接收到交易中的上述監(jiān)管證明信息后, 如果驗證通過即可確認(rèn)交易并寫入?yún)^(qū)塊. PRCash 方案提供了用戶派生身份的靈活驗證和匿名交易總額的有效監(jiān)管.
Naganuma 等人[69]在Zerocoin 協(xié)議的基礎(chǔ)上提出了可審計的Zerocoin 方案, 審計方能夠監(jiān)管某筆交易的交易軌跡. Zerocoin 在區(qū)塊鏈賬本中使用Pedersen 承諾來表示生成的密碼貨幣(coin), 為了實現(xiàn)監(jiān)管, 發(fā)送方發(fā)送交易的同時需要附帶審計信息. 審計信息包括: 用監(jiān)管方公鑰加密零幣承諾gyhz的一部分gy生成的密文Enc(pk,gy) 和一個零知識證明π:
零知識證明π用來防止發(fā)送方惡意地偽造審計密文. 交易方在貨幣支付過程中將y值作為貨幣序列號Serial 予以公開. 監(jiān)管方收到監(jiān)管信息后, 用私鑰解密Enc(pk,gy) 得到gy并根據(jù)π驗證密文真實性和監(jiān)管可靠性, 通過比較gy和gSerial將交易的收發(fā)方關(guān)聯(lián)起來, 實現(xiàn)交易軌跡監(jiān)管.
表5 zkLedger 賬本存儲結(jié)構(gòu)Table 5 Ledger structure of zkLedger
綜上所述, 目前PRCash、Naganuma、zkLedger、PGC 和ACT 等方案中的隱藏交易監(jiān)管主要通過構(gòu)建承諾值的零知識證明來實現(xiàn), 交易方使用承諾來隱藏交易金額, 監(jiān)管方使用交易方基于零知識證明生成的監(jiān)管證明信息進(jìn)行監(jiān)管規(guī)則驗證. 目前的監(jiān)管方案如表6 所示, 這些方案在保護(hù)交易內(nèi)容隱私的前提下實現(xiàn)了交易內(nèi)容面向不同規(guī)則的有效監(jiān)管, 如PRCash、Naganuma 和zkLedger 等主要設(shè)計了交易總額限制的監(jiān)管規(guī)則, PGC 方案則提供了總額限制、比例規(guī)則等更為多樣的監(jiān)管規(guī)則. 但上述方案仍存在一些問題: PRCash、zkLedger 等方案面向公有鏈結(jié)構(gòu)設(shè)計, 對于在聯(lián)盟鏈應(yīng)用場景中的使用仍需要進(jìn)一步優(yōu)化; FabZK 給出了Fabric 中的監(jiān)管架構(gòu)設(shè)計, 但該方案需引入額外的鏈外賬戶存儲并要求監(jiān)管方需保持實時在線, 這在實際應(yīng)用中具有一定的局限性; ACT 方案計算審計令牌時, 涉及的零知識證明生成時間較長, 如何優(yōu)化審計策略、提高審計效率需進(jìn)一步研究. 雖然上述方案均提供了一些審計規(guī)則, 但對于日益普及的區(qū)塊鏈應(yīng)用而言監(jiān)管規(guī)則仍顯不足, 如都無法滿足某些應(yīng)用場景下監(jiān)管方監(jiān)管每筆交易金額的需求.
表6 相關(guān)可監(jiān)管隱私保護(hù)方案對比Table 6 Comparison of privacy protection schemes with regulation
此外, 通過將交易內(nèi)容和交易身份隱私保護(hù)方案相結(jié)合, 一些具有強(qiáng)隱私保護(hù)特性的區(qū)塊鏈交易系統(tǒng)也得到了廣泛應(yīng)用. 本節(jié)參考姚前等人[1]關(guān)于區(qū)塊鏈身份隱私的研究, 對于交易內(nèi)容和交易身份隱私保護(hù)技術(shù)的結(jié)合展開進(jìn)一步的分析討論.
(1) 同態(tài)密碼同無標(biāo)識交易的結(jié)合
無標(biāo)識交易技術(shù)是指在鏈上資產(chǎn)的表示(如UTXO) 中不包含資產(chǎn)所有者的身份標(biāo)識, 資產(chǎn)權(quán)屬變更過程中的交易確認(rèn)是由用戶采用資產(chǎn)表示中的秘密因子進(jìn)行相應(yīng)的密碼運(yùn)算來完成的, 接收方通過密碼運(yùn)算的結(jié)果來判斷資產(chǎn)權(quán)屬和交易確認(rèn)的正確性[1]. 公開賬本中記錄的UTXO 中不再存有標(biāo)識用戶身份的公鑰信息, 這使得所有基于交易地址的關(guān)聯(lián)分析技術(shù)失效, 尤其是增加了交易可鏈接性的分析難度. 基于Pedersen 承諾和無標(biāo)識交易技術(shù)構(gòu)建的Mimblewimble 方案[19]可有效地確保用戶交易隱私. 它通過同態(tài)承諾隱藏了交易金額, 并且利用承諾中的盲因子結(jié)合數(shù)字簽名實現(xiàn)了交易行為的確權(quán)和交易輸入輸出的平衡性驗證. Mimblewimble 在交易輸出承諾的構(gòu)建過程中指定接收方隨機(jī)秘密選擇交易輸出的盲化因子r, 并由此實現(xiàn)對該UTXO 的權(quán)屬控制. 由于這一過程帶來了輸入輸出承諾盲化因子的差值(excess), 因此也將礦工對交易平衡的等式驗證過程轉(zhuǎn)化為驗證交易雙方共同構(gòu)建以盲化因子差值為私鑰的正確簽名過程. 這一組合方案在開源密碼貨幣項目Grin[75]和Beam[76]中得到了應(yīng)用.
(2) 同態(tài)密碼同自主混幣的結(jié)合
“混幣” 機(jī)制是將真實交易者發(fā)起的交易(UTXO) 隱藏在一個交易集合中, 從而使得觀察者無法確認(rèn)真正的交易, 也即無法確認(rèn)同每一個UTXO 相關(guān)聯(lián)的用戶身份. 它是區(qū)塊鏈系統(tǒng)中實現(xiàn)交易身份隱藏的基本思想. 自主混幣是指真實交易者在混幣過程中無需第三方中心機(jī)構(gòu)和其他用戶的參與, 可自主完成混幣過程[1]. 自主混幣的實現(xiàn)機(jī)制為環(huán)簽名算法. 基于Pedersen 承諾的同態(tài)密碼方案結(jié)合自主混幣技術(shù)構(gòu)建的RingCT (ring confidential transaction) 方案可有效地確保用戶交易隱私. 它將同態(tài)承諾隱藏交易金額同可鏈接環(huán)簽名隱藏交易身份相結(jié)合, 通過可鏈接環(huán)簽名將真實交易者身份隱藏在匿名集合中并完成了支付確權(quán), 借助簽名可鏈接性實現(xiàn)了貨幣防雙花. 在交易內(nèi)容驗證方面采用同態(tài)承諾確保交易輸入輸出的平衡性驗證, 基于Bulletproofs 的零知識證明方案實現(xiàn)了交易金額的范圍證明. 這一組合方案在門羅幣[22]中得到了應(yīng)用.
(3) 信息加密同全局混幣的結(jié)合
全局混幣技術(shù)是將待支付貨幣的真?zhèn)悟炞C問題轉(zhuǎn)化為一個已發(fā)行貨幣列表的成員證明問題, 從而實現(xiàn)支付貨幣在全部貨幣中的混淆[1]. 基于對稱加密的交易信息加密方案結(jié)合全局混幣技術(shù)構(gòu)建的Zerocash方案可有效地確保用戶交易隱私. Zerocash 將系統(tǒng)中所有的貨幣承諾值構(gòu)建為一棵Merkle 樹, 當(dāng)真實交易者執(zhí)行交易時, 交易發(fā)送方通過零知識證明來確保支付貨幣為Merkle 樹中的成員并完成支付確權(quán), 從而實現(xiàn)了真實身份在全部用戶身份集合中的混淆. 在交易內(nèi)容隱私保護(hù)方面, 交易發(fā)送方首先使用Curve25519 密鑰協(xié)商協(xié)議協(xié)商對稱密鑰, 而后通過對稱加密將交易內(nèi)容秘密傳送給交易接收方, 并通過zk-SNARKs 零知識證明方案確保密態(tài)交易內(nèi)容的規(guī)則合法性驗證. 這一過程在保護(hù)交易內(nèi)容的同時也確保了交易接收方的身份隱私. 這一組合方案在零幣[25]中得到了應(yīng)用.
(4) 基于業(yè)務(wù)邏輯的數(shù)據(jù)隔離同可控匿名認(rèn)證的結(jié)合
可控匿名認(rèn)證是指在用戶身份標(biāo)識的建立和認(rèn)證過程中, 除監(jiān)管方以外不允許其他人確定交易者的真實身份. 在必要時, 監(jiān)管方可恢復(fù)出匿名化后交易方的真實身份[1]. 可控匿名認(rèn)證在聯(lián)盟鏈中得到了廣泛應(yīng)用, 通常用戶在實名申請后獲得一個匿名證書用于交易過程中的身份標(biāo)識, 監(jiān)管者在必要時可通過證書和實名注冊信息恢復(fù)出用戶的真實身份. 基于業(yè)務(wù)邏輯的數(shù)據(jù)隔離技術(shù)同可控匿名認(rèn)證方法[1]構(gòu)造的隱私保護(hù)方案可有效地確保用戶交易隱私. 聯(lián)盟鏈中的用戶在通過匿名證書認(rèn)證身份后, 可通過數(shù)據(jù)隔離機(jī)制控制隱私交易內(nèi)容的知悉范圍. 聯(lián)盟鏈中心化背書的特點(diǎn)也更便于實現(xiàn)身份的可控匿名和隱藏交易的快速驗證. 這一組合方案在聯(lián)盟鏈Hyperledger Fabric[40]和Corda[42]中得到了應(yīng)用.
區(qū)塊鏈系統(tǒng)中的交易內(nèi)容隱私保護(hù)技術(shù)已經(jīng)成為當(dāng)前研究的熱點(diǎn). 密碼學(xué)技術(shù)在實現(xiàn)區(qū)塊鏈的交易內(nèi)容保護(hù)和監(jiān)管上發(fā)揮著重要作用. 首先, 在交易內(nèi)容隱藏方面, 目前的區(qū)塊鏈系統(tǒng)多采用保密交易(confidential transaction) 和加密技術(shù). 已有的加密方案如一次性認(rèn)證對稱加密方案、屬性加密等提供了更細(xì)粒度的內(nèi)容隱私保護(hù), 但也給隱藏交易的驗證帶來了更多挑戰(zhàn). 聯(lián)盟鏈如Hyperledger Fabric, Corda和Quorum 等則通過通道隔離劃分“安全域” 以及鏈外私有數(shù)據(jù)存儲來解決交易內(nèi)容隱藏問題. 其次, 在隱藏交易驗證方面, 區(qū)塊鏈系統(tǒng)多采用基于零知識證明的范圍證明方案, 以及利用同態(tài)承諾方案的同態(tài)特性實現(xiàn)交易合法性和平衡性驗證, Hyperledger 等聯(lián)盟鏈則使用中心化背書方式來完成隱藏交易驗證. 最后, 目前的交易內(nèi)容監(jiān)管主要采用零知識證明技術(shù)通過構(gòu)造可驗證加密方案來實現(xiàn)隱藏內(nèi)容監(jiān)管.
隨著區(qū)塊鏈技術(shù)的深入普及和推廣, 區(qū)塊鏈交易內(nèi)容隱私保護(hù)技術(shù)在以下幾個方面也有待進(jìn)一步研究:
第一, 新型的區(qū)塊鏈交易內(nèi)容隱私保護(hù)算法的研究與設(shè)計一直是關(guān)注的熱點(diǎn). 隨著區(qū)塊鏈系統(tǒng)新應(yīng)用場景的不斷出現(xiàn), 需要設(shè)計滿足新需求的區(qū)塊鏈交易內(nèi)容隱私保護(hù)算法. 區(qū)塊鏈的應(yīng)用已不僅限于密碼貨幣的點(diǎn)對點(diǎn)支付場景, 多方協(xié)作、數(shù)據(jù)交易、身份認(rèn)證和隱私計算等新型應(yīng)用場景下的隱私保護(hù)需求更加多樣, 參與方數(shù)量更多, 交互方式更加多元, 保護(hù)內(nèi)容更加多樣. 例如: 目前的安全多方計算+ 區(qū)塊鏈的隱私計算方案受到廣泛關(guān)注, 區(qū)塊鏈系統(tǒng)為安全多方計算過程中的數(shù)據(jù)確權(quán)、可信審計和數(shù)據(jù)流通提供了有效的支撐, 未來隨著區(qū)塊鏈運(yùn)算性能和存儲容量的進(jìn)一步提高, 能否在確保隱私的條件下提供更為靈活的隱私計算方案也備受期待. 因此, 如何設(shè)計多應(yīng)用場景下細(xì)粒度隱私保護(hù)方案仍是未來的研究熱點(diǎn).
第二, 交易內(nèi)容隱私保護(hù)算法性能和安全性方面的不足也有待進(jìn)一步提高. 引入基于復(fù)雜密碼學(xué)算法的隱私保護(hù)方案一方面會降低原有區(qū)塊鏈系統(tǒng)的效率, 另一方面也帶來了安全證明方案難于構(gòu)建的問題.例如, 2019 年Zcash 零知識證明系統(tǒng)存在的缺陷[77]就會導(dǎo)致貨幣偽造的問題. 這些不足必然會限制其進(jìn)一步的大規(guī)模應(yīng)用. 因此, 如何設(shè)計更為高效的密碼算法、提出更為完備的安全模型、構(gòu)建更為嚴(yán)謹(jǐn)?shù)淖C明方案也是亟待解決的關(guān)鍵問題.
第三, 隨著區(qū)塊鏈技術(shù)在金融、政務(wù)、社會治理等領(lǐng)域的廣泛應(yīng)用, 對于交易過程的監(jiān)管需求日益增強(qiáng). 如何在監(jiān)管方及交易方共同參與模式下設(shè)計高效安全的交易內(nèi)容保護(hù)方案, 既確保交易方隱私又符合行業(yè)監(jiān)管要求, 達(dá)到隱私與監(jiān)管的平衡, 也有待進(jìn)一步研究.
第四, 在隱私保護(hù)算法實現(xiàn)層面, 通過引入專用密碼設(shè)備來提升零知識證明以及同態(tài)加密等算法的計算性能、引入可信執(zhí)行環(huán)境(如SGX) 為隱私保護(hù)方案提供安全的計算環(huán)境以彌補(bǔ)密碼方案的不足也具有很好的研究前景.