EdDSA (Ed25519) 暗号化 & 復号
無料オンライン EdDSA (Ed25519) 暗号化 & 復号 ツール。100% ローカル処理 — データは端末の外に出ません。
結果がここに表示されます...
入力 → 暗号化
Usage Guide
EdDSA(Ed25519)について
EdDSA(Edwards曲線デジタル署名アルゴリズム)はCurve25519を使用した現代的な高性能デジタル署名方式であり、RFC 8032で標準化されています。SSHのデフォルト署名アルゴリズム(OpenSSHデフォルト)として、TLS 1.3クライアント証明書、GPGサブキー、暗号通貨ウォレット(Solana、Cardano)、JWT署名に広く使用されています。Ed25519は驚くほど小さな鍵(各32バイト)と卓越したパフォーマンス(毎秒約100,000回の署名/検証操作)で128ビットセキュリティを提供します。
使用手順
このツールはEd25519鍵ペア生成、メッセージ署名、署名検証をサポートしています:
鍵のフォーマット
このツールのEd25519鍵はコンパクトな16進数フォーマットを使用します:
Ed25519 vs RSA
Ed25519とRSAはどちらもデジタル署名に使用されますが、特性が大きく異なります:
FAQ
Q: EdDSAとECDSAの違いは何ですか?
A: どちらも楕円曲線署名アルゴリズムですが、重要な点で異なります。ECDSA(NIST曲線P-256、P-384を使用)は署名ごとにランダムなnonce(k)が必要です — nonceが再利用されるか弱い場合、秘密鍵を完全に復元できます。これはまさに2010年にSonyのPlayStation 3秘密鍵が抽出された方法です。EdDSAは秘密鍵とメッセージハッシュから決定論的に導出されたnonceを使用するため、nonce再利用が数学的に不可能です。EdDSAはまた、特定のサイドチャネル攻撃に耐性のあるより安全なTwisted Edwards曲線(Ed25519用のCurve25519)を使用します。新しい実装では、EdDSAがECDSAより強く推奨されます。
Q: 決定論的署名がより安全な理由は何ですか?
A: ECDSAでは、各署名のセキュリティは新鮮で暗号学的にランダムなnonceに依存します。攻撃者が同じnonceを使用した2つの署名を取得した場合(nonce再利用)、またはnonceのエントロピーが不十分な場合(弱い乱数性)、単純な方程式を使用して秘密鍵を代数的に復元できます。これは理論的なことではありません — 実際のシステムを破った実績があります(PS3、Bitcoinウォレット)。Ed25519の決定論的署名は秘密鍵シードとメッセージのハッシュからnonceを導出するため、常に一意であり、外部の乱数源に影響されません。署名パスにランダム数生成器がない — 脆弱性の全クラスを排除します。
Q: EdDSAでデータを暗号化できますか?
A: できません。EdDSA(Ed25519)はデジタル署名アルゴリズムのみです — データを暗号化・復号することはできません。署名は真正性を証明します(誰がメッセージを作成したか)が、機密性を提供しません(誰でもメッセージを読めます)。データを暗号化するには、 ChaCha20-Poly1305 や AES-256-GCM などの対称暗号を使用してください。注意:X25519(Curve25519に基づく関連するが異なるアルゴリズム)は鍵交換(Diffie-Hellman)に使用できますが、Ed25519とは異なり、鍵は互換性がありません。
Q: Ed25519 SSH鍵を生成するにはどうすればいいですか?
A: OpenSSHの組み込み鍵生成ツールを使用します:ssh-keygen -t ed25519 -C "your_email@example.com"
これにより~/.ssh/id_ed25519(秘密鍵)と~/.ssh/id_ed25519.pub(公開鍵)が生成されます。Ed25519はOpenSSH 6.5(2014年)以来推奨されているSSH鍵タイプであり、現在ほとんどのディストリビューションでデフォルトです。OpenSSHで生成された鍵はこのツールの16進数フォーマットとは異なるエンコーディング(PEM/OpenSSHフォーマット)を使用していますが、同じ暗号アルゴリズムに基づいています。
Q: 64バイトのEd25519署名には何が含まれていますか?
A: Ed25519署名は2つの32バイト値で構成されています:R(決定論的nonceから導出された圧縮楕円曲線ポイント)とS(nonce、秘密鍵、メッセージハッシュから計算されたスカラー値)。RとSが合わさって64バイトの署名を形成します。検証では公開鍵、メッセージ、Sを使用してRを再構築し、署名内のRと一致するか確認します。検証全体はCurve25519上の高速な体算術のみを含みます — RSAのような剰余指数演算はありません。
Q: Ed25519は量子コンピュータに耐性がありますか?
A: いいえ — 十分に強力な量子コンピュータに対しては耐性がありません。Shorのアルゴリズムを実行する量子コンピュータは、楕円曲線上の離散対数問題を解くことでEd25519を破ることができます。RSAとECDSAにも同じ脅威が適用されます。ただし、128ビット楕円曲線セキュリティを破れる量子コンピュータには、非常に低いエラー率の数千の論理量子ビットが必要です — 現在の技術をはるかに超えています。ポスト量子署名には、NISTがML-DSA(旧CRYSTALS-Dilithium)とSLH-DSA(SPHINCS+)を標準化しました。Ed25519は古典的脅威モデルに対する最善の実用的選択肢であり続け、本番システムで広く使用されています。
Use Cases
推奨:SSH認証鍵
Ed25519はOpenSSH 6.5以来推奨されるSSH鍵タイプであり、現在ほとんどのLinuxディストリビューションとmacOSでデフォルトです。RSA-2048と比較して、Ed25519のSSH鍵はずっと短く(68文字 vs 400+)、生成が速く、認証が速く、弱い乱数性攻撃に対して脆弱ではありません。すべての新しいSSH鍵にはssh-keygen -t ed25519を使用してください。公開鍵をサーバーの~/.ssh/authorized_keysに追加してください。
- ✅ 新しいSSH鍵にはssh-keygen -t ed25519を使用
- ✅ 強力なパスフレーズで秘密鍵を保護
- ✅ 公開鍵はサーバーに自由に配布
- ❌ RSA-1024を使用しない;RSA-2048よりEd25519を推奨
推奨:コード署名とソフトウェア配布
Ed25519はソフトウェアリリース、コンテナイメージ、ファームウェアアップデートへの署名に理想的です。決定論的署名の特性により、同じバージョンは常に同じ署名を生成します — 再現可能なビルドの検証を信頼性の高いものにします。Sigstore、minisign、signifyなどのツールがEd25519を使用しています。GPGはEd25519署名サブキーをサポートしています。コンパクトな64バイトの署名はメタデータやマニフェストファイルに簡単に埋め込めます。
- ✅ Ed25519でリリースアーティファクトとチェックサムに署名
- ✅ 簡単なファイル署名にはminisignまたはsignifyを使用
- ✅ リリースアーティファクトと共に署名ファイルを含める
- ❌ 暗号署名なしでソフトウェアを配布しない
推奨:JWT署名(EdDSAアルゴリズム)
JSON Web Token(JWT)はEdDSAアルゴリズム識別子(RFC 8037)を通じてEd25519をサポートしています。JWTにEdDSAを使用することは、HMAC-SHA256(秘密鍵の共有が必要)より安全でRS256(RSA)より効率的です。サーバーはEd25519秘密鍵でトークンに署名し、クライアントとリソースサーバーは公開鍵で検証します。これにより、ステートレスでスケーラブルな認証が実現します — 認証サーバーとリソースサーバー間で共有秘密は不要です。
- ✅ 新プロジェクトのJWTにEdDSA(Ed25519)を使用
- ✅ /.well-known/jwks.jsonエンドポイントで公開鍵を公開
- ✅ 署名鍵を定期的にローテーション
- ❌ 複数サービスが検証する場合にHS256(対称)を使用しない
推奨:APIリクエスト認証
Ed25519はリクエストペイロード(メソッド + パス + タイムスタンプ + ボディハッシュ)を秘密鍵で署名することでAPIリクエストを認証できます。APIサーバーはクライアントの登録済み公開鍵を使用して署名を検証します。これはAPIキー(漏洩する可能性のある秘密)よりも安全です — 秘密鍵がクライアントを離れることがないからです。 HMAC-SHA256 と比較して、サーバーが秘密を保存する必要がありません — サーバーが侵害されてもすべてのクライアントが影響を受けません。
- ✅ リプレイ攻撃防止のためタイムスタンプを含めてリクエストペイロードに署名
- ✅ クライアント公開鍵をサーバー側に登録(秘密共有不要)
- ✅ サーバーがクライアントの秘密を知るべきでない場合はHMACよりEd25519を使用
- 💡 署名ペイロードにnonceまたはタイムスタンプを含める
許容:暗号通貨ウォレット署名
Ed25519はSolana、Cardano、Stellar、Near Protocolを含む複数の暗号通貨のネイティブ署名アルゴリズムです。ウォレットアドレスはEd25519公開鍵から導出されます。トランザクションは対応する秘密鍵で署名されます。これは正当で重要なユースケースですが、暗号通貨の秘密鍵は特別に注意深い保管(ハードウェアウォレット、セキュアエンクレーブ)が必要です — 紛失または盗まれた秘密鍵は資金の永久損失を意味します。
- ✅ 高価値鍵にはハードウェアウォレット(Ledger、Trezor)を使用
- ✅ シードフレーズを安全なオフラインストレージにバックアップ
- ❌ 暗号通貨の秘密鍵をプレーンテキストファイルに保存しない
- ❌ 本番ウォレット鍵にこのブラウザツールを使用しない
非推奨:データ暗号化
Ed25519はデータを暗号化できません — 暗号化に使用しようとすることはアルゴリズムの根本的な誤用です。Ed25519は署名アルゴリズムです:メッセージを受け取り、真正性を証明する署名を生成します。メッセージを暗号文に変換しません。機密通信には ChaCha20-Poly1305 または AES-256-GCM を使用してください。非対称暗号化が必要な場合は RSA を使用してください。
- ❌ データ暗号化にEd25519を使用しない
- ✅ 対称暗号化にはAES-256-GCMまたはChaCha20-Poly1305を使用
- ✅ 非対称暗号化にはRSA-OAEPを使用
- 💡 署名 ≠ 暗号化 — 異なるセキュリティ目標を果たす
ベストプラクティスのまとめ
- Ed25519は署名アルゴリズムです — 真正性を証明しますが暗号化しません。機密性にはAES-256-GCMまたはChaCha20-Poly1305を使用してください。
- すべての新しい署名ユースケースでRSAとECDSAよりEd25519を推奨します:より小さな鍵、より速い操作、決定論的署名。
- 秘密鍵(64桁の16進数)は秘密にしておく必要があります。公開鍵(64桁の16進数)は自由に配布できます。
- 「メッセージ|署名_Base64」の入力フォーマットを使用して署名を検証します。パイプ区切り文字が必要です。
- SSHにはssh-keygen -t ed25519を使用してください。Ed25519はOpenSSH、NIST、主要なセキュリティガイドラインが推奨するモダンな標準です。