比特幣學習筆記————10、比特幣安全

FLy_鵬程萬里發表於2018-06-13

保護比特幣是很具有挑戰性的事,因為比特幣不像銀行賬戶餘額那樣體現抽象價值。比特幣其實更像數字現金或黃金。你可能聽過這樣的說法,“現實持有,敗一勝九。”好吧,在比特幣的世界裡,這樣的持有隻能讓你有一成勝率。而只有擁有解鎖比特幣的金鑰才相當於持有現金或一塊貴重金屬。你可能會將金鑰丟失,會放錯地方,會被盜或者不小心錯支了數額。無論是哪種場景,使用者都沒有辦法撤回,因為這就像是將現金丟在了車水馬龍的大街上。

不過,與現金、黃金或者銀行賬戶相比,比特幣有著一個獨一無二的優勢。你不能“備份”你的現金、黃金或者銀行賬戶,但你可以像備份其他檔案一樣,備份含有金鑰的比特幣錢包。它可以被複製成很多份,放到不同的地方儲存起來,甚至能列印到紙上進行實體備份。比特幣與至今為止的其他貨幣是如此不同,以致於我們需要以一種全新的思維方式來衡量比特幣的安全性。

10.1 安全準則

比特幣的核心準則是去中心化,這一點對安全性具有重要意義。在中心化的模式下,例如傳統的銀行或支付網路,需要依賴於訪問控制和審查制度將不良行為者拒之門外。相比之下,比特幣這樣的去中心化系統則將責任和控制權都移交給了使用者。由於網路的安全性是基於工作量證明而非訪問控制,比特幣網路可以對所有人開放,也無需對比特幣流量進行加密。

在一個傳統的支付網路中,例如信用卡系統,支付是終端開放式的,因為它包含了使用者的個人標識(信用卡號)。在初次支付後,任何能獲得該標識的人都可以從所有者那裡反覆“提取”資金。因此,該支付網路必須採取端對端加密的方式,以確保沒有竊聽者或中間人可以在資金流通或儲存過程中將交易資料截獲。如果壞人獲得該系統的控制權,他將能破獲破獲當前的的交易和支付令牌,他還可以隨意動用這筆資金。更糟的是,當客戶資料被洩露時,顧客的個人身份資訊將被盜竊者們一覽無餘。客戶這時必須立即採取措施,以防失竊帳戶被盜竊者用於欺詐。

比特幣則截然不同,一筆比特幣交易只授權向指定接收方傳送一個指定數額,並且不能被修改或偽造。它不會透露任何個人資訊,例如當事人的身份,也不能用於許可權外的支付。因此,比特幣的支付網路並不需要加密或防竊聽保護。事實上,你可以在任何公開的網路上廣播比特幣交易的資料,例如在不安全的WiFi或藍芽網路上公開傳播比特幣交易的資料,這對安全性沒有任何影響。

比特幣的去中心化安全模型很大程度上將權力移交到使用者手上,隨之而來的是使用者們保管好金鑰的責任。這對於大多數使用者來說並非一件易事,特別是在像智慧手機或膝上型電腦這種能能時刻聯網的通用裝置上。雖然比特幣的去中心化模型避免了常見的信用卡盜用等情況,但很多使用者由於無法保管好金鑰從而被黑客攻擊。

10.1.1 比特幣系統安全開發

對於比特幣開發者而言最重要的是去中心化原則。大多數開發者對中心化的安全模型很熟悉,並可能試圖將中心化的模型運用到借鑑比特幣的應用中去去,這將給比特幣帶來滅頂之災。

比特幣的安全性依賴於金鑰的分散性控制,並且需要礦工們各自獨立地進行交易驗證。如果你想利用好比特幣的安全性,你需要確保自己處於比特幣的安全模型裡。簡而言之,不要將使用者的金鑰控制權拿走,不要接受非區塊鏈交易資訊。

例如,許多早期的比特幣交易所將所有使用者的資金集中在一個包含著私鑰的“熱錢包”裡,並存放在伺服器上。這樣的設計奪取了使用者的掌控權,並將金鑰集中到單個系統裡。很多這樣的系統都被黑客攻破了,並給客戶帶來災難性後果。

另一個常見的錯誤是接受區塊鏈離線交易,妄圖減少交易費或加速交易處理速度。一個“區塊鏈離線交易”系統將交易資料記錄在一個內部的中心化賬本上,然後偶爾將它們同步到比特幣區塊鏈中。這種做法,再一次,用專制和集中的方式取代比特幣的去中心化安全模型。當資料處於離線的區塊鏈上的時候,保護不當的中心化賬本里的資金可能會不知不覺被偽造、被挪用、被消耗。

