Bip32-Hd-Wallets

Ledger Nano 助記符生成和問題

  • March 19, 2021

從我們擁有的分類帳文件中

  1. 該設備使用內置於設備安全元件中的真隨機數生成器 (TRNG) 生成 256 個隨機位序列。
  2. 最初 256 位的 SHA-256 雜湊的前 8 位附加到末尾,給我們 264 位。
  3. 所有 264 位被分成 24 組,每組 11 位。
  4. 每組 11 位被解釋為 0 - 2047 範圍內的一個數字,它作為 BIP 39 詞表的索引,為我們提供 24 個詞。

此過程的結果是您的設備將從 2^256 個可能的助記詞種子中生成一個助記詞種子(這是 115 792 089 237 316 195 423 570 985 008 687 907 853 269 984 665 640 564 039 457 584 007 之一129 639 936 個可能的助記符種子)。請注意,雖然前 23 個字是完全隨機的,但最後一個字是從 SHA-256 雜湊的 3 個隨機位和 8 個計算位派生的。這意味著最終單詞可以起到校驗和的作用——如果您在恢復時將錯誤的種子輸入設備,設備可能會檢測到輸入的種子無效。

  1. 將 8 位移動到末尾並使用 2^11 個可能的單詞而不是不移動位並使用 2^8 個單詞和 32 個單詞助記符的動機是什麼,從而導致單詞排列集和單詞集之間的雙射對應可能的 256 位序列。
  2. 由於最後一個字依賴於前 8 位,所以有 (2048)^24 - 2^256 \約 2.95 x 10^79 個無效的 24 字助記符。有誰知道如果您在恢復模式下嘗試將這些內容輸入分類帳會發生什麼?從數學上講,它應該給出一個隨機的 264 位序列,然後 1)檢查第一個和最後 8 位是否相同 - 如果不是,則錯誤。2) 丟棄最後 8 位以獲得有效的 256 位種子,該種子對應於不同的助記符,其中與第 24 個字對應的 # 以相同的 3 位數字開頭。
  3. “該設備使用設備安全元件中內置的真隨機數生成器 (TRNG) 生成 256 個隨機位序列。” 這是唯一讓我有點吃驚的部分。我覺得我記得過去讀到過很多攻擊的發生,因為隨機數生成器可以被利用,因為它們不是真正隨機的。這個 TRNG 的隨機性是如何測試的?
  1. 將 8 位移動到末尾並使用 2^11 個可能的單詞而不是不移動位並使用 2^8 個單詞和 32 個單詞助記符的動機是什麼,從而導致單詞排列集和單詞集之間的雙射對應可能的 256 位序列。

典型的單詞列表是 2048 個條目,這似乎已被很好地確定為可用。使用 256 個條目的列表將意味著顯著更長的種子片語,這在便利性方面可能不太理想。偏離這一點以使位與 256 對齊似乎很奇怪。

  1. 由於最後一個字依賴於前 8 位,所以有 (2048)^24 - 2^256 \約 2.95 x 10^79 個無效的 24 字助記符。有誰知道如果您在恢復模式下嘗試將這些內容輸入分類帳會發生什麼?從數學上講,它應該給出一個隨機的 264 位序列,然後 1)檢查第一個和最後 8 位是否相同 - 如果不是,則錯誤。2) 丟棄最後 8 位以獲得有效的 256 位種子,該種子對應於不同的助記符,其中與第 24 個字對應的 # 以相同的 3 位數字開頭。

您引用的文本說最後的 8 個校驗和位是使用 256 個熵位的 SHA256 計算的;不僅僅是前 8 位的副本。

我實際上不知道如果你輸入一個校驗和不匹配的種子會發生什麼,但我懷疑設備會拒絕它。

  1. “該設備使用設備安全元件中內置的真隨機數生成器 (TRNG) 生成 256 個隨機位序列。” 這是唯一讓我有點吃驚的部分。我覺得我記得過去讀到過很多攻擊的發生,因為隨機數生成器可以被利用,因為它們不是真正隨機的。這個 TRNG 的隨機性是如何測試的?

隨機性確實很難,但你購買硬體錢包是因為你更信任它的安全性,而不是信任在通用硬體上執行的軟體錢包。如果其中的 RNG 不是這樣,請不要使用它 - 您始終可以在其他地方生成它並導入。

引用自:https://bitcoin.stackexchange.com/questions/103662