研究 ウォレットのフォレンジック
Armoryの暗号化とROMIXKDF
Armoryは、セキュリティを重視するビットコイナーのために開発されました。その意図的に処理速度を落とし、メモリ負荷の高い鍵導出方式こそが、Armoryのパスワードを回復する際には、単純なブルートフォース攻撃ではなく、適切なアプローチが必要となる理由なのです。
Armoryは、初期のビットコインウォレットの中でも最も信頼されていたもののひとつであり、コールドストレージとして好んで利用されていました。その評判の一因は、ROMIXに基づく、意図的に処理コストが高く、メモリ負荷の大きい鍵導出関数という暗号化方式にありました。このページでは、Armoryウォレットのパスワードを復元しようとするユーザーにとって、それがどのような意味を持つのかを解説します。
鍵導出関数の役割
ウォレットをパスワードで暗号化する際、ソフトウェアはパスワードを直接使用するのではなく、キー導出関数(KDF)を通じて処理し、実際の暗号化キーを生成します。優れたKDFは意図的に処理速度が遅く設計されており、これにより推測のたびに実時間とコストがかかるため、ブルートフォース攻撃は現実的ではなくなります。このKDFによるコストこそが、攻撃者や復旧サービスがパスワード候補を一つずつ試すたびに乗り越えなければならない障壁となるのです。
ArmoryのROMIX/メモリハード設計
Armoryは、ROMIX(scryptでも採用されているコア構造)に基づいて構築されたメモリハードなKDFを採用していました。 「メモリハード」とは、各推測に時間だけでなく大量のRAMを必要とすることを意味し、これにより攻撃者が使用する大規模並列ハードウェアを意図的に無力化します。各推測に多量のメモリが必要であれば、数百万回の推測を安価に並列処理することは不可能です。Armoryは、KDFを作成したマシンに合わせてKDFを調整しているため、推測1回あたりのコストはそのハードウェアを反映したものとなっています。
これが景気回復にとって何を意味するのか
実際の問題として、Armoryによるパスワード復旧は「推測回数に制限がある」ものであり、瞬時に行われるものではありません。各パスワード候補の検証には多大なコストがかかるため、長いパスワードに対する手探り式の無計画な総当たり攻撃は、単に現実的ではありません――到底完了することはないでしょう。したがって、復旧の成否は候補リストの質にかかっています。検索対象が所有者が実際に覚えている内容に近ければ近いほど、コストのかかる推測の回数は少なくて済みます。ここでは、単なるハードウェアの性能よりも、優れたヒントの方がはるかに重要です。
KDFパラメータが重要な理由
推測を正しく検証するには、ArmoryのKDFパラメータ(設定されたメモリ量と反復回数)を正確に再現する必要があります。これは、導出される鍵がこれらのパラメータに依存しているためです。これらのパラメータはウォレットに保存されているため、フォレンジック作業の一環として、それらを読み出し、同じ導出プロセスを忠実に再現する必要があります。パラメータを間違えると、パスワードが正しくてもすべての推測が失敗してしまいます。これは、他のフォーマット固有のウォレットでもユーザーを陥れるのと同じ罠です。
現実的な回復への取り組み
実用的なアプローチは、これを「一斉探索」ではなく「精密探索」として扱うことです。つまり、KDFのパラメータを抽出し、メモリハードな導出プロセスを再現し、所有者が覚えているすべての情報(長さ、構造、断片、習慣など)から作成した候補リストを用いて、KDFを効率的に実行できる十分なメモリを備えたハードウェア上で処理を行うのです。 推測1回あたりの処理速度は軽量ウォレットよりも遅くなりますが、適切に構成されたリストであれば十分に実行可能であり、Armoryウォレットには多くの場合、その労力を正当化するほどの多額の長期保有資産が保管されています。
Armoryウォレットが動かなくなったとき
Armory自体は、積極的なメンテナンスが行われなくなったため運用が困難になり、多くの所有者は、パスワードを忘れてしまっただけでなく、最新のシステムでは正常に起動しなくなったアプリケーションによってアクセスできなくなっています。復旧には、多くの場合、ウォレットファイルを直接操作し、元のソフトウェアの外でその暗号処理を再現する必要があります。これにより、アプリケーションが動作しなくなったという問題を回避しつつ、ウォレットの暗号化に使用されたKDFを尊重することができます。
旧バージョンのArmoryウォレットをお持ちの場合
もし、資金が入ったArmoryウォレットをお持ちで、パスワードが思い出せない場合でも、心強いニュースがあります。復旧に時間がかかる「記憶負荷の高いKDF」は、そのウォレットが真にしっかりと保護されていたことを意味しています。また、パスワードをある程度覚えていれば、復旧は現実的に可能です。復旧後は、鍵をメンテナンスが行き届いた最新のウォレットにエクスポートすることで、放置されたソフトウェアを使い続けるという継続的な問題を回避できます。
Armoryと他のウォレットとの比較
Armoryを復旧難易度のスペクトラム上に位置づけることが役立ちます。高速なKDFを備えた軽量ウォレットは、膨大な速度で検索できるため、パスワードの記憶が曖昧な場合でも復旧に成功することがよくあります。一方、Armoryはその対極に位置しています。メモリ負荷の高い導出方式を採用しているため、1回の推測にかかるコストが高く、検索は効率的で、十分な情報に基づいたものでなければなりません。 だからといって、はっきりと覚えているパスワードの復元が難しくなるわけではありません(強力なヒントがあれば、どちらの場合でもすぐに解決します)。しかし、高速なウォレットでは通用するかもしれない、漠然として広範囲にわたる推測範囲が、Armoryでは現実的ではなくなるということです。要するに、Armoryは正確さを重視します。所有者がパスワードをより的確に説明できればできるほど、KDFが障害となることは確実に少なくなります。
当社のドキュメント
KeychainXでは、ウォレット形式のフォレンジック調査の一環として、ArmoryのKDFについてここで解説しています。なぜなら、メモリハードな導出プロセスを忠実に再現し、所有者の記憶に合わせて検索を最適化することこそが、Armoryの復旧が実現可能か否かを分ける鍵だからです。この内容は、本セクションの他のフォーマットに関する調査と並んで掲載されています。もしArmoryウォレットにアクセスできなくなってしまったとしても、KDFは壁ではあっても、行き止まりではありません。
よくある質問
アーモリーの復旧を始めるには、何が必要ですか?
Armoryウォレットファイル(KDFパラメータが保存されている)と、パスワードに関するあなたの記憶――長さ、構成、断片、使用習慣など。手がかりが詳細であればあるほど、記憶に依存した探索が実現しやすくなります。
Armoryのパスワード再設定はなぜ時間がかかるのですか?
Armoryは、メモリ負荷の高いROMIX鍵導出関数を使用しており、これにより各パスワードの推測に意図的に多くの時間とRAMを要するようになっています。これにより、ブラインド・ブルートフォース攻撃は無効化されるため、復元には適切に構成された候補リストが必要となります。
Armoryウォレットはまだ復元できるのでしょうか?
はい、パスワードを十分に覚えていれば可能です。当社はArmoryのKDFパラメータを正確に再現し、KDFを実行するのに十分なRAMを搭載したハードウェア上で、ヒントをもとにメモリ形状の検索を実行します。
動作させるには「Armory」ソフトウェアが必要ですか?
必ずしもそうとは限りません。復元処理は、多くの場合、ウォレットファイルから直接行われ、元のアプリケーションの外でその暗号処理を再現します。これにより、最新のシステムではArmoryが正常に動作しなくなっているという問題も回避できます。
正しいパスワードを入力しているのに、なぜ認証に失敗するのですか?
KDFパラメータが正確に再現されない場合、導出される鍵は誤ったものとなり、正しいパスワードを入力しても認証に失敗します。保存されたパラメータを読み取り、導出プロセスを忠実に再現することも、作業の一部です。
回復にはどれくらいの費用がかかりますか?
成功報酬型:ウォレットを開封できた場合にのみ、回収額の一定割合を受け取り、前払いは一切ありません。
Armoryウォレットにログインできなくなりましたか?
メモリ負荷の高いKDFは、行き止まりではなく、越えられない壁ではありません。適切なパスワード管理さえ行っていれば、復元は可能です。お持ちの状況を教えてください。24時間以内に正直な評価をお伝えします。