中級 レッスン1 読了4分

BIP-39: どのように12の単語がシードになるのか

リストには2048語があり、最後の語はその中に会議を含んでおり、結果は512ビットの数値です。

その12の単語はパスワードではなく、意味を持つものとして選ばれたわけではありません。それらは数字です — 前のセクションで説明されたのと同じ数字 — 人が手で間違えずに書き写せるように書かれています。数字を単語に置き換えても何も弱くなりません。それは単に書き方の一つです。

すべての始まりは抽選です。ウォレットはオペレーティングシステムまたはそのタスク専用のチップに128ビットの予測不可能なデータを要求します。このビットの束がエントロピーであり、このレッスン全体で秘密にする必要がある唯一のものです。他のすべては公開されたレシピです。

この128ビットは11ビットの部分に分割されます。11ビットは0から2047までを数えることができ、これがBIP-39のリストに2048の単語がある理由です。各単語は11ビットの数字の名前に過ぎません。12の単語は合計で132ビットを運びます — 抽選された128ビットと、これから説明する4ビットです。

各ホイールには2048の位置があり、それらの順序が番号を形成します。

リストは注意深く作成されています。アルファベット順に並べられ、似た単語はなく、各単語の最初の4文字だけで他のすべての単語と区別できます — 4文字だけを書き留めれば単語全体を書き留めたことになります。この標準は2013年にMarek Palatinus、Pavol Rusnák、Aaron Voisine、Sean Boweによって提案され、それ以来、世界中のほとんどのウォレットが理解するフォーマットになっています。

残りの4ビットはチェックサムであり、ここで最後の単語が自由ではなくなります。エントロピーのSHA-256を計算し、結果の最初の4ビットを取り、それらを11ビットに分割する前に最後に追加します。したがって、12番目の単語はどれでも良いわけではありません。それは前の11単語の確認を含んでいます。単語が間違っているフレーズは16分の15の確率で拒否され、ウォレットがシードが無効であると表示するのはこのためです。

最後の石は装飾ではありません:それが他のすべてを固定します。

ここから、順序が単語と同じくらい重要である理由が出てきます。フレーズは集合ではなく、シーケンスです。2つの単語の位置を交換すると別の番号が生成され、別のウォレットが生成され、別の残高が表示されます — ほとんどの場合ゼロです。12の単語を順序を間違えて書き留めるのは、電話番号を数字をシャッフルして書き留めるのと同じです。

最後のステップはフレーズをシードに変換し、それは意図的に遅くされています。単語はテキストで書かれ、PBKDF2という関数に入り、HMAC-SHA-512が2048回連続して適用されます。結果は512ビットの数字、つまりシードです。この繰り返しは、フレーズを推測しようとする人の作業を高価にするために存在します — 各試行は、一度だけ通過するよりも2000倍のコストがかかります。

同じ糸が準備が整うまで2048回通過します。

この最後のステップの奇妙で重要な結果に注意してください。計算は単語のテキストを使用し、リスト内の位置を使用しません。リストは書き留めて確認するためのものであり、シードは文字から生成されます。そのため、BIP-39が想定するイタリア語や日本語で有効なフレーズは、英語のどのフレーズとも異なるシードを生成し、余分なスペースや異なるアクセントが結果全体を台無しにする理由です。

単語が欠けている場合はどうなりますか?ケースは失われたわけではありませんが、手間がかかります。その位置に2048の可能性があり、チェックサムがほとんどを除外します。回復ツールはこれを数秒で行います。2つまたは3つが欠けている場合、組み合わせの数が増え、計算が本格的になります。フレーズの半分が欠けている場合、回復は不可能です。これは不完全なメモと失われたメモの違いであり、必要になる前に紙を確認することの重要性を示す議論です。

この512ビットのシードはまだ鍵ではありません。それは、呪文のように見えるアドレスを持つ木に組織された何千もの鍵の根です。次のレッスンでは、このパスの各シンボルが何を意味するのかを説明します。