Ethereumウォレットをオフラインで生成する:完全ガイド
目次
インターネットに接続した状態でEthereumウォレットを生成するのは便利です。しかし、不必要なリスクでもあります。シードフレーズや秘密鍵がネットワーク接続されたデバイスに存在する毎秒、キーロガー、クリップボードマルウェア、過度な権限を持つブラウザ拡張機能、リモートアクセスト型トロイの木馬にさらされています。解決策は簡単です:オフラインでウォレットを生成し、バックアップを書き留め、公開アドレスだけをオンラインに持ち込みましょう。
このガイドでは、エントロピー生成から使用可能なEthereumアドレスまでの完全な技術プロセスを説明し、オフラインで生成した鍵がPolygon、Arbitrum、Optimism、Baseなどのレイヤー2ネットワークでシームレスに機能する理由を解説します。
なぜオフラインで生成するのか?¶
Ethereumウォレットは根本的に1つの秘密鍵にすぎません。その鍵を保持する者が資金を管理します。オンラインサービスや接続されたブラウザを使用してウォレットを生成すると、秘密鍵は完全には制御できないソフトウェアの層を通過します:ブラウザのJavaScriptエンジン、ブラウザ拡張機能、オペレーティングシステムのメモリ管理、そしてデータを漏洩する可能性のあるネットワークスタックです。
オフライン生成はネットワークベクトルを完全に排除します。マシンにネットワーク接続がなければ — WiFi無効、イーサネット未接続、Bluetoothオフ — どんなソフトウェアが実行されていても、秘密鍵がリモートで流出することはありません。
理想的なセットアップは:
- クリーンなマシン(新規インストールのOS、またはライブUSBディストリビューション)。
- いかなる種類のネットワーク接続もなし。
- ランダム性にWeb Crypto APIを使用してブラウザ内で完全に動作するツール。
- シードフレーズを記録するための紙または金属。
SafeSeedのEthereum Seed Phrase Generatorはまさにこのシナリオのために設計されています。完全にクライアントサイドで動作し、API呼び出しなし、サーバー通信なし、アナリティクスなしです。ページをロードし、インターネットから切断し、完全な隔離状態でウォレットを生成できます。オフラインセキュリティプラクティスの幅広い視点については、コールドストレージガイド2026をご覧ください。
secp256k1とKeccak-256¶
2つの暗号プリミティブがEthereumの鍵システムを定義しています:鍵生成のためのsecp256k1楕円曲線と、アドレス導出のためのKeccak-256です。
secp256k1:楕円曲線¶
EthereumはBitcoinからsecp256k1曲線を受け継ぎました。素体上に定義された特定の曲線で、効率性と既知の弱点がないことから選ばれました。曲線の定義方程式は:
y^2 = x^3 + 7 (mod p)
ここでpは256ビットの素数です。システムのセキュリティは楕円曲線離散対数問題(ECDLP)に基づいています:曲線上の公開点が与えられたとき、それを生成したスカラー(秘密鍵)を決定することは計算的に不可能です。
Ethereumの秘密鍵は256ビット整数 — 32バイト、つまり64文字の16進数です。公開鍵は曲線の生成点Gに秘密鍵スカラーを掛けることで導出されます。この乗算は一方向演算です:正方向の計算は容易ですが、逆方向は事実上不可能です。
結果の公開鍵はx座標とy座標を持つ曲線上の点で、非圧縮形式では合計64バイト(128個の16進文字、04プレフィックス付き)です。Solanaが使用するed25519曲線との比較については、secp256k1 vs ed25519をご覧ください。
Keccak-256:公開鍵からアドレスへ¶
Ethereumは公開鍵を直接アドレスとして使用しません。代わりに、非圧縮公開鍵(04プレフィックスなし)にKeccak-256(SHA-3の変形)を適用して32バイトのハッシュを生成します。そのハッシュの最後の20バイトが、0xプレフィックス付きのEthereumアドレスになります。
秘密鍵 (32バイト)
→ secp256k1乗算 → 公開鍵 (64バイト)
→ Keccak-256ハッシュ → 32バイト
→ 最後の20バイトを取得 → Ethereumアドレス (0x...)
このハッシングステップは単なるサイズ削減ではありません。追加の保護層を提供します:secp256k1にアドレスから公開鍵の部分的な回復を可能にする欠陥が発見されたとしても、Keccak-256ハッシュが完全な鍵の回復を著しく困難にします。ただし実際には、アドレスからトランザクションを行うと、完全な公開鍵がトランザクション署名でオンチェーンに公開されます。
シードフレーズからETHアドレスまで¶
ほとんどの現代のウォレットは生の秘密鍵を直接管理することを求めません。代わりにBIP39シードフレーズとHDウォレット導出を使用して、単一のバックアップから鍵のツリーを生成します。
ステップ1:エントロピーの生成¶
プロセスは128ビットまたは256ビットの暗号学的に安全なランダム性(エントロピー)から始まります。このエントロピーがその後のすべての種です。SafeSeedでは、このランダム性はブラウザのcrypto.getRandomValues()から取得され、オペレーティングシステムのCSPRNGから引き出されます。
12語のシードフレーズには128ビット、24語のフレーズには256ビットのエントロピーが生成されます。エントロピーが単語になる完全な過程については、BIP39完全解説をご覧ください。
ステップ2:エントロピーからニーモニック単語へ¶
エントロピーはSHA-256でハッシュされてチェックサムを生成します。チェックサムビットがエントロピーに追加され、結合ビット文字列は11ビットのセグメントに分割されます。各セグメントはBIP39単語リストの2,048語の1つにマッピングされ、12語または24語が生成されます。
ステップ3:ニーモニックからマスターシードへ¶
ニーモニック単語(オプションのパスフレーズ付き)は2,048回の反復でPBKDF2-HMAC-SHA512に入力され、512ビットのマスターシードが生成されます。このマスターシードはHDウォレットツリー全体のルートです。
ステップ4:マスターシードからマスターキーへ¶
512ビットシードは「Bitcoin seed」キーでHMAC-SHA512に入力されます(Ethereumでも同様 — BIP32の規約)。出力は分割されます:左256ビットがマスター秘密鍵、右256ビットがマスターチェーンコードになります。
ステップ5:Ethereum鍵の導出¶
EthereumはBIP44で定義された導出パス m/44'/60'/0'/0/0を使用します。パスの各レベルは子鍵導出を表します:
44'— 目的:BIP44マルチアカウント階層。60'— コインタイプ:60はEthereumのSLIP44インデックス。0'— アカウント:最初のアカウント。0— チェンジ:外部チェーン(受信アドレス)。0— アドレスインデックス:最初のアドレス。
各レベルで、親鍵とチェーンコードがHMAC-SHA512を通じて結合され、子鍵が生成されます。強化導出(アポストロフィで示される)は秘密鍵を入力として使用し、ブランチ間のより強い分離を提供します。
ステップ6:秘密鍵からアドレスへ¶
m/44'/60'/0'/0/0で導出された秘密鍵は256ビット整数です。secp256k1生成点で乗算して公開鍵を生成します。公開鍵はKeccak-256でハッシュされ、最後の20バイトがEthereumアドレスになります。
SafeSeedのEthereum Private Key Generatorで、生のエントロピーから最終アドレスまでの導出の各ステップを確認できます。
レイヤー2ネットワークで同じ鍵¶
Ethereumの最も実用的な特性の1つは、鍵がすべてのEVM互換ネットワークで同一に機能することです。Ethereumメインネットで0xABC...アドレスを制御する同じ秘密鍵が、Polygon、Arbitrum、Optimism、Baseでも0xABC...を制御します。追加の鍵生成は必要ありません。
これはすべてのEVMチェーンが同じ暗号プリミティブ — 署名のためのsecp256k1とアドレス導出のためのKeccak-256 — そして同じアカウントモデルを使用するためです。アドレスは秘密鍵から決定論的に導出され、導出が同一であるためアドレスも同一です。
チェーン間で異なるのはチェーンID — トランザクション署名に埋め込まれたネットワーク識別子(EIP-155)で、リプレイ攻撃を防止します。Polygon(チェーンID 137)のトランザクションに署名すると、その署名はEthereumメインネット(チェーンID 1)では無効です。これはトランザクションレベルの保護であり、鍵レベルのものではありません。
オフライン生成ワークフローにおいて、これは単一のシードフレーズバックアップがすべてのEVMチェーンの資産を保護することを意味します。一度生成し、一度バックアップし、どこでも同じアドレスを使用します。これが慎重なオフライン生成のための最も強力な論拠の1つです:鍵が接触するすべてのチェーンにわたってリスクが増大します。
EVMチェーン間の共有アドレスのセキュリティへの影響については、EVMアドレスセキュリティをご覧ください。
アドレスバリデーターで確認¶
オフラインでウォレットを生成した後、資金を送信する前にアドレスが正しくフォーマットされていることを確認する必要があります。Ethereum Address Validatorを使用して確認します:
- フォーマットチェック: アドレスが
0xで始まり、正確に40文字の16進数文字を含むこと。 - EIP-55チェックサム: 混合ケースエンコーディングが正しいこと。アドレスが適切に生成されていれば、大文字と小文字が小文字アドレスのKeccak-256ハッシュと一致します。
同じエアギャップマシンでバリデーターを実行できます。ツールを開き、切断し、アドレスを貼り付けて検証します。チェックサムが通過すれば、使用した媒体(紙、金属、QRコード)からアドレスが正しく転記されたと確信できます。
様々なチェーンでアドレス検証がどのように機能するかの詳細な説明については、暗号資産アドレスの検証方法をご覧ください。
MetaMaskまたは他のウォレットへのエクスポート¶
シードフレーズが生成され安全にバックアップされたら、最終的にウォレットアプリケーションで使用する必要があります。最も一般的な選択肢はMetaMask(ブラウザ拡張またはモバイル)、Rabby、Rainbow、LedgerやTrezorなどのハードウェアウォレットです。
MetaMaskへのインポート¶
MetaMaskはBIP39シードフレーズを直接受け入れます:
- クリーンなブラウザプロファイルにMetaMaskをインストールします。
- 「既存のウォレットをインポート」を選択します。
- 12語または24語を入力します。
- ローカルパスワードを設定します(これはデバイス上で鍵を暗号化するだけで、シードの一部ではありません)。
MetaMaskはm/44'/60'/0'/0/0で鍵を導出し、対応するアドレスを表示します。オフラインで生成したアドレスと一致することを確認します。一致しない場合、転記中に問題が発生しています — 不一致を解決するまでどちらのアドレスにも資金を送信しないでください。
ハードウェアウォレットへのインポート¶
LedgerとTrezorデバイスは初期化中にBIP39シードフレーズを受け入れます。ハードウェアデバイスの画面で直接フレーズを入力してください — コンピュータでは決して入力しないでください。ハードウェアウォレットは同じパスで同じ鍵を導出し、同じアドレスを生成します。これがオフライン生成と日常使用を組み合わせるゴールドスタンダードです:シードはエアギャップマシンで生成され、秘密鍵はネットワーク接続されたコンピュータに決して存在しません。
複数のアカウント¶
導出パスm/44'/60'/0'/0/0は最初のアカウントを生成します。最後のインデックスを増やすと追加のアドレスが得られます:m/44'/60'/0'/0/1、m/44'/60'/0'/0/2など。すべて同じシードフレーズから導出されます。ほとんどのウォレットは「アカウントを追加」をクリックするとこれを自動的に処理します。
オフラインEthereumウォレット生成は偏執ではありません — 基本的な運用セキュリティです。切断し、生成し、転記するのにかかる数分は、そのアドレスに保有するすべてのETH、トークン、NFTを、すべてのEVMチェーンにわたって、鍵を保有する限り保護する投資です。暗号学は堅牢です。唯一の変数は、それをどれだけ慎重に扱うかです。