ECC(楕円曲線暗号)とRSAは、SSL証明書の鍵ペアを生成するために使用される2つのアルゴリズムです。どちらも安全ですが、ECCは同等のセキュリティでより小さな鍵と高速なTLSハンドシェイクを実現します。最新のデプロイメントのほとんどはECCを使用すべきです。
クイック比較
| ECC (P-256) | RSA 2048 | RSA 4096 | |
|---|---|---|---|
| 鍵サイズ | 256ビット | 2048ビット | 4096ビット |
| 同等のセキュリティ | 約128ビット | 約112ビット | 約128ビット |
| TLSハンドシェイク速度 | 最速 | 中程度 | 最遅 |
| 証明書サイズ | 約500バイト | 約1,200バイト | 約2,400バイト |
| 鍵生成 | 高速 | 中程度 | 低速 |
| ブラウザサポート | すべての最新ブラウザ | ユニバーサル | ユニバーサル |
| Let’s Encryptのデフォルト | ✅ 推奨 | サポート | サポート |
| GetHTTPSのデフォルト | ✅ P-256 | 選択可能 | 提供なし |
ECCがほとんどのユースケースに優れている理由
小さな鍵、同じセキュリティ
256ビットのECC鍵は、3072ビットのRSA鍵と同等のセキュリティを提供します。小さな鍵は以下を意味します:
- 証明書が小さい → TLSハンドシェイク中の転送データが少ない
- 署名検証が高速 → CPU負荷の削減
- 帯域幅が低い → 高トラフィックサイトやモバイル接続で重要
高速なハンドシェイク
ECDSA署名操作はRSAよりも大幅に高速で、特にサーバー側で顕著です。高トラフィックサイトでは、CPU使用率とTime to First Byteが削減されます。
前方秘匿性
最新のTLSは鍵交換にECDHE(一時的な楕円曲線Diffie-Hellman)を使用しますが、これは証明書の種類に関係ありません。ただし、ECC証明書はECDHEと自然に組み合わさり、ハンドシェイク全体が楕円曲線の数学を使用するため、RSAとECDHEを混合するよりも効率的です。
RSAが依然として意味を持つ場合
レガシーデバイスの互換性
一部の古いデバイス、組み込みシステム、IoTハードウェアはECCをサポートしていません。以下をサポートする必要がある場合:
- Windows XP SP2以前
- 非常に古いAndroidバージョン(4.0未満)
- 特定の組み込みシステムやハードウェアロードバランサー
…RSA 2048がより安全な選択です。
組織の要件
一部のコンプライアンスフレームワークや内部ポリシーでRSAを指定している場合があります。これはますますまれになっていますが、要件を確認してください。
実際の採用状況
業界はRSAからECCへ移行しています:
| 組織 | 鍵の種類 | 備考 |
|---|---|---|
| ECDSA P-256 | すべてのGoogleプロパティ | |
| Cloudflare | ECDSA P-256 | 無料プラン証明書のデフォルト |
| Facebook / Meta | ECDSA P-256 | 本番Webサーバー |
| Let’s Encrypt | ECDSAを推奨 | 両方発行、ECCを推奨 |
| ZeroSSL | ECDSAが成長中 | ECC発行が51.1%増(全CAで最速の成長) |
サイトが使用しているものを確認する
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null \
| openssl x509 -noout -text | grep "Public Key Algorithm"
# ECDSA: "id-ecPublicKey"
# RSA: "rsaEncryption"
またはブラウザで確認:パドロック → 証明書 → 詳細 → Subject Public Key Info。
GetHTTPSが使用するもの
GetHTTPSは証明書にデフォルトでECDSA P-256鍵を生成し、ACMEアカウントキーにもP-256を使用します。必要に応じて証明書鍵にRSA 2048を選択できます。
P-256(prime256v1またはsecp256r1とも呼ばれる)は:
- すべての最新ブラウザとサーバーでサポート
- Let’s Encryptが推奨
- ほとんどの高トラフィックWebサイト(Google、Cloudflareなど)が使用
- Web Crypto API(GetHTTPSが鍵生成に使用)でサポート
ポスト量子暗号への考慮
ECCもRSAも量子安全ではありません。十分に強力な量子コンピューターがあれば、ショアのアルゴリズムを使って両方を破ることができます。業界はTLS用のポスト量子鍵交換(ML-KEM、旧Kyber)の開発を進めており、既存のアルゴリズムとのハイブリッドモードで使用されます。
これは現在の証明書選択には影響しません。ポスト量子への移行はプロトコルレベル(TLS)で行われ、証明書レベルではありません。今はECCを使用し、TLSスタックに移行を任せてください。
よくある質問
RSAからECC(またはその逆)に切り替えられますか?
はい。希望の鍵タイプで新しい証明書を生成し、サーバー上のファイルを置き換えてください。サーバーは以前の証明書がどのアルゴリズムを使用していたかを気にしません。
WebサーバーにECC用の特別な設定は必要ですか?
いいえ。NginxとApacheはECC証明書をRSAと同じ方法で処理します。同じディレクティブ、同じファイル形式(PEM)です。サーバーは鍵タイプを自動検出します。
P-384はP-256より良いですか?
P-384は約192ビットのセキュリティを提供し、P-256は約128ビットです。実際には、128ビットセキュリティは現在(および予見可能な将来)破れるレベルをはるかに超えています。P-256はより高速で、より広く最適化されています。P-384の特定のコンプライアンス要件がない限り、P-256を使用してください。