一般來說,匿名通常跟隱私保護聯系在一起。在比特幣是基於交易的區塊鏈,系統中沒有用戶的概念,不要求用戶使用真名,可以用公鑰產生地址,所以比特幣具有一定的匿名性。
但比特幣中的交易記錄在區塊鏈上,區塊鏈是公開的。雖然使用者可以生成任意多的地址來隱藏自己,但由於所有的交易信息的都是公開的,仍可以通過分析鏈上的交易信息來鎖定用戶。從這點上來講,比特幣又不是完全匿名的。
什么情況下會破壞匿名性
分析交易地址
正常情況下,比特幣交易都是通過錢包進行的。使用錢包交易時,輸出地址中通常會有一個用於接收找零的地址。市面上常用的比特幣錢包就那么幾款,有心研究的話,發現各個錢包生成找零地址的規律並不是不能發現的。一旦找出規律來,結合區塊鏈將很容易定位用戶的身份。
與真實世界發生交易
通過比特幣與真實世界發生交易時,比如從比特幣交易所變現,使用比特幣購買咖啡等,這些情況下用戶的真實身份是很容易確定的。
如何提供匿名性
比特幣系統是運行於應用層的,底層是個P2P網絡層,要提高匿名性可以從這兩方面入手:
- 網絡層:多路徑轉發
- 應用層:將不同人的幣混合在一起,即將所有用戶的身份混合在一起,讓人無法區分
區塊鏈的公開、不可篡改的特性,對於隱私保護來說是災難性的。
零知識證明
零知識證明是指一方(證明方)向另一方(驗證方)證明一個陳述是正確的,而無需透露除“該陳述是正確的”之外的任何信息。
同態隱藏
零知識證明的數學基礎是同態隱藏,同態隱藏包含以下性質:
- 如果\(x\)和\(y\)不同,那么它們的加密函數值\(E(x)\)和\(E(y)\)也不相同
- 給定\(E(x)\)的值,很難反推出\(x\)的值
- 給定\(E(x)\)和\(E(y)\),可以很容易地計算出某些關於\(x\)和\(y\)的加密函數值
- 同態加法:通過\(E(x)\)和\(E(y)\)計算出\(E(x+y)\)
- 同態乘法:通過\(E(x)\)和\(E(y)\)計算出\(E(xy)\)
- 擴展到多項式
零知識證明的應用:零幣和零鈔。
聲明:本作品采用署名-非商業性使用-相同方式共享 4.0 國際 (CC BY-NC-SA 4.0)進行許可,使用時請注明出處。