用骰子DIY真隨機助記詞

用骰子DIY真隨機助記詞 | 火星號精選

免責聲明:本文旨在傳遞更多市場信息,不構成任何投資建議。文章僅代表作者觀點,不代表火星財經官方立場。

撰文 |大掌櫃

切入正題之前,掌櫃想給大家介紹一下冰川協議(Glacier Protocol),也就是本篇教程的出處。

冰川協議是一套完備的冷存儲方案,是一本足足78頁的PDF操作手冊。操作手冊徹底踐行了“not your keys, not your bitcoin”的理念,介紹瞭如何在儘可能不信任任一第三方的情況下,生成你自己的隨機數,助記詞,私鑰,公鑰,助記詞;進而如何進行轉幣等操作。

為了能夠做到“儘可能不信任某一第三方”,冰川協議對具體的實施進行了非常嚴格的規定:

比如,為了避免黑客遠程攻擊,保存私鑰和進行簽名的電腦必須是完全脫網的,冰川協議要求移除或者破壞掉電腦的網卡,這一點可能安全意識比較強的同學自己也能想到並付諸實踐。

但是冰川協議的其他設定就有一點點“被害妄想症”了:

比如,為了減少對某一第三方節點的信任,冰川協議要求用戶一定要自己維護全節點

比如,為了避免使用某一臺電腦保存私鑰和使用其簽名時被安裝了後門,冰川協議要求購買兩臺不同品牌甚至不同操作系統的全新電腦(比如一臺Windows,一臺Mac),交叉驗證兩臺電腦得到的結果再廣播交易

比如,在操作電腦時,為了避免電腦向外輻射的電磁波會洩露信息,冰川協議要求使用電腦時一定要用一個大的法拉第包把電腦罩住,並且要用另一臺設備(比如離線手機)連續播放寬頻的白噪音

雖然冰川協議規定了大量的操作細節,但是因為這些流程一是要求用戶有很強的動手能力,其次要做到足夠的心細,才能在操作中不犯錯。要知道,人為失誤是除了設備故障或者被黑之外,最大的丟幣原因,沒有之一。

所以,掌櫃並不建議新手用戶使用冰川協議來保護你的私鑰和做交易簽名。

但是,冰川協議裡面也有一些我們可以借鑑的部分。比如,用擲骰子的方式來生成你的助記詞。這樣做的好處是,避免了信任軟件HD錢包的偽隨機數生成器,甚至是硬件錢包的安全芯片。通過手工的方式生成真隨機數,進而保障私鑰的隨機性。

這裡需要注意,因為普通骰子的六個面的重量不一致,從而會導致得到的隨機熵值的概率不是嚴格的平均分佈,掌櫃的建議大家一定要使用六個面重量幾乎完全一樣的賭chang級骰子。

切入正題。

如何用骰子生成助記詞

準備工具:

① 一顆賭chang級骰子

用骰子DIY真随机助记词 | 火星号精选

② 離線工具(SHA256&進制轉換)

- 如何離線使用工具?聯網電腦打開鏈接,右鍵菜單“另存為”文件,將文件拷貝到離線電腦,雙擊打開文件進行使用。

③ BIP39-2048助記詞表

④ 紙筆或金屬助記板

開始操作:

第一步,我們需要用到骰子紙筆

一共擲256次骰子,擲到1,2,3記錄為0,擲到4,5,6記錄為1,最終得到256位二進制數。

或者,利用進制轉換工具,擲99次,把得到的記錄作為六進制數據,然後轉換為二進制,就可以得到一個256位的二進制數。

256位二進制:
1100 0011 0110 0100 0001 1111 1000 0101 0100 0100 1101 0111 1100 0000 0010 1111 0011 0101 1000 0000 1011 0000 0111 1100 0000 1111 1001 1000 1000 0111 1111 0000 1100 0110 1010 0010 0111 1111 1111 0101 1010 1011 0001 1101 0100 1010 0011 1110 0010 1001 1100 1010 1111 0001 1001 0111 1100 1111 1100 0010 1001 1001 1010 1110

操作過程中要確保骰子在空中得到足夠的翻轉,並且避免總是從骰子的特定面朝上進行投擲。

當然,如果你堅持要用篩盅,掌櫃也不會攔著你。

第二步,我們需要用到SHA256算法工具

1. 使用SHA256工具獲取256位二進制的Hash值(轉換為二進制,按Byte分組),取前面8位加到256位二進制後面,得到264位二進制數。

用骰子DIY真随机助记词 | 火星号精选264位二進制:
1100 0011 0110 0100 0001 1111 1000 0101 0100 0100 1101 0111 1100 0000 0010 1111 0011 0101 1000 0000 1011 0000 0111 1100 0000 1111 1001 1000 1000 0111 1111 0000 1100 0110 1010 0010 0111 1111 1111 0101 1010 1011 0001 1101 0100 1010 0011 1110 0010 1001 1100 1010 1111 0001 1001 0111 1100 1111 1100 0010 1001 1001 1010 11100111 1111

