用語集 / ウォレットとカストディ
ニーモニック単語リスト
- ニーモニック単語リストとは?
- ニーモニック単語リストとは、ランダムなビットを書き表せる単語に変換するためにウォレットが索引として参照する固定の辞書のことであり、BIP-39は対応する言語と文字ごとに1つずつ、10種類のリストを公開しています。
BIP-39で規定されています。
単語リストは辞書であり、秘密ではありません。誰でもダウンロードでき、安全性はどの単語がどの順序で選ばれたかによって決まります。公式リストはどれもちょうど2,048語を収録しているため、バックアップの各単語が持つ情報は11ビットだけで、それ以上ではありません。理由がなければバックアップは英語で書き写してください。仕様自体が他の9言語の使用を強く思いとどまらせているためです。
仕組み
ニーモニックの単語リストがどれも2,048語を収録しているのは、2,048が2の11乗だからです。そのため対応関係は探索の魔法ではなく算術になります。ウォレットのエントロピーとチェックサムを11ビットずつの塊に切り分け、各塊を0から2,047までの数として読み、その位置にある項目を出力します。英語のファイルでは、位置0が"abandon"、位置2,047が"zoo"です。
エンコーダーが気にするのは位置だけです。各ファイルはアルファベット順に保存されているため、ウォレットは2,048行を走査する代わりに、二分探索やプレフィックスツリーで入力された単語を見つけられます。言語ごとに自らの語彙を並べ替えるので、インデックス500は英語では"direct"、フランス語では"dauphin"になります。
BIP-39は良いファイルのための3つの目標を掲げています。入力した4文字で単語を特定できること、"build"と"built"や"woman"と"women"のような紛らわしい類似語を除外すること、全体を並べ替えることです。英語は1つ目と3つ目をそのまま満たしています。項目は3文字から8文字で、2,048語のうち4文字の接頭辞を共有するものは1組もありません。
2つ目の目標は聞こえるほど厳格ではありません。仕様自身の例は守られており、"build"、"woman"、"quick"はファイルに含まれますが、"built"、"women"、"quickly"は含まれません。しかし1文字違いの隣接語は数多く残りました。"angle"と"ankle"、"action"と"auction"、"awake"と"aware"はすべて同じ2,048語の中にあります。バックアップを書き写すときは、単語の形ではなく単語全体を読んでください。
4文字の約束には、知っておく価値のある隙間があります。英語の項目のうち103語は3文字しかなく、そのうち49語は同じファイル内のより長い項目の冒頭になっています。"act"は"action"、"actor"、"actress"、"actual"の隣にあり、"art"は"artefact"、"artist"、"artwork"の隣にあります。4回のキー入力では"act"をまったく選択できないため、ウォレットは空白または候補のタップを受け入れる必要があります。書き留めた短縮形は依然として安全です。すべての項目を4文字に切り詰めても2,048個の異なる文字列が残るからです。区切り文字が必要なのは、入力中の操作です。
英語のほかに9つの翻訳が存在します。日本語、韓国語、スペイン語、簡体字と繁体字の中国語、フランス語、イタリア語、チェコ語、ポルトガル語です。それぞれが独自の公開された規則に従って作られました。フランス語の項目は5文字から8文字で、民族名はなく、シルコンフレックスやセディーユを含むものもありません。イタリア語は二重母音を退け、独自の規則により"words that remind negative/sad/bad things"を排除します。チェコ語は発音記号の付いた文字をすべて除外しており、チェコ語の文字の3分の1に発音記号が付くため、作者はこれを最も難しい作業と呼んでいます。
言語間の衝突は、誰も口にしない部分です。スペイン語は他のどの言語とも項目を共有しないため、スペイン語の1語でフレーズ全体が特定できます。英語とフランス語はそう整然としていません。100語が両方のファイルに現れ、その中には"abandon"、"orange"、"piano"、"puzzle"、"village"が含まれますが、これら100語のうち2つのファイルで同じインデックスにあるものは1語もありません。"abandon"は英語では0、フランス語では1です。
このずれが重要なのは、シードが背後のインデックスではなく、入力した文字から作られるからです。BIP-39は連結した文そのものを伸長するため、これら100語の共通語だけで作ったフレーズは、どちらの言語設定でも同じシードになります。一方、インデックスから計算されるチェックサムは、通常、誤った言語設定ではそのフレーズを拒否します。フレーズを本当に翻訳し、各単語を別のファイルの同じインデックスの単語に置き換えると、文が変わり、したがってまったく別のウォレットが得られます。
ビットコインを購入するときにこれが重要な理由
2,048語の単語リストから引いた24語は、256ビットのランダム性を符号化していても72ビットを符号化していても、同じに見えます。単語リストは転記の形式であり、背後の数値の品質に関する証拠を何も持たないため、当サイトのレビューで取り上げたColdcardの欠陥が5年以上にわたって見過ごされました。2021年3月以降、ビルドのエラーによりシード生成がソフトウェア乱数生成器に回され、実効的な探索空間はCoinkiteによるとMk2とMk3でおよそ40ビット、Mk4、Mk5、Qでおよそ72ビットとなり、目標の128ビットに対して不足していました。修正済みのファームウェアは2026年7月31日に提供されました。印刷された単語は決して違って見えず、単語から誰かに警告できるものは何もありませんでした。
言語の問題は、当サイトの231か国の国別ガイドでは事情が異なります。マドリード、プラハ、大阪の読者は、ウォレットアプリからローカライズされたファイルを提示されるかもしれません。BIP-39自体は、大多数のウォレットが英語のみに対応しており、代替言語は使用を強く思いとどまらせていると明言しています。翻訳されたファイルは今の転記の問題を解決しますが、後になって復元の問題を生みます。その選択肢を提供したウォレットがすでになくなり、代わりのウォレットが英語しか読めないかもしれないからです。日本語には第2の罠があります。日本語のフレーズはASCIIの空白ではなく表意文字の空白で書かれるため、誤ったキーボードで入力し直したフレーズは正しく見えても誤って分割されることがあります。
当サイトでレビューしたウォレットの中には、この選択を完全に避けるものもあります。3.8の評価のTangemは、2枚組が$59.90、3枚組が$69.90で販売され、既定ではフレーズを表示せずにカード内で鍵を生成するため、選ぶファイルも、写真に撮るために書き留めるものもありません。これは単語リストが生む問題への確かな答えであり、レビューで説明している独自のコストを伴います。
Trezor Safe 5が20語を渡すことがある理由
Trezor Safe 5は12語、20語、24語のバックアップに対応しており、20はBIP-39の長さではありません。BIP-39が生成するのは12語、15語、18語、21語、24語だけで、それ以外はありません。したがって20語は、BIP-39の作者自身が後継として提案したShamir方式であるSLIP-39から来ています。SLIP-39はちょうど1,024語の独自のファイルを持ち、サイズは半分です。各単語に11ビットではなく10ビットを詰め込むためです。
2つのファイルは互いに重複しないわけではありません。SLIP-39の1,024語のうち553語はBIP-39の英語ファイルにも現れるため、語彙を読んでも方式を見分けられません。代わりに単語を数えてください。SLIP-39は3文字の隙間も規則で塞ぎました。4文字より短いものはなく、8文字より長いものもなく、全体で4文字の接頭辞は一意で、任意の2項目間のDamerau-Levenshtein距離は最低2です。英語以外の言語には対応せず、そのことを明言し、以前の"arbitrary wordlists"がユーザーを混乱させ相互運用性を損なったと非難しています。
ニーモニックの単語リストvsシードフレーズ
ニーモニックの単語リストは公開されており、シードフレーズはそうではありません。リストはオープンなリポジトリ内のファイルで、すべてのBIP-39ウォレットがそのコピーを持っています。あなたのフレーズは、端末がそこから引き出した特定の12語または24語の項目であり、引き出した順序のままです。英語のファイルをダウンロードしても攻撃者には何も分かりません。辞書を持っていても誰かが文を推測する助けにならないのと同じです。この違いは、サポート窓口、ブラウザ拡張機能、または"ウォレット検証"ページが、あなたの単語を公式リストと照合するよう求めてきたときに覚えておく価値があります。リストは照合を必要とせず、その要求は常にフレーズだけを狙っています。