本文へ移動

ウォレット署名

ウォレット署名は、鍵またはコントラクトアカウントが特定の検証規則の下で正確なデータを承認した証拠です。メッセージ、取引、permit、リプレイ防止、フィッシングの違いを解説します。

更新日

教育目的に限られ、投資またはセキュリティ助言ではありません。悪意ある署名要求は取り消せない損失につながる場合があります。

直接の答え

ウォレット署名は、秘密鍵またはスマートアカウントのポリシーが、特定の方法で符号化されたメッセージを承認したことを示す暗号学的証拠です。検証で分かるのは、その規則と正確なバイト列に対する署名アカウントです。署名者の法的身元、理解、ウェブサイトの説明が正直であることまでは証明しません。

署名は一種類の操作ではありません。トランザクション署名はネットワーク取引を直接承認します。オフチェーンメッセージは資産権限のないログインチャレンジの場合もあれば、リレイヤーが後から提出できる注文、トークン permit、ガバナンス指示などの場合もあります。gas の表示がないことは安全の証明ではありません。

署名前に、要求形式、読める操作内容、ドメインまたは想定検証者、チェーン、検証コントラクト、アドレス、金額、nonce、期限を確認します。説明のないハッシュ、読めないバイト列、予期しないフィールド、十分に表示されない要求は拒否してください。

ウォレット署名
0 / 5
0 項目確認済み; 5 項目が未解決

すべて確認しても、資産・取引・システムの安全性が証明されるわけではありません。

仕組み

  1. アプリケーションがトランザクション、通常メッセージ、または型付きデータを符号化します。データのわずかな変更でも別のダイジェストになります。
  2. ウォレットが解読できる内容を表示し承認を求めます。秘密鍵はウォレットや署名端末の内部に留まり、ダイジェストへの署名だけが返されます。
  3. 検証者が同じダイジェストを再構築します。外部所有アカウントでは公開鍵アドレスを復元または照合し、コントラクトアカウントでは ERC-1271 により現在の検証ポリシーを適用できます。
  4. 検証者はアプリケーション規則に従って結果を解釈します。サーバーはセッションを作成し、コントラクトは permit の消費、注文約定、ガバナンス変更などを実行できます。
  5. リプレイ防止はアプリケーション固有です。EIP-712 は型付き符号化とドメイン分離を提供しますが、リプレイ防止は提供しません。nonce、deadline、想定検証者、チェーンなどの一回限りの境界を実装側が強制します。

ERC-191 は署名データを通常の Ethereum トランザクション符号化から分離し、personal_sign を含む形式を定義します。EIP-712 は構造化フィールドを nameversionchainIdverifyingContract などを含められるドメインに結び付けます。ERC-4361 のログインメッセージにはドメイン、URI、チェーン ID、nonce、発行時刻などがありますが、利用サービス自身の検証も必要です。

Leah は公式サービスで、正しいドメインと URI、新しい nonce、短い有効期間を含む ERC-4361 ログイン要求を受け取ります。内容は認証のみです。確認して署名すると、サーバーが検証してセッションを作ります。このログインメッセージ自体はトークン allowance やオンチェーン取引を作りません。

偽サイトではボタンが「ログイン」でも、ウォレットはトークン、spender、金額、nonce、deadline を含む EIP-712 Permit を表示します。その署名は、トークン規則に従ってリレイヤーに支出権限を作らせる可能性があります。ボタンの文言は署名対象のバイト列を変えないため、Leah は拒否すべきです。

リスクと対策

  • 意味の偽装: permit や注文をログインと表示できます。ボタンではなく、復号されたペイロードと確認済みコントラクトを信頼します。
  • ブラインド署名: 生のハッシュや不透明なバイト列は内容確認を妨げます。信頼できる手段で原文と実行経路を再現できなければ中止します。
  • 誤ったドメイン: ブランド名は chainIdverifyingContract、ドメイン、URI を認証しません。各項目と完全なアドレスを別経路で確認します。
  • リプレイや遅延実行: nonce が消費されるか deadline が過ぎるまで、入手者が署名を使える場合があります。新しい nonce と短い期限を使い、署名を公開しません。
  • 広い権限: permit、注文、セッション鍵、スマートアカウント操作は次のウォレット確認なしに後続操作を許可できます。資産、spender、受取人、金額、範囲、取消方法を確認します。
  • 署名者の侵害: ハードウェアウォレットは鍵抽出を防いでも悪意あるメッセージを安全にはしません。シードフレーズや秘密鍵が漏れた場合はアカウント全体の侵害として扱います。

不審な要求に署名したら、復号ペイロードと署名を公開せず保存し、サイトを切断して署名方式を特定します。オンチェーン承認や取引なら正しいチェーンの状態を確認し、プロトコル所定の取消、nonce 無効化、資産移動を行います。すべてのオフチェーン署名を取り消す共通手段はなく、サイト切断だけでは無効になりません。

よくある誤解

  • 「署名は必ず資金を動かす。」 認証や意思表示だけの署名もありますが、後の資金移動を承認するものもあります。
  • 「gas がなければ無害。」 リレイヤーが gas を払い、署名済み permit、注文、その他の権限を提出できます。
  • 「EIP-712 が安全を保証する。」 構造化表示とドメイン分離を改善しますが、リプレイ防止やアプリ説明の検証はしません。
  • 「復元アドレスは本人の理解ある同意を証明する。」 正確なデータと鍵を検証規則の下で結ぶだけで、法的身元や理解、自由意思は証明しません。
  • 「コントラクトウォレットも通常口座と同じ。」 ERC-1271 の有効性は現在の状態とポリシーに依存し得るため、検証者はコントラクトを呼び出す必要があります。

関連トピック

参考資料

ナビゲーション

Wiki を検索...