曲速未來 :以門羅幣為例如何運用區塊鏈隱私保護技術
區塊鏈安全諮詢公司 曲速未來 表示:在當今的加密技術中,隱私是一個很重要的話題,這已經不是什麼祕密了。無論是公司還是個人都不希望將自己的所有資訊釋出到公共區塊鏈上,不受任何限制,被本國政府、外國政府、家庭成員、同事或商業競爭對手隨意讀取。
比特幣最初是作為一種假名加密貨幣開發的,只要現實世界的身份不會與比特幣地址聯絡起來,它就能保持隱匿。然而,由於比特幣區塊鏈的公共性質,很快人們就清楚地發現,是有可能根據特定地址和交易的使用模式來甄別個人的。此外,節點在廣播交易時也會洩漏其 IP 地址。
區塊鏈中的隱私保護
其實比特幣在設計之初也考慮過賬戶與交易的匿名性,因為整個比特幣的賬戶地址幾乎是無限的,大家都可以隨意建立錢包地址,這樣你甚至可以做到每筆交易都拿一個新地址來接收,然而受限於區塊鏈網路的公開性以及帶來的可追蹤性,對於這些分散的交易你可能需要整合才能進行一筆較大的交易,而這種多輸入的交易一旦出現,就可以將這些來源地址劃分到同一賬戶下,繼而對這些賬戶進行進一步追蹤,這樣通過對整個交易網路的分析我們就能得到很多可關聯的資訊,加上交易金額也是公開的,對於一些特定金額的交易我們也能找到蛛絲馬跡,如果對應地址的身份得到確認,通過這些資訊就可以推算出更多的地址資訊,另外還有找零所使用的零錢地址也會帶來資訊的暴露,早期比特幣的客戶端就出現過零錢地址總是在輸出地址的第一個的bug,通過這樣層層遞進我們就可以揭開那些隱藏在比特幣網路下的真實身份。
可以看到比特幣網路所面對的隱私挑戰還是很多的,可以說完全無法滿足匿名性的需求,另外由於區塊鏈交易的全程可追蹤性,每筆資金的歷史都可以查得清清楚楚,這就相當於給比特幣都打上了烙印。
區塊鏈中記錄交易資料的全域性賬本在網路中是公開的,任意攻擊者都能夠獲取所有交易資訊,使交易者的隱私有洩露的風險。對賬本中的資料進行分析整理,攻擊者可以獲得任意一個賬戶對應的所有交易,還可以分析不同賬戶之間的交易關係圖譜。
即使使用者採用不同的賬戶進行交易,攻擊者也可以利用地址聚類技術分析出隸屬於同一個使用者的不同賬戶。而且由於使用者進行的每一筆比特幣交易都將永久記錄在區塊鏈中,一旦某一筆歷史交易被實名化(例如比特幣交易所受到黑客攻擊,導致使用者賬戶資訊洩露),則相關的所有交易記錄中的交易者身份資訊都將洩露。
此外,隨著區塊鏈交易逐漸被應用到日常支付領域,攻擊者可以利用鏈外資訊推測區塊鏈中賬戶的身份。例如,將使用者的購物記錄和比特幣賬戶支付記錄進行對比,分析賬戶的身份資訊。
針對基於資料分析的隱私竊取方法,目前已出現一些隱私保護機制。主要思想是在不影響區塊鏈系統正常工作的情況下,對公開資料中的部分資訊進行隱藏,增加資料分析的難度。其中,混幣是一種應用廣泛的隱私保護方法。目前來說,比較典型的對交易內容進行隱藏的隱私保護方案主要是達世幣(Dash)所採用的混幣技術,門羅幣所採用的環簽名與隱祕地址以及zcash所採用的零知識證明,這些都匯聚了很多密碼學的知識。
門羅幣(Monero 或 XMR)是一個注重隱私、匿名性和不可跟蹤的加密數字貨幣,它因為被網站或惡意程式利用 CPU 挖礦而受到廣泛關注。但門羅幣真的無法發現使用者的身份和跟蹤交易?一組研究人員發現,雖然門羅幣的隱私保護強於比特幣,但它仍然未能隱藏使用者的身份。
在 2017 年 2 月修改程式碼前研究人員發現門羅幣並不匿名,可以被追蹤。在這之前的交易很容易識別身份,而之後的交易在識別身份上也比使用者以為的簡單。
門羅幣的匿名性主要是由其環形簽名技術實現的。在十七世紀的時候,法國群臣向國王進諫時,為了不讓國王追查到是由誰帶頭簽名上書的,於是他們發明出了一種環形簽名的方式,所有人的姓名按環形排列,自然的隱藏了簽名順序,從而做到無法追查源頭。
環形簽名演算法與比特幣一樣也是使用基於雜湊值的公鑰+私鑰模式,不同的是環形簽名技術將交易傳送方的公鑰和另外一個公鑰進行混合,然後對資訊進行簽署,最後再由接收者的私鑰解密驗證,這樣一來外界就無法判斷交易發起者的公鑰是哪一個,從而使門羅幣實現了隱藏交易傳送方地址資訊的功能,使外部攻擊者無法看出地址之間的關聯性。
Stealth Address (隱蔽地址)
首先我們來看看門羅幣所使用的Stealth Address技術,這是門羅幣用以提供匿名性保障的關鍵性技術之一。
與比特幣中一個賬戶地址只有一對公鑰與私鑰不同,門羅幣有兩對金鑰,可以理解為一對用來支付交易,一對用來檢視交易。
用來支付的是spend key,這對金鑰中的公鑰用來參與後面的環交易,並對key image的簽名進行驗證,而私鑰則用以建立key image。用來檢視的是view key,這一對金鑰中的公鑰就是用來生成我們的一次性的Stealth Address,而私鑰則是接收者用以掃描區塊鏈來檢視傳送給他的交易。
門羅幣的地址主要就是由上面的兩部分金鑰的公鑰組成,基本結構大致如下:
這樣得到的地址是138位,進行hex轉換後將得到95位的標準地址。
然後看一下stealth address,其實它的中心思想很簡單,就是利用接受者的view key的公鑰計算出一個臨時的一次性stealth address,然後將資金髮送到這個地址,然後接收者對區塊鏈進行掃描時發現這筆交易就可以利用自己的view key取走這部分資金,而網路上的其他人並不知道這筆交易是傳送給誰的,只有接收者自己知道,從而確保了交易的匿名性
stealth address的公鑰的計算方式如下:
其中H()表示門羅幣所使用的hash演算法,r是傳送者選取的一個隨機數,G表示的是橢圓曲線的基點,如果不瞭解的話最好還是先去看看ECC,畢竟這也算是區塊鏈中的基礎密碼學了,公式中的A和B則分別表示接收者的public view key和public send key。
得到公鑰P後再由它得到一個門羅幣的地址,這就是一次性的stealth key了。
接下來發送者再計算一個R=rG,然後將R也打包到以P為目標的交易中,將這筆交易廣播到鏈上。
接收者則在這邊一直掃描著鏈上的交易,對於每筆交易,計算:
其中a為接收者的private view key,因為在橢圓曲線對應的公私鑰關係中 A=aG,所以rA=raG=aR,所以當接收者發現P=P1時,他就知道這筆交易是傳送給自己的,因為對應的P1只有接收者自己可以計算出來,所以除了他以外別人並不知道該交易的目標地址。
要使用這筆交易,接收者只需計算出對應的私鑰:
使用該私鑰即可簽名這筆交易中的資金進行使用。
可以看到接收方這邊的壓力還是比較大的,需要掃描整個鏈上的交易,這也是目前門羅幣效能的一大瓶頸。
隨後,開發人員又對門羅幣實施硬分叉,整合了RingCT環形保密交易技術 (RCT),通過密碼學原理將門羅幣的交易數額進行加密,這也就意味著除了交易雙方,沒有人能夠通過區塊鏈追蹤查詢到他們具體的地址資訊和交易金額。在這次的升級成功之後,RCT地址成為門羅幣唯一的地址格式。
總結
區塊鏈安全諮詢公司 曲速未來 觀點:總的來說,隱私性問題是目前密碼學研究中最令人興奮的領域之一,為了讓其在現實世界中得以使用,在優化這些理論技術的效率方面還有大量的工作要做。加密貨幣的好處在於它為最新的隱私研究提供了直接的應用場景。代幣、智慧合約和基礎設施中使用的許多隱私技術都是幾年前才發明出來的。考慮到這個領域的發展速度之快,隱私將繼續成為加密專案設計中不可或缺的一部分。