從比特幣到區塊鏈再到分佈式賬本,密碼學貨幣領域日新月異,以至於我們很難看清它的發展方向。
但是,我們仍然可以發現一些踪跡。雖然密碼學貨幣行業有很多創新技術,但都建立在前人數十年的研究基礎上。通過追溯這段歷史,我們可以理解比特幣運動背後的動機,進而理解比特幣對未來的願景。
20 世紀70 年代以前,密碼學主要由軍事機構和間諜機構秘密使用。然而,兩個出版物的發布讓密碼學技術進入了大眾視野:美國政府出版的《數據加密標準》以及Whitfield Diffie 博士和Martin Hellman 博士共同撰寫的首部公開的公鑰密碼學著作《密碼學的新方向》。
20 世紀80 年代,David Chaum 博士撰寫了大量關於密碼學的論文。其中一篇論文《無需身份證明的安全性:讓“老大哥” 成為過去式的交易系統》提及了匿名數字現金和匿名聲譽系統。
接下來的幾年裡,這些想法相互融合,形成了一場運動。
在1992 年底,Eric Hughes、Timothy C May 和John Gilmore 組成了一個小團隊,每月都會在John Gilmore 位於舊金山灣區的公司Cygnus Solutions 碰面。這個團隊有個詼諧的名字“密碼朋克(cypherpunks)”,是“cipher(密碼)” 和“cyberpunk(賽博朋克)” 的簡稱。
密碼朋克郵件列表就是在這個時候創立的。幾個月後,Eric Hughes 發表了《密碼朋克宣言(A Cypherpunk’s Manifesto)》。他寫道:
“在電子時代,隱私是實現開放型社會的前提。隱私不能與秘密混為一談。私事是不想讓所有人都知道的事,而秘密是不想讓任何人知道的事。隱私是選擇性向世界展露自我的權利。”
聽起來很有道理。但是你可能會想,我又不是密碼朋克,我又沒做錯什麼事,我有什麼好隱藏的?但正如Bruce Schneier 所言,說出“無需隱藏” 論的人弄錯了前提:並不是只有犯了事的人才需要隱私,使用隱私保護措施並不意味著有鬼。
例如,你在窗戶上裝了窗簾,防止外人看到屋內。這不能說明你在從事什麼非法或不道德的活動,只是因為你擔心向外界暴露自己可能會帶來的負面影響。
正在閱讀這篇文章的你會發現自己是密碼朋克運動的直接受益者。
下面是一些知名密碼朋克和他們所做的貢獻:
- Jacob Appelbaum:Tor 的開發者
- Julian Assange:維基解密(WikiLeaks)的創始人
- Adam Back 博士:Hashcash 的發明者兼Blockstream 的創始人
- Bram Cohen:BitTorrent 的發明者
- Hal Finney:PGP 2.0 的主要作者兼可重複使用的工作量證明(Reusable Proof of Work)的創造者
- Tim Hudson:SSLeay(OpenSSL 的前身)的合著者
- Paul Kocher:SSL 3.0 的合著者
- Moxie Marlinspike:Open Whisper Systems 的創始人(Signal 的開發者)
- Steven Schear:“權證金絲雀(warrant canary)” 概念的提出者
- Bruce Schneier:知名安全研究作者
- Zooko Wilcox-O’Hearn:DigiCash 的開發者兼Zcash 的創始人
- Philip Zimmermann:PGP 1.0 的提出者
(譯者註:這些成果中有一大部分都是關於互聯網隱私的,並且有些已經成了互聯網的基礎設施,比如SSL。)20 世紀90 年代20 世紀80 年代至90 年代這10 年間爆發了密碼學戰爭,美國政府試圖扼殺密碼學技術商用的趨勢。這期間,密碼學幾乎完全被當作軍事技術壟斷,加密技術被列入美國軍需品清單(US Munitions List)的第13 類,遭嚴令禁止“出口”。由於出口限制,“可出口” 的SSL 加密技術只支持40 位的密鑰長度,使用一台個人電腦花幾天即可破解。由於公民自由主義者和隱私倡導者對美國政府侵犯公民隱私的控訴、加密軟件在美國境外的普及和Matt Blaze 成功黑入美國政府提出的帶後門的 Clipper 芯片,美國政府最終放棄了對密碼學技術的壟斷。
1997 年,Adam Back 博士發明了Hashcash。 Hashcash 是一個抗垃圾郵件機制,通過有效提高發送郵件的(時間和計算)成本,讓垃圾郵件發送者血本無歸。 Adam Back 認為Hashcash 會比Chaum 的digicash 更易用,因為用戶不需要創建賬戶。另外,Hashcash 還採取了一些措施來防止“雙重花費” 攻擊。 1998 年底,Wei Dai 提出了“b-money” 的設想,用來執行匿名參與者之間的協議。他提出了兩個有趣的概念,想必你不會感到陌生。第一個概念是讓每位參與者都維護一個獨立的數據庫,用來記錄用戶的資金歸屬情況;第二個概念是第一個的變體,由一部分參與者記錄用戶的賬戶資金餘額,這些參與者需要交納押金來防止作惡。比特幣採用了第一個概念,其它很多密碼學貨幣項目則採用了第二個概念的變體(也就是我們如今所說的權益證明)。 21 世紀顯然,密碼朋克基於彼此的研究成果進行了長達數十年的構建工作,實驗並創建了20 世紀90 年代所需的框架。然而,最關鍵的還是21 世紀誕生的密碼學貨幣。 2004 年,Hal Finney 基於Back 的Hashcash 創造了可重複使用的工作量證明(RPOW)。 RPOW 是只能使用一次的特殊密碼學代幣,很像是比特幣的未花費交易輸出。但是,驗證和防止雙重花費攻擊仍由中心化服務器執行。 Nick Szabo 在2005 年提出了“bit gold”—— 基於Finney 的RPOW 創建的數字收藏品。然而,Szabo 並沒有提出一種機制來限制bit gold 的總發行量,而是設想每單位bit gold 的價值會根據創建它們所需的計算量有所不同。最後,在2008 年,中本聰(至今都身份不明的個人/團體)發布了比特幣白皮書,並在其中提到了hashcash 和b-money。實際上,中本聰曾在發給Wei Dai 的電子郵件中提到他從Back 博士那裡了解了b-money。中本聰在比特幣白皮書中專門提到了隱私:“傳統的銀行模式會通過限制訪問相關方的信息和可信第三方來實現一定程度的隱私性。在必須公開所有交易信息的情況下,傳統的隱私保護方法行不通,但是還有另一種方法:通過隱藏公鑰持有者的身份來阻斷信息流。公眾可以看到有人將一筆資金發送給了另一個人,但是無法通過任何信息將這筆交易與任何人聯繫起來。其信息公開程度類似於證券交易所。證券交易所只通過證券買賣匯總記錄帶(tape)公開每筆交易的時間和規模,但是不會洩漏參與方的身份信息。”
中本聰創建了一個可供人們使用、擴展和分叉的系統,極大地推動了密碼學技術的發展。比特幣的誕生讓整場密碼朋克運動如虎添翼。它使得維基解密等組織在被傳統金融系統列入黑名單之後,依然可以通過比特幣捐款來維持運營。隱私保護鬥爭然而,隨著比特幣生態系統近年來發展壯大,隱私問題似乎被淡化了。很多早期比特幣用戶以為比特幣系統可以讓他們完全匿名,但是據我們的了解,很多執法機構都透露過它們能夠在調查期間查明比特幣用戶的身份。 Open Bitcoin Privacy Project 通過對用戶進行隱私性教育和推薦最佳比特幣服務用例彌補了這方面的不足。該團體構建了一個關於比特幣錢包隱私性攻擊的威脅模型。該模型目前將攻擊者分為以下幾類:
- 區塊鏈觀察者 —— 通過觀察價值流的模式來將不同的交易和同一個身份聯繫起來。
- 網絡觀察者 —— 通過觀察點對點網絡上的活動來將不同的交易和地址聯繫起來。
- 物理攻擊者 —— 嘗試查找錢包設備上的數據來篡改該錢包或對其進行分析。
- 交易參與者 —— 創建交易來追踪區塊鏈上的活動並識別交易者的身份。
- 錢包提供商 —— 可能會要求用戶提供個人身份信息,然後觀察他們的交易。
Blockstream 的Jonas Nick 就比特幣用戶的隱私問題進行了大量研究。 Jonas Nick 在一次精彩的演講中揭露了很多隱私漏洞。其中一些漏洞對SPV 比特幣客戶端來說是毀滅性的:視頻地址:https://youtu.be/HScK4pkDNds就比特幣而言,最大的隱私威脅來自區塊鏈觀察者—— 由於網絡中的每筆交易都是永久公開的,無論是現在還是將來,任何人都有可能威脅到比特幣用戶的隱私性。因此,最好的做法就是永遠不要重複使用同一個比特幣地址,這也是老生常談的建議。中本聰甚至在比特幣白皮書中強調了這一點:“作為額外的隱私安全保護措施,交易者每發送一筆交易都應該使用一個新的密鑰對,以防有人找到這些交易的共同所有者。多輸入交易必定會顯示這些輸入都來自同一個所有者,因此難免會洩漏一些關聯性。這裡的風險在於,這種關聯性有可能在密鑰所有者身份曝光時洩漏該所有者的其它交易。”近年來的密碼朋克創新為了提高比特幣用戶的隱私性,近年來人們創建了很多系統和最佳範例。 Pieter Wuille 博士在 BIP32 中提出的分層確定性錢包(hierarchical deterministic wallet)可以大幅降低比特幣錢包管理地址的難度。雖然隱私保護並非Pieter Wuille 的主要目的,但是分層確定性錢包可以輕而易舉地生成新的地址用於交易,幫助用戶避免地址重用。橢圓曲線迪菲-赫爾曼-默克爾(ECDHM)地址是隱私增強型比特幣地址方案。 ECDHM 地址可以公開分享。交易發送方和接收方可以利用ECDHM 地址秘密生成區塊鏈觀察者無法預測的傳統比特幣地址。因此,ECDHM 地址是可以重用的,不像傳統比特幣地址那樣會因重用而洩漏隱私。 ECDHM 地址方案的例子包括Peter Todd 提出的 Stealth Addresses(秘密地址)、Justus Ranvier 提議的 BIP47 可重用支付碼和Justin Newton 等人提議的 BIP75 帶外地址交換等。用戶還可以使用比特幣混幣器來增強隱私性,但是這種方法需要消耗較多人力資源。將網絡參與者的代幣混合這一概念類似Chaum 博士提出的“混合網絡(mix network)”。
現有的幾種混幣算法包括:
- CoinJoin —— 第一個混幣算法是Blockstream 的聯合創始人Gregory Maxwell 提出的CoinJoin。它可以讓用戶使用來自多方的輸入創建交易,然後將比特幣發送至多個輸出(即,同一批人),由於每筆資金都被混合在了一起,輸入和輸出之間的關聯很難被找到。
- JoinMarket —— 開發者Chris Belcher 提出的JoinMarket 可以讓比特幣持有者通過提供比特幣來參與CoinJoin 混合來賺取手續費。 JoinMarket 使用了某種智能合約來避免用戶的私鑰離開本地,從而降低私鑰丟失的風險。簡而言之,JoinMarket 可以讓你以低成本且去中心化的方式來提高比特幣交易的隱私性。
- CoinShuffle —— 一群德國薩爾大學的研究者開發了去中心化混幣協議CoinShuffle。 CoinShuffle 是CoinJoin 的改良版,不需要可信第三方來創建混幣交易,因此不會收取額外的混幣費。
- CoinSwap —— Maxwell 提出的CoinSwap 與CoinJoin 差別很大,因為它使用一組4 筆多簽交易(兩筆託管交易和兩筆託管釋放交易)來實現雙方的免信任代幣交易。它雖然在效率上遠低於CoinJoin,但是可以提供更強的隱私性,甚至實現跨鏈代幣交易。
混幣無異於“藏木於林”,只是這片林子通常不會很大。混幣只能產生混淆,無法實現完全匿名性,因為這類方案只能讓低段位的觀察者難以追踪資金流向,但是高段位的觀察者依然有可能破解混幣交易。 2014 年,Kristov Atlas(Open Bitcoin Privacy Project 的創始人)在一篇文章中闡述了CoinJoin 客戶端實現不當會產生的弱點。
Atlas 指出即使使用比較粗糙的分析工具,他也能找出一筆CoinJoin 交易內69% 的輸入和53% 的輸出。
甚至還有一些聚焦隱私性的密碼學貨幣。例如,Evan Duffield 和Daniel Diaz 設計的Dash 有一個叫作“Darksend” 的功能。 Darksend 是CoinJoin 的改良版,主要在使用金額和混幣頻率上進行了改進。 Dash 的混幣方案使用0.1 DASH、1 DASH、10 DASH 和100 DASH 等常見金額,大幅提高了輸入輸出分組的難度。在每個混幣會話中,用戶提交相同的金額作為輸入和輸出。
為使混幣的隱私性最大化,讓時序攻擊難以成功,Darksend 會自動以特定的時間間隔運行。
還有一類隱私幣甚至沒有在比特幣的基礎上構建。 2014 年,Nicolas van Saberhagen 發布了 CryptoNote 的白皮書。一些密碼學貨幣就是根據 CryptoNote 概念實現的,例如門羅。主要的創新是密碼學環形簽名和一次性密鑰。常見的數字簽名(比如比特幣簽名)都是由一對密鑰(公鑰和私鑰)創建的。因此,只要有人能使用私鑰簽署一筆交易,即可證明該私鑰對應的公開地址為ta 所有。
環簽名由(ring signature)Adi Shamir 博士等人在2001 年首次提出,基於Chaum 博士和Eugene van Heyst 在1991 年提出的群簽名(group signature)構建。環簽名需要一群參與方,各參與方持有自己的密鑰對。環簽名能夠證明某個信息的簽名者是群成員。它與普通數字簽名方案的主要區別在於,簽名者只需要持有一個私鑰,但驗證者無法確定簽名者的確切身份。
因此,如果你看到包含Alice、Bob 和Carol 的公鑰的環簽名,你只能斷定簽名者就是三人之一,但是無法知道被簽署的交易究竟屬於誰。環簽名提供了另一種層次上的混淆,讓區塊鏈觀察者難以追踪系統中每筆付款的歸屬(發起方)。
有趣的是,環簽名是針對告密場景提出的,可以在不洩漏告密者身份的同時證明其消息來源的可信度(可知告密者是某個知名團體的成員)。
CryptoNote 旨在降低密鑰重用和利用輸入追踪輸出所產生的風險。付款地址是利用付款方和收款方的數據生成的一次性密鑰。只要你在輸入中使用環簽名,它到底花了哪筆交易的輸出會變得更加難於確定。
如果區塊鏈觀察者試圖根據區塊鏈上的交易找出已使用過的地址之間的關聯並繪製關係圖,將得到一個樹狀圖,因為沒有地址被二次使用過。隨著交易越多,樹狀圖的可能性會呈指數級增長,因為每個環簽名都會為地址之間的價值流動增加不確定性。
因此,你無法確定具體的付款地址。
根據環簽名所涉及的參與者人數,每筆交易的混淆性從“1/2” 到“1/100” 不等。每新增一筆交易都會增加熵值,並提高區塊鏈觀察者的追踪難度。
醞釀中的密碼朋克創新雖然密碼學貨幣用戶的隱私安全依然存在很多隱患,但是在密碼朋克的不斷努力下,前途將是一片光明。
零知識證明或將推動隱私保護實現下一個重大飛躍。零知識證明於1985 年首次提出,旨在拓寬密碼學協議的潛在應用。基於Back 博士在2013 年撰寫的《具有同態值的比特幣》,Maxwell 一直在潛心研究保密交易(Confidential Transaction)。保密交易使用零知識範圍證明(zero-knowledge range proof)來創建比特幣交易,使得交易所包含的值僅相關方可見。保密交易本身就是一大進步。但是,如果我們將它與CoinJoin 結合起來,就可以構建一種混幣服務,切斷交易輸入和輸出之間的一切關聯。
Maxwell 曾在舊金山舉辦的比特幣開發者會議上做了一場主題為“側鏈要素” 的分享。我記得他說了一句話:“IETF(互聯網工程任務組)裡那幫老頭最大的遺憾之一就是構建互聯網時沒有默認採用加密數據傳輸方式。”對於比特幣的隱私性,Maxwell 顯然也是這麼想的:要是一開始能使用保密交易就好了。如今,Blockstream 已經在Liquid 側鏈上實現了保密交易,來掩蓋交易所之間的轉賬。 Maxwell 已經在比特幣網絡上實現了零知識證明有條件支付(Zero-Knowledge Contingent Payment,ZKCP),並成功完成了第一筆付款。 ZKCP 是一種免信任交易協議,可以讓買方使用比特幣向賣方購買信息。只有當付款完成後,買方才會且一定會收到信息。買賣雙方不需要信任對方,或依賴第三方仲裁。幾年前,我寫過一篇關於Zerocoin 的文章,並指出該系統需要解決一些技術挑戰才能變得真正可用。自那以後,研究人員已經讓證明變得更加高效,並通過初始系統參數生成解決了信任問題。 Zerocoin 的願景即將由Wilcox-O’Hearn 創建的 Zcash 實現。 Zcash 提供完全的付款保密性,同時使用公鏈來維護去中心化網絡。 Zcash 交易會自動隱藏所有鏈上交易的付款方、收款方和轉賬金額。只有查閱密鑰的持有者才能查看對應交易的內容。由於Zcash 交易的內容經過了加密,而且是私密的,系統需要使用新的密碼學方法來驗證付款。
Zcash 採用了一種叫作zk-SNARK 的零知識證明結構。 zk-SNARK 由一群經驗豐富的密碼學家開發。交易元數據都是加密的,不會公開轉賬授權和金額。 zk-SNARK 被用來證明交易的有效性。 Zcash 很可能是首個實現防彈匿名性的數字支付系統。密碼朋克薪火相傳密碼朋克上下求索的這十年來,計算機技術也有了長足發展。無論是個人還是團體,都能以完全匿名的方式進行通信和交互。
兩個人可以在不知道對方真實姓名和身份的情況下交換信息、開展業務並締結電子合約。當然了,政府會以該技術有可能威脅國家安全、助長犯罪和導致社會分裂為由,來阻礙或遏制它的傳播。
密碼朋克深知,要想獲得隱私,我們必須捍衛它。幾個世紀以來,為了捍衛隱私,人們使出了百般手段:竊竊私語、暗處密會、密封信函、緊閉門扉、秘密握手和專人傳信。
20 世紀之前既沒有強大的隱私技術,也沒有可以實現低成本大規模監督的技術。儘管存在隱私增強技術,但是這個世界依然偏重監視而輕視隱私。我們已經進入了很多人口中的密碼學戰爭2.0 時期。雖然密碼朋克贏得了第一場密碼學戰爭,但是我們千萬不能得意忘形。 Zooko 有過密碼朋克項目的失敗經歷,他告誡我們要做好迎接失敗的心理準備。c密碼朋克相信,隱私性是基本人權,包括政府保障的隱私性。他們明白,無論系統的安全性因何種原因(包括“可信當局” 的介入)被削弱,都會威脅到系統用戶的安全。
密碼朋克要寫代碼。他們知道必須要有人編寫軟件來捍衛隱私性,因此挺身而出。他們還會公開代碼,以便其他密碼朋克進行學習、攻擊和改進。密碼朋克允許任何人使用他們的代碼,也不在乎別人是否認同他們編寫的軟件。他們知道自己的軟件無法被破環,廣泛分佈的系統也無法被關閉。