## 11.1 安全準則
比特幣的核心準則是去中心化,這一點對安全性具有重要意義。在中心化的模式下,例如傳統的銀行或支付網絡,需要依賴于訪問控制和審查制度將不良行為者拒之門外。相比之下,比特幣這樣的去中心化系統則將責任和控制權都移交給了用戶。由于網絡的安全性是基于工作量證明而非訪問控制,比特幣網絡可以對所有人開放,也無需對比特幣傳輸進行加密。
在一個傳統的支付網絡中,例如信用卡系統,支付是終端開放式的,因為它包含了用戶的個人標識(信用卡號)。在初次支付后,任何能獲得該標識的人都可以從所有者那里反復“提取”資金。因此,該支付網絡必須采取端對端加密的方式,以確保沒有竊聽者或中間人可以在資金流通或存儲過程中將交易數據截獲。如果壞人獲得該系統的控制權,他將能破獲當前的的交易和支付令牌,他還可以隨意動用這筆資金。更糟的是,當客戶數據被泄露時,顧客的個人身份信息將被盜竊者們一覽無余。客戶這時必須立即采取措施,以防失竊帳戶被盜竊者用于欺詐。
比特幣則截然不同,一筆比特幣交易只授權向指定接收方發送一個指定數額,并且不能被修改或偽造。它不會透露任何個人信息,例如當事人的身份,也不能用于權限外的支付。因此,比特幣的支付網絡并不需要加密或防竊聽保護。事實上,你可以在任何公開的網絡上廣播比特幣交易的數據,例如在不安全的WIFI或藍牙網絡上公開傳播比特幣交易的數據,這對安全性沒有任何影響。
比特幣的去中心化安全模型很大程度上將權力移交到用戶手上,隨之而來的是用戶們保管好密鑰的責任。這對于大多數 用戶來說并非一件易事,特別是在像智能手機或筆記本電腦這種能能時刻聯網的通用設備上。雖然比特幣的去中心化模 型避免了常見的信用卡盜用等情況,但很多用戶由于無法保管好密鑰從而被黑客攻擊。
### 11.1.1 比特幣系統安全開發
對于比特幣開發者而言最重要的是去中心化原則。大多數開發者對中心化的安全模型很熟悉,并可能試圖將中心化的模型運用到借鑒比特幣的應用中去,這將給比特幣帶來滅頂之災。
比特幣的安全性依賴于密鑰的分散性控制,并且需要礦工們各自獨立地進行交易驗證。如果你想利用好比特幣的安全性,你需要確保自己處于比特幣的安全模型里。簡而言之,不要將用戶的密鑰控制權拿走,不要接受非區塊鏈交易信息。
例如,許多早期的比特幣交易所將所有用戶的資金集中在一個包含著私鑰的“熱錢包”里,并存放在服務器上。這樣的設計奪取了用戶的掌控權,并將密鑰集中到單個系統里。很多這樣的系統都被黑客攻破了,并給客戶帶來災難性后果。 另一個常見的錯誤是接受區塊鏈離線交易,妄圖減少交易費或加速交易處理速度。一個“區塊鏈離線交易”系統將交易數據記錄在一個內部的中心化賬本上,然后偶爾將它們同步到比特幣區塊鏈中。這種做法,再一次,用專制和集中的方式取 代比特幣的去中心化安全模型。當數據處于離線的區塊鏈上的時候,保護不當的中心化賬本里的資金可能會不知不覺被 偽造、被挪用、被消耗。
除非你是準備大力投資運營安全,疊加多層訪問控制,或(像傳統的銀行那樣)加強審計,否則在將資金從比特幣的去中心化安全場景中抽離出來之前,你應該慎重考慮一番。即使你有足夠的資金和紀律去實現一個可靠的安全模型,這樣的設計也僅僅是復制了一個脆弱不堪,深受賬戶盜竊威脅、貪污和挪用公款困擾的傳統金融網絡而已。要想充分利用比特幣特有的去中心化安全模型,你必須避免中心化架構的常見誘惑,因它最終將摧毀比特幣的安全性。
### 11.1.2 信任根
傳統的安全體系基于一個稱為信任根(ROOT OF TRUST)的概念,它指的總體系統或應用程序中一個可信賴的安全核心。安全體系像一圈同心圓一樣圍繞著信任根源來進行開發,像層層包裹的洋蔥一樣,信任從內至外依次延伸。每一層都構建于更可信的內層之上,通過訪問控制,數字簽名,加密和其他安全方式確保可信。隨著軟件系統變得越來越復雜,它們更可能出現問題,安全更容易受到威脅。其結果是,軟件系統變得越復雜,就越難維護安全性。信任根的概念確保絕大多數的信任被置于一個不是過于復雜系統的一部分,因此該系統的這部分也相對堅固,而更復雜的軟件則在它之上構建。這樣的安全體系隨著規模擴大而不斷重復出現,首先信任根建立于單個系統的硬件內,然后將該信任根通過操作系統擴展到更高級別的系統服務,最后逐次擴散到圈內多臺服務器上。
比特幣的安全體系與這不同。在比特幣里,共識系統創建了一個可信的完全去中心化的公開賬本,一個正確驗證過的區塊使用創世區塊 作為信任根,建立一條至當前區塊的可信任鏈。比特幣系統可以使用區塊鏈作為它們的信任根。在設計一個多系統服務機制的比特幣應用時,你應該仔細確認安全體系,以確保對它的信任能有據可依。最終, 唯一可確信無疑的是一條完全有效的區塊鏈。如果你的應用程序或明或暗地信賴于區塊鏈以外的東西,就該引起重視, 因為它可能會引入漏洞。一個不錯的方法評估你應用程序的安全體系:單獨考量每個組件,設想該組件被完全攻破并被壞人掌控的場景。依次取出應用程序的每個組件,并評估它被攻破時對整體安全的影響。如果你的應用程序的安全性在該組件淪陷后大打折扣,那就說明你已經對這些組件過度信任了。一個沒有漏洞的比特幣應用程序應該只受限于比特幣的共識機制,這意味著其安全體系的信任源于比特幣最底層的部分。
無數個黑客攻擊比特幣交易所的例子都是因為輕視了這一點,他們的安全體系和設計甚至無法通過基本的審查。這種中心化的實現方式將信任置于比特幣區塊鏈之外的諸多組件之上,例如熱錢包,中心化的賬本數據庫,簡易加密的密鑰,以及許多類似的方案。
## 11.2 用戶最佳安全實踐
人類使用物理的安全控制已經有數千年之久。相比之下,我們的數字化安全經驗的年紀還不滿50歲。現代通用的操作系統并不是十分安全,亦不特別適合用來存儲數字貨幣。我們的電腦通過一直連接的互聯網長時間暴露在外,它們運行著成千上萬第三方軟件組件,這些軟件往往可以不受約束地訪問用戶的文件。你電腦上安裝的眾多軟件只要有一個惡意軟件,就會威脅到你的文件,可竊取你錢包里的所有比特幣。想要杜絕病毒和木馬對電腦的威脅,用戶要達到一定的計算機維護水平,只有小部分人能做到。
盡管信息安全經過了數十年的研究和發展,數字資產在綿延不絕的攻勢下還是十分脆弱。縱使是像金融服務公司,情報機構或國防承包商這樣擁有高度防護和限制的系統,也經常會被攻破。比特幣創造了具有內在價值的數字資產,它可以被竊取,并立即轉移給他人而無法撤回。這讓黑客有了強烈的作案動機。至今為止,黑客都不得不在套現后更換身份信 息或帳戶口令,例如信用卡或銀行賬戶。盡管掩飾和洗白這部分財務信息的難度不小,但越來越多的竊賊從于此道。而 比特幣使這個問題加劇了,因為它不需要掩飾或洗白,它本身就是具有內在價值的數字資產。
幸運的是,比特幣也有著激勵機制,以提高計算機的安全性。如前所述,計算機受威脅的風險是模糊的,間接的,而比特幣讓這些風險變得明確清晰。在電腦上保存比特幣讓用戶時刻注意他們需要提高計算機的安全性,結果便是這使得比特幣和其它數字貨幣得以傳播和擴散,我們已經看到在黑客技術和安全解決方案雙方的提升。簡單來說,黑客現在有著一個非常誘人的目標,而用戶也有明確的激勵性去保衛自己。
在過去的三年里,隨著比特幣不斷被接納,一個直接的結果是,我們已經看到信息安全領域取得了巨大創新,例如硬件加密,密鑰存儲和硬件錢包,多重簽名技術和數字托管。在下面的章節中,我們將研究各種實際用戶安全中的實踐經驗。
### 11.2.1 比特幣物理存儲
相比數字信息的安全,大多數用戶對物理安全更加熟悉,一個非常有效保護比特幣的方法是,將它們轉換為物理形式。 比特幣密鑰不過是串長數字而已。這意味著它們可以以物理形式存儲起來,如印在紙上或蝕刻成金屬硬幣上。這樣保護密鑰就變成了簡單地保護印著比特幣密鑰的物理實體。一組打印在紙上的比特幣密鑰被稱為“紙錢包”,有許多可以用來創建它們的免費工具。我個人將大部分(99%以上)的比特幣存儲在紙錢包上,并用BIP0038加密,復制了多份并鎖在保險箱里。將比特幣離線保存的方法被稱為冷存儲,它是最有效的安全技術之一。冷存儲系統是在一個離線系統(一個從來沒有連接過互聯網的系統)上生成密鑰,并離線存儲到紙上或者U盤等電子媒介上。
### 11.2.2 硬件錢包
從長遠來看,比特幣安全將越來越多地以硬件防篡改錢包的形式出現。與智能手機或臺式電腦不同,一個比特幣硬件錢包只有一個目的,安全地存儲比特幣。不像容易受害的常用軟件那樣,硬件錢包只提供了有限的接口,從而可以給非專業用戶提供近乎萬無一失的安全等級。我預期將看到硬件錢包成為比特幣儲存的主要方式。要想看硬件錢包的實例,請查閱[TREZOR](HTTPS://TREZOR.IO/)。
### 11.2.3 平衡風險
雖然大多數用戶都非常關注比特幣防盜,其實還有一個更大的風險存在。數據文件丟失的情況時有發生。如果比特幣的數據也在其中,損失將會讓人痛苦不堪。為了保護好比特幣錢包,用戶必須非常注意不要劍走偏鋒,這樣不至于會搞丟比特幣。在2011年7月,一個著名的比特幣認知教育項目損失了近7,000枚比特幣。為了防止被盜竊,其主人曾之前采取了一系列復雜的操作去加密備份。結果他們不慎丟失了加密的密鑰,使得備份變得毫無價值,白白失去了一大筆財富。如果你保護比特幣的方式太過了,這好比于把錢藏在沙漠里,你可能不能再把它找回來了。
### 11.2.4 分散風險
你會將你的全部家當換成現金放在錢包里隨身攜帶么?大多數人會認為這非常不明智,但比特幣用戶經常會將所有的比特幣放在一個錢包里。用戶應該將風險分散到不同類型的比特幣錢包。審慎的用戶應該只留一小部分(或許低于5%) 的比特幣在一個在線的或手機錢包,就像零用錢一樣,其余的部分應該采用不同存儲機制分散開來,諸如電腦錢包和離線(冷存儲)錢包。
### 11.2.5 多重簽名管理
當一個公司或個人持有大量比特幣時,他們應該考慮采用多重簽名的比特幣地址。多重簽名比特幣地址需要多個簽名才能支付,從而保證資金的安全。多重簽名的密鑰應存儲在多個不同的地方,并由不同的人掌控。打個比方,在企業環境中,密鑰應該分別生成并由若干公司管理人員持有,以確保沒有任何一個人可以獨自占有資金。多重簽名的地址也可以提供冗余,例如一個人持有多個密鑰,并將它們分別存儲在不同的地方。
### 11.2.6 存活能力
一個非常重要卻又常常被忽視的安全性考慮是可用性,尤其是在密鑰持有者喪失工作能力或死亡的情況下。比特幣的用戶被告知應該使用復雜的密碼,并保證他們的密鑰安全且不為他人所知。不幸的是,這種做法使得在用戶無法解鎖時, 用戶的家人幾乎無法將該財產恢復。事實上,比特幣用戶的家人可能完全不知道這筆比特幣資金的存在。 如果你有很多的比特幣,你應該考慮與一個值得信賴的親屬或律師分享解密的細節。可以搞一個更復雜的比特幣恢復計劃,可以通過設置多重簽名,做好遺產規劃,并通過專門的“數字資產執行者”律師處理后事。
## 11.3 總結
比特幣是一項全新的,前所未有的,復雜的技術。隨著時間的推移,我們將開發出更好的安全工具,而且更容易被非專業人士使用。而現在,比特幣用戶可以使用許多這里所討論的技巧,享受安全而無困擾的比特幣生活。