除非你是準備大力投資運營安全,疊加多層訪問控制,或(像傳統的銀行那樣)加強審計,否則在將資金從比特幣的去中心化安全場景中抽離出來之前,你應該慎重考慮一番。即使你有足夠的資金和紀律去實現一個可靠的安全模型,這樣的設計也僅僅是複製了一個脆弱不堪,深受賬戶盜竊威脅、貪汙和挪用公款困擾的傳統金融網路而已。要想充分利用比特幣特有的去中心化安全模型,你必須避免中心化架構的常見誘惑,因它最終將摧毀比特幣的安全性。

10.1.2 信任根源

傳統的安全體系基於一個稱為信任根源的概念,它指的總體系統或應用程式中一個可信賴的安全核心。安全體系像一圈同心圓一樣圍繞著信任根源來進行開發,像層層包裹的洋蔥一樣,信任從內至外依次延伸。每一層都構建於更可信的內層之上,通過訪問控制,數字簽名,加密和其他安全方式確保可信。隨著軟體系統變得越來越複雜,它們更可能出現問題,安全更容易受到威脅。其結果是,軟體系統變得越複雜,就越難維護安全性。信任根源的概念確保絕大多數的信任被置於系統一個不是過於複雜的部分,因此該系統的這部分也相對堅固,而更復雜的軟體則在它之上構建。這樣的安全體系隨著規模擴大而不斷重複出現,首先信任根源建立於單個系統的硬體內,然後將該信任根源通過作業系統擴充套件到更高階別的系統服務,最後逐次擴散到圈內多臺伺服器上。

比特幣的安全體系與這不同。在比特幣裡,共識系統建立了一個可信的完全去中心化的公開賬本,一個正確驗證過的區塊使用創世塊作為信任的根源,建立一條直至當前區塊的可信任鏈。比特幣系統可以並應該使用區塊鏈作為它們的信任根源。在設計一個多系統服務機制的比特幣應用時,你應該仔細確認安全體系,以確保對它的信任能有據可依。最終,唯一可確信無疑的是一條完全有效的區塊鏈。如果你的應用程式或明或暗地信賴於區塊鏈以外的東西,就該引起重視,因為它可能會引入漏洞。一個不錯的方法評估你應用程式的安全體系:單獨考量每個元件,設想該元件被完全攻破並被壞人掌控的場景。依次取出應用程式的每個元件,並評估它被攻破時對整體安全的影響。如果你的應用程式的安全性在該元件淪陷後大打折扣,那就說明你已經對這些元件過度信任了。一個沒有漏洞的比特幣應用程式應該只受限於比特幣的共識機制,這意味著其安全體系的信任源於比特幣最堅固的部分。

無數個黑客攻擊比特幣交易所的例子都是因為輕視了這一點,他們的安全體系和設計甚至無法通過基本的審查。這種中心化的實現方式將信任置於比特幣區塊鏈之外的諸多元件之上,例如熱錢包,中心化的賬本資料庫,簡易加密的金鑰,以及許多類似的方案。

10.2 使用者最佳安全實踐

人類使用物理的安全控制已經有數千年之久。相比之下,我們的數字化安全經驗的年紀還不滿50歲。現代通用的作業系統並不是十分安全,亦不特別適合用來儲存數字貨幣。我們的電腦通過一直連線的網際網路長時間暴露在外,它們執行著成千上萬第三方軟體元件,這些軟體往往可以不受約束地訪問使用者的檔案。你電腦上安裝的眾多軟體只要有一個惡意軟體,就會威脅到你的檔案,可竊取你錢包裡的所有比特幣。想要杜絕病毒和木馬對電腦的威脅,使用者要達到一定的計算機維護水平,只有小部分人能做到。

儘管資訊保安經過了數十年的研究和發展,數字資產在綿延不絕的攻勢下還是十分脆弱。縱使是像金融服務公司,情報機構或國防承包商這樣擁有高度防護和限制的系統,也經常會被攻破。比特幣創造了具有內在價值的數字資產,它可以被竊取,並立即轉移給他人而無法撤回。這讓黑客有了強烈的作案動機。至今為止,黑客都不得不在套現後更換身份資訊或帳戶口令,例如信用卡或銀行賬戶。儘管掩飾和洗白這部分財務資訊的難度不小,但越來越多的竊賊從於此道。而比特幣使這個問題加劇了,因為它不需要掩飾或洗白,它本身就是具有內在價值的數字資產。

幸運的是,比特幣也有著激勵機制,以提高計算機的安全性。如前所述,計算機受威脅的風險是模糊的,間接的,而比特幣讓這些風險變得明確清晰。在電腦上儲存比特幣讓使用者時刻注意他們需要提高計算機的安全性,結果便是這使得比特幣和其它數字貨幣得以傳播和擴散,我們已經看到在黑客技術和安全解決方案雙方的提升。簡單來說,黑客現在有著一個非常誘人的目標,而使用者也有明確的激勵性去保衛自己。

