150 / 736DICE

Dice Roll Entropy

物理的なサイコロから得るウォレットのエントロピー

サイコロは、新しいウォレットのための乱数のもとになります。ただし、回数だけでは不十分です。出目がランダムで、秘密に保たれ、ウォレット用データへ正しく変換される必要があります。

Dice Roll Entropy は、実際にサイコロを振り、新しいウォレットに予測しにくい入力を与える方法です。ウォレットは、ビットコインを受け取ったり送ったりするためのアプリや機器です。秘密鍵は、ビットコインの支出を承認するための秘密の数値です。アンナがウォレットを作る場面を考えてみましょう。数字を自分で考える代わりに、実際の出目を正確な順序で、検証済みのオフライン手順に入力します。そのデータが bitcoin の鍵の基礎になります。ここでいうエントロピーは、結果を知らずに当てようとする人にとっての不確かさです。十分な回数を独立に振り、結果を秘密にして初めて意味があります。復元用の単語を増やしたり、データから計算するデジタル指紋を長くしたりしても、弱い入力や公開済みの入力は救えません。以下の計算は理由の説明であり、自作の生成器を勧めるものではありません。

ビットは情報の単位です。どの可能性も同じ確率なら、一ビット増えるごとに攻撃者が推測する選択肢は倍になります。サイコロの点やバックアップの単語を一つ増やすという意味ではありません。 公平な六面サイコロでは、六つの出目が同じ確率で現れます。独立した二回の出目には 36 通りの組み合わせがあります。ビットで表すと一回あたり log2(6) ≈ 2.585 です。この理想条件では、50 回が約 129.25 ビット、99 回が 255.91、100 回が 258.50 になります。COLDCARD は実用上の 256 ビットの目安として 99 回を挙げますが、数学的には 256 をわずかに下回ります。回数を数えるだけでは、サイコロの品質も変換結果の完全な一様性も確認できません。 [1] [3] [5]

特定の面が出やすいと、攻撃者は当てやすくなります。最も出やすい面の確率が 1/2 なら、一回の min-entropy は 1 ビットです。Min-entropyは、攻撃者が一度だけ推測するときに最も当たりやすい選択を基準に、予測の難しさを測ります。式 Hmin=−log2(pmax) が使う pmax は、この最も起こりやすい結果の確率です。各回の値を足すには、適切な独立性が必要です。前の出目を書き写しても、新たな独立した一回にはなりません。全出目を知る人は、そもそも推測する必要がありません。 [4]

出目だけから作るウォレットでは、完全な列や最終ハッシュ(そのデータから計算するデジタル指紋)だけで再現できる場合があります。混合する場合は装置側の入力も機密です。本番用の出目をオンライン検証ツールに入れたり撮影したりしないでください。計算確認には資金を絶対に入れない別のテスト用ウォレットを使い、本番には新しい秘密の入力を用意します。クリップボードやログにデータが残ることもあります。得られたSeed Phrase、つまり単語で書いたバックアップを安全に保管し、復元を確認してください。passphraseも使う場合は、それも必要です。この追加の秘密によって、同じ単語から別のウォレットが導出されます。 [1] [2]

公開テスト例と同じ結果が出れば、符号化、ハッシュ、変換の一致を確認できます。サイコロや装置が正しく働いている証明にはなりません。見た目の良い短い列も、予測不能性を証明しません。NIST SP800-90B は源のモデル、min-entropy の推定、動作検査を区別します。家庭での一連の投擲は、この規格の認証ではありません。考えた数字や繰り返しパターンで実際の投擲を代用することもできません。 [3] [4]

ASCII は数字の文字をコンピューターで表す規則、newline は行末の文字を意味します。機械は人間が理解する意味ではなく、渡された文字を処理するので、正確な書き方が重要です。 COLDCARD 文書の Dice Rolls Only モードは ASCII 数字列の SHA-256 を計算します。末尾 newline のない公開テスト 123456 のハッシュは 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92 です。理想的なランダム六投でも約 15.51 ビットにすぎず、この公開系列はまったく秘密ではありません。256 ビット出力は不足したエントロピーを補いません。入力符号化が違えば結果も変わり得ます。 [1] [3]

次の式で d1 と d2 は最初と次の出目です。mod は割り算の余りを表します。原像が二つあるとは、異なる元の値が同じ結果になり、その結果が出やすくなることです。 学習例として公平で独立した二投を x=6*(d1−1)+(d2−1) と符号化すると、範囲は 0~35 です。x mod32 は 0~3 に各二つの原像を与えるため偏ります。Rejection Sampling では 32~35 を捨てて二投を繰り返し、受理した 0~31 から一様な五ビットを得ます。変換ミスを説明する例であり、検証済みウォレット生成器を置き換える手順ではありません。 [3]

2026 年 10 月 1 日改訂の COLDCARD 文書は、ハードウェア乱数を使わない Dice Rolls Only と、装置の値に物理的なサイコロやコインの結果を混ぜる標準生成を区別します。verify_seed_mix.py は後者、rolls.py と rolls12.py は前者を検証します。装置の値も入力なら出目だけでは一致を確認できません。正確な手順とファームウェア版を選びます。 [1]

BIP39は入力ビットを復元用の単語に変換し、その単語から鍵の出発点となるシードを導出する方法を定めます。Checksum は一部の転記ミスを見つける助けになり、passphrase は任意の追加の秘密です。以下で最後に挙げるアルゴリズムは、単語と passphrase からシードを計算します。 BIP39 は 128 入力ビットに四つの checksum ビットを加え、132 ビットを 11 ビットずつ 12 組に分けます。256 ビットに八つの検査ビットを加えると 24 語です。Checksum は導出値であり乱数を増やしません。次の PBKDF2-HMAC-SHA512 はフレーズと passphrase から 512 ビットのシードを作りますが、長さ 512 だけでは弱い出目を強くしません。単語形式、入力エントロピー、導出シードは別の層です。 [2]

理解を深めるには、この項目とあわせて次もお読みください Cryptographic Entropy, Entropy Bit, BIP 39, Seed Phrase, Entropy Mixing, CSPRNG. 次の項目からも参照されています Cryptographic Entropy, COLDCARD RNG Incident (2026).

DOC · 001COLDCARD — Verifying Seed Mixing文書 DOC · 002BIP 39 — Mnemonic code for generating deterministic keys仕様 DOC · 003RFC 4086 — Randomness Requirements for Security仕様 DOC · 004NIST SP 800-90B — Entropy Sources for Random Bit Generation仕様 DOC · 005Bitcoin Developer Guide — Wallets文書
改訂日: 一次資料を優先 · 投資助言ではありません