HD ウォレットの魂の検査: どのウォレットがテストに耐えられるか?
—執筆者 | Cobo Vault Manager
「分散型ウォレット」を使用したことのある学生は皆、記憶に残る言葉に精通していると思います。
ハードウェア ウォレットでもソフトウェア ウォレットでも、ウォレットを作成するには 2 つの方法があります。
ニーモニックワードの作成: ウォレットは一連のニーモニックワードをランダムに生成し、ユーザーはコピーしてバックアップする必要があります。
ニーモニックワードのインポート: ユーザーは既存のニーモニックワードのセットをウォレットにインポートして資産を復元します。
では、ニーモニックはどのようにしてマスター秘密鍵となり、HD 内ですべてのサブ秘密鍵を生成するのでしょうか?
実はとても簡単です。一連のニーモニックは、2048 ラウンドの HMAC-SHA512 アルゴリズムの後、マスター秘密キーを生成し、一連の HD ウォレットを派生します。
したがって、ニーモニックフレーズとマスター秘密鍵は1対1に対応しており、ニーモニックフレーズの集合がマスター秘密鍵、すなわちHDウォレットに対応する。
ここで非常に恐ろしい質問について考えたことはありますか?
たとえば、店主が手にした 12 個の記憶術は次のとおりです。
cat tonight sadness walnut fan captain sure assume gorilla caution story pull
便宜上、この単語のセットを [猫の記憶術] と呼びます。
しかし、店主が [猫の記憶フレーズ] をウォレットにインポートすると、震える手入力の最初の単語が犬になったため、記憶フレーズは次のようになりました。
dog tonight sadness walnut fan captain sure assume gorilla caution story pull
便宜上、この単語のセットを [犬の記憶単語] と呼びます。
ここから悲劇が始まります。
純粋な 24K の買い占めパーティーとして、店主はお金を節約するために一生懸命働き、[犬の記憶術] の下のアドレスにすべての信念を再充電しました。
ある日、携帯電話やハードウェアウォレットが壊れたり、握手などでウォレットアプリが削除されたり、さまざまな理由で資産を復元するためにニーモニックを取り出す必要があります。
この時、店主は埃をかぶっていた【猫の記憶フレーズ】を取り出し、財布にインポートした。
前述したように、ニーモニックのセットは HD ウォレットと 1 対 1 に対応しています。このとき、[猫の記憶フレーズ]で回復したアドレスは、[犬の記憶フレーズ]のアドレスとは異なります。つまり、[cat ニーモニック] ではアセットは存在しません。
記憶に残る単語「犬」を誤って入力したため、店主の財産と信念はすべて失われてしまいました。
怖いですか?
実際、機知に富んだビットコイン開発者たちは、このすべてをずっと前に考えていました。これらはニーモニックの標準プロトコルを定義し、すべてのニーモニックが有効かどうかを検証します。
「検証原理」について話す前に、店主はまず記憶術についての基礎知識を普及させます。
BIP39 はニーモニックワードの標準を定義しており、2048 語の語彙が含まれています (参考リンク 1)。すべてのウォレットが BIP39 に従っている限り、生成されるニーモニックはこの 2048 語の語彙から取得され、[猫ニーモニック] のすべての単語も例外ではありません。
2048 語彙の各単語には、「0」から「2047」までのシリアル番号が付いています。最大のシーケンス番号「2047」は、バイナリ表現でちょうど 11 桁の「11111111111」になります。したがって、語彙内の各単語は、シリアル番号に従って 11 ビットの 2 進数に対応付けることができます。 2進数変換後に11桁に満たないものについては、2進数の前に「0」を付けて11桁に収まります。
例えば、catは287番目の単語で、通し番号は「286」、それに対応する11桁の2進数は「100011110」なので、11桁を合成して「00100011110」と表現します。

次に、具体的な「検証」手順を見てみましょう。
ステップ 1: 上記の方法に従って、2048 語彙に従って [猫記憶術] の 12 単語に対応する 11 ビットの 2 進数を見つけます。

ステップ 2: これらの 12 ワードに対応する 11 ビットの 2 進数をつなぎ合わせて、132 ビットの 2 進数を取得します。
001000111101110010010010111101111111101101100101001011000100010001110110100000000110111101100100101001001001011101011010010101101010
ステップ 3: この 132 ビットの 2 進数を、左側の 128 ビットと右側の 4 ビットの 2 つの部分に分割します。
左 128 ビット: 00100011110111001001001011110111111101101100101001011000100010001110110100000000110111011001001010010010010111010 1101001010110
右4桁(チェック値):1010
ステップ 4: この一連のニーモニックの有効性の検証を開始します。
有効性を判断する原理: 左側の 128 ビット 2 進数の SHA256 結果の最初の 4 ビットは、右側の 4 ビット 2 進数と等しくなければなりません。
【猫の記憶術】の結果を確認してみましょう。
左側の 128 ビット 2 進数をオンライン SHA256 計算機に入力します (リンク 2 を参照)。
![]()
(コインでニーモニックフレーズを検証するためにオンラインツールを使用しないでください!!!)
SHA256 の結果の最初の 4 桁は、132 ビット 2 進数の右側の 4 桁「1010」とまったく同じであることがわかります。
これは、[cat ニーモニック フレーズ] が検証に合格し、有効なニーモニック フレーズのセットであることを意味し、その後のマスター秘密鍵の生成プロセスに入ることができます。
それでは、単語をミスタイプした [犬の記憶術] が検証に合格できるかどうかを確認するために、すぐに演習を行ってみましょう。
ステップ 1: [犬の記憶術] 語彙の 11 ビット 2 進数に対応する 12 個の単語は次のとおりです。

