微軟亞洲研究院閆鶯:以太坊的性能與隱私保護如何兼得?
雷鋒網3月25日消息,由開源社、TopGeek、匯智Tek聯合主辦的中國區塊鏈和金融創新科技峰會(FTCon2017)在上海舉行,微軟亞洲研究院主管研究員、區塊鏈實驗室負責人閆鶯,就基於以太坊的隱私保護技術,發表了她的觀點。
「我們要分清楚匿名與別名」,閆鶯說道,「區塊鏈根本做不到匿名,只能算別名」。那這時,以太坊的隱私保護就成了一個問題。我們既要掩蓋交易細節,又要驗證交易的正確性,那麼,業界已落地的通用做法是什麼呢?如何兼顧隱私保護與性能呢?對此,閆鶯做了詳細解答。
以下是雷鋒網整理的演講全文,雷鋒網對其進行了不改變文章原意的編輯。
大家好,我今天很高興在這裡跟大家一起來聊聊:區塊鏈的隱私保護技術。我今天主要從三方面來講。
第一為什麼會有隱私保護這樣的問題?我們先說一下區塊鏈的情況,以及為什麼會有隱私的問題。
第二個是現有的、實實在在的已經落地的隱私保護的技術,以及以太坊現在比較活躍的基於企業的架構。
如何兼顧隱私保護與性能?我將會分享一下微軟的做法。
我們先從區塊鏈的歷史講起,2008年,一個人提出了比特幣,接下來他和合伙人一起合作開發這個東西上線,但當時,比特幣還沒有什麼價值。但是很快,在之後一個月,其價格漲了10倍,大家才意識到它的價值。到了2011年,比特幣等於一美元。2013年,出現了一個少年,他是比特幣的愛好者,想開發一個新的幣種,那他就必須重新實現一下,使得後面的新幣種,比較容易在同樣的框架下去開發。就這樣,他提出了「以太坊」。
以太坊和比特幣的區別就是智能合約,實際上智能合約就是代碼,代碼可以定義錢怎麼轉,並且資產都是可以代碼化的。
有了這個想法之後,他就退學了,然後公布了他的白皮書,之後又和合作夥伴寫了一個比較詳細的黃皮書。之後就開始籌款,以太坊是最成功的籌款。2014年底,以太坊正式上線了,第一個版本就已經非常穩定了。並且如果你發現了以太坊的bug,提出來,並且被接受了,你就會得到比特幣的獎勵。以太坊一上線就支持七種語言,可以避免一種語言帶來的局限。
在下面這個圖上,大家可以看到,以太坊現在的發展狀況有點像三年前比特幣的發展情況。我們可以發現,以太坊還有發展空間,挖礦的人越多,寶藏越穩定,推動的人越多,技術越好。
可能大家也看到過區塊鏈的各種定義,但是沒串起來,我今天把區塊鏈的基本定義串一下。區塊鏈有好幾個部分,當有人跟你談起他在做區塊鏈項目時,你可以問一下他在做哪一塊?因為它包括存儲、智能合約、上層應用等5層。
首先,數據結構是比較基礎的部分,正如它的名字一樣,區塊鏈是一塊一塊的交易連在一起,那麼,怎麼連呢?用一些密碼。這種數據結構的特點是:如果你改了其中一塊數據的內容,比較容易連接起來。
那以太坊怎麼存在呢?不就是一個系統,怎麼搞的這麼複雜?
它就是這麼複雜,以太坊到現在已經有七千多個結點,來自不同國家,不同目的的人。以太坊是一塊一塊的數據節點連在一起,彼此完全是不信任的,存儲層面上,是每個結點高冗餘的存儲數據。鏈就是是區塊鏈。
一致性協議如果存在不同的結點,那如何保證數據的一致性呢?這就是我們經常談的一致性協議,每時每刻我們都需要一個人,這個人負責寫下一塊,然後記錄下來。那麼,誰來領導呢?
我再談談智能合約,什麼是智能合約呢?就是一段代碼。解決什麼問題呢?剛才講到用比特幣賺錢,其它人需要查詢你的餘額夠不夠,發起方是不是你,智能合約就要解決這樣的問題。那我們能不能把這個做的更靈活?我們舉一個例子。
假設即將舉辦一場球賽,我和Edwin打賭,如果A贏了,他給我100元,如果B贏了,我給他100元。這種場景在線下怎麼做呢?我們每個人先把錢給一個第三方,等結果出來之後,誰贏了把錢發給誰,第三方在其中收取一些手續費。智能合約就是想去掉這個第三方,它是一段代碼。足球比賽結果出來之後,我們可以觸發這個合約,它就自動把錢轉到贏的人手裡。智能合約就是一段代碼,之後會生成一個地址,別人可以轉給你。自己還有一個存儲空間,智能合約在區塊鏈上的運行時,輸入是區塊鏈上的數據,經過梳理之後,再寫回區塊鏈。
聽完這個例子大家可能明白了,我們所有的程序都能寫到區塊鏈上,這就是以太坊,它就是這樣開發的。數據所有的結果都在區塊鏈上。
有人可能有這樣的疑問,我寫一個循環代碼,是不是就可以了?
以太坊也有解決方案,它的運行不是免費的,要收油錢,具體怎麼收呢?按照你所消耗的資源,比如CPU資源、存儲資源來收,如果你想循環運行的話,沒有巨額資金也運行不起來,用這樣的方式,可以降低黑客攻擊的成功率。
基於區塊鏈的交易過程到底是怎樣的?講完區塊鏈的幾要素之後,我們再深入一點,在以太坊中,我轉了一筆錢,交易過程到底是怎樣的?
假設我要給一個人轉50元,我在客戶端提示轉50塊錢給他,就會生成一個交易,網路上所有人都可以看到,從誰到誰轉多少錢。這個交易就存在整個網路當中,其它結點收到了我的轉賬,這個帳本就更改了。於是我就有了兩個狀態,我現在的餘額再生成一個新的結點。所有的交易組織成一個數,根結點也計算出來,我們就把整個值都放到塊的頭部,最後把這個塊跟前面的塊連在一起,就完成了轉賬。
那中間為什麼有數字呢?為了驗證區塊鏈的完整性,當有人篡改的時候,可以從中間看出來是不是被人篡改了。可以通過這個數找到我現在的狀態,這是數的作用。
實際上我的交易被存成什麼樣的結構呢?上面所有的信息都是用這個存起來的,key是結點。那中間結點是什麼呢?實際上在每個結點上,如同下面表顯示,我們都可以通過它們的信息可以找到對應數值。
顯而易見,這種方式查詢起來效率不高,因為這個過程中,我們需要頻繁查詢數據。智能合約也是類似的,也是一段交易的內容,代碼也是以數的形式存儲上去的。
落地的隱私保護技術——拼車與煙霧彈現在,我們有了一個稍微具體一點的認識,我們發現區塊鏈基本上都是明文,除了地址和本身不是那麼對應之外,所有的信息都是對應的。
這時問題就產生了,不是說匿名嗎?我們要區分匿名和別名,如果你的名字和線下的人沒有關聯,就是匿名。實際上區塊鏈根本做不到,為什麼呢?
比如說我買了一個比特幣,我總要通過一些支付途徑來支付,在美國交易2000美元以上都是需要實名的,這個地址總是通過某種形式與實際的人有聯繫。所以區塊鏈並不是匿名的,只能說是別名,既然不匿名了,我們怎麼解決隱私問題呢?
首先交易的內容要隱藏好,不要讓人看到;但同時別人還要驗證這個交易是不是錯了,不能都加密。這兩者存在矛盾,實際上這是隱私保護技術上的挑戰。
現在實際上已經落地應用主要有兩種解決辦法。
一種是密碼學的原理,先加密,遇到了之後通過一種方法驗證。
另一種是側鏈,這個狀態下,不需要看見的人看不到,需要驗證的人通過驗證能見到。
拼車
我覺得,加密的解決方法類似拼車的概念,我轉給某個人錢容易暴露,那我就聯合一堆人一起轉,你不知道具體誰轉給了誰。拼車的生意誰做呢?我們需要在網路中建立幾個結點,這幾個結點是將轉賬的兄弟姐妹連在一起,但是這個主結點卻容易泄露。這時,我們可以不用一個主結點,用多個主結點去拼,這樣的話,除非都找到,否則很難知道用的是哪一個。
另外一種技術有點像煙霧彈的模式,之前拼車是幾個人都有轉賬意願的人拼在一起。但這種技術是找一些無辜群眾拼在一起。
這個技術具體就是,當我想發起交易的時候,我就用我的私鑰和一群人的公鑰一起發起,這樣就不知道是誰發起的。但其中存在一個問題:如果他們知道你選擇的地址,你就暴露了。所以這不是完全的隱私保護,只能說是一部分隱私保護,至少你是在發起人裡面的。
這個技術本身不是什麼新技術,80年代已經出現了,我們也看到這個技術的複雜度,還有它理論上的重要性。目的是讓驗證者不知道事實本身的時候,還能知道事情的真假。
在這其中,存在一種Zero-Knoeledge Proof,我們舉一個例子來說明。
南北分支是連著的,有一個鑰匙可以連上。老王自稱有這扇門的鑰匙,但是不願意直接展示出來。他不願意把鑰匙交出來,我們怎麼知道有這把鑰匙呢?我們找了一個測試者,同時要防止測試者和老王聯合作弊,具體怎麼做呢?測試者把眼睛蒙上,然後老王隨意走到一個分支,測試者隨機要求老王從某一個分支出來,老王都能出來。那能不能說老王有鑰匙呢?不能。如果老王進去的分支和測試者是一邊的話,也可以出來。所以這種測試要多做,如果老王每一次都能出來,我們就猜測老王是有鑰匙的。但是這個驗證效率很低。
還有一種是非交互性的,即做一次測試就能判斷真假。判錯的概率低,但也不能百分之百的保證。從比特幣到ZCash有一個過程。我需要證明時,給出序列號,證明我是這個幣的擁有者。這樣就把詳細的信息隱掉了,同時可以驗證。
另外有一種側鏈的方式,它現在很受歡迎,原因是整個過程完全給予代碼,而且它的白皮書上也說了:經過一些驗證和測試。目前這個架構,基本上可以滿足所有的金融需求。它是怎麼做的呢?其實很簡單,我們公開鏈以及狀態,結果是其他人只知道我產生了一個交易,但是看不到內容,這樣就可以更好的防篡改。
隱私與性能如何兼得?我們要做隱私保護,勢必會影響系統性能。一方面要注意隱私,一方面要兼顧性能,這種情況下,我們應該怎麼做呢?我在這裡分享一下微軟的做法。
一個是做硬體,硬體是非常常見的,不用去購買。比如說SGS,有了它之後,我們就能很好解決隱私的問題,同時保障性能,因為那是完全可信任的。
另外,我們在和客戶交流過程中,發現他們有一些需要與第三方合作以維護數據的訴求,但不需要用區塊鏈方法解決。我們現在做了一個大家共同擁有、可編程的,共同管理的雲資料庫。現在,基本上所有的供應商都有相應的雲資料庫。大家覺得在雲端處理數據,穩定性和隱私性都有保障。有許多用戶喜歡這個產品,但其中也有局限性,它只有一個owner,你跟我合作可以給你訪問許可權,但我也可以篡改許可權。
有些超市希望用區塊鏈的技術,那樣就可以監控養豬、屠殺,以及肉的處理過程豬肉的質量。其實在類似的供應鏈裡面,我們也需要做數據存儲溝通的,問題任何人來做,都有人不放心,那誰來做這個第三方呢?
所以我們現在需要一個雲資料庫,理想狀態是幾家共同管理,而不是單獨一方管理。區塊鏈應用過程中,經常找不到可信任的第三方。
如何定義可信任呢?
首先要具備穩定性,但這並不意味著數據沒有人篡改,而是用去中心的方式處理。如果在雲端資料庫上加入區塊鏈,這樣共同維護資料庫的每個人的交易都可以去查詢。
另外在整個資料庫的用戶群中,有完善的規則定義。誰能訪問哪個表、誰能更改數據、誰可以加入等,都能得到較好的管理。
那麼,這樣的資料庫具有什麼樣的特點呢?不限量。
我們還是用傳統資料庫,上層用戶不能直接訪問,並且定一個規則,明確誰可以查詢、誰可以生成,如果產生需求,它會首先進入資料庫,判斷其是否符合定義許可權,如果符合的話發給所有人,這就能起到資料庫的目的,同時保護雲資料庫。
所有雲供應商都可以做類似方案。並且關於區塊鏈的新聞也很多。技術有兩方面的作用,一方面技術是敲門磚,更重要的是背後的資本運作、管理以及如何落地。如果你清楚需求,總有辦法去實現,而不是做一個非常泛的平台,並且要保證其各方面的性能都很好,這是很難的。


