logo

5億條數據黑市公開叫賣 區塊鏈能更好的保護隱私嗎?

瀏覽數

99+

近日,華住疑似被“脫褲”,5億條數據在黑市公開叫賣,隱私問題再度被拉上風口。今年3月,社交巨頭Facebook也深陷5000萬用戶數據泄露的隱私門。那麽,用區塊鏈就能更好的保護隱私嗎?

本篇將帶大家深入探討區塊鏈上隱私保護的可行性。

區塊鏈的安全性來自于有很多節點來驗證每筆交易,但是,很多節點驗證每筆交易卻對隱私非常不利。

——Vitalik Buterin

在區塊鏈上,每個參與者都能獲得完整的數據備份,所有交易數據都是公開透明的,這是區塊鏈的優勢。但這種完全公開透明的邏輯,帶來的隱私問題,也阻礙了區塊鏈的大規模應用。

我們先通過下面幾個場景,看看隱私問題對區塊鏈應用的實際影響:

合規場景。各國法律都要求禁止企業泄漏用戶隱私數據,不解決隱私問題,這些企業根本無法在區塊鏈上運行應用

商業競爭場景。沒人喜歡競爭對手看到自己企業的交易對象、交易金額、交易頻次這些機密數據

個人隱私場景。沒有人喜歡自己的一切信息都能被區塊鏈上所有人可以看到

投票/選舉/遊戲等場景。沒有隱私的選舉/投票將大概率被操縱;“石頭剪刀布”時,先出手的選擇會被看到,後出手的人必勝

可以說,不解決隱私問題,區塊鏈的應用場景將受到極大限制。

在保證多節點驗證的情況下,如何保護各節點交易信息的不可見 ,成爲解決區塊鏈隱私問題的關鍵。

那麽,這個問題有解嗎?有。目前,區塊鏈的隱私保護已經出現了多種解決方案,總體來看,包含交易隱私保護及Dapp相關隱私保護兩大部分。

 

交易隱私包含地址余額、交易路徑(發送者是誰,接收者是誰)和交易數額三部分。

對它的保護有兩種思路,一種是混淆,側重于在公開透明的賬本邏輯下混淆明確的交易路徑。另一種是對機密信息(發送者、接收者和交易數額)進行隱藏,直接改造賬本的全公開邏輯,非常重要的是在加密狀態下讓公共區塊鏈仍然可以驗證交易的有效性。

在比特幣網絡裏面,這些數據本身都是公開的,要想保護隱私,只能在既有規則下做一些使用層面的創新。

Stealth address(混淆地址)。相當于一次性收款地址,可以隱藏接收者的身份。這個地址是用接收者公鑰計算出來的,接收者可以通過私鑰計算出相應的私鑰。有些版本的比特幣錢包支持這個功能。

Mixing,就是把原來從A到B的交易路徑混淆掉,這樣看到轉賬不知道真實接收者是誰,看到收款不知道真實發送者是誰。

Mixing可以中心化,也可以去中心化。在中心化的場景下,發送者的代幣會轉到中心的地址,之後再重新劃撥出去,類似交易所。而去中心化的場景裏,是直接利用了比特幣可以有多個發送者和接收者的特點,直接把原來多筆交易組合成一筆交易發出去。

Mixing可以讓中心/參與者知道原始交易路徑,也可以隱藏這個信息。

有一些加密貨幣改造了比特幣的邏輯,也實現了交易隱私的保護。


Dash應用了coinjoin方法,類似mix,只是是一個系統層面的設計。將多筆交易混在一起,擁有多個輸入、輸出,以此來混淆交易路徑。

門羅幣使用了ring signatures, ring confidential transactions (RingCT), stealth addresses,Kovri。

stealth addresses:這種一次性地址在門羅幣裏面是一個系統級別的強制和自動設計,可以隱藏接收者身份。擁有“unlinkability”(難以追蹤去處)

ring signatures環簽名:使用私鑰以及其它人的公鑰生成一個簽名,當其它節點驗證時,只知道該簽名是所引用的衆多公鑰中的一個,卻無法定位具體的公鑰。擁有“untraceability”(難以回溯來源)

ring confidential transactions (RingCT):隱藏交易數量,只要向節點證明:a、交易金額爲正;b、進出金額加總爲0即可

Kovri,還在開發,隱藏你的網絡流量

Zcash在設計的時候就支持發送人、接收人和金額完全隱藏。通過采用zk-SNARK(Zero-Knowledge Succinct Non-Interactive Argument of Knowledge)來完成交易驗證。零知識證明是指證明者能夠在不向驗證者提供任何有用的信息的情況下,使驗證者相信某個論斷是正確的。而SNARK是指無需雙方交互,證明人單方出具即可。


需要注意,這裏面Zcash的方案無論在效果上還是思維上都極具顛覆性。無需了解原始信息,還能驗證交易真實性。這樣一方面從根本上推翻了公開發送人、接收人、交易數量的做法,解決了隱私泄漏的可能性。而另一方面又還能讓公共節點驗證交易的有效性,保證區塊鏈的核心價值。

也難怪ShapeShift的創始人Erik Voorhees認爲:

其實,公開透明不是區塊鏈的核心邏輯,支持公共驗證才是。 整體上來講,Stealth address和mixing最簡單和安全,但能力受限。門羅幣的方案高效,並且全面,但仍然有一定隱私泄漏空間。zcash在隱私性上做到了相對極致。


