ポピュラーサイエンス: Eth2 バリデーターがどのように引き出しキーを生成し保護するか
編集者注: この記事は以下から引用しましたイーサリアム愛好家 (ID: ethfans)イーサリアム愛好家 (ID: ethfans)
イーサリアム愛好家 (ID: ethfans)
最初のレベルのタイトル
イーサリアム 2.0 のキーとイーサリアム 1.0 のキーはほぼ同じ方法で生成および使用されますが、両者には互換性がありません。つまり、イーサリアム 1.0 で生成されたキーはイーサリアム 2.0 では使用できません。
引き出しキー (引き出しキー) は、イーサリアム 2.0 のバリデーターがイーサリアムを引き出すために使用するキー 1 です。
イーサリアム 2.0 のキーとイーサリアム 1.0 のキーはほぼ同じ方法で生成および使用されますが、両者には互換性がありません。つまり、イーサリアム 1.0 で生成されたキーはイーサリアム 2.0 では使用できません。
Ethereum 2.0 のキーは、常に公開キーと秘密キーの形式でペアで表示されます。出金キーはステーカー自身が保持します。ステーカーは資金の提供者であり、当然ながら資金を引き出す権利を保持したいと考えているからです。
出金キーは何に使用されますか?
イーサリアム 2.0 では、出金キー情報は主に、イーサリアム 1.0 では入金トランザクションの作成、イーサリアム 2.0 ではイーサリアムの出金の 2 つの場面で使用されます。
ユーザーがイーサリアム 1.0 にデポジットを預ける場合、出金公開キーの機能は、デポジットを出金秘密キーに関連付けることです。これが、イーサリアム 2.0 が、出金公開鍵を通じて誰が出金する権利を持っているかを知ることができる理由です (出金公開鍵に対応する出金秘密鍵が、預金を引き出す権利を持っています)。次の図に示すように、出金公開キーはデータをイーサリアム入金トランザクションに統合するためにも使用されます。
- 図 1: 入金プロセスでの出金公開キーの使用 (詳細については、この記事を参照してください) (編集者注: 記事の最後にあるハイパーリンク「検証者のライフ プロセス」を参照)-
注意すべき点は、引き出し公開鍵 2 がすべての預金契約で使用されることです。
イーサリアム2.0におけるイーサリアムの出金の詳細はまだ決まっていませんが、今後どのような方法が採用されるにしても出金用秘密鍵への署名と認可が必要となります。
画像の説明
上の例では、関係者は出金秘密キーを使用して出金操作の詳細に署名します。次に、イーサリアム 2.0 ネットワークは、出金操作の署名承認と預金契約内の出金 ID を比較できます (図 1 を参照)。 2 つが一致する場合、引き出し操作を続行できます。
出金機能が利用可能になるまで、出金秘密キーを使用する必要はありません。入金後1年を超えて出金機能が利用できない場合があります。機能が利用可能であっても、それを使用する必要はありません。長期的に報酬を受け取りたい利害関係者にとって、資金を引き出す機能は日常業務にほとんど影響を与えません。
これは、長期的には時々しか使用する必要がない場合でも、短期的には使用する必要がないように、プライベート引き出しキーを保護する必要があることを意味します。言い換えれば、キーのセキュリティと使いやすさのバランスをとるときは、セキュリティを優先する必要があります。
最初のレベルのタイトル
秘密鍵はいくつ保護する必要がありますか?
答える必要があるもう 1 つの質問は、合計でいくつの秘密鍵を保護する必要があるかということです。
2 番目の理由は、同じ秘密鍵を使用すると秘密鍵の価値が高くなりすぎて盗みやすくなるということです。ただし、異なる秘密キーを同じ場所に保存すると、同じ問題が発生する可能性があります。つまり、損失の影響を軽減するには、異なる秘密キーを物理的および論理的に分離する必要があります。
ステップ
つまり、複数のバリデータ ID の背後にある同じエンティティが他人に発見されるのを防ぎ (それぞれの入金が異なるイーサリアム 1.0 アドレスからのものであると仮定して)、出金秘密鍵をそれぞれ個別に保存するか、異なる鍵保護メカニズムを採用したい場合は、複数の秘密キーを使用すると、大きな利点が得られます。一般のユーザーは通常このようなことをしないため、この記事の以降の部分では単一の出金秘密鍵の使用方法のみを紹介しますが、必要に応じて、この記事の内容は複数の秘密鍵を保持する状況にも適用されます。
最初のレベルのタイトル
ステップ
基本的な要件がわかったので、出金キーを作成して保護する方法を見てみましょう。新しいキーを作成する手順は次のとおりです。
出金ウォレットを作成します。
引き出し口座を作成します。
出金ウォレットを削除します。
出金ウォレットが復元できることを確認します。
画像の説明
- 図 3: 出金キーの作成と保護の手順 -
これらの手順はコンピュータ上で完了する必要があるため、コンピュータへの侵入を防ぐように注意してください。この記事の長さは限られているため、コンピュータのハッキングを防ぐ方法については説明しませんが、ユーザーは少なくとも 1 つのことを行う必要があります。それは、上記のプロセスを実行するときにコンピュータをインターネットに接続できないということです。
副題
ethdo wallet create --wallet="Staking wallet" --type=hd --walletpassphrase=secret1
出金ウォレットを作成する
この記事の執筆時点では、BLS12-381 曲線に基づくイーサリアム 2.0 キー ハードウェア ウォレットは開発されていません。したがって、キーはソフトウェアで生成する必要があります。この記事では例として ethdo コマンドライン ツールを使用しますが、他のツールを使用してこれを実現することもできます。
このコード行はニーモニックフレーズを含むウォレットを作成します。ニーモニックは 24 ワードで構成されており、以前に作成したウォレットとウォレット内のすべてのアカウントを復元するために使用できるため、すぐに保護する必要があります。上記のコマンドはニーモニックを出力します。これはオフラインで保存する必要があります。コマンドを入力した後にニーモニックが表示されない場合は、ウォレットを復元できないため、このウォレットを使用しないでください。
Blockplate や Cryptosteel など、ニーモニックを保存する方法はたくさんありますが、ニーモニックをコピーして安全な (できれば耐火性の) 場所に保管することもできます。シードフレーズが失われると資金を引き出すことができなくなるため、安全に保管するために適切な措置を講じてください。
ニーモニックが保存されたら、引き出し口座の作成を開始できます。
ethdo account create --account="Staking wallet/Withdrawal account" --walletpassphrase=secret1 --passphrase=secret2
出金口座を作成する
出金口座を作成するコマンドは次のとおりです。
ウォレットのパスワード (ウォレットパスフレーズ) は、前のセクションで指定したパスワードと同じである必要があります。後者のパスワードはこのアカウントのパスワードにすぎず、アカウントを削除する前に一時的にのみ使用されます。
ethdo account info --account="Staking wallet/Withdrawal account"
副題
名前が示すように、公開キーは公開されており、特別なセキュリティ対策は必要ありません。次のコードを実行して公開キーを表示します。
コードが出金公開キーを出力しない場合は、アカウント作成プロセスでエラーが発生したことを示している可能性があります。以前に実行されたコードにエラーがないか注意深く確認してください。
公開キーは非公開ではありませんが、悪意のある攻撃者があなたの公開キーを自分の公開キーと交換できないようにするための合理的な手順を講じる必要があることに注意してください。
ethdo wallet delete --wallet="Staking wallet"
副題
ethdo wallet info --wallet="Staking wallet"
上記の手順が正しく実行されれば、出金ウォレットを安全に削除できます。以下のコードを実行してください。
次に、次のコードを実行してウォレットにアクセスし、ウォレットが削除されたかどうかを確認できます。
通常、ウォレットが見つからないため、エラー メッセージが返されます。
副題
ethdo wallet create --wallet="Recovery wallet" --type=hd --walletpassphrase=temp1 --mnemonic="MNEMONIC"
出金ウォレットが復元できることを確認する
出金キーを使用して入金を行う前に、出金ウォレットを再構築することが最善です。これにより、当社がプロセスに精通していることが確認されるだけでなく、資金を入金する前に起こり得るエラーがないか最終チェックすることもできます。
ethdo account create --account="Recovery wallet/Withdrawal account" --walletpassphrase=temp1 --passphrase=temp2
最初に行うことは、ニーモニックを使用してウォレットを再構築することです。以下のコードを実行してください。
ethdo account info --account="Recovery wallet/Withdrawal account"
上記のコードのニーモニックを実際のニーモニックに置き換えます。
次に、次のコードを実行して引き出し口座を再構築します。
ethdo wallet delete --wallet="Recovery wallet"
次のコードを実行して公開キーを取得します。
ethdo wallet info --wallet="Recovery wallet"
ウォレットを再度削除するには、以下のコードを実行します。
次に、次のコードを実行してウォレットにアクセスし、ウォレットが削除されているかどうかを確認します。
上記の手順はバリデーターキーにも使用できますか?
脚注
できません。 Ethereum 2.0 検証キーと引き出しキーは非常に異なる方法で使用され、よく知られているほとんどのキーとは異なります。次の記事では、バリデーターキー、その使用法、保護について詳しく説明します。
副題
脚注


