Ed25519 - 暗号化全般

暗号化全般 | IT用語集

Ed25519とは

Ed25519は、Daniel J. Bernsteinらによって設計されたデジタル署名アルゴリズムです。Edwards曲線(Curve25519)を使用し、高速な署名生成・検証と強力なセキュリティを両立しています。

Ed25519の特徴:

  • 短い鍵長:256ビット(RSA-3072と同等の安全性)
  • 高速:署名生成・検証が非常に速い
  • 決定論的:同じ入力から常に同じ署名が生成
  • サイドチャネル攻撃に強い:設計段階から考慮

AIエンジニアとしての実体験

AIエンジニアとして、Ed25519はSSH鍵の標準として使用しています。RSA鍵と比較して、生成が速く、鍵ファイルサイズも小さくなります:

# Ed25519 SSH鍵の生成
ssh-keygen -t ed25519 -C "your_email@example.com"

# 生成される鍵(非常に短い)
# 公開鍵: 68バイト(Base64エンコード後)
# 秘密鍵: 399バイト

# RSA 4096との比較
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# 公開鍵: 725バイト
# 秘密鍵: 3,243バイト

Ed25519 vs RSA vs ECDSA

アルゴリズム鍵長速度推奨度
Ed25519256ビット最速✅ 最推奨
ECDSA P-256256ビット速い✅ 良い
RSA 30723072ビット遅い⚠️ 互換性用

使用例

SSH設定での優先順位

# ~/.ssh/config
Host *
    IdentityFile ~/.ssh/id_ed25519
    HostKeyAlgorithms ssh-ed25519,ecdsa-sha2-nistp256,rsa-sha2-512
    PubkeyAcceptedAlgorithms ssh-ed25519,ecdsa-sha2-nistp256,rsa-sha2-512

Pythonでの署名

from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey
from cryptography.hazmat.primitives import serialization

# 鍵ペア生成
private_key = Ed25519PrivateKey.generate()
public_key = private_key.public_key()

# 署名
message = b"Hello, World!"
signature = private_key.sign(message)

# 検証
public_key.verify(signature, message)

最新動向(2026年)

Ed25519の普及

OpenSSH 8.0以降でEd25519がデフォルトで生成されるようになり、GitHub、GitLabなどでも推奨されています。

Ed448

より長い曲線(448ビット)を使用するEd448も利用可能で、より高いセキュリティマージンを提供します。

トラブル事例と対策

⚠️ 古いシステムとの互換性

症状:レガシーシステムがEd25519をサポートしない

対策:RSA鍵を併用し、ssh-configで使い分ける。

権威あるリソース

関連用語

📝 関連ブログ記事

【2026年最新】OpenSSLの深刻な問題とは?

SSH鍵管理のご相談