MENU

SSH鍵方式の変遷とEd25519への移行メモ

長年SSH鍵を生成する際には ssh-keygen -t rsa が定番であった。しかし近年、セキュリティ界隈では「Ed25519」方式が推奨されるようになっている。本記事ではRSAからEd25519への変遷を整理し、その背景と注意点を備忘録としてまとめる。

目次

RSAの現状と課題

RSAは公開鍵暗号の古典的方式であり、長年にわたって安定して使われてきた。現在でも2048bitまたは4096bitの鍵長を採用すれば、現実的な攻撃に対して十分な強度を持つ。しかしRSAには次のような課題がある。

第一に、鍵生成・署名・検証の計算コストが大きい。特に組み込み機器や仮想環境ではパフォーマンス低下が無視できない。第二に、十分な安全性を確保するには鍵長を増やす必要があり、その結果として鍵サイズや通信オーバーヘッドが増加する。第三に、量子計算の実用化が進めばRSAも楕円曲線暗号も同様に破られる可能性があるため、将来的な耐性は限定的である。

このようにRSAは依然として安全ではあるが、効率面で時代遅れとなりつつある。

Ed25519とは何か

Ed25519は楕円曲線暗号の一種であり、正式には「Edwards curve over the prime field 2²⁵⁵−19」を指す。この“25519”という数字は、基礎となる素数体の法 2^255 - 19 に由来する。Daniel J. Bernsteinによって設計され、高速性・安全性・実装の簡潔さを兼ね備えている点が特徴である。

Ed25519の主な利点は次の通りである。

  • 鍵と署名のサイズが小さい(64バイト程度)
  • 署名と検証が高速
  • タイミング攻撃などの実装依存の脆弱性に強い
  • 鍵長の指定が不要で、常に固定長で安全な設計になっている

このため、OpenSSH 6.5以降ではデフォルト推奨方式としてEd25519が採用されている。

注意すべき点とトレードオフ

Ed25519は優れた方式であるが、RSAの完全上位互換ではない。まず、古いシステムではEd25519鍵に対応していないことがある。特にレガシーなネットワーク機器や古いクラウド環境では、接続できない可能性がある。次に、Ed25519は鍵長を調整できないため、「より長い鍵を使いたい」という要求には応えられない。また、Ed25519の署名方式(EdDSA)はRSAのようにX.509やPGP証明書体系と互換性がない。

したがって現実的には、新規環境ではEd25519を採用し、古い環境との互換性を保つためにRSAも併用するのが妥当である。

Ed25519鍵の作成方法

Ed25519鍵を生成する手順はRSAとほとんど同じである。違いは-tオプションだけである。

ssh-keygen -t ed25519 -C "[email protected]"

上記コマンドを実行すると、~/.ssh/id_ed25519(秘密鍵)と ~/.ssh/id_ed25519.pub(公開鍵)が生成される。公開鍵を接続先サーバーの ~/.ssh/authorized_keys に追記すれば、すぐに利用可能になる。RSA鍵を残しておきたい場合も問題なく共存でき、SSHクライアントは自動的に適切な鍵を選択する。

接続先ごとに鍵を明示的に切り替えたい場合は、~/.ssh/config に以下を記述する。

Host myserver
    HostName example.com
    User username
    IdentityFile ~/.ssh/id_ed25519

どの鍵が使用されているか確認するには、次のように実行する。

ssh -v myserver

ログに Offering public key: /home/you/.ssh/id_ed25519 と表示されれば、Ed25519鍵が使われている。

まとめ

Ed25519は、RSAと比較して速度・安全性・実装の簡潔さの点で優れている。とはいえ、RSAも現状では十分な安全性を維持しており、量子計算機が登場するまではどちらも有効である。結局のところ、SSHで困らない範囲ではどちらを選んでもよいが、これから新しく鍵を作るならEd25519が自然な選択である。

目次