區塊鏈的隱私性如何保護?

最近看了一些區塊鏈方面的paper,有一個疑問:既然區塊鏈上的數據是全網同步的,那麼如何保證數據的隱私性呢?我的理解是在區塊鏈商業應用中,肯定會涉及到隱私數據,特別是在金融領域。


目前已經使用的區塊鏈隱私技術有:

混幣 早期的門羅使用了混幣方案,比特幣和以太坊上也有人提供混幣服務。適用範圍比較窄,而且花大力氣還是可以追蹤的。

存加密數據,只有交易參與方能解密 這種方案有些聯盟鏈在使用,缺點是驗證節點無法幫忙做驗證。

CT(Confidential Transactions) 使用同態加密和環簽名,使得驗證節點在只看到加密信息的情況下還能幫忙做驗證。現在的門羅使用的是這種方案。缺點是全同態加密現在還不實用,只用到加法同態,只能隱藏交易金額。不過門羅還有其他手段輔助,沒仔細研究過。

零知識證明 Zcash使用的方案。效果最好,缺點是慢。


簡單說就是不能保證隱私性,這也是目前區塊鏈研究領域的兩大難點之一。

目前最有希望的方向是無信息交換的零知識驗證,Zcash用的是這個。

另:門羅幣這種,解決的是匿名問題,不是隱私問題。


最近看了一些區塊鏈方面的paper,有一個疑問:既然區塊鏈上的數據是全網同步的,那麼如何保證數據的隱私性呢?我的理解是在區塊鏈商業應用中,肯定會涉及到隱私數據,特別是在金融領域。


答案:


這是一個非常好的問題,區塊鏈的隱私性也是社區最關注的話題之一。從區塊鏈理論本身來說,它根本無法保證數據的隱私性。因此需要結合一些其他技術來解決這個問題。

Zcash通過零知識證明za-SNARKs(零知識簡潔非互動性知識參數)實現UTXO模式下交易信息的完全隱藏。在Zcash網路中發起一筆轉賬不需要寫明轉賬的目標地址,而是將一個零知識證明鏈下發送給對方即可。當然發送交易的同時需要在區塊鏈記錄一些信息,但這些信息不會泄露交易的具體信息,包括對方帳號和交易金額。


Corda解決鏈上數據隱私的方法是只在有權閱讀數據的雙方間建立共識網路,這樣從根本上避免了數據泄露的風險。


Hyperledger Fabric 0.6版中通過普通加密的方法解決區塊鏈上數據隱私的問題,通過維護一棵分層的密鑰樹,實現對數據的分級加密。


Monero通過兩個關鍵技術:隱蔽地址和環簽名,實現了不依賴於中心節點的加密混合方案。隱蔽地址是為了解決輸入輸出地址關聯性的問題,環簽名是用於保證交易地址的不可追蹤性。除了交易地址,交易金額也會暴露部分隱私。門羅幣還提供了一種叫做環狀保密交易(RingCT)的技術來同時隱藏交易地址以及交易金額。


閃電網路和最近的Aeternity 項目利用狀態通道保護交易數據。狀態通道的原理是,不在區塊鏈上記錄每一筆交易記錄,而是隔一段時間記錄一次狀態變化,這樣就不會透露單筆交易信息。交易雙方會鏈下保存交易信息,當發生糾紛時,鏈下保存的信息可以結合鏈上信息一起解決問題。

除了以上解決方案外,目前業內討論的比較多的方案還有同態加密。但是由於雜訊問題,目前全同態加密計算深度有限(可以理解為乘法計算次數)和密鑰空間過大。因此距離商業應用還有很遠的距離。全同態加密的一個替換方案是半同態加密,即只支持加法或乘法的同態加密,但半同態加密可落地的場景並不多。


區塊鏈本身就是為了開放透明的,防止洗黑錢和暗箱操作的。你可以看看美國的房地產行業要查查這座房子是誰的很快就能查到,還能查他旗下有多少房產。


推薦閱讀:

怎麼看矽谷投資大佬預言「比特幣價格將在20年內漲到100萬美元」?

TAG:數據安全 | 隱私 | 比特幣Bitcoin | 區塊鏈Blockchain | 以太坊 |