解讀:如何運(yùn)用區(qū)塊鏈隱私保護(hù)技術(shù)——以門羅幣為例
在當(dāng)今的加密技術(shù)中,隱私是一個(gè)很重要的話題,這已經(jīng)不是什么秘密了。無論是公司還是個(gè)人都不希望將自己的所有信息發(fā)布到公共區(qū)塊鏈上,不受任何限制,被本國政府、外國政府、家庭成員、同事或商業(yè)競(jìng)爭對(duì)手隨意讀取。
比特幣最初是作為一種假名加密貨幣開發(fā)的,只要現(xiàn)實(shí)世界的身份不會(huì)與比特幣地址聯(lián)系起來,它就能保持隱匿。然而,由于比特幣區(qū)塊鏈的公共性質(zhì),很快人們就清楚地發(fā)現(xiàn),是有可能根據(jù)特定地址和交易的使用模式來甄別個(gè)人的。此外,節(jié)點(diǎn)在廣播交易時(shí)也會(huì)泄漏其 IP 地址。

節(jié)點(diǎn)代表一個(gè)地址,邊代表一項(xiàng)交易
區(qū)塊鏈中的隱私保護(hù)
其實(shí)比特幣在設(shè)計(jì)之初也考慮過賬戶與交易的匿名性,因?yàn)檎麄€(gè)比特幣的賬戶地址幾乎是無限的,大家都可以隨意創(chuàng)建錢包地址,這樣你甚至可以做到每筆交易都拿一個(gè)新地址來接收,然而受限于區(qū)塊鏈網(wǎng)絡(luò)的公開性以及帶來的可追蹤性,對(duì)于這些分散的交易你可能需要整合才能進(jìn)行一筆較大的交易,而這種多輸入的交易一旦出現(xiàn),就可以將這些來源地址劃分到同一賬戶下,繼而對(duì)這些賬戶進(jìn)行進(jìn)一步追蹤,這樣通過對(duì)整個(gè)交易網(wǎng)絡(luò)的分析我們就能得到很多可關(guān)聯(lián)的信息,加上交易金額也是公開的,對(duì)于一些特定金額的交易我們也能找到蛛絲馬跡,如果對(duì)應(yīng)地址的身份得到確認(rèn),通過這些信息就可以推算出更多的地址信息,另外還有找零所使用的零錢地址也會(huì)帶來信息的暴露,早期比特幣的客戶端就出現(xiàn)過零錢地址總是在輸出地址的第一個(gè)的bug,通過這樣層層遞進(jìn)我們就可以揭開那些隱藏在比特幣網(wǎng)絡(luò)下的真實(shí)身份。
可以看到比特幣網(wǎng)絡(luò)所面對(duì)的隱私挑戰(zhàn)還是很多的,可以說完全無法滿足匿名性的需求,另外由于區(qū)塊鏈交易的全程可追蹤性,每筆資金的歷史都可以查得清清楚楚,這就相當(dāng)于給比特幣都打上了烙印。
區(qū)塊鏈中記錄交易數(shù)據(jù)的全局賬本在網(wǎng)絡(luò)中是公開的,任意攻擊者都能夠獲取所有交易信息,使交易者的隱私有泄露的風(fēng)險(xiǎn)。對(duì)賬本中的數(shù)據(jù)進(jìn)行分析整理,攻擊者可以獲得任意一個(gè)賬戶對(duì)應(yīng)的所有交易,還可以分析不同賬戶之間的交易關(guān)系圖譜。
即使用戶采用不同的賬戶進(jìn)行交易,攻擊者也可以利用地址聚類技術(shù)分析出隸屬于同一個(gè)用戶的不同賬戶。而且由于用戶進(jìn)行的每一筆比特幣交易都將永久記錄在區(qū)塊鏈中,一旦某一筆歷史交易被實(shí)名化(例如比特幣交易所受到黑客攻擊,導(dǎo)致用戶賬戶信息泄露),則相關(guān)的所有交易記錄中的交易者身份信息都將泄露。
此外,隨著區(qū)塊鏈交易逐漸被應(yīng)用到日常支付領(lǐng)域,攻擊者可以利用鏈外信息推測(cè)區(qū)塊鏈中賬戶的身份。例如,將用戶的購物記錄和比特幣賬戶支付記錄進(jìn)行對(duì)比,分析賬戶的身份信息。
針對(duì)基于數(shù)據(jù)分析的隱私竊取方法,目前已出現(xiàn)一些隱私保護(hù)機(jī)制。主要思想是在不影響區(qū)塊鏈系統(tǒng)正常工作的情況下,對(duì)公開數(shù)據(jù)中的部分信息進(jìn)行隱藏,增加數(shù)據(jù)分析的難度。其中,混幣是一種應(yīng)用廣泛的隱私保護(hù)方法。目前來說,比較典型的對(duì)交易內(nèi)容進(jìn)行隱藏的隱私保護(hù)方案主要是達(dá)世幣(Dash)所采用的混幣技術(shù),門羅幣所采用的環(huán)簽名與隱秘地址以及zcash所采用的零知識(shí)證明,這些都匯聚了很多密碼學(xué)的知識(shí)。

門羅幣(Monero 或 XMR)是一個(gè)注重隱私、匿名性和不可跟蹤的加密數(shù)字貨幣,它因?yàn)楸痪W(wǎng)站或惡意程序利用 CPU 挖礦而受到廣泛關(guān)注。但門羅幣真的無法發(fā)現(xiàn)使用者的身份和跟蹤交易?一組研究人員發(fā)現(xiàn),雖然門羅幣的隱私保護(hù)強(qiáng)于比特幣,但它仍然未能隱藏用戶的身份。
在 2017 年 2 月修改代碼前研究人員發(fā)現(xiàn)門羅幣并不匿名,可以被追蹤。在這之前的交易很容易識(shí)別身份,而之后的交易在識(shí)別身份上也比用戶以為的簡單。

門羅幣的匿名性主要是由其環(huán)形簽名技術(shù)實(shí)現(xiàn)的。在十七世紀(jì)的時(shí)候,法國群臣向國王進(jìn)諫時(shí),為了不讓國王追查到是由誰帶頭簽名上書的,于是他們發(fā)明出了一種環(huán)形簽名的方式,所有人的姓名按環(huán)形排列,自然的隱藏了簽名順序,從而做到無法追查源頭。
環(huán)形簽名算法與比特幣一樣也是使用基于哈希值的公鑰+私鑰模式,不同的是環(huán)形簽名技術(shù)將交易發(fā)送方的公鑰和另外一個(gè)公鑰進(jìn)行混合,然后對(duì)信息進(jìn)行簽署,最后再由接收者的私鑰解密驗(yàn)證,這樣一來外界就無法判斷交易發(fā)起者的公鑰是哪一個(gè),從而使門羅幣實(shí)現(xiàn)了隱藏交易發(fā)送方地址信息的功能,使外部攻擊者無法看出地址之間的關(guān)聯(lián)性。
Stealth Address (隱蔽地址)
首先我們來看看門羅幣所使用的Stealth Address技術(shù),這是門羅幣用以提供匿名性保障的關(guān)鍵性技術(shù)之一。

與比特幣中一個(gè)賬戶地址只有一對(duì)公鑰與私鑰不同,門羅幣有兩對(duì)密鑰,可以理解為一對(duì)用來支付交易,一對(duì)用來查看交易。
用來支付的是spend key,這對(duì)密鑰中的公鑰用來參與后面的環(huán)交易,并對(duì)key image的簽名進(jìn)行驗(yàn)證,而私鑰則用以創(chuàng)建key image。用來查看的是view key,這一對(duì)密鑰中的公鑰就是用來生成我們的一次性的Stealth Address,而私鑰則是接收者用以掃描區(qū)塊鏈來查看發(fā)送給他的交易。
門羅幣的地址主要就是由上面的兩部分密鑰的公鑰組成,基本結(jié)構(gòu)大致如下:

這樣得到的地址是138位,進(jìn)行hex轉(zhuǎn)換后將得到95位的標(biāo)準(zhǔn)地址。
然后看一下stealth address,其實(shí)它的中心思想很簡單,就是利用接受者的view key的公鑰計(jì)算出一個(gè)臨時(shí)的一次性stealth address,然后將資金發(fā)送到這個(gè)地址,然后接收者對(duì)區(qū)塊鏈進(jìn)行掃描時(shí)發(fā)現(xiàn)這筆交易就可以利用自己的view key取走這部分資金,而網(wǎng)絡(luò)上的其他人并不知道這筆交易是發(fā)送給誰的,只有接收者自己知道,從而確保了交易的匿名性
stealth address的公鑰的計(jì)算方式如下:

其中H()表示門羅幣所使用的hash算法,r是發(fā)送者選取的一個(gè)隨機(jī)數(shù),G表示的是橢圓曲線的基點(diǎn),如果不了解的話最好還是先去看看ECC,畢竟這也算是區(qū)塊鏈中的基礎(chǔ)密碼學(xué)了,公式中的A和B則分別表示接收者的public view key和public send key。
得到公鑰P后再由它得到一個(gè)門羅幣的地址,這就是一次性的stealth key了。
接下來發(fā)送者再計(jì)算一個(gè)R=rG,然后將R也打包到以P為目標(biāo)的交易中,將這筆交易廣播到鏈上。
接收者則在這邊一直掃描著鏈上的交易,對(duì)于每筆交易,計(jì)算:

其中a為接收者的private view key,因?yàn)樵跈E圓曲線對(duì)應(yīng)的公私鑰關(guān)系中 A=aG,所以rA=raG=aR,所以當(dāng)接收者發(fā)現(xiàn)P=P1時(shí),他就知道這筆交易是發(fā)送給自己的,因?yàn)閷?duì)應(yīng)的P1只有接收者自己可以計(jì)算出來,所以除了他以外別人并不知道該交易的目標(biāo)地址。
要使用這筆交易,接收者只需計(jì)算出對(duì)應(yīng)的私鑰:

使用該私鑰即可簽名這筆交易中的資金進(jìn)行使用。
可以看到接收方這邊的壓力還是比較大的,需要掃描整個(gè)鏈上的交易,這也是目前門羅幣性能的一大瓶頸。
隨后,開發(fā)人員又對(duì)門羅幣實(shí)施硬分叉,整合了RingCT環(huán)形保密交易技術(shù) (RCT),通過密碼學(xué)原理將門羅幣的交易數(shù)額進(jìn)行加密,這也就意味著除了交易雙方,沒有人能夠通過區(qū)塊鏈追蹤查詢到他們具體的地址信息和交易金額。在這次的升級(jí)成功之后,RCT地址成為門羅幣唯一的地址格式。
總結(jié)
區(qū)塊鏈安全咨詢公司 曲速未來 觀點(diǎn):總的來說,隱私性問題是目前密碼學(xué)研究中最令人興奮的領(lǐng)域之一,為了讓其在現(xiàn)實(shí)世界中得以使用,在優(yōu)化這些理論技術(shù)的效率方面還有大量的工作要做。加密貨幣的好處在于它為最新的隱私研究提供了直接的應(yīng)用場(chǎng)景。代幣、智能合約和基礎(chǔ)設(shè)施中使用的許多隱私技術(shù)都是幾年前才發(fā)明出來的??紤]到這個(gè)領(lǐng)域的發(fā)展速度之快,隱私將繼續(xù)成為加密項(xiàng)目設(shè)計(jì)中不可或缺的一部分。