手当たり次第に書くんだ

飽きっぽいのは本能

公開鍵アルゴリズム RSA から Ed25519 へ

OpenSSH や OpenVPN の鍵を、Ed25519(EdDSA)へ移行しました。

長らく RSA を使用してきましたが、今後の時代を見据えると Ed25519 への移行は自然な流れです。

ここでは、各アルゴリズムの違いと設定方法を整理します。

RSA から Ed25519 への移行背景

RSA は 1977 年に登場し、長い間インターネットの安全を支えてきました。

しかし、現代の計算能力の向上に伴い、2048bit でも徐々に安全余裕が減少しており、鍵長を伸ばすたびにパフォーマンスや管理コストが増大します。

一方で、楕円曲線暗号(ECC)はより短い鍵長で同等のセキュリティを実現でき、その中でも Ed25519 は「高速」「安全」「実装が簡潔」という三拍子を備えています。

今では OpenSSH や OpenVPN など多くの現代的ツールが標準でサポートしています。

RSA・ECDSA・Ed25519 の違い

公開鍵暗号には複数の系統があります。

それぞれの特徴を比較すると、移行の方向性が明確になります。

アルゴリズム分類特徴状況推奨度
RSA (2048/4096)古典的公開鍵暗号広い互換性。大きな鍵長が必要安全性は十分だが非効率
DSA署名専用 (離散対数問題)古く脆弱。SSH では廃止済み廃止×
ECDSA (NIST P-256/P-384)楕円曲線署名RSA より短い鍵長。やや複雑一部で使用
Ed25519 (EdDSA)エドワーズ曲線署名高速・安全・単純。現行標準推奨
X25519 (ECDH)鍵交換Ed25519 と同曲線。DH不要推奨

重要なのは、「Ed25519 は署名用」「X25519 は鍵交換用」であり、両者は補完関係にあります。RSA のように一つのアルゴリズムで署名と鍵交換を行うわけではありません。

EdDSA / Ed25519 / X25519 の関係

この章では「EdDSA」「Ed25519」「X25519」がどう関係しているのかを整理します。

EdDSA: 署名アルゴリズムの設計方式

EdDSA(Edwards-curve Digital Signature Algorithm)は、Edwards 形式の楕円曲線上で署名を行うための署名方式の設計です。

RFC 8032 で定義されており、曲線やハッシュ関数を差し替えることで複数の実装形が存在します。「署名の作り方」というレベルの概念であり、特定の曲線に縛られません。

Ed25519: EdDSA の代表的実装

Ed25519 は、EdDSA を Curve25519 の Edwards 形式で実装した具体的な署名アルゴリズムです。

署名と検証が高速で、安全性と実装の単純さを両立しているため、現在の SSH や GPG、OpenVPN でも標準的に採用されています。

要するに、「EdDSA の中でもっとも広く使われている代表的な実装」が Ed25519 です。

X25519: 鍵交換のための別アルゴリズム

名前は似ていますが、X25519 は署名ではなく鍵交換(ECDH)の方式です。

同じ Curve25519 を利用しますが、Ed25519 が Edwards 形式を使うのに対し、X25519 は Montgomery 形式を使います。

数学的には同じ曲線を異なる座標系で扱っているだけですが、用途はまったく異なります。

名称種類主な用途曲線形式
Ed25519署名(EdDSA 実装)デジタル署名(認証)Edwards 形式
X25519鍵交換(ECDH 実装)共通鍵の生成Montgomery 形式

SSH で Ed25519 鍵を生成する

OpenSSH では、次のように ssh-keygen で鍵を生成します。

ssh-keygen -t ed25519

この -t オプションは、署名アルゴリズムの種類を指定するものです。

EdDSA のうち、Ed25519 曲線を利用した形式がここで選ばれます。生成される鍵ファイルは、従来の RSA よりも短く、取り回しが非常に楽です。

ほとんどの現行 Linux ディストリビューション、macOS、Windows (WSL含む) で標準対応しています。

OpenVPN で EdDSA 証明書を使用する

OpenVPN では easy-rsa を使って証明書を管理している環境が多いと思います。バージョン 3.1 以降では EdDSA 証明書を簡単に生成できます。

vars ファイルに次のような設定を追加します。

set_var EASYRSA_ALGO ed
set_var EASYRSA_CURVE ed25519

残りの CA 設定(国名、組織名など)は従来どおりで構いません。ただし、Ed25519 を使用するには以下の前提を満たす必要があります。

  • OpenSSL 1.1.1 以降
  • OpenVPN 2.5 以降

これらが揃っていれば、EdDSA 署名の証明書を問題なく利用できます。

RSA のときに必要だった Diffie-Hellman パラメータ (dh.pem) は不要になります。これは鍵交換が X25519 によって内部で処理されるためです。

パフォーマンスと実運用の観点

Ed25519 の主な利点は以下の通りです。

  • 鍵生成と署名検証が非常に高速
  • 鍵サイズが小さく、ファイル転送や管理が容易
  • 実装が単純で、脆弱性が少ない

体感的な通信速度の向上は限定的ですが、CPU 負荷や接続初期化のオーバーヘッドが減るため、大規模サーバーや VPN ゲートウェイでは有意な差となることもあります。

また、セキュリティ面では RSA より安全性余裕が高く、量子計算耐性こそありませんが、現行の実用暗号としては最も堅牢な部類です。

Ed25519 と X25519 の時代へ

RSA は今でも広い互換性を持つため、完全に排除すべきではありません。

しかし、新しい環境を構築するなら、署名には Ed25519、鍵交換には X25519 を選択するのが現代的です。

公開鍵アルゴリズム RSA から Ed25519 へ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る