※「道哥」透露從業初心:安全技術影響世界,就必將要承擔起社會責任
※國行版華為 P10 售價 3788 元起;58 同城回應簡曆數據泄漏:已開展追查
TAG:雷鋒網 |
※蔓越莓膠囊真的能保護女性健康嗎?
※女性如何穿文胸,才能保護自己雙峰的健康?
※如何養護能保護好聖伯納的健康
※產房裡,產婦的隱私,醫生如何保護?
※電腦族如何才能保護好自己的皮膚?
※如何得到善神護法的保護嗎?
※女性胸小影響生育能力是真的嗎?如何保護乳房?
※接受搭訕的女性如何保護自己?
※骨骼健康的保護神——肌肉,是你不得不健身的理由
※男人,如何保護自己的健康
※食物中亞精胺能保護心臟健康
※防彈衣是否能保護士兵的安全?為什麼解放軍很少用?
※如何利用風水來保護你的健康和財運
※腎臟如何養生?腎臟的排毒功能如何保護?
※微軟發布基於以太坊的保密聯盟框架,以增強隱私保護和運行靈活度
※如何保護哈士奇的腸胃,很實用!
※如何保護牙齒健康
※令人無法不伸手保護的魔性男愛豆!
※體育鍛煉如何能夠保護心臟?