2. 將264位二進制分成24組11位的二進制

用骰子DIY真随机助记词 | 火星号精选

第三步,我們需要用到進制轉換工具和2048助記詞表。

根據上面得到的24組11位二進制數,我們要在2048詞表裡找到對應的24個單詞。

但是,二進制如何跟單詞對應起來呢?

1. 我們將詞表的2048個單詞按a-z字母排序後標上序號,從“0”到“2047”。

用骰子DIY真随机助记词 | 火星号精选

2. 最大的序號“2047”用二進制表示剛好是11位“11111111111”。所以詞表裡的每一個詞,我們都可以根據它的序號對應一個11位的二進制數。對於轉換二進制後不滿11位的,我們在它的二進制數前面補“0”,不影響數值大小,同時還滿足長度要求11位。

比如,【dice】是詞表的第492個單詞,序號則為“491”,它對應的二進制是9位:“111101011”,我們把它補齊11位:“00111101011”。用骰子DIY真随机助记词 | 火星号精选

為減少工作量,我們直接將24組11位二進制用離線進制轉換工具轉換成十進制,然後按照十進制數找到對應序號的單詞。

以第一組11位二進制“11000011011”舉例,轉化為十進制,表示為“1563”。由於我們定義的序號是從0到2047,所以,序號“1563”實際對應的是詞表中第1564個單詞【sell】。用骰子DIY真随机助记词 | 火星号精选

按照上面的方法,我們可以得到24組11位二進制數對應的24個單詞:

用骰子DIY真随机助记词 | 火星号精选

如果不自信是否操作正確,我們可以直接將助記詞導入硬件錢包,看能否通過校驗。如果無法通過,則需要從第二步開始重新操作。如果通過,則表示操作正確。

目前市面上有個別錢包是不支持校驗助記詞有效性的,我們可以用一套無效助記詞(如,24個cat)先試下是否提示助記詞有誤後再進行導入。如果報錯,說明支持助記詞校驗!

用骰子DIY真随机助记词 | 火星号精选

關於助記詞有效性的更多內容,可以參考掌櫃這篇文章《導入助記詞時,輸入錯誤會發生什麼?》

第四步,我們需要用到紙筆或者金屬助記板物理備份助記詞。

將24位助記詞抄在紙上,或選用金屬助記板備份(如Cobo金鋼匣),防水、防火、防腐蝕和抗壓等性能會更好一些。切勿以拍照或其他形式存儲在有可能聯網的設備中(離線手機、離線電腦、U盤等都屬於有可能聯網的設備),以防惡意軟件盜取隱私。

用骰子DIY真随机助记词 | 火星号精选

對於更多存儲方法和技巧,可以參考掌櫃這篇關於“深冷存儲”的文章《偷不走的助記詞》

冰川協議是使用62顆骰子擲出256位二進制,但是掌櫃建議採用上述方法(1顆骰子)來減少複雜性。在擲骰子以及記錄結果時,我們不需要擔心出現人為錯誤。只需要確保最終正確存儲了有效助記詞,其他錯誤就不會影響私鑰的隨機性和安全性。

Cobo金庫硬件錢包後面將支持使用101顆骰子擲出的256位二進制轉換為私鑰。通過擲101顆骰子,我們可以獲得與256位二進制數一樣大的熵值(一顆骰子可擲出6種結果,101顆骰子的熵值 6??? > 2???)。

最後,給大家留個課後作業:
0100 1101 0001 1011 1000 1000 1111 0000 1110 1011 1101 1011 1000 1000 1000 0110 0100 1101 1100 1001 0100 0010 1101 0001 1111 1111 0001 0110 1001 1101 0111 0000 0001 1001 0000 1100 1011 0000 0000 1011 0101 1111 1010 1011 0111 0010 1110 0010 0001 1010 1111 1111 1111 0000 0111 0001 1110 1000 0010 0101 0011 0101 0110 1011

根據上面給出的256位二進制數,找到對應的24位助記詞。

前23個單詞是23張【Cobo金鋼匣】..9..折..優..惠..碼..,最後一個單詞是一張..8..折..優..惠..碼..!

由於有贊只支持6位及以上的優惠碼,少於6個字母的單詞,可以在前面補“0”,如【sell】對應的優惠碼為【00sell】



Cobo金鋼匣是一款全鋼金屬助記板,甚至連螺絲都是不鏽鋼材質的。備份24位助記詞平均只需花費7分鐘,字符塊易找易取易操作~

用骰子DIY真随机助记词 | 火星号精选

參考鏈接:

[1]https://glacierprotocol.org/

[2]https://cryptii.com/pipes/hash-function

[3]https://tool.oschina.net/hexconvert

[4]https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt


分享到:


相關文章: