ECDSA (P-256) 暗号化 & 復号

無料オンライン ECDSA (P-256) 暗号化 & 復号 ツール。100% ローカル処理 — データは端末の外に出ません。

National Standards
Other
出力

結果がここに表示されます...

入力 暗号化

Usage Guide

ECDSA (P-256) について

ECDSA(楕円曲線デジタル署名アルゴリズム)は、 NIST P-256 曲線(secp256r1 または prime256v1 とも呼ばれる)を使用した、広く普及したデジタル署名標準です。HTTPS/TLS 証明書、コード署名インフラ、多くのブロックチェーンプロトコルの基盤となっています。P-256 は 128 ビットのセキュリティを提供し — RSA-3072 に相当 — 鍵をコンパクト(各 32 バイト)に保ちます。WebCrypto、Java、Go、Python、および実質的にすべての TLS ライブラリが P-256 をネイティブにサポートしています。

署名アルゴリズム — 暗号化ではありません: ECDSA はデジタル署名アルゴリズムです。特定の秘密鍵の保持者が メッセージに署名したことを証明します — データを暗号化しません。データの機密性を保つには、ECDSA 署名を対称暗号と組み合わせてください。例: ChaCha20-Poly1305 または AES-256-GCM

使用手順

このツールは P-256 鍵ペア生成、メッセージ署名、署名検証をサポートしています:

1. 鍵ペアを生成「Generate Key Pair」をクリックして、関連付けられた秘密鍵/公開鍵ペアを作成します。両方の鍵は PEM 形式で出力されます(-----BEGIN PRIVATE KEY----- / -----BEGIN PUBLIC KEY-----)。
2. メッセージに署名「Sign」モードを選択します。入力フィールドにメッセージテキストを入力し、鍵パラメータに PEM 秘密鍵を貼り付けます。「Encrypt」をクリックすると、IEEE P1363 形式(r‖s、DER ではない)の Base64 エンコードされた 64 バイト署名が出力されます。
3. 署名を検証「Verify」モードを選択します。入力を「message|signature_base64」(パイプ区切り)として入力します。鍵パラメータに PEM 公開鍵を貼り付けます。「Decrypt」をクリックすると、「✓ Signature verified」またはエラーが出力されます。
4. 鍵の安全な保管PEM 秘密鍵を安全な場所(パスワードマネージャー、暗号化されたボールト)に保存します。公開鍵は自由に共有できます。秘密鍵を失うことは署名能力を失うことを意味します — 回復手段はありません。
ブラウザのみ: すべての鍵生成と署名操作は、 WebCrypto API を使用してブラウザ内で完全に実行されます。鍵や メッセージがサーバーに送信されることはありません。

鍵の形式

このツールの ECDSA P-256 鍵は PEM エンコーディング(Base64 でラップされた DER)を使用します:

