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個幣的系統。