ウォレット・パスフレーズ・ファインダー

ビットコイン・ブレインウォレット・パスフレーズ・ファインダー

秘密鍵 SHA256:
タイプ アドレス トランザクション出力 残高 (Sats)
Uncompressed Legacy
Compressed Legacy
SegWit
P2SH (Nested SegWit)

ビットコインのブレインウォレット・パスフレーズとは何か、そしてなぜ危険なのか?


1. ブレインウォレットの概念


ブレインウォレットとは、暗号学的に安全なランダムエントロピーを使用するのではなく、ユーザー自身が作成したパスフレーズや文字列から直接ビットコインの秘密鍵を生成する方法です。

一般的なブレインウォレットの仕組みでは、次のように処理されます:

  • ユーザーが覚えやすい文章、フレーズ、またはパスワード(例:「correct horse battery staple」や「ilovebitcoin2024」)を選択します。
  • そのフレーズを暗号学的ハッシュ関数(最も一般的なのはSHA-256)で処理します。
  • 生成されたハッシュ値を256ビットの秘密鍵として直接使用し、そこから公開鍵とビットコインアドレスを導出します。

ブレインウォレットの主な利点とされていたのは、ユーザーがパスフレーズを記憶することで、資産を完全に「頭の中」に保管し、物理的なバックアップなしで、どこからでもウォレットを復元できるという考え方でした。

2. ブレインウォレットが非常に危険な理由


記憶だけで管理できるという利便性がある一方で、ブレインウォレットはデジタル資産を保管する方法として、非常に安全性が低いものとされています。人間が作成したブレインウォレットのほとんどは、自動解析・クラッキングプログラムによって体系的に狙われ、資産を抜き取られる可能性があります。

A. 人間による予測可能性とエントロピー


人間は、真にランダムな文字列を生成することが非常に苦手です。多くの場合、既知の文学作品、歌詞、有名な引用文、一般的なパスワード、または予測可能なパターンからフレーズを選択します。たとえば、「To be or not to be that is the question」のようなフレーズは本人にとって独自性があるように感じられても、実際にはエントロピー(予測不可能性)が極めて低い文字列です。

B. 自動高速クラッキングボット(Brainflayer)


自動化されたボットは、ビットコインネットワーク上で使用中のブレインウォレットアドレスを継続的に監視しています。

  1. クラッカーは、数十億語に及ぶ大規模な辞書、書籍本文、Wikipediaのデータ、IMDbの映画引用文、流出したパスワードデータベースなどを収録したデータセットを用意します。
  2. これらのツールは、Brainflayerなどの特殊なGPUおよびASIC向けハッシュ処理を実行し、毎秒数十億ものフレーズをハッシュ化するとともに、その出力から得られるアドレスを公開されているビットコインブロックチェーンとリアルタイムで照合します。
  3. 一致するアドレスが見つかった場合、ブレインウォレットに送金された資金は、通常、トランザクションがブロードキャストされてから数ミリ秒以内に別のアドレスへ移動され、盗難につながる可能性があります。

C. 複雑そうに見えることによる錯覚


「a」を「@」、「i」を「1」に置き換えるといった単純な文字置換や、日付を追加するだけでは、パスフレーズの安全性は確保できません。クラッキングアルゴリズムはルールベースの変形処理を利用し、辞書に登録された各フレーズに対して数百万通りのバリエーションを自動的に試行できます。

3. ブレインウォレットと最新のBIP-39シードフレーズの違い


人間が作成するブレインウォレット・パスフレーズと、標準規格であるBIP-39のニーモニック・シードフレーズを混同しないことが重要です:

ブレインウォレット:低エントロピー。人間の思考によって作成されるため、衝突や盗難のリスクが高くなります。
BIP-39シードフレーズ:高エントロピー(128~256ビットの真の数学的ランダム性)。ハードウェアまたはコンピューターのRNGによって生成され、ブルートフォースによる総当たりが事実上不可能な規模(2^{256}の鍵空間)を持ちます。

ウォレットを自分の記憶の中に保管するという考えは魅力的に思えるかもしれませんが、暗号学的な安全性を人間が選択した文字列に依存することは、数学的に安全とはいえません。現代のセキュリティ対策では、ハードウェアなどによって生成された高エントロピーのシードフレーズを使用し、安全なオフライン環境で物理的なバックアップを保管することが基本とされています。