在過去的三年裡,隨著比特幣不斷被接納,一個直接的結果是,我們已經看到資訊保安領域取得了巨大創新,例如硬體加密,金鑰儲存和硬體錢包,多重簽名技術和數字託管。在下面的章節中,我們將研究各種實際使用者安全中的實踐經驗。

10.2.1 比特幣物理儲存

相比數字資訊的安全,大多數使用者對物理安全更加熟悉,一個非常有效保護比特幣的方法是,將它們轉換為物理形式。比特幣金鑰不過是串長數字而已。這意味著它們可以以物理形式儲存起來,如印在紙上或蝕刻成金屬硬幣上。這樣保護金鑰就變成了簡單地保護印著比特幣金鑰的物理實體。一組列印在紙上的比特幣金鑰被稱為“紙錢包”,有許多可以用來建立它們的免費工具。我個人將大部分(99% 以上)的比特幣儲存在紙錢包上,並用 BIP0038 加密,複製了多份並鎖在保險箱裡。將比特幣離線儲存被稱為冷儲存,它是最有效的安全技術之一。冷儲存系統是在一個離線系統(一個從來沒有連線過網際網路的系統)上生成金鑰,並離線儲存到紙上或者 U 盤等電子媒介。

10.2.2 硬體錢包

從長遠來看,比特幣安全將越來越多地以硬體防篡改錢包的形式出現。與智慧手機或臺式電腦不同,一個比特幣硬體錢包只有一個目的,安全地儲存比特幣。不像容易受害的常用軟體那樣,硬體錢包只提供了有限的介面,從而可以給非專業使用者提供近乎萬無一失的安全等級。我預期將看到硬體錢包成為比特幣儲存的主要方式。要想看硬體錢包的例項,請查閱 Trezor。

10.2.3 平衡風險

雖然大多數使用者都非常關注比特幣防盜,其實還有一個更大的風險存在。資料檔案丟失的情況時有發生。如果比特幣的資料也在其中,損失將會讓人痛苦不堪。為了保護好比特幣錢包,使用者必須非常注意不要劍走偏鋒,這樣不至於會搞丟比特幣。在2011年7月,一個著名的比特幣認知教育專案損失了近7,000枚比特幣。為了防止被盜竊,其主人曾之前採取了一系列複雜的操作去加密備份。結果他們不慎丟失了加密的金鑰,使得備份變得毫無價值,白白失去了一大筆財富。如果你保護比特幣的方式太過了,這好比於把錢藏在沙漠裡,你可能不能再把它找回來了。

10.2.4 分散風險

你會將你的全部家當換成現金放在錢包裡隨身攜帶麼?大多數人會認為這非常不明智,但比特幣使用者經常會將所有的比特幣放在一個錢包裡。使用者應該將風險分散到不同型別的比特幣錢包。審慎的使用者應該只留一小部分(或許低於5%)的比特幣在一個線上的或手機錢包,就像零用錢一樣,其餘的部分應該採用不同儲存機制分散開來,諸如電腦錢包和離線(冷儲存)錢包。

10.2.5 多重簽名管理

當一個公司或個人持有大量比特幣時,他們應該考慮採用多重簽名的比特幣地址。多重簽名比特幣地址需要多個簽名才能支付,從而保證資金的安全。多重簽名的金鑰應儲存在多個不同的地方,並由不同的人掌控。打個比方,在企業環境中,金鑰應該分別生成並由若干公司管理人員持有,以確保沒有任何一個人可以獨自佔有資金。多重簽名的地址也可以提供冗餘,例如一個人持有多個金鑰,並將它們分別儲存在不同的地方。

10.2.6 存活能力

一個非常重要卻又常常被忽視的安全性考慮是可用性,尤其是在金鑰持有者喪失工作能力或死亡的情況下。比特幣的使用者被告知應該使用複雜的密碼,並保證他們的金鑰安全且不為他人所知。不幸的是,這種做法使得在使用者無法解鎖時,使用者的家人幾乎無法將該財產恢復。事實上,比特幣使用者的家人可能完全不知道這筆比特幣資金的存在。

如果你有很多的比特幣,你應該考慮與一個值得信賴的親屬或律師分享解密的細節。一個更復雜的比特幣生還計劃,可以通過設定多重簽名,做好遺產規劃,並通過專門的“數字資產執行者”律師處理後事。

10.3 總結

比特幣是一項全新的,前所未有的,複雜的技術。隨著時間的推移,我們將開發出更好的安全工具,而且更容易被非專業人士使用的做法。而現在,比特幣使用者可以使用許多這裡所討論的技巧,享受安全而無困擾的比特幣生活。

相關文章