SSH や OpenVPN の鍵を見直す時、昔から使っている RSA 鍵をそのまま使い続けるべきか、それとも Ed25519 に移行するべきかで迷うことがあります。
結論から言うと、新しく作る SSH 鍵であれば、基本的には Ed25519 を第一候補にしてよいと思います。一方で、RSA がただちに危険という話ではありません。既存環境の互換性、証明書、古いクライアント、VPN 製品との関係を見ながら、段階的に移行するのが現実的です。
この記事では、RSA、ECDSA、Ed25519、X25519 の違いを、SSH と OpenVPN の運用目線で整理します。ポイントは、Ed25519 は署名用、X25519 は鍵交換用であり、似た名前でも役割が違うという点です。
書籍
暗号技術入門 第 3 版 秘密の国のアリス
公開鍵暗号、電子署名、証明書、鍵交換など、SSH や TLS の前提になる暗号技術を確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
RSA から Ed25519 へ移行する理由
RSA は長く使われてきた公開鍵暗号で、互換性という点では今でも強い選択肢です。十分な鍵長を使っていれば、RSA がすぐ使えなくなるわけではありません。
ただし、RSA は安全性を高めるために鍵長を大きくする方向になりやすく、鍵生成、署名、検証、ファイルサイズ、証明書サイズの面で重くなります。SSH の公開鍵認証のように日常的に扱う用途では、より小さく扱いやすい Ed25519 の方が自然です。
Ed25519 は EdDSA の代表的な実装で、短い鍵長で十分な安全性を持ち、署名と検証が高速で、実装上の扱いも比較的単純です。RFC 8032 では、EdDSA の利点として高い性能、小さい公開鍵と署名、乱数依存を減らせる設計、サイドチャネル攻撃への配慮などが説明されています。
RSA・ECDSA・Ed25519・X25519 の違い
まず、名前が似ているものを役割で分けます。ここを混ぜると、SSH 鍵、TLS 証明書、鍵交換の説明が崩れます。
| 名称 | 主な役割 | 用途 | 運用上の見方 |
|---|---|---|---|
| RSA | 署名・暗号化・古い鍵交換方式 | SSH 鍵、TLS 証明書など | 互換性は高い。新規鍵では鍵長と将来性を考える |
| ECDSA | 署名 | SSH 鍵、証明書など | RSA より軽いが、曲線選択や実装への好みが分かれやすい |
| Ed25519 | 署名 | SSH 公開鍵認証、署名用途 | 新規 SSH 鍵では扱いやすい第一候補 |
| X25519 | 鍵交換 | TLS、SSH の鍵交換など | Ed25519 と似た名前だが、署名ではなく鍵共有に使う |
特に重要なのは、Ed25519 と X25519 を同じものとして扱わないことです。どちらも 25519 系の曲線に関係しますが、Ed25519 は署名、X25519 は鍵交換です。
SSH では Ed25519 鍵を新規作成する
OpenSSH で Ed25519 鍵を作る場合は、ssh-keygen で鍵種別に ed25519 を指定します。
ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_ed25519-t ed25519 は鍵の種類を Ed25519 にする指定です。-a 100 は秘密鍵ファイルを保護する KDF のラウンド数で、パスフレーズ付き秘密鍵を少し堅く扱いたい場合に指定します。
作成した公開鍵は次のように確認できます。
ssh-keygen -l -f ~/.ssh/id_ed25519.pub
ssh-keygen -lf ~/.ssh/id_ed25519.pub -E sha256公開鍵をサーバーへ登録する場合は、従来どおり authorized_keys に配置します。鍵の種類が Ed25519 になっても、SSH 公開鍵認証の運用そのものは大きく変わりません。
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@example.com既存 RSA 鍵はすぐ消さない
RSA 鍵から Ed25519 鍵へ移行する時は、いきなり既存 RSA 鍵を削除しない方が安全です。まず Ed25519 鍵を追加し、ログイン確認を行い、運用対象のクライアントや自動処理が Ed25519 で問題なく動くことを確認してから、古い RSA 鍵を整理します。
- 新しい Ed25519 鍵を作成する
- 対象サーバーの
authorized_keysに Ed25519 公開鍵を追加する - 別セッションを維持したまま Ed25519 鍵でログイン確認する
- 自動実行、バックアップ、監視、CI などの接続元を確認する
- 不要になった RSA 公開鍵を段階的に削除する
ssh-rsa と RSA 鍵そのものは分けて考える
SSH では、RSA 鍵そのものと ssh-rsa 署名アルゴリズムを分けて考える必要があります。問題になりやすいのは、RSA 鍵を使うこと自体よりも、古い SHA-1 ベースの ssh-rsa 署名です。
そのため、古い機器や古い OS との接続で RSA 鍵が必要な場合でも、可能であれば rsa-sha2-256 や rsa-sha2-512 を使える状態にする方が自然です。新規に作る通常の SSH 鍵では Ed25519 を使い、互換性が必要な場所だけ RSA を残す、という考え方が扱いやすいです。
OpenVPN で Ed25519 証明書を使う時の注意点
OpenVPN で easy-rsa を使っている場合、環境によっては EdDSA / Ed25519 の証明書を作成できます。設定例としては、easy-rsa の vars に次のような指定を入れます。
set_var EASYRSA_ALGO ed
set_var EASYRSA_CURVE ed25519ただし、ここで指定しているのは証明書の署名に使う鍵の種類です。OpenVPN の TLS 鍵交換で X25519 を使うかどうかは、OpenVPN、OpenSSL、TLS バージョン、設定、相手側の対応に依存します。Ed25519 証明書にしたから、自動的に鍵交換も X25519 になると考えない方が安全です。
OpenVPN では、証明書の署名方式、TLS の鍵交換、データチャネル暗号、tls-crypt / tls-auth のような制御チャネル保護を別々に見ます。RSA から Ed25519 へ移行する場合も、証明書だけでなく、クライアント互換性と TLS 設定を合わせて確認する必要があります。
Ed25519 に移行しても量子耐性は得られない
Ed25519 は現在の実用暗号としては扱いやすい選択肢ですが、量子計算機に対する耐性を持つ方式ではありません。RSA と同じく、十分に強い量子計算機が現実化した場合には、別の耐量子暗号への移行が必要になります。
したがって、Ed25519 への移行は 量子耐性を得るため ではなく、現在の SSH や証明書運用において、より小さく、速く、実装しやすい署名方式へ寄せるためのものです。
運用方針としてのまとめ
RSA から Ed25519 への移行は、古い暗号を恐れて一気に捨てる話ではありません。新規作成する鍵は Ed25519 を基本にし、古い接続先や製品互換が必要なところだけ RSA を残す、という段階的な整理が現実的です。
| 用途 | 基本方針 |
|---|---|
| 新規 SSH ユーザー鍵 | Ed25519 を第一候補にする |
| 既存 SSH 鍵 | Ed25519 を追加して動作確認後、不要な RSA 鍵を削除する |
| 古い機器との接続 | 互換性のため RSA を残す場合がある |
| OpenVPN 証明書 | Ed25519 証明書の対応可否と、TLS 鍵交換設定を分けて確認する |
| 長期的な暗号移行 | Ed25519 は現行世代の整理であり、耐量子暗号とは別問題として扱う |
新規 SSH 鍵は Ed25519、互換性が必要な場所には RSA を限定的に残す。このくらいの距離感が、現時点では一番扱いやすいと思います。
参考
- RFC 8032 – Edwards-Curve Digital Signature Algorithm (EdDSA)
- RFC 8709 – Ed25519 and Ed448 Public Key Algorithms for the Secure Shell (SSH) Protocol


