ECDSA (P-256) 暗号化 & 復号
無料オンライン ECDSA (P-256) 暗号化 & 復号 ツール。100% ローカル処理 — データは端末の外に出ません。
結果がここに表示されます...
入力 → 暗号化
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 をネイティブにサポートしています。
使用手順
このツールは P-256 鍵ペア生成、メッセージ署名、署名検証をサポートしています:
鍵の形式
このツールの ECDSA P-256 鍵は PEM エンコーディング(Base64 でラップされた DER)を使用します:
ECDSA vs EdDSA
ECDSA と EdDSA はどちらも楕円曲線署名アルゴリズムですが、重要なセキュリティ特性で異なります:
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 を使用してください。
- ✅ 新しい 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 署名は、 マニフェストやメタデータへの埋め込みが容易です。リリース成果物に 署名することで、ユーザーはバイナリが公開後に改ざんされていないことを 確認できます。
- ✅ ECDSA P-256 でリリース成果物とチェックサムに署名
- ✅ 署名と共に公開鍵または証明書を公開
- ✅ 本番署名鍵にはハードウェアセキュリティモジュール(HSM)を使用
- ❌ 暗号署名なしにソフトウェアを配布しない
推奨:スマートコントラクトの互換性(注意事項あり)
多くのブロックチェーンエコシステムはトランザクション署名に ECDSA を 使用しています。イーサリアムは secp256k1 バリアント(P-256 ではない)を使用するため、 ECDSA P-256 鍵はイーサリアムウォレットと 直接互換性がありません。ただし、一部の新しいチェーンと Layer-2 ソリューションは P-256(secp256r1)をサポートしています — 例えば、Passkey ベースのアカウント抽象化(ERC-4337)は P-256 署名を 使用します。鍵を生成する前に、特定のブロックチェーンがどの曲線を 必要とするかを必ず確認してください。
- ✅ 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) を検討してください。
- ✅ 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、およびほとんどの現代的な暗号 ライブラリでサポートされています。
- ❌ 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 より誤用しにくいです。