ステップ 2: これらの 12 ワードに対応する 11 ビットの 2 進数を並べて、132 ビットの 2 進数を取得します。
010000001001110010010010111101111111101101100101001011000100010001110110100000000110111101100100101001001001011101011010010101101010
ステップ 3: この 132 ビットの 2 進数を、左側の 128 ビットと右側の 4 ビットの 2 つの部分に分割します。
左 128 ビット: 01000000100111001001001011110111111101101100101001011000100010001110110100000000110111011001001010010010010111010 1101001010110
右4桁(チェック値):1010
ステップ 4: [dog mnemonic] の左側にある 128 ビットの 2 進数を SHA256 計算機に入力します。

(コインでニーモニックフレーズを検証するためにオンラインツールを使用しないでください!!!)
SHA256 の結果の最初の 4 桁は「0010」であり、132 ビット 2 進数の右側の 4 桁「1010」と一致しないことがわかります。
このように、この[犬の記憶単語]のグループは検証に合格できず、標準のBIP39プロトコルに従って開発されたウォレットアプリは、ユーザーに自分の記憶単語を確認するよう通知します。このとき、ユーザーはエラーに気づき、「犬」を正しい「猫」に変更することで検証を通過し、ウォレットの作成が完了するので、悲劇も回避できます。
最後に、国内外の有名な HD ウォレットが無効なニーモニック ワードのセットを入力するときに、標準の BIP39 プロトコルに従ってニーモニック ワードのエラーをチェックするかどうかを確認する宿題を確認しましょう。
無効なニーモニックのセットを入力するだけでチェックの目的が達成できるため、便宜上、複雑なニーモニックは入力せず、12猫(これが無効なニーモニックのセットです)を直接入力します。検査結果は以下の通りです。
1 社目: imToken は無事テストに合格しました。

2 つ目: Huobi ウォレットはテストに合格しました!

3 番目: Trust Wallet はテストに合格しました!

4つ目:BRDは無事テストに合格しました!

5社目:BitPayが無事テストに合格しました!

6社目:imKeyが無事テストに合格しました!

7 番目の家: Cobo Wallet と Cobo Vault、無事テストに合格しました。


8 社目: Bitpie ウォレット、ニーモニック検証なし、無効なニーモニックによりウォレットが生成される可能性あり、ニーモニック エラー プロンプトなし。

9位:ハードウェアウォレット Bitshield。 Bitshieldのニーモニックは携帯電話で入力しますが、12個のニーモニックを入力すると紛らわしい単語が出てきますが、24個のニーモニックを入力すると単語がなくなるので、24個の猫(これも無効なニーモニックです)を入力して試してみた結果ニーモニックエラーがないということです

最後に、ハードウェアウォレットのリスクポイントについて皆さんに思い出していただきたいと思います。
店主が記憶語の検証動作を確認したところ、一部のハードウェアウォレットでは携帯電話上で記憶語の入力が完了することが判明した。
ハードウェアウォレットを使用する理由は、ニーモニック/秘密キーをオフラインで保存するためですが、ネットワークに接続されたデバイス上でニーモニックを入力すると、ハードウェアウォレットの意味が完全に失われます。
ここでの 1 つの解決策は、ハードウェア ウォレットにニーモニックをインポートするときに、語順をスクランブルして、携帯電話上で紛らわしい単語を追加することです。紛らわしい単語の動作原理は次のとおりです。たとえば、私たちのニーモニックは 11放棄+約 ( これは効果的なセットですニーモニック)、携帯電話でニーモニックを入力すると、コールド エンドで次のプロンプトが表示されます。
携帯電話で 3 番目のニーモニックを入力してください (放棄と入力)
携帯電話に「猫」と入力してください
携帯電話で 12 番目のニーモニックを入力してください (約を入力)
携帯電話に「犬」と入力してください
…
携帯電話で 6 番目のニーモニックを入力してください (放棄と入力)
携帯電話で地域を入力してください
猫、犬、地域は紛らわしい言葉です
しかし、単語を混乱させたり、語順のインポートを中断したりすることは本当に有益でしょうか?
参考リンク:
参考リンク:


