資金の損失を防ぐためには、秘密鍵(リカバリーフレーズから生成されます)に高いランダム性が必要です。攻撃者は秘密鍵を総当たりで探索し、脆弱な方法で生成された秘密鍵を見つけ出し、その秘密鍵に対応するアドレスに送金された資金を盗もうとします。Jade は多角的なアプローチを採用することで、この種の攻撃を防ぐのに十分なランダム性を持つ秘密鍵を保証します。

エントロピー源

Jade の動作中には、以下のような様々な独立したソースとセンサーからエントロピーが生成されます。

内蔵のハードウェア暗号乱数生成器(CRNG)は、様々なソースからエントロピーを生成します。その一つが、内蔵の無線機能(Bluetooth で使用)です。オプションの「noradio」ファームウェア(Green コンパニオンアプリで選択可能)で無線機能を無効にすると、CRNG はこのエントロピー源を失い、生成されるエントロピーが減少します。この問題を軽減するため、「bootloader_random_enable()」という ESP32 API 呼び出しを利用して、起動時のみに生の無線ノイズをサンプリングし、上記の情報源から得られたエントロピーと共にエントロピープールに追加しています。

リカバリフレーズ生成

Blockstream Jade が起動すると、Bitcoin Core で用いられるものと同様のアキュムレーターが使用されます。これは、以前の状態を SHA512 ハッシュ化した 32 バイトの状態と、上記で提供されたエントロピー源を保持します。

SHA512 のハッシュ値は 2 つに分割されます。

ハッシュ関数は、エントロピーが要求されるたび、およびボタンやホイールが操作されるたびに呼び出されます。