1. 程式人生 > >OKCoin使用的比特幣冷錢包解決方案

OKCoin使用的比特幣冷錢包解決方案

比特幣的理想是構建一種金融社交網路,實現人類的金融民主。時至今日,比特幣的基礎技術架構仍有很大的提升空間。比特幣交易平臺、線上錢包等如何安全的儲存大量比特幣是整個行業面臨的重要問題。

比特幣的安全是基於比特幣的核心加密演算法和私鑰的安全儲存。密碼學界認為比特幣的密碼學基礎(SHA256和EDSA)在目前的解密技術能力下,是絕對安全的,比特幣安全的主要問題就在於私鑰的儲存,所以業界通常採用冷錢包(絕對不接觸網際網路的錢包)來儲存大量比特幣。

但如何設計並執行一個真正安全的的冷錢包呢?OKCoin在長期的實踐中總結出本方案,現將方案分享出來和大家一起探討,我們可以幫助行業內沒有條件的公司儲存冷錢包,同時也在和國際的安全公司探討比特幣的託管事宜,我們希望和合作夥伴一起讓比特幣更透明、更安全。當然,也希望大家能給我們提出有效的建議,讓我們在打造史上最安全、最易用、最便捷的比特幣錢包道路上更進一步。 

【我們的設計理念】

網路是不安全的,只要是接觸網路的裝置,就有可能被攻擊。  U盤是不安全的,U盤可能會被植入病毒,被植入病毒的U盤可能會自動記錄資料,在被插入有網路的電腦以後,通過網路把資料盜走。  單個人是不可信的,所有的授權必須要經過多個人做雙重確認,才能確保安全。  每個人都有可能出現意外事件,因此掌握授權的人需要進異地備份以確保安全。  人可能被綁架,因此重要的資料需要儲存在保安級別高的銀行保險櫃裡,同時須本人親自去銀行才可取出。

【我們的設計方案】

( 一 ) 私鑰產生和備份

在完全離線的電腦上生成10000個私鑰和對應的地址。  在完全離線電腦上對私鑰進行AES加密。  刪除原始私鑰。  AES密碼由公司的兩個分屬異地的人掌握,OKCoin 的兩位密碼掌握人,一位在OKCoin辦公室,一位在美國西部某城市。  掌握AES密碼的兩個人不得乘坐同一輛交通工具,避免出意外的風險。  把之前加密後的私鑰和明文地址生成二維碼加密文件。  通過二維碼掃描完全離線電腦生成地址文件,用於日常使用,每次熱錢包往冷錢包匯幣,必須使用一個未使用過的地址,每個地址不可重複使用。  將二維碼加密文件列印儲存到保安級別高的保險櫃,即使發生文件掌握人被綁架事件,也無法獲取此加密文件,因為必須要文件掌握人本人親自到銀行才能獲取此文件。  在異地銀行保險櫃對二維碼加密文件進行備份,OKCoin有兩份備份,一份在OKCoin辦公室附近的銀行保險櫃,一份在美國東部某城市一家銀行的保險櫃內。  本地和異地銀行保險櫃必須由兩個不同的人撐握。  掌握銀行保險櫃的兩個人不得乘做同一輛交通工具。  本地、異地銀行保險櫃的控制人不得和AES密碼的兩個控制人相同。

( 二 ) 線上往冷錢包打幣

從地址文件中取相應地址,根據安全級別,每個地址匯不超過1000B。  每個地址被使用一次後就不可再使用。

( 三 ) 從冷錢包取幣

派人去辦公室附近銀行保險櫃取出相應數量的未使用過的私鑰密文,用掃描二維碼的方式取回。  把私鑰密文通過二維碼掃描放入完全離線電腦。  掌握AES密碼的人在完全離線電腦上進行解密,獲得私鑰明文。  通過二維碼掃描把私鑰明文匯入另一臺完全離線電腦。  在另一臺完全離線電腦上進行簽名交易,並把簽名後的交易通過二維碼或U盤同步至有網路的電腦廣播交易。

( 四 ) 本方案要點

冷錢包的幣採取分散儲存方式,每個地址存確定數量的比特幣。  所有私鑰在完全離線電腦上儲存。  確保私鑰永遠沒有接觸過網路或U盤。  私鑰加密文件需在異地有備份,並且由在異地的不同人控制。  私鑰的AES密碼也須由異地的兩個不同人控制,且不得與掌握私鑰的人相同。  掌握私鑰密文文件或私鑰密碼的兩組人必須在分別在異地,最好是異國。  某個私鑰一旦匯幣到線上以後,即作廢,永不再使用。

( 五 ) 本方案實現的結果

所有冷錢包比特幣分散在多個私鑰儲存。  每個私鑰的使用需要兩個人雙重授權。  私鑰的雙重授權有異國備份,即使出現自然災害,也不會發生丟幣。  私鑰有一個授權儲存在銀行保險櫃,即使掌握人被綁架,也無法被迫獲取比特幣。  每個私鑰被使用一次(從冷錢包打幣到線上),即作廢。

藉此機會我們回答一下很多人的疑問:OKCoin為什麼不公佈冷錢包地址?

OKCoin btc/ltc 的冷錢包地址有幾千個,公佈沒有意義。那麼OKCoin為什麼不像某些網站一樣把這些地址集中到某幾個地址上呢?因為每家公司對安全的認知是不一樣的。OKCoin的安全專家開玩笑說:黑客看到某些網站公佈有上萬個幣的冷錢包地址並且洋洋得意的宣稱自己很透明很安全,一定覺得很開心、很幽默。我們建議這些平臺儘快升級安全方案,否則發生了冷錢包被盜就追悔莫及了。

前段時間,國內某網站冷錢包幾千個比特幣被盜,我們不清楚其中的技術細節,但是從安全技術的角度分析,這完全是有可能的,攻擊的步驟大概如下:

黑客在全球部署20個比特幣節點,每個節點上監控每筆交易來自哪個地址。如果此冷錢包發生了交易,就有非常大的概率被黑客部署的某一個節點第一次獲取到冷錢包廣播的交易;  根據交易資訊定位到冷錢包IP;  冷錢包機器是否有漏洞,種入木馬,即使冷錢包上沒有私鑰在離線電腦上簽名,被中木馬的機器也可以監控插入U盤,在U盤中植入另外一種木馬,U盤去離線電腦上簽名交易時,即把私鑰記錄,在U盤插入線上電腦時,把私鑰通過網路發走;  假設冷錢包機器打了所有的補丁,沒有任何漏洞。那麼請去查一下什麼叫0-day,去0-day的黑市看看吧,你會大吃一驚!還記得前兩年報出的“極光”漏洞嗎?被某國特殊部門用來獲取某些人士的email;

總結一下,只要不是物理和網路隔絕的系統都有被攻破的可能性,只是看攻擊的成本有多大,攻擊成功的利益有多大。一般比特幣交易平臺的熱錢包存幣量都很小,不值得用0-day等手段去攻擊,OKCoin的冷錢包方案同一時間最多有1000個幣的私鑰觸網,沒有人會花很大成本攻擊只有1000個幣的系統。