手当たり次第に書くんだ

飽きっぽいのは本能

RSA から Ed25519 へ移行する理由 – SSH / OpenVPN の公開鍵アルゴリズムを見直す

SSH や OpenVPN の鍵を見直す時、昔から使っている RSA 鍵をそのまま使い続けるべきか、それとも Ed25519 に移行するべきかで迷うことがあります。

結論から言うと、新しく作る SSH 鍵であれば、基本的には Ed25519 を第一候補にしてよいと思います。一方で、RSA がただちに危険という話ではありません。既存環境の互換性、証明書、古いクライアント、VPN 製品との関係を見ながら、段階的に移行するのが現実的です。

この記事では、RSA、ECDSA、Ed25519、X25519 の違いを、SSH と OpenVPN の運用目線で整理します。ポイントは、Ed25519 は署名用X25519 は鍵交換用であり、似た名前でも役割が違うという点です。

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 と似た名前だが、署名ではなく鍵共有に使う

特に重要なのは、Ed25519X25519 を同じものとして扱わないことです。どちらも 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-256rsa-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 を限定的に残す。このくらいの距離感が、現時点では一番扱いやすいと思います。

参考

RSA から Ed25519 へ移行する理由 – SSH / OpenVPN の公開鍵アルゴリズムを見直す

コメントを残す

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

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

トップへ戻る