Dapp的隱私分爲智能合約代碼的隱私、私有數據鏈上發布的隱私和Dapp執行過程的隱私。

智能合約的代碼隱私問題

這個問題不太重要。因爲既然選擇了區塊鏈,本身就是希望公衆審查代碼邏輯來建立公信力。有一些場景可能會遇到這個問題,比如區塊鏈遊戲某些關鍵邏輯可能希望保密來維持趣味性。要想解決的話,目前主流的思路是在不改造區塊鏈透明邏輯的情況下,采用layer 2的鏈下環境去存儲&執行智能合約。layer2鏈下環境的方案能根本上突破區塊鏈的限制,也能提升區塊鏈的擴展性(scalability),所以常有一些公鏈提出要用鏈下環境方案做一個更擴展、更隱私的區塊鏈。

私有數據鏈上發布的隱私

私有數據的鏈上發布,這塊更多的是需要dapp和用戶來自行保護隱私。非對稱加密是比較基礎的手段,用公鑰對數據先進行加密再發布,需要時再用對應私鑰解密。如果想讓特定智能合約/用戶獲取到相應私密數據,可以采用對方的公鑰加密。

Dapp執行過程的隱私

問題比較集中的是Dapp執行過程的隱私,這是討論的核心:

用戶可以加密把數據傳輸給智能合約,正常來講智能合約是要將它解密之後計算給出結果的,但這樣原始數據就泄漏了。

這種計算有幾種場景:

1)暫時保密,在計算前可以披露的場景

比如在區塊鏈上進行石頭剪刀布/投票,如何保證先出手一方的隱私? 經典解決方案就是采用“hash-reveal”的commitment模式,先作出一個承諾(我已經作出了選擇),但把它加密/隱藏起來,只給出它的hash,等到時機合適(大家都出完手)再解密。因爲hash已經定了,所以無法改變結果。

這種更多的是一種使用技巧,場景比較有限。

2)對隱私數據進行判斷的場景

比如原數據是年齡,需要判斷“是否滿18周歲”。 零知識證明就很適合這種場景,它本身就是在無法得到原始信息的情況下進行充分判斷。 但這種局限在判斷領域。

3)更加通用的領域,加密數據計算後再解密,如何能夠獲得跟原數據計算一致的結果。

比較典型的例子是A加密一批用戶數據給B建模使用,如何讓B不獲得原始數據,還能正常完成建模工作。

針對隱私數據計算這個核心問題,行業裏面主要有三種方案,集中在公鏈和協議層。要麽是作爲一個協議配合既有公鏈,要麽是主打隱私計算自建公鏈。

鏈下執行環境

以ShadowZone/TEEX爲例,它爲以太坊等公鏈提供了offchain的部分,offchain部分由可信執行環境(TEE)作爲節點。可信執行環境類似黑盒子,執行過程不受其他程序甚至操作系統幹擾,相關數據外部無法窺探。

ShadowZone在鏈上和鏈下分別設置智能合約,鏈上合約幫助用戶和TEE之間進行信息交互,用戶傳輸私密智能合約和私密輸入數據的時候,用TEE的公鑰加密,這樣只有在TEE內部才能解密。TEE計算/執行完畢後,按照類似的方法把數據加密,只讓相關用戶獲取。

數據傳輸過程用非對稱加密保證傳輸過程中的隱私,數據計算過程不在鏈上發布,鏈上看不到隱私,並且本身類似黑盒子,即便是硬件所有人也看不到執行過程的數據,因此可以保證全程的隱私。

Offchain方案性能比較好,算是當下比較實際的解決方案,但是在實踐中出現了多次安全問題。

完全同態加密

效果是對原數據的計算結果和進行加密後再計算得到的結果一致,如果可以實現,那就可以把數據加密後放心給節點計算。

目前已經有全同態加密的方案(就是可以同時支持加法和乘法,意味著等于加減乘除都支持),但現在仍然處在理論完善階段,落地較難

安全多方計算secure multiparty computation (MPC)

方法是把數據拆分,每個節點只拿到一部分數據進行計算並反饋給用戶,用戶進行彙總。因爲節點都只拿到了一部分數據,所以可以保證隱私。

這三個是不同層面的事情。安全多方計算類似一個使用技巧,完全同態加密是一種加密方法,對加密完的數據進行計算,解密完之後會獲得跟原數據計算一樣的結果。鏈下執行硬件相當于一個安全的黑盒子計算器,無法窺探執行過程數據,是硬件層面的東西。

這三個每一個都足夠用了,但是實踐中可能會組合使用。比如爲了提升性能,安全多方計算可能使用鏈下執行環境。爲了提升隱私性,安全多方計算前可能進行同態加密,一點隱私泄漏可能性都不給。

按照行業的看法,從運行效率角度來講,鏈下執行環境具備實操性,安全多方計算還在理論完善階段,而完全同態加密的采用則需要5到15年時間。

 

2.webp

整體上來講:

隱私貨幣的方案比較健全,落地良好,在逐漸優化。

隱私計算方向,今年出了一批新玩家。有些是作爲協議,開發者可以低成本的在以太坊等公鏈裏使用,有些是自己要做公鏈。玩家們的方案都差不多,基本都是采用可信計算環境,後續推進多方計算和全同態加密。能夠率先做出可用産品,並把工業界的計算需求引進來的公鏈會獲得競爭優勢。