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

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

National Standards
Other
出力

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

入力 暗号化

Usage Guide

ECC/ECIES (P-256) について

ECC/ECIES(楕円曲線統合暗号化方式)は、NIST P-256 曲線をベースにしたハイブリッド非対称暗号化方式です。ECDH(楕円曲線ディフィー・ヘルマン)による鍵合意と AES-256-GCM 認証済み対称暗号化を組み合わせています。ECIES は単一の操作で機密性、完全性、真正性を提供します。鍵はコンパクトで、P-256 の秘密鍵はわずか 32 バイトに対し、RSA-2048 は同等のセキュリティに 256 バイトが必要です。

暗号化アルゴリズム — 署名ではありません: ECC/ECIES はデータの機密性を保つ暗号化アルゴリズムです。真正性を証明するが暗号化は行わない署名アルゴリズムである ECDSA とは全く異なります。受信者の公開鍵を使って秘密メッセージを送信する場合に ECIES を使用してください。

使用手順

このツールは ECIES の鍵ペア生成、暗号化(公開鍵使用)、復号(秘密鍵使用)をサポートします:

1. 鍵ペアの生成'Generate Key Pair' をクリックして、リンクされた秘密鍵/公開鍵のペアを作成します。両方の鍵は PEM 形式で出力されます(-----BEGIN PRIVATE KEY----- / -----BEGIN PUBLIC KEY-----)。
2. メッセージの暗号化'Encrypt' モードを選択します。入力フィールドに平文を入力し、鍵パラメータに PEM 公開鍵を貼り付けます。'Encrypt' をクリックすると、一時公開鍵(epk)と暗号文(ct)を含む JSON オブジェクトが出力されます。
3. メッセージの復号'Decrypt' モードを選択します。入力フィールドに JSON 暗号文を貼り付け、鍵パラメータに PEM 秘密鍵を貼り付けます。'Decrypt' をクリックすると、元の平文が出力されます。
4. 秘密鍵の安全な保管秘密鍵はパスワードマネージャー、暗号化ボールト、HSM などの安全な場所に保管してください。公開鍵は自由に共有できます。秘密鍵を失うと、暗号化されたすべてのメッセージを復号できなくなります。
ブラウザのみ:すべての鍵生成と暗号化操作は、WebCrypto API を使用してブラウザ内で完全に実行されます。鍵やメッセージがサーバーに送信されることは一切ありません。

出力形式

ECIES 暗号化は 2 つのフィールドを持つ JSON オブジェクトを生成します:

epk(一時公開鍵)66 の 16 進数文字 = 33 バイト。これは送信者の使い捨て鍵ペアの圧縮 P-256 ポイントです。受信者はこれを自分の秘密鍵と組み合わせて ECDH による共有秘密を再構築します。
ct(暗号文)16 進数文字列。AES-256-GCM で暗号化された平文に続いて、16 バイト(32 の 16 進数文字)の GCM 認証タグが付いています。認証タグにより暗号文の改ざんを検知できます。
出力例{"epk":"02a3f1e2d4c5b6...","ct":"7f8e9d0c1b2a...f3e4d5c6b7a8"}
ノンス(IV)12 バイトの AES-GCM ノンスは HKDF 鍵導出ステップから決定論的に導出されます。鍵導出に組み込まれているため、JSON に個別に保存する必要はありません。

ECIES の仕組み

ECIES は内部的に次のステップを実行するハイブリッド暗号化方式です:

