BTC-12比特幣匿名性

內容整理自 北京大學肖臻老師《區塊鏈技術與應用》公開課 12-BTC-匿名性

比特幣匿名性 anonymity不等於隱私保護 privacy。 

可能破壞比特幣匿名性的方面:

1.一個人可以生成很多地址賬戶,但這些地址賬戶可能被關聯起來。假設有這樣一個交易:

inputs:address1(4BTC),address2(5BTC)

outputs:address3(6BTC),address4(3BTC)

其中,address1和address2有可能是同一個人的,因爲這個人同時控制着這兩個賬戶的私鑰。之所以出現兩個輸入,是因爲你要買的東西很難正好是某個賬戶全部的值,一個賬戶用於找零。輸出地址也可能會有一個找零錢的地址。例如上面例子,可以分析輸出中address4是找零的地址,因爲如果4是商家地址,那麼沒必要用兩個inputs,一個就夠了。理論上,爲了更強的隱私保護,可以人爲產生一些沒必要的輸出,用來迷惑他人。但是這些交易一般都是通過手機錢包軟件生成,很少有人手動生成比特幣轉賬交易,常用的比特幣錢包就那麼幾種,而且沒有故意生成不必要的輸出地址。

2.比特幣地址賬戶和現實中的真實身份產生關聯。

2.1.資金轉入和轉出。

如果去買比特幣,就有一個資金轉入區塊鏈的過程,就容易泄露身份。防範用比特幣進行洗錢的違法行爲,盯住資金的轉入轉出鏈是常用手段。

2.2.現實世界用比特幣作支付。

延遲大,等6個確認需要大概一個小時時間,而且交易費高。收比特幣的時候就容易引起隱私泄露,用於支付的賬戶和真實身份是建立聯繫的,這個支付賬戶和比特幣的其他賬戶可能也有聯繫。不僅僅是接受你支付的商家會知道,其他人也會知道。

比特幣交易記錄都是公開的,所以用比特幣支付時,把比特幣賬戶告訴對方,不光是那個人知道你的賬戶,周圍其他人也會意識到你在這個時候通過比特幣進行消費,然後去區塊鏈查有哪些交易是在這個時候這個地點進行的消費,就可以推算出哪個賬戶是你的。

所以比特幣的匿名性不是絕對的,沒有想象中那麼好。

舉例:

1.中本聰匿名性保持的最好,沒人知道是誰。賬戶中的比特幣一直沒有花出去,沒有與現實世界進行聯繫,也就不會暴露自己的真實身份。0.0

2.silk road網站,非法網上交易平臺。銷售違禁品。爲了逃避司法制裁,支付手段用的就是比特幣,網絡層用的是TOR,使用匿名郵寄服務,運行兩三年最後還是被查封,老闆被補,沒收十幾萬個比特幣。他賺取的比特幣一個都沒有花,防止暴露身份。即使這樣還是被抓了。0.0(有內鬼,終止交易)。被查封之後,又出現第二版的silk road 2,同樣沒有幾年也被查封。

比特幣的匿名性沒有想象中那麼好,尤其是想用它做壞事。凡是用比特幣從事違法活動,最後都會被抓。0.0

比特幣的匿名性有多好?

匿名與隱私保護相關,即我做這個事情不想讓別人知道。問題在於不想向誰暴露身份?hide your identity from whom?

如果是普通人,不想讓周圍的人知道我有多少比特幣,在這個層面是可以實現的,比特幣現有的機制,在這個程度上保護隱私是比較容易的。

如果是非法組織,從事黑市活動,這個時候想要保持隱私就很難。

一個比特幣用戶,可以採取什麼樣的方法,儘量提高匿名性?

提高匿名性,要從應用層和網絡層兩方面入手。

eg:去網吧用網名發帖子,通過身份證+ip可以知道你是誰。IP地址與現實中的真實身份有很強的關聯性,所以比特幣要實現匿名性,首先要實現在網絡層,對比特幣來說,比特幣交易發佈到網絡上,如果不保證網絡層匿名性,那麼可以從節點的IP地址可以推算出現實世界的真實身份。

網絡層的匿名性:多路徑轉發---TOR。消息不是有sender直接發給receiver,而是中間經過很多跳,很多次轉發,中間每一個節點只知道上一個節點是誰,但不知道最早發出消息的人是誰。 

應用層的匿名性:不同人的幣混在一起---coin mixing。破壞匿名性的一個原因就是同一個人的不同比特幣賬戶會被關聯起來,因爲區塊鏈是公開的,花的每一個幣都可以追溯到源頭,從這個幣最早是由哪個鑄幣交易產生的,然後這個幣參加的每一次交易都可以追溯到。所以要起到匿名保護的作用,一種做法就是把不同人的幣混在一起,把你的身份和周圍的人混在一起,讓人分不清誰是誰,這些幣從哪來。有專門從事coin mixing的網站,但是coin mixing服務本身也要保持匿名,就會可能出現投進去的幣被捲款跑路。有些應用本身有coin mixing的性質,比如在線錢包,但是並不保證履行coin mixing的功能。加密貨幣的交易所一般來說是有天然的coin mixing的性質,前提是交易所不會泄露相關提幣存幣的記錄。

保護隱私性難度很大,本質原因是區塊鏈是公開的,而且是不可篡改的,這對於隱私保護來說是災難性的。

零知識證明:

指的是一方(證明者)向另一方(驗證者)證明一個陳述是正確的,而無需透露除該陳述是正確的外的任何信息。

比特幣中的零知識證明:證明某一個賬戶是屬於我的,就是要證明我知道賬戶的私鑰,但是我不能告訴你我的私鑰。我可以產生一個用私鑰進行的簽名,假如你知道該賬戶的公鑰,就可以驗證簽名的正確性(算不算零知識證明有爭議,因爲我雖然沒有告訴你私鑰,但是我告訴你私鑰進行的簽名,與無需透露除該陳述是正確的外的任何信息不符)。

同態隱藏:

零知識證明的數學基礎是同態隱藏。同態隱藏的3個性質:

1.如果x,y不同,那麼它們的加密函數值E(x)和E(y)也不相同。加密函數值不會出現碰撞,不同於哈希函數。

2.給定E(x)的值,很難反推出x的值。加密函數不可逆,類似哈希函數的hiding性質。

3.給定E(x)和E(y)的值,我們可以很容易算出某些關於x,y的加密函數值。

--同態加法:通過E(x)和E(y)計算出E(x+y)的值

--同態乘法:通過E(x)和E(y)計算出E(xy)的值

--擴展到多項式

例:A(證明者)想要向B(驗證者)證明他知道一組數使得x+y=7(陳述),同時不讓B知道x和y的具體數值(隱藏)。A把E(x)和E(y)的數值發給B,B通過E(x)和E(y)計算出E(x+y)的值(利用性質3),B同時計算出E(7)的值,如果E(x+y) = E(7),則驗證通過,否則失敗。根據性質2,E(x)和E(y)不可逆,所以無法推算出x和y的值。E(x+y) = E(7),說明x+y=7,因爲沒有碰撞,利用性質1,如果兩個兩個密碼值E(x+y) 和E(7)是相等的,那麼兩個輸入一定是相等的。

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章