秘密鍵-----BEGIN PRIVATE KEY-----(PKCS#8 形式)で始まる PEM ブロック。32 バイトのスカラー秘密鍵が含まれます。厳密に機密を保持してください。
公開鍵-----BEGIN PUBLIC KEY-----(SubjectPublicKeyInfo / X.509 形式)で始まる PEM ブロック。65 バイトの非圧縮曲線点(04 || x || y)が含まれます。公開して共有しても安全です。
署名Base64 エンコードされた 64 バイト値:r(32 バイト)と s(32 バイト)を連結 — IEEE P1363 形式。注意:OpenSSL や多くのライブラリは DER エンコードされた署名を使用します;直接互換性はありません。
検証入力形式検証時、入力フィールドにはパイプ文字で結合されたメッセージと Base64 署名が含まれている必要があります:message|signature_base64

ECDSA vs EdDSA

ECDSA と EdDSA はどちらも楕円曲線署名アルゴリズムですが、重要なセキュリティ特性で異なります:

ノンスの安全性ECDSA は署名ごとに暗号的にランダムなノンス(k)を必要とします。ノンスが 2 つの署名で再利用された場合、攻撃者は代数的に秘密鍵を完全に復元できます。これは 2010 年に Sony PS3 の署名鍵が危殆化された方法と全く同じです。EdDSA はノンスを秘密鍵とメッセージから決定論的に導出します — ノンスの再利用は数学的に不可能です。
決定論的署名EdDSA(Ed25519)は同じメッセージ+鍵の組み合わせに対して毎回同じ署名を生成します。ECDSA はランダムなノンスにより毎回異なる署名を生成します。決定論的署名はテストを簡素化し、再現可能なビルドの検証を信頼性高く行えます。
曲線の設計P-256(secp256r1)は広い互換性を持つ NIST 標準化曲線です。Ed25519 はサイドチャネル攻撃への耐性と洗練された算術演算のために設計された Twisted Edwards Curve25519 を使用します。どちらも約 128 ビットのセキュリティを提供します。
推奨事項新しいプロジェクトでは、決定論的署名と実装エラーへの強い耐性のために EdDSA(Ed25519)を優先してください。ECDSA P-256 は、Ed25519 をまだサポートしていない既存の TLS インフラやハードウェアセキュリティモジュールとの互換性が必要な場合に使用してください。
量子耐性: RSA や EdDSA と同様に、ECDSA は Shor のアルゴリズムを実行する 十分に強力な量子コンピュータに対して脆弱です。耐量子セキュリティには、 ML-DSA(CRYSTALS-Dilithium)などの NIST 標準化アルゴリズムを 検討してください。ECDSA P-256 は現在、古典的な(非量子)脅威 モデルに対して最良の実用的選択であり続けています。

FAQ

Q: ECDSA と EdDSA の違いは何ですか?

A: ECDSA と EdDSA はどちらも楕円曲線署名アルゴリズムですが、重要な点で異なります。 ECDSA(NIST 曲線 P-256、P-384 で使用)は署名ごとに ランダムなノンス(k)を必要とします — ノンスが再利用されたり弱い場合、 秘密鍵を完全に復元できます。これは 2010 年に Sony PlayStation 3 の 秘密鍵が抽出された方法です。EdDSA は秘密鍵とメッセージ ハッシュから決定論的に導出されたノンスを使用し、ノンスの再利用を 数学的に不可能にします。新しい実装では EdDSA が ECDSA より強く推奨 されます。

Q: ECDSA でのノンスの再利用がなぜそれほど危険なのですか?

A: ECDSA では、各署名に秘密のランダム値 k(ノンス)が必要です。同じ ノンス k で 2 つの異なるメッセージに署名した場合、両方の署名を 観察した攻撃者は単純な代数を使って秘密鍵を完全かつ不可逆的に 復元できます。これは理論上の話ではありません:PlayStation 3 は 2010 年に、 Sony がすべてのファームウェア署名に同じノンスを再利用したときに 解読されました。解決策は、各署名に暗号的にセキュアな乱数生成器を 使用すること(WebCrypto が行うように)か、決定論的導出によって ノンス問題を完全に排除する EdDSA に切り替えることです。

Q: ECDSA はデータを暗号化できますか?

A: いいえ。 ECDSA はデジタル署名アルゴリズムのみです — データを暗号化または復号化することはできません。署名は真正性を 証明します(誰がメッセージを作成したか)が、機密性は提供しません (誰でもメッセージを読めます)。データを暗号化するには、対称暗号を 使用してください。例: ChaCha20-Poly1305 または AES-256-GCM。非対称鍵交換には X25519 (ECDH)を使用してください。P-256 の非対称暗号化には ECC/ECIES を使用してください。

Q: P-256 と secp256k1 の違いは何ですか?

A: 名前が似ていますが、P-256(secp256r1、prime256v1)と secp256k1 は異なるパラメータを持つ異なる楕円曲線です。 P-256 は TLS 証明書、政府系システム、WebCrypto で広く使用される NIST 標準化曲線です。secp256k1 はビットコインとイーサリアムが使用 する曲線(通常のトランザクションの ECDSA 署名用)です。secp256k1 は異なる効率特性を持ち、一般的に TLS ライブラリや WebCrypto では サポートされていません。混同しないでください — 2 つの曲線間で鍵と 署名は完全に非互換です。

Q: ECDSA P-256 の署名サイズはどのくらいですか?

A: このツールと WebCrypto が使用する IEEE P1363 形式 の ECDSA P-256 署名はちょうど 64 バイトです:2 つの 32 バイト ビッグエンディアン整数 r と s。Base64 エンコードされると 88 文字です。 DER 形式(OpenSSL、X.509、TLS が使用)では、 同じ署名は可変長で、通常 70〜72 バイトです。DER は正の整数に 先頭ゼロバイトを付けるタグ-長さ-値エンコーディングを使用するためです。 OpenSSL や他のツールと相互運用する際は、形式の違いに注意してください。

Use Cases

推奨:TLS 証明書 / HTTPS

ECDSA P-256 証明書は HTTPS の現代的な標準です。 すべての主要ブラウザと TLS 1.3 でサポートされており、RSA-2048 証明書よりも大幅に小さく高速です。 Let's Encrypt などの認証局は ECDSA P-256 を完全にサポートしています。CSR 用の P-256 鍵を生成するには openssl ecparam -name prime256v1 -genkey を使用してください。

Recommended Configuration:
  • ✅ 新しい TLS 証明書には ECDSA P-256 を使用
  • ✅ すべての現代的なブラウザと TLS 1.3 でネイティブにサポート
  • ✅ RSA 証明書より速い TLS ハンドシェイク
  • ❌ RSA-1024 を使用しない;P-256 は速度とサイズで RSA-2048 を上回る
推奨:コード署名

ECDSA P-256 は macOS、Windows Authenticode、Android APK 署名、 および多くのパッケージマネージャーでコード署名に使用されています。 コンパクトな 64 バイト署名(P1363)または約 71 バイトの DER 署名は、 マニフェストやメタデータへの埋め込みが容易です。リリース成果物に 署名することで、ユーザーはバイナリが公開後に改ざんされていないことを 確認できます。

Recommended Configuration:
  • ✅ ECDSA P-256 でリリース成果物とチェックサムに署名
  • ✅ 署名と共に公開鍵または証明書を公開
  • ✅ 本番署名鍵にはハードウェアセキュリティモジュール(HSM)を使用
  • ❌ 暗号署名なしにソフトウェアを配布しない
推奨:スマートコントラクトの互換性(注意事項あり)

多くのブロックチェーンエコシステムはトランザクション署名に ECDSA を 使用しています。イーサリアム secp256k1 バリアント(P-256 ではない)を使用するため、 ECDSA P-256 鍵はイーサリアムウォレットと 直接互換性がありません。ただし、一部の新しいチェーンと Layer-2 ソリューションは P-256(secp256r1)をサポートしています — 例えば、Passkey ベースのアカウント抽象化(ERC-4337)は P-256 署名を 使用します。鍵を生成する前に、特定のブロックチェーンがどの曲線を 必要とするかを必ず確認してください。

Recommended Configuration:
  • ✅ secp256r1 を明示的にサポートするチェーンには ECDSA P-256 を使用
  • ✅ Passkey / WebAuthn ベースのアカウント抽象化に適している
  • ❌ ビットコインやイーサリアムに P-256 鍵を使用しない — それらは secp256k1 を使用
  • 💡 ブロックチェーン用途の鍵を生成する前に曲線を確認
許容:JWT 署名(ES256)

JSON Web Token(JWT)は ES256 アルゴリズム識別子RFC 7518)を通じて ECDSA P-256 をサポートしています。ES256 は HS256(対称)より 安全で RS256(RSA)より効率的です。ただし、新しいプロジェクトを 始める場合は、決定論的署名特性のために JWT の EdDSA (Ed25519) を検討してください。

Recommended Configuration:
  • ✅ ES256(ECDSA P-256)は既存システムの JWT に堅実な選択
  • ✅ /.well-known/jwks.json に公開鍵を公開
  • ✅ 署名鍵を定期的にローテーション
  • 💡 新プロジェクト:決定論的署名のために EdDSA(Ed25519)を検討
非推奨:新しいプロジェクト — EdDSA を優先

互換性の制約がアルゴリズムの選択を指定しない新しいプロジェクトでは、 ECDSA P-256 より EdDSA (Ed25519) を優先してください。EdDSA の決定論的ノンスは ECDSA の最も危険な 失敗モード(ノンスの再利用)を排除し、Ed25519 は現在 OpenSSH、 TLS 1.3 クライアント証明書、JWT、およびほとんどの現代的な暗号 ライブラリでサポートされています。

Recommended Configuration:
  • ❌ EdDSA が利用可能で互換性要件がない場合は ECDSA P-256 を避ける
  • ✅ SSH、新しい JWT 発行者、モダン API には EdDSA(Ed25519)を使用
  • ✅ TLS 証明書とレガシーシステムの相互運用には ECDSA P-256 を維持
  • 💡 ECDSA は壊れていない — ただし EdDSA より安全に実装するのが難しい

ベストプラクティスのまとめ

  • ECDSA は署名アルゴリズムです — 真正性を証明しますが暗号化はしません。機密性には AES-256-GCM または ChaCha20-Poly1305 を使用してください。
  • ECDSA P-256 は署名ごとに安全なランダムノンスを必要とします。ノンスの再利用は秘密鍵を完全に露出させます(PS3 攻撃)。WebCrypto はこれを自動的に処理します。
  • 秘密鍵(PEM 形式)は厳密に秘密を保持する必要があります。公開鍵(PEM 形式)は自由に配布できます。
  • 署名は「message|signature_base64」入力形式を使用して検証してください。パイプ区切り文字は必須です。
  • レガシー制約のない新しいプロジェクトでは、EdDSA(Ed25519)を優先してください — 決定論的で高速、ECDSA より誤用しにくいです。

ディスカッション&フィードバック

0件のコメント
自分