ステップ 1 — 一時鍵ペア送信者は暗号化操作ごとに新しい(一時)P-256 鍵ペアを生成します。この鍵ペアは一度だけ使用され、その後廃棄されます。
ステップ 2 — ECDH 鍵合意送信者は ECDH で共有秘密を計算します:共有秘密 = ECDH(送信者一時秘密鍵, 受信者公開鍵)。受信者も ECDH(受信者秘密鍵, 送信者一時公開鍵) で同じ値を計算できます。
ステップ 3 — HKDF 鍵導出共有秘密は HKDF-SHA256 を通じて 44 バイトを導出します:最初の 32 バイトが AES-256-GCM 暗号化鍵、次の 12 バイトが GCM ノンス(IV)になります。
ステップ 4 — AES-256-GCM 暗号化平文は導出された鍵とノンスを使用して AES-256-GCM で暗号化されます。出力は暗号文と 16 バイトの認証タグを連結したものです。
ステップ 5 — 出力一時公開鍵(圧縮形式、33 バイト)と暗号文を 16 進数文字列としてエンコードし、JSON オブジェクトとして返します。
前方秘密性:各暗号化が新しい一時鍵ペアを使用するため、将来受信者の長期秘密鍵が漏洩しても、過去の暗号文を復号することはできません。このプロパティを前方秘密性(パーフェクトフォワードセクレシー)と呼びます。RSA-OAEP は前方秘密性を提供しません。

FAQ

Q: ECIES と RSA 暗号化の違いは何ですか?

A: ECIES と RSA-OAEP はどちらも非対称暗号化方式ですが、いくつかの重要な点で異なります。鍵サイズ:P-256 秘密鍵は 32 バイト;RSA-2048 は同等のセキュリティに 256 バイトが必要です。速度:ECIES 操作は RSA より大幅に高速です。前方秘密性:ECIES は一時鍵ペアにより前方秘密性を提供しますが、RSA-OAEP は提供しません。新しいシステムでは、非対称暗号化に ECIES が RSA よりも一般的に推奨されます。

Q: 前方秘密性とは何ですか?なぜ重要ですか?

A: 前方秘密性(パーフェクトフォワードセクレシー、PFS)とは、長期秘密鍵が後で漏洩しても過去の暗号化メッセージが安全に保たれることを意味します。ECIES では、各暗号化が使用後に廃棄される新しい一時鍵ペアを生成します。共有秘密は暗号化後に存在しなくなる一時秘密鍵から導出されます。RSA-OAEP は受信者の長期公開鍵を直接使用するため、秘密鍵が漏洩した場合、過去のすべての暗号文が復号される可能性があります。

Q: JSON 出力のフィールドはどういう意味ですか?

A: ECIES 出力 JSON には 2 つのフィールドがあります:epk(一時公開鍵)は 66 の 16 進数文字で、送信者の使い捨て鍵ペアの圧縮 33 バイト P-256 ポイントを表します。ct(暗号文)は AES-256-GCM 暗号化データと 16 バイト GCM 認証タグを含む 16 進数文字列です。JSON 全体を保持する必要があります。フィールドが変更または切り捨てられると、認証エラーで復号に失敗します。

Q: 同じ公開鍵で複数のメッセージを暗号化できますか?

A: はい。同じ受信者の公開鍵を使って好きなだけメッセージを暗号化できます。各暗号化は自動的に新しい一時鍵ペアを生成するため、各暗号文は独立しており、異なる導出鍵とノンスを使用します。ノンスの再利用リスクはありません。

Q: ECC/ECIES は量子コンピュータに対して安全ですか?

A: いいえ。ECIES は楕円曲線離散対数問題(ECDLP)に基づいており、ショアのアルゴリズムを実行する十分に大きな量子コンピュータならこれを解ける可能性があります。RSA も同様です。耐量子非対称暗号化として、NIST は ML-KEM(旧 CRYSTALS-Kyber)を標準化しています。ECIES は今日の古典的な脅威モデルに対する最良の実用的な選択肢です。

Use Cases

推奨:エンドツーエンド暗号化メッセージング

ECIES は、送信者が受信者の公開鍵を知っているエンドツーエンド暗号化メッセージングに適しています。組み込みの前方秘密性により、受信者の秘密鍵が後で漏洩しても、以前に送信されたメッセージは保護されます。

Recommended Configuration:
  • ✅ PEM 公開鍵を送信者に配布する
  • ✅ PEM 秘密鍵は暗号化ボールトまたは HSM に保管する
  • ✅ 前方秘密性は組み込み済み — 各メッセージは新しい一時鍵ペアを使用する
  • ❌ 秘密鍵は誰とも共有しない(送信者も含む)
推奨:大容量データのハイブリッド暗号化

ECIES は大きなファイルに対してハイブリッド暗号化パターンで使用されます:ECIES を使って AES-256-GCM 対称鍵を安全に送信し、その鍵で実際の大きなファイルを暗号化します。TLS、PGP、および多くの実世界の暗号化プロトコルはこのように動作します。

Recommended Configuration:
  • ✅ ECIES を使って対称データ暗号化鍵(DEK)をラップ/送信する
  • ✅ 実際のファイルコンテンツには AES-256-GCM または ChaCha20-Poly1305 を使用する
  • ✅ ECIES でラップされた鍵を暗号化ファイルと一緒に保存する
  • ❌ 数 KB を超えるファイルを ECIES で直接暗号化しない
推奨:RSA-OAEP の代替

現在 RSA-OAEP を非対称暗号化に使用している新しいシステムには、P-256 ECIES が推奨される現代的な代替手段です。はるかに小さな鍵と前方秘密性という追加の利点を備えた同等以上のセキュリティを提供します。

Recommended Configuration:
  • ✅ 新しい非対称暗号化には RSA-OAEP より ECIES を優先する
  • ✅ P-256 (ECIES) 鍵は RSA-2048 鍵の 8 分の 1 のサイズ
  • ✅ ECIES は RSA-OAEP が提供できない前方秘密性を追加する
  • ❌ レガシー互換性が必要でない限り、新しいシステムに RSA-OAEP を維持しない
推奨:API センシティブデータの安全な転送

ECIES は API リクエスト内の機密データを保護できます — たとえば、転送前にサーバーの公開鍵でユーザーのクレジットカード番号や個人データを暗号化するなど。これはトランスポートセキュリティを超えた多層防御を提供します。

Recommended Configuration:
  • ✅ サーバーの PEM 公開鍵を API クライアントに公開する
  • ✅ 送信前に機密フィールド(PII、支払い情報)を暗号化する
  • ✅ 多層防御のために TLS と組み合わせる
  • 💡 各リクエストは自動的に新しい一時鍵を使用 — リクエストごとの鍵ローテーション不要
非推奨:大きなファイルの直接暗号化

ECIES は短いメッセージと鍵のラッピングのために設計されており、大きなファイルを直接暗号化するためのものではありません。正しいパターンはハイブリッド暗号化です:ランダムに生成された AES-256-GCM 鍵(32 バイト)を ECIES で暗号化し、その AES 鍵で実際のファイルを暗号化します。

Recommended Configuration:
  • ❌ 数 KB を超えるファイルを ECIES で直接暗号化しない
  • ✅ ランダムな AES-256-GCM データ暗号化鍵(DEK)を暗号化するために ECIES を使用する
  • ✅ DEK と AES-256-GCM でファイルコンテンツを暗号化する
  • 💡 保存:ECIES 暗号化 DEK + AES 暗号化ファイルコンテンツをセットで

ベストプラクティスの要約

  • ECC/ECIES は暗号化アルゴリズムです — 機密性を提供します。署名アルゴリズムではありません。デジタル署名には ECDSA を使用してください。
  • 前方秘密性は組み込み済みです:各暗号化が新しい一時鍵ペアを生成するため、秘密鍵が後で漏洩しても過去の暗号文は安全に保たれます。
  • 大容量データにはハイブリッド暗号化を使用してください:鍵のラッピングに ECIES、データ自体には AES-256-GCM または ChaCha20-Poly1305。
  • 秘密鍵(PEM 形式)は機密を保持する必要があります。公開鍵(PEM 形式)は暗号化メッセージを送る必要がある誰にでも自由に配布できます。

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

0件のコメント
自分