李佩麗, 徐海霞, 馬添軍
1中國科學院信息工程研究所信息安全國家重點實驗室 北京 中國 100093
2廣西密碼學與信息安全重點實驗室 桂林 中國 541004
3中國科學院數(shù)據(jù)與通信保護研究教育中心 北京 中國 100087
4中國科學院大學網(wǎng)絡空間安全學院 北京 中國 100049
區(qū)塊鏈是以比特幣為代表的數(shù)字貨幣的核心技術[1], 受到學術界和產(chǎn)業(yè)界的廣泛關注和研究。2016年12月, 國務院關于印發(fā)《十三五國家信息化規(guī)劃》中提到“將區(qū)塊鏈作為戰(zhàn)略前沿性技術”, 明確提出加強區(qū)塊鏈等新技術的創(chuàng)新、試驗和應用。區(qū)塊鏈技術是一種分布式的賬本(或稱數(shù)據(jù)庫)技術, 解決了多中心環(huán)境下的信任問題。以往的社會的信任模式建立在存在可信中心的場景下, 例如銀行、支付寶等。區(qū)塊鏈解決了如何在沒有可信第三方的情況下, 多個互相不信任的節(jié)點能夠達成一致的問題。以比特幣為例, 用戶之間完成每筆交易都要通過驗證且被記錄在賬本上。如果有可信中心的存在, 那么這個問題很容易解決, 直接由中心驗證和記賬就好。然而在沒有可信中心的情況下, 大家怎么達成一致, 如何來驗證交易和記賬呢?區(qū)塊鏈技術為此提供了解決方案。
區(qū)塊鏈的簡單框架圖如下圖1:
圖1 區(qū)塊鏈框架 Figure 1 Blockchain framework
區(qū)塊鏈中區(qū)塊與區(qū)塊按照時間順序前后鏈接, 每個區(qū)塊包含上一個區(qū)塊的hash值、交易記錄信息以及Merkle樹根等信息。區(qū)塊鏈并不是單一的技術, 而是現(xiàn)代密碼學、分布式一致性協(xié)議、點對點網(wǎng)絡通信技術等多種技術的整合[2]。
區(qū)塊鏈具有以下特點:
(1) 去中心化: 整個網(wǎng)絡沒有中心化的機構, 節(jié)點的權利和義務均等;
(2) 集體維護: 系統(tǒng)中數(shù)據(jù)塊由整個系統(tǒng)中所有節(jié)點共同維護;
(3) 高度透明: 程序開源、賬本公開, 可以被所有人審查;
(4) 去信任: 沒有第三方可信機構, 從技術上保證交易的進行;
(5) 匿名: 交易在匿名下進行。
區(qū)塊鏈系統(tǒng)根據(jù)應用場景的不同, 可以分為: 公有鏈, 聯(lián)盟鏈和私有鏈。
(1) 公有鏈對外開放, 各個節(jié)點可以自由出入網(wǎng)絡。公有鏈中的數(shù)據(jù)可以被任何人查看, 任何人都可以發(fā)送交易、參與形成共識。公有鏈是完全去中心化的區(qū)塊鏈, 比特幣就是一個典型的例子;
(2) 聯(lián)盟鏈有準入規(guī)則, 通過授權后方可加入和退出網(wǎng)絡。區(qū)塊鏈的讀寫權限、參與記賬權限按照聯(lián)盟規(guī)則指定。聯(lián)盟鏈是一種許可鏈, 典型代表有區(qū)塊鏈聯(lián)盟R3和超級賬本Hyperledger;
(3) 私有鏈適用于私有組織, 各個節(jié)點的讀寫權限由組織內部制定, 讀取權限可有選擇性的對外開放。
區(qū)塊鏈最初主要應用在金融領域, 之后隨著人們對區(qū)塊鏈的深入研究, 發(fā)現(xiàn)其有更廣闊的應用價值, 包括醫(yī)療、保險、政務管理、軍事、食品安全等領域。區(qū)塊鏈最典型的應用比特幣系統(tǒng)試圖通過用戶大量自由生成交易地址來實現(xiàn)用戶真實身份的保密, 即匿名。比特幣區(qū)塊鏈上的交易內容包括用戶的地址、轉賬金額等都是公開透明的, 可以讓所有參與節(jié)點對交易進行驗證和記錄。區(qū)塊鏈賬本公開透明的特點方便了節(jié)點對交易的驗證, 但同時帶來了用戶的隱私保護問題。近年來的研究發(fā)現(xiàn), 由于區(qū)塊鏈數(shù)據(jù)的公開透明性, 通過大量分析交易和網(wǎng)絡數(shù)據(jù), 可以設計去匿名方案[3]。在實際應用中, 企業(yè)或用戶可能不希望自己的交易信息被公開的放在鏈上, 包括交易雙方的身份、交易金額、交易事由等內容。隱私問題對于個人和企業(yè)都至關重要, 尤其在很多金融系統(tǒng)、軍事領域更是如此。那么該如何保證區(qū)塊鏈上用戶身份和數(shù)據(jù)的機密性是區(qū)塊鏈走向實際應用面臨的一項重要挑戰(zhàn)。在此基礎上的監(jiān)管問題也受到大家的關注, 因為隱私保護可能會助長惡意行為, 隱藏惡意用戶的身份、非法內容等。因此隱私保護基礎上考慮監(jiān)管問題是很有必要的。
本文第2、3章分別對區(qū)塊鏈隱私保護和監(jiān)管技術的研究進展進行介紹; 第4章給出總結并引出今后可能的研究方向。
區(qū)塊鏈的隱私保護主要包含兩個方面: 一是用戶身份的匿名性, 二是傳輸內容的保密性。在匿名性的具體實現(xiàn)方面, 又可以通過下面兩個概念來描述: 1)交易不可追蹤: 對于任何交易, 無法追蹤其付款方是誰; 2)交易不可關聯(lián): 對于向外發(fā)送的兩筆交易, 其他人無法證明其是否發(fā)給同一個收款人。關于區(qū)塊鏈的隱私保護, 近年來涌現(xiàn)出不少研究成果。下面對這方面工作的研究現(xiàn)狀進行梳理。
混合技術又分為帶中心的混合和去中心的混合, 目的是為了打亂輸入和輸出之間的對應關系, 使得其他用戶不知道一筆錢來自哪個用戶, 即實現(xiàn)交易的不可追蹤性。根據(jù)有無中心節(jié)點參與, 混合方法又可以分為帶中心的混合和去中心的混合:
帶中心的混合方法: 1981年, Chaum[4]首次提出了混合網(wǎng)絡的概念并給出基本的混合協(xié)議, 協(xié)議需要可信中介器的參與。Bonneau等人[5]在2014年提出了帶中心的Mixcoin機制,方案中有多個mix節(jié)點(如圖2, 其中方框內的點表示mix節(jié)點), 只要有一個mix節(jié)點誠實, 那么方案的隱私性就能保證。Valenta和Rowan在mixcoin的基礎上, 采用盲簽名技術對中心化混幣方案進行優(yōu)化, 使得中心節(jié)點在正常提供混幣服務的同時, 不知道輸入輸出之間的對應關系[6]。
圖2 混合器 Figure 2 CoinMixer
去中心的混和方法: Maxwell首次提出了去中心化的混合協(xié)議Coinjoin[7]。這個協(xié)議與比特幣系統(tǒng)比較兼容。如圖3, 多個用戶的交易放在一個比特幣交易內, 使得其他人不知道多個輸入地址和輸出消息之間的對應關系。
圖3 混合協(xié)議 Figure 3 Coinjoin
之后又有CoinShuffle[8]、CoinShuffle++[9]等去中心化的混合機制被提出。CoinShuffle結構如圖4所示, 包含四個步驟: 公告(announcement)、混合(shuffling)、交易的產(chǎn)生和驗證(Transaction Verification)及錯誤的糾察(Blame), CoinShuffle系統(tǒng)的流程如下:
(1) 公告(announcement): 用戶生成一對公私鑰對, 并將公鑰廣播。
(2) 混合(shuffling): 參與混合的每個用戶創(chuàng)建一個新的比特幣地址作為混合交易的輸出地址。這些用戶通過混合技術, 打亂剛生成的輸出地址, 得到輸出地址集合, 最后一個用戶廣播這個集合。假設有三個用戶Alice、Bob、Charlie。具體流程為: 用戶Alice用Bob和Charlie的公鑰對其輸出地址A′加密, 得到EncpkB(EncpkC(A′))發(fā)送給Bob; Bob用其私鑰skB解密得到EncpkC(A′), 然后將其輸出地址B′用Charlie的公鑰加密得到EncpkC(B′), 將EncpkC(A′)和EncpkC(B′)的順序打亂發(fā)給Charlie; Charlie解密得到打亂后的A′, B′,然后對A′, B′, C"的順序進行打亂并公開, 這樣每個用戶只能判斷自己的輸出地址是否在公開的輸出地址集合里, 而不知道其他兩個地址到底屬于誰。在這里用戶猜測成功的概率是1/2, 在用戶數(shù)量為n時, 用戶猜測成功的概率為1/n–1。從而在n越大時, 方案的不可追蹤性越好。
(3) 交易產(chǎn)生和驗證(Transaction Verification): 用戶驗證自己新產(chǎn)生的輸出地址是否在集合中。若在, 則用戶創(chuàng)建混合交易(輸入地址, 金額和打亂的輸出地址, 金額), 并對交易簽名后廣播。在收到所有其他用戶的簽名后, 用戶將混合交易連同所有用戶的簽名發(fā)布到比特幣網(wǎng)絡。區(qū)塊鏈中的用戶驗證這筆公開的交易是否包含所有參與用戶的簽名, 若是則繼續(xù)驗證輸入的有效性和輸入輸出金額的相等, 若都驗證通過則交易有效, 若缺少某一用戶的簽名(如圖4所示), 則交易驗證失敗。
(4) 糾責階段(Blame): 在交易產(chǎn)生及驗證階段, 一旦存在非法操作, 協(xié)議進入糾察階段。用戶公開各自的臨時公私鑰對, 檢查協(xié)議執(zhí)行過程, 識別行為異常的用戶。存在異常行為的用戶會在隨后協(xié)議的運行中被剔除。
繼CoinShuffle之后, CoinShuffle++[9]基于DC-net協(xié)議實現(xiàn)了更加高效的混合協(xié)議: P2PMixing。在CoinShuffle++的基礎上, Tim Ruffing和Pedro Moreno-Sanchez設計了一個新的混幣協(xié)議: Valueshuffle[10], 它既可以保證發(fā)送者匿名, 又可以保密交易金額、實現(xiàn)接收者匿名。Valueshuffle利用同態(tài)承諾 保密交易金額, 用隱身地址的方法實現(xiàn)交易的不可關聯(lián)。同態(tài)承諾的隱藏性可以保密交易金額, 其同態(tài)性質支持金額的密態(tài)驗證[11]。隱身地址的方法具體來說就是發(fā)送方通過接收方的公開信息生成一個隨機地址作為接收方的地址, 接收方可以通過自己的秘密信息恢復出相應的私鑰。因此每次交易接收者的地址在變化, 其他節(jié)點不能鏈接哪些交易是發(fā)向同一個接收者的, 實現(xiàn)了交易的不可關聯(lián)性。
圖4 去中心化混幣機制(引自文獻[8]) Figure 4 Decentralized coin mixing(Citation [8])
Coinjoin和Coinshuffle等去中心的混幣機制由于沒有中心節(jié)點, 參與混幣的用戶需自行協(xié)商和執(zhí)行混幣過程。在協(xié)商過程中, 參與混幣的節(jié)點可能發(fā)現(xiàn)其他節(jié)點的混幣信息。另外如果存在部分節(jié)點惡意操作, 會導致混幣執(zhí)行輪數(shù)過多, 效率低等問題[12]。
圖5 環(huán)簽名 Figure 5 Ring signature
2001年, Rivest, shamir和Tauman三位密碼學家首次提出了環(huán)簽名。環(huán)簽名是一種簡化的群簽名,環(huán)簽名中只有環(huán)成員沒有管理者,不需要環(huán)成員間的合作。其他用戶只知道簽名是由環(huán)中的用戶所簽, 但不知道是具體是哪個用戶[13]。圖5為Rivest 等人提出的環(huán)簽名算法示意圖。
其構造如下:
1) 初始化階段:
Ek是對稱加密體制, 密鑰為k=H (m, L); 計算yi=gi(xi)容易, 在不知道陷門的情況下計算xi=gi–1(yi)是困難的; 環(huán)中有n個用戶, 其公鑰分別是g1, …, gn, 私鑰分別是公鑰相應的陷門。
2) 簽名過程: (假設環(huán)中第s個用戶要做環(huán)簽名)
3) 驗證過程: 計算y1,…, yn并驗證下式是否成立
若成立則簽名驗證通過, 否則拒絕。
環(huán)簽名除了滿足正確性和不可偽造性, 還滿足一個重要特性就是無條件匿名性: 即攻擊者無法確定簽名是由環(huán)中哪個成員所簽, 即使在或者環(huán)成員私鑰的情況下, 成功的概率也不超過1/n。
后續(xù)有不少環(huán)簽名方案被提出, 還衍生出一類叫可鏈接的環(huán)簽名??涉溄拥沫h(huán)簽名在環(huán)簽名的基礎上增加了可鏈接(linkable)的性質, 即如果一個用戶用同一個私鑰做了兩次環(huán)簽名, 那么這兩個簽名可以被鏈接到此用戶, 即知道這兩個簽名是由同一個用戶所簽, 不過也不能確定具體是哪個用戶。
CryptoNote就采用可鏈接的環(huán)簽名實現(xiàn)了發(fā)送者身份的隱藏[14]。一個要做交易的用戶, 選擇具有相同金額的公鑰地址作為環(huán)中的成員, 對交易進行環(huán)簽名。其他用戶可以驗證這筆交易, 但不知道是誰對這筆交易做的簽名。如果一個用戶用相同的私鑰做了兩次簽名, 那么驗證者可以判斷這兩個簽名來自同一個用戶, 但不知道具體是誰。因此可鏈接的環(huán)簽名隱藏了發(fā)送者的身份(這里是公鑰), 實現(xiàn)了交易的不可追蹤性。另外CryptoNote同樣采用隱身地址的方法使交易不可關聯(lián)。門羅幣Monero[15]建立在CryptoNote基礎上, 實現(xiàn)了交易金額的隱藏。它用到了同態(tài)承諾來保密金額, 可以實現(xiàn)輸入輸出金額一致的驗證功能[16]。
基于環(huán)簽名的隱私保護方案本質上是把真實的交易隱藏在一個集合中, 使得其他節(jié)點不知道實際參與者是集合中的那個節(jié)點。目前已有的不需認證機構的環(huán)簽名方案中, 簽名的尺寸和環(huán)的大小(集合大小)相關。也有工作研究如何進一步降低環(huán)簽名的尺寸[17]。另外在實際操作中, 集合選擇不當可能會帶到一些問題, 攻擊者可以通過分析獲得交易的鏈接情況[18]。
為了提供更好的匿名性, Miers等人基于零知識證明設計了一種擴展的比特幣系統(tǒng)Zerocoin[19], 使得輸入的比特幣地址與輸出的比特幣地址之間沒有直接關系。從而實現(xiàn)了交易的不可追蹤性。不過它與比特幣系統(tǒng)不兼容, 需要先將比特幣換成零鈔(Zerocoin), 然后再通過使用承諾和零知識證明打斷交易發(fā)送者和接收者之間的對應關系。另外Zerocoin中幣值金額是固定的, 無法實現(xiàn)金額的拆分。Ben-Sasson等人在2014年提出了一種新的匿名數(shù)字貨幣: Zerocash[20]。Zerocash建立在Zerocoin的基礎上并對其進行了改進。它采用簡潔的非交互零知識證明(zk-SNARKs)和同態(tài)承諾等密碼工具[21-22], 被稱為是一種完全匿名的貨幣。
Zerocash的功能通過兩類交易實現(xiàn): 鑄幣(mint)交易和熔幣(pour)交易。與比特幣相同, Zerocash也采用區(qū)塊鏈作為去中心化的交易賬本, 產(chǎn)生的交易會被廣播并附加到區(qū)塊鏈上。
Zerocash的設計思想如下:
--鑄幣交易(Mint)
鑄幣交易用于產(chǎn)生Zerocash。用戶將指定數(shù)量的比特幣轉換為相同金額的Zerocash。假設用戶有面值為v的比特幣, 用戶首先隨機生成三個字符串r,s,ρ, 然后使用承諾方案(commitment scheme)來計算兩個字符串 cm 和sn, 細節(jié)如下圖。
圖6 鑄幣 Figure 6 Mint coin
鑄的幣為 c =(apk, pkenc,v, r,s, ρ,cm), 圖中 ask是用戶私鑰, apk為用戶地址, pkenc為用戶的加密公鑰。鑄幣交易通過基于SHA-256散列函數(shù)的承諾方案隱藏了Zerocash的價值和用戶的地址。
--熔幣交易(Pour transaction)
熔幣交易用來實現(xiàn)用戶的保密轉賬, 即保密支付。假設用戶A有一個輸入, 要做一個轉賬交易產(chǎn)生兩個輸出(如圖7)。
圖7 熔幣交易 Figure 7 Pour coin
可以看出熔幣交易在花費輸入幣時只顯示幣的序列號sn, 不顯示幣的面額和地址等其他信息, 因此保護了發(fā)送者的身份和交易金額。
Zerocash支持金額拆分且可以保密交易金額, 能夠與比特幣系統(tǒng)兼容。不過Zerocash需要基于一個可信的初始化階段并依賴于一個沒有被檢驗的密碼假設(因為用到zk-SNARKs), 因此其理論安全性還有待研究。另外Zerocash采用的zk-SNARKs算法驗證比較高效, 但生成證明的過程比較慢。因此如何在實現(xiàn)更好匿名性的同時提升方案運行效率是一個值得繼續(xù)研究的問題。
· 上面的工作大都針對交易信息-雙方身份和金額的隱私保護, 沒有考慮智能合約的隱私。Kosba 等人提出了Hawk方案, Hawk是一個區(qū)塊鏈合約開發(fā)平臺, 用來解決區(qū)塊鏈上的隱私和智能合約安全保護問題[23]。方案結合了 zk-SNARK和安全多方計算或者可信執(zhí)行環(huán)境解決了匿名安全計算問題。它可以保證合約輸入的隱私, 但不保護合約代碼。
· 除了前面提到的三類方法, 還有一些帶中心的隱私保護方法被提出, 如Chinaledger提出的CCP(中央對手方)方案和基于Tear-off的隱私保護方案, 這兩個方案都需要引入特殊的節(jié)點(分別是中央對手方和公證人)來接收敏感信息并驗證。
· 另外也有工作針對聯(lián)盟鏈的隱私保護問題進行研究。摩根大通基于以太坊設計了Quorum協(xié)議, 實現(xiàn)了靈活的隱私策略。它默認各個節(jié)點是誠實的, 需要引入監(jiān)管節(jié)點, 適用范圍較窄。為了解決Hawk不能加密合約代碼和Quorum通用性不強的問題, 微軟提出了Coco框架, 它能夠保證合約代碼的隱私, 理論上可以保護任區(qū)塊鏈系統(tǒng)的隱私, 不過其依賴于可信的硬件[24]。
綜上所述, 公有鏈的隱私保護方法大致分為三類: 基于混合技術、基于環(huán)簽名和基于簡潔的非交互零知識證明(zk-SNARKs)。在特定場景下可以實現(xiàn)較好的隱私保護。不過仍然存在改進的空間: 基于混合技術的方法, 若用戶選擇集合較小、參與混合的用戶惡意, 可能會泄漏用戶的私密信息; 基于環(huán)簽名的方法, 每次交易產(chǎn)生的簽名尺寸和環(huán)的用戶數(shù)量有關; 基于簡潔的非交互零知識證明雖然實現(xiàn)了較好的匿名性, 但其參數(shù)的生成需要可信方的參與, 另外生成證明的效率也不高。
隱私保護本身可能助長惡意用戶的非法行為, 在此基礎上的監(jiān)管問題是企業(yè)、政府、軍事部門實際需要解決的重要問題, 這兩年對其相關的研究開始吸引大家的關注。監(jiān)管具體包括用戶身份的監(jiān)管, 交易內容的監(jiān)管。關于區(qū)塊鏈隱私保護基礎上的監(jiān)管問題研究工作較少, 根據(jù)監(jiān)管內容的不同, 我們將其分為對用戶身份的追蹤和對用戶交易內容的監(jiān)管。
在公開網(wǎng)絡上, 大多用戶希望自己的身份保持匿名, 然而匿名技術在保護誠實用戶身份的同時可能助長惡意用戶的惡意行為, 使得對惡意用戶的追查帶來困難。匿名基礎上對用戶身份的監(jiān)管正是要解決這一問題,用戶身份的監(jiān)管又稱用戶身份的可追蹤。下面我們對已有的身份追蹤技術進行介紹。
1) Ateniese等人[25]設計了一個比特幣的認證系統(tǒng), 使得用戶可以獲得可信機構頒發(fā)的證書, 從而提升其地址的可信度, 而且用戶的身份可以被可信機構追蹤。方案設計如下, 分為認證密鑰產(chǎn)生階段和驗證階段。其中( yT, xT)是注冊中心CA的公私鑰對。認證密鑰x是用戶和注冊中心協(xié)同產(chǎn)生的, 包含用戶的隨機數(shù)k, CA的隨機數(shù) k"以及CA的私鑰xT.在驗證階段, 驗證者需要利用CA的公鑰yT算得用戶的公鑰y, 若所算得的y和簽名通過驗證, 則表示交易有效, 且簽名者是被CA認證過的。
a)認證密鑰的產(chǎn)生:
(1) 用戶隨機選擇 k ← Zq, h = gk,將h發(fā)給認證中心CA
(2) 認證中心做如下操作:
將 c,x'發(fā)送給用戶
(3) 用戶計算 x = x' + k, A = H(c)
x即為用戶簽名用的私鑰, 用戶的交易記為[T], τ為對交易的簽名, 簽名的驗證過程如下。
b)交易簽名的驗證過程:
(1) 驗證 A = H(c)
(2) 計算 y := c· yTρ(c)
· 用戶將自己公鑰PK, 以及身份identity的秘密分享份額, 身份的簽名SigIVS(identity) 的秘密分享份額, 分別發(fā)送給相應的賬本服務器(圖8)。賬本服務器協(xié)同執(zhí)行驗證算法, 若驗證通過, 則將PK及用戶身份的秘密分享份額添加到相應的賬本中, 并將相應的賬戶余額balance設置為0。
圖8 多方協(xié)同身份監(jiān)管 Figure 8 Multi-party Collaborative Identity Regulation
通過初始化操作可以看出, 用戶只需要去IVS認證一次, 之后把身份秘密分享給n個服務器。只有大于門限個服務器才能恢復出用戶的身份, 即身份的追蹤需要服務器的協(xié)同操作。
3) Zheng等人[28]設計了可鏈接的群簽名方案, 用于實現(xiàn)用戶身份的可追蹤, 交易內容的可審計。群簽名方案滿足匿名性和可追蹤性。驗證者可以驗證群簽名的確是由群中的成員所簽, 但不知道是誰。群管理者能夠獲得簽名者的身份(這里公鑰即身份)。Zheng等人設計的可鏈接的群簽名方案包含四個主體: 用戶、注冊機構、審計機構和監(jiān)管機構。方案將群簽名管理者的權利進行分散, 把注冊、審計、身份追蹤操作分別交給不同的機構去做, 避免了傳統(tǒng)群簽名一個管理者的中心化和集權。
Narula等人[27]研究了可審計的隱私保護分布式賬本, 銀行之間的交易信息對審計者是保密的, 但銀行的資產(chǎn)可以被審計部門審計(獲得銀行現(xiàn)有資產(chǎn)、資產(chǎn)平均值、資產(chǎn)方差)。
方案的目標是: 隱藏交易數(shù)量, 交易參與者身份以及交易之間的鏈接; 對于審計者, 其可以獲得詢問的可靠回答。
銀行之間每筆交易記錄形式如圖9。Bank1(Bank of America)給Bank2(Goldman Sachs)轉賬金額106,將每個銀行相應金額的增減進行承諾, 如Bank1金額要減少106, 則對–106做承諾, Bank2的金額增加106, 則對106做承諾, 其他銀行無增減, 則對0做承諾。除了承諾值, 交易發(fā)起者需要證明這筆交易是收支平衡的, 即沒有產(chǎn)生或丟失貨幣, 并且證明它的確擁有足夠的錢來完成這筆交易, 這里用到了范圍證明技術。這些信息寫成一行作為這筆交易的記錄。通過這種記錄方式, 其他銀行和審計者都不知道是誰在給誰轉賬, 因為這一條記錄中的每一列都有數(shù)據(jù), 且是不可區(qū)分的。也不知道交易金額是多少, 因為對金額做了承諾。但是可以驗證其有效性。
圖9 銀行保密審計(引自[27]) Figure 9 Bank confidential audit (Citation[27])
當審計者要審計某一銀行的現(xiàn)有資產(chǎn)時, 銀行回復其資產(chǎn)和一個證明(證明其回答和賬本內容一致)給審計者。審計者結合銀行的賬本內容對反饋的信息進行驗證。若通過, 則接受銀行的回復。這個隱私保護與審計方法適合應用在節(jié)點數(shù)量不多的聯(lián)盟鏈中, 另外方案只關注資產(chǎn)金額的審計。
Zheng等人[28]設計了可鏈接的群簽名, 可用來實現(xiàn)交易的匿名、可審計和可追蹤功能。群簽名擁有群管理者, 可以追蹤簽名者的身份??涉溄拥男再|保證其他用戶可以判斷兩個交易是否來自同一個發(fā)送者, 從而統(tǒng)計出用戶發(fā)送交易的頻率, 識別有異常的用戶。
Li等人[29]在Zerocash隱私保護方案的基礎上提出了一種監(jiān)管方案。其方案的設計思路是, 監(jiān)管方給每一個受監(jiān)管的用戶頒發(fā)對稱加密密鑰; 受監(jiān)管的用戶對交易相關信息(發(fā)送者地址、接收者地址、交易金額)用對稱密鑰進行加密, 密文寫在交易中。采用零知識證明保證加密的信息和交易信息是一致的。監(jiān)管方用手中的私鑰嘗試一一解密每一個密文, 獲得被監(jiān)管者的交易內容。
總結上述區(qū)塊鏈監(jiān)管的工作, 有關身份的可追蹤, 目前采取單個追蹤機構[25]或多個服務器[26]協(xié)同實現(xiàn)。文獻[25]中用戶每次產(chǎn)生新的地址都要去注冊中心認證一遍, 增加了注冊中心的負擔。文獻[26]的方案, 用戶只需去注冊中心認證一次, 后續(xù)產(chǎn)生公私鑰不必再去訪問注冊中心。注冊中心只頒發(fā)證書, 無法追蹤用戶身份, 身份的追蹤交由多個服務器協(xié)同完成。證書的驗證需要多個服務器執(zhí)行安全多方計算協(xié)同驗證, 較為復雜。另外群簽名的方法也可以用于用戶身份追蹤[28], 群管理員可以追蹤簽名的簽署者是誰。假設用戶的公鑰不變, 公鑰即代表用戶身份。群簽名比較適合用戶數(shù)量數(shù)不多的聯(lián)盟鏈中。
有關內容的監(jiān)管, 文獻[27]的方案可實現(xiàn)銀行資產(chǎn)的查詢, 文獻[28]的方案可審計用戶產(chǎn)生交易的頻率, 即同一時間段內一個用戶發(fā)出了多少條交易。Li等人[29]的方案是針對Zerocash提出的監(jiān)管策略, 其監(jiān)管方式較為直接, 監(jiān)管者用私鑰嘗試解密即可獲得被監(jiān)管者的交易信息。不過證明效率不高, 這個問題也是Zerocash本身存在的問題。
區(qū)塊鏈隱私保護和監(jiān)管研究已經(jīng)取得了一些重要研究成果。由于區(qū)塊鏈應用場景復雜、需求多樣化, 該研究方向還需要進行大量的研究工作。前面我們已經(jīng)指出了目前已有工作存在的一些問題。通過對已有問題的總結, 結合區(qū)塊鏈今后的發(fā)展趨勢, 我們給出了區(qū)塊鏈隱私保護和監(jiān)管未來研究的幾個熱點方向。
· 聯(lián)盟鏈的細粒度隱私保護: 聯(lián)盟鏈作為一種受限準入的區(qū)塊鏈受到政府機構、軍事部門和企業(yè)的廣泛關注。目前對聯(lián)盟鏈上的隱私保護問題關注較少, 前面提到的Quorum和Coco框架要么通用性不強要么依賴可信的硬件。根據(jù)聯(lián)盟鏈的特點, 如何借鑒公有鏈的隱私保護方法實現(xiàn)聯(lián)盟鏈的細粒度隱私保護是后續(xù)需要研究的問題。
· 智能合約隱私保護: 除了區(qū)塊鏈中交易的隱私, 以太坊等區(qū)塊鏈的智能合約隱私也備受關注。智能合約的隱私保護包括合約代碼本身的保密和合約輸入輸出的保密, 代碼或輸入輸出的公開都可能泄漏用戶的敏感信息, 因此對智能合約的隱私保護問題也是值得研究的方向。
· 高效的身份追蹤機制 目前針對區(qū)塊鏈的監(jiān)管研究工作較少。已有的監(jiān)管方案還存在諸多問題, 身份追蹤中用戶需多次訪問注冊中心或需多個服務器協(xié)同追蹤。需進一步研究高效實用的身份追蹤技術。
· 更多場景下的內容監(jiān)管技術研究: 有關用戶內容的監(jiān)管, 目前工作適用場景、審計操作較單一。不同場景下, 監(jiān)管的需求也不盡相同。監(jiān)管還可能包含: 區(qū)塊鏈交易金額的大額篩查技術、敏感內容保密檢索、大數(shù)據(jù)分析等; 另外監(jiān)管操作的授權問題也是值得研究的內容; 進一步的, 監(jiān)管除了對內容進行審計, 還可以賦予內容糾錯等功能。