1?? 參考
-
北京大學(xué)肖臻老師《區(qū)塊鏈技術(shù)與應(yīng)用》
- P12 - BTC匿名篇
- P13 - BTC思考篇
-
部分圖片和文字來源
- 北京大學(xué)肖臻老師《區(qū)塊鏈技術(shù)與應(yīng)用》公開課筆記13——BTC匿名性篇2(零知識證明)
1??2??匿名
① 比特幣的匿名性 (bitcoin and anonymity)
比特幣并不是真的匿名,而是pseudonymity
(筆名,化名)。
-
比特幣匿名性比較
- 與現(xiàn)金
- 現(xiàn)金更好,現(xiàn)金沒有任何信息,連假名也沒有
- 與銀行
- 銀行賬戶是實名制,你得提交身份信息,然后才能注冊銀行賬戶,而比特幣不需要,從這點上看比特幣匿名性要好。
- 與銀行(允許用化名)
- 銀行的匿名性更好,比特幣可以追溯你的交易,雖然很麻煩但是可以做到,但是銀行是有隱私協(xié)議的,盡可能保護用戶隱私
- 與現(xiàn)金
有的人推薦每次收款都用一個新的地址,這樣的話可以有不同的地址,誰也不知道哪些是屬于你的,看起來好像匿名性很強,但實際上這些地址是可以被關(guān)聯(lián)在一起的。
- 比特幣系統(tǒng)中什么情況下有可能破壞匿名性?
- 第一,一個人可以生成很多個地址賬戶但這些地址賬戶是有可能被關(guān)聯(lián)起來的
- 如下圖,在輸出中,很有可能有一個地址是屬于找零錢的地址,即花掉之后剩余的錢。在某些情況下,也是可以分析出來的。
- 如下圖,在輸出中,很有可能有一個地址是屬于找零錢的地址,即花掉之后剩余的錢。在某些情況下,也是可以分析出來的。
- 第二,地址賬戶跟現(xiàn)實世界中的身份也可能產(chǎn)生關(guān)聯(lián)
- 最明顯的例子就是資金的轉(zhuǎn)入和轉(zhuǎn)出,盯住比特幣的轉(zhuǎn)入轉(zhuǎn)出鏈是一個常用的手段。大筆的比特幣和貨幣的交易想不引起司法部門的注意是很難的,轉(zhuǎn)入轉(zhuǎn)出也是比特幣隱私容易被破壞的一個很重要的時機。
- 社會工程。在實體世界中用比特幣做支付,比如國外有的商家是接受比特幣支付。
- 第一,一個人可以生成很多個地址賬戶但這些地址賬戶是有可能被關(guān)聯(lián)起來的
這樣支付賬戶就跟你的真實身份建立聯(lián)系了。這個賬戶可能跟個人的其他賬戶也是有聯(lián)系的,所以這樣很容易泄露個人隱私和身份。而且該交易不僅是該商家會知道,其他人也會知道。
- 用比特幣(線下)交易的缺點
- 延遲很長。等到交易確認要等六個區(qū)塊生成,即一個小時。
-
交易費貴。如果買咖啡,交易費可能都跟咖啡差不多貴了。
這樣的話,
Satoshi Nakamoto 中本聰是匿名性最好的
- 一個比特幣用戶能采用什么樣的方法盡量提高個人的匿名性?
- 從兩個方面入手
- 比特幣協(xié)議是運行于應(yīng)用層 (
application layer
) - 底層是 (
network layer
)。
- 比特幣協(xié)議是運行于應(yīng)用層 (
- 從兩個方面入手
-
網(wǎng)絡(luò)層怎么提高匿名性?
多路徑轉(zhuǎn)發(fā)。跟洋蔥路由 (TOR) 是一樣的原理。
-
應(yīng)用層怎么提高匿名性?
-
1) 幣混(
coin mixing
)- 把不同人的幣混在一起
- 即把你的身份跟別人的身份混在一起,讓別人分不清楚誰是誰。不光是區(qū)塊鏈,在其他各個需要匿名的領(lǐng)域都能用到。有一些專門做
coin mixing
的網(wǎng)站,提供一定的服務(wù)收取一定的服務(wù)費。所有想做coin mixing
的人把幣發(fā)給網(wǎng)站,網(wǎng)站內(nèi)部進行一些重組,然后你再把幣取回來,這時取出的幣就不是發(fā)布到網(wǎng)站上的幣了,它是隨機抽取一些幣給你。 - 缺點
-
coin mixing
真正實施起來有一定的復(fù)雜性,如果設(shè)計不好的話,別人可以根據(jù)你當初存進去幣的數(shù)額,推斷出來哪些幣是你存進去的。而且,在當今的區(qū)塊鏈的世界里,沒有什么信譽度非常高的coin mixing
的服務(wù)。很多coin mixing
的服務(wù)它本身也是要保持匿名的,它匿名的后果是:有可能投進去的幣被他卷款跑路了,投幣者是一點辦法都沒有的。
-
-
2) 在線錢包
- 很多人會把錢存入在線錢包里,在線錢包就會把這些人的幣混起來,再取回自己的幣時可能就不是當初存進去的幣了。但在線錢包并不保證要履行
coin mixing
的功能。
- 很多人會把錢存入在線錢包里,在線錢包就會把這些人的幣混起來,再取回自己的幣時可能就不是當初存進去的幣了。但在線錢包并不保證要履行
-
3) 交易所
- 還可以通過加密貨幣的交易所,交易所一般有天然的
coin mixing
的性質(zhì)。前提是交易所不會泄露提幣、存幣的記錄,否則也是不行的。
- 還可以通過加密貨幣的交易所,交易所一般有天然的
-
- 為什么保護隱私性難度挺大?
- 本質(zhì)原因是區(qū)塊鏈是公開的,而且是不可篡改的。不可篡改性對于隱私保護來說是災(zāi)難性的。
② 零知識證明(Zero-Knowledge Proof)
-
概念(From 維基百科)
- 一方(證明者)向另一方(檢驗者)證明某命題的方法,特點是過程中除“該命題為真”之事外,不泄露任何資訊。因此,可理解成“零泄密證明”。
②① 同態(tài)隱藏(零知識證明的數(shù)學(xué)基礎(chǔ))
-
第一個性質(zhì)
- 說明如果有E(X)=E(y),則必然有x=y。(無碰撞,這跟哈希函數(shù)有所不同,哈希函數(shù)是可能出現(xiàn)碰撞的)。反過來逆否命題說明如果 E (x) 和 E (y) 是相等的,那么 x、y 也是相等的。
-
第二個性質(zhì)
- 說明加密函數(shù)是不可逆的,知道加密后的值,沒辦法推出加密前的值。(
hiding property
)
- 說明加密函數(shù)是不可逆的,知道加密后的值,沒辦法推出加密前的值。(
-
第三個性質(zhì)是最重要的,叫作同態(tài)運算。
- 它說的是對加密之后的函數(shù)值進行某些代數(shù)運算,等價于對這些輸入直接進行代數(shù)運算然后再加密。
- 同態(tài)加法:加密值的和等于和的加密。
- 同態(tài)乘法:加密值的乘積等于積的加密。
②② 舉栗子
②③ 簡單的答案
- 說明
- Alice將E(x)、E(y)發(fā)給Bob。(性質(zhì)2,不可逆)
- Bob通過收到的E(x)、E(y)計算得到E(X+Y)。(性質(zhì)3,同態(tài)加法)
- Bob進行驗證E(x+y)和E(7)是否相等。若相等則驗證通過,否則驗證失敗。(性質(zhì)1的逆否)
- 缺陷:Bob可以暴力獲取x與y的值。因此 Alice 要對 x 和 y 的值做一些隨機化處理,保證 x 和 y 加起來還是不變的。
補充
- 為什么計算機科學(xué)如密碼學(xué)喜歡用 Alice 和 Bob 舉栗子?(源于知乎問題)
![]()
②④ 盲簽
正如其名,簽名的人看不到所簽署文件的具體內(nèi)容就簽
- 特點
- 簽名者對消息的內(nèi)容是不可見的
- 簽名被公開后,簽名者不能追蹤簽名
為什么要這么做呢?
例如電子交易中,我們的交易信息依賴于銀行等第三方機構(gòu)。第三方機構(gòu)需要防范雙花攻擊等,就需要對電子貨幣進行簽名。而簽名的過程中,必然會導(dǎo)致其了解到交易內(nèi)容。如果想要銀行等第三方機構(gòu)負責相應(yīng)工作,但不知道交易具體內(nèi)容,就可以采用盲簽的方法。
我舉一個例子:
A從漢堡店得到了一個薯條券,A把券給B,B去漢堡店兌換薯條,商家是不知道B的券是哪來的,但知道這個券是合法的
②⑤ 零幣和零鈔(專門為匿名性設(shè)計的加密貨幣)
比特幣在很大程度上提供了匿名性,但它不能完全消除關(guān)聯(lián)性,那么我們能不能設(shè)計一種新的加密貨幣,這個貨幣從一開始的結(jié)構(gòu)設(shè)計上就用了密碼學(xué)的原理保證了匿名性,所以就有了零幣和零鈔。
-
與比特幣的本質(zhì)區(qū)別
- 用的時候要證明本來是有一個基礎(chǔ)幣,讓基礎(chǔ)幣變得不能花費 (unspendable),然后換取一個零幣,零幣在花的時候只需要用零知識證明你花掉的幣是系統(tǒng)中存在的某一個合法的幣就行了,但是不用透露你花的是系統(tǒng)中具體的哪一個幣。這樣的話就把關(guān)聯(lián)性破壞掉了,就沒法追溯了。
- 而比特幣是每一筆轉(zhuǎn)賬交易都要說明幣的來源
-
零幣和零鈔的不足
- 因為其為了設(shè)計匿名性,付出了一定性能代價
- 并未解決與系統(tǒng)外部實體發(fā)生交互時對匿名性的破壞
1??3??思考
① 哈希指針
問題
- 指針保存的是本地內(nèi)存的地址,那么只是在本地這臺計算機上才有意義,發(fā)送到其他計算機上就沒有意義了。那么在發(fā)布區(qū)塊的時候哈希指針是怎么能夠通過網(wǎng)絡(luò)進行傳輸呢?
所謂的哈希指針只是一種形象的說法,實際系統(tǒng)中用的時候只有哈希,沒有指針?;仡櫼幌轮翱吹降?code>block header的數(shù)據(jù)結(jié)構(gòu),如上圖。block header
里只有哈希值,沒有指針,也可以認為哈希值的本身就是指針
- 那么怎么才能找到前一個區(qū)塊的內(nèi)容呢?
全節(jié)點一般是把這些區(qū)塊存儲在一個 (key
哈希,value
區(qū)塊內(nèi)容) 數(shù)據(jù)庫里面,一個常用的 key value 數(shù)據(jù)庫是 level DB。所謂的區(qū)塊鏈這種鏈表結(jié)構(gòu)實際上是在level DB
里面用哈希值串起來的。
只要你掌握了最后一個區(qū)塊的哈希值,那么你通過level DB
的查找,可以把最后一個區(qū)塊的內(nèi)容取出來。然后這個區(qū)塊塊頭里面,又有指向前一個區(qū)塊的哈希值,可以找到前一個區(qū)塊的內(nèi)容,以此類推,一步一步往前找,最終能夠把整個區(qū)塊鏈都找出來。
有一些節(jié)點沒有保存完整的區(qū)塊鏈的信息,只保存了最近的幾千個區(qū)塊,如果需要用到前面的區(qū)塊的信息可以問其他的全節(jié)點要。哈希指針的性質(zhì)保證了整個區(qū)塊鏈的內(nèi)容是不可篡改的。
② 區(qū)塊戀
就是指,把一個私鑰截斷,分成幾份,有幾個人各自保管,只有最終大家都拿出自己的部分私鑰,才能拼成完整的私鑰。
- 這樣存在的問題是
- 這些人中任何一個人把私鑰丟了錢就取不出來了。
- 這對礦工和UTXO不友好,造成這個UTXO集合的膨脹
- 因為比特幣系統(tǒng)中每個賬戶的安全性跟所用的私鑰的長度是相關(guān)的。這種截斷私鑰的做法會降低賬戶的安全性。因為分一半的話難度就從 2 256 = > 2 128 2^{256} => 2^{128} 2256=>2128,如果是四個人的話,其中三個串通,難度就變成 2 256 = > 2 64 2^{256} => 2^{64} 2256=>264
- 這些人中任何一個人把私鑰丟了錢就取不出來了。
③ 分布式共識
前面已經(jīng)講過,從理論上實現(xiàn)分布式系統(tǒng)的共識是不可能的
- 為什么比特幣系統(tǒng)能夠繞過分布式共識中的那些不可能結(jié)論?
- 嚴格來說,比特幣并沒有取得真正意義上的共識,因為取得的共識隨時有可能被推翻,比如出現(xiàn)了分叉攻擊。(可能回滾,甚至是回滾到創(chuàng)世紀塊)
按照分布式系統(tǒng)理論的要求,共識一旦達成之后,就不應(yīng)該再改了,所以從這方面來說比特幣并沒有繞過分布式系統(tǒng)那些不可能的結(jié)論,因為它并沒有達到真正意義上的共識。這說明理論和實際往往是有區(qū)別的。
④ 比特幣的稀缺性
-
早期如何吸引人來挖礦?
- 要么增加挖礦的收益
- 要么降低挖礦開銷
- 給早期的礦工高收益是合理的,因為他們也承擔了風(fēng)險
-
比特幣的做法是
- 早期難度設(shè)置的比較低
- 早期的出塊獎勵比較高
比特幣這種總量恒定的性質(zhì)是不適合用來做貨幣的。一個好的貨幣其實是要有通貨膨脹的功能的。
⑤ 量子計算
隨著量子計算的發(fā)展,量子計算機計算力變得越來越強大,加密貨幣會不會變得不安全了?
- 這種擔心是沒必要的
- 第一,量子計算技術(shù)離實用還有很長一段距離,如果量子計算在將來能強大到破壞加密體系的話,首先會沖擊的是傳統(tǒng)金融業(yè)(網(wǎng)上銀行)。
- 第二,比特幣當中沒有把賬戶的公鑰直接暴露出來,而是用公鑰取哈希之后得到一個地址。比特幣當中用的非對稱加密體系,從私鑰是可以推導(dǎo)出公鑰的。
- 假設(shè)將來量子計算技術(shù)發(fā)達了,能夠從公鑰中推出私鑰,那怎么辦呢?
- 首先,收款是用公鑰的哈希地址
- 其次,哈希是不可逆的
- 加密和取哈希是兩個不同性質(zhì)的操作
- 加密的是為了將來能夠解密,所以加密算法要保證信息的完整性
- 哈希是不可逆的,取哈希的過程一般是會造成信息的損失
試想,如果哈??赡妫强删妥兂闪艘粋€超級壓縮算法。(所有數(shù)據(jù)豈不是都可以壓縮成256位)
- 自己收款:公鑰哈希生成的地址
- 自己取款:公鑰和私鑰產(chǎn)生的簽名
-
安全的做法
- 一個地址用過之后就不要再用了,每次取錢最好把錢一次取走,即使取不完,也最好把錢轉(zhuǎn)給另一個安全的賬戶
- 公鑰不隨便泄露
升華
-
很多理論上的不可能結(jié)論對于實際當中是并不適用的,因為這種不可能結(jié)論只是對某種特定的模型下是不可能的,實際當中把模型稍微改一改不可能結(jié)論就不成立了。文章來源:http://www.zghlxwxcb.cn/news/detail-859162.html
-
不要被學(xué)術(shù)界的思維限制了頭腦,不要被程序員的思維限制了想象力文章來源地址http://www.zghlxwxcb.cn/news/detail-859162.html
到了這里,關(guān)于北京大學(xué)肖臻老師《區(qū)塊鏈技術(shù)與應(yīng)用》P12(匿名)和P13(思考)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!