ED25519 で生成されるssh鍵 (ssh-keygen)の中身を見る

amazon ec2のEC2 Insance Connect 認証でED25519キーが使えるようになったらしい。

EC2 Instance Connect は、Secure Shell (SSH) を使用してインスタンスに接続するシンプルで安全な手段です。認証されたユーザーが接続するたびに生成される 1 回限りの SSH キーを活用する以外に、既存の SSH キーで接続することもできます。EC2 のお客様は、EC2 Instance Connect での認証に、RSA ベースのキーに加えて、SSH 認証によく使われる楕円曲線ベースの公開キーシステムである ED25519 キーペアを使用することができるようになりました。


Amazon EC2 のお客様は EC2 Instance Connect の認証で ED25519 キーが使用可能に

これまでSSH鍵を作るときは脳死でRSA使っていたけど、せっかくなのでED25519で鍵を作ってみることにする。

実際にssh-keygenを使って生成して、RSAで生成された鍵との違いも見てみる。

広告

ED25519とは

ED25519は2006年にDJBによって提案されたアルゴリズムで、その主な特徴は、高速であることと定時間実行(およびサイドチャネル攻撃への耐性)、およびハードコーディングされた曖昧な定数がないことである。つまり強いらしい。

ED25519の鍵を生成する

ssh-keygen でED25519の鍵を生成するのは簡単でオプションに-t ed25519を渡すだけでよい。

すべての Ed25519 鍵は 256 ビットなので、鍵のサイズを設定する必要はないみたい。

簡単だね。

RSAの鍵を生成する

次にこれまで作ってきたRSAの鍵を生成してみる。普段-b は 4096にしてる。

これも特段問題はない。

ED25519の鍵長が短い!

生成した公開鍵の鍵をみるとびっくり。公開鍵の大きさが全然違う。

まずRSAの公開鍵はこんな感じ。

一方でED25519はこれだけ。

すご。。鍵は長いほどよいという思想に侵されているのでこれで強いの?って思ってしまう。
秘密鍵も長さが全然違う

RSAの秘密鍵はこんな感じ

まあ、秘密鍵だし。こんなもんだよねと。

でもED25519の秘密鍵はすごい。

嘘だといってくれ。。短いだろ。

鍵は長いほど強い気がしちゃってたので

調べるとRSA-4096を使わないように勧めているみたい。
今後は、ED25519鍵使っていこっと。

参照

EC2 Instance Connect は、Secure Shell (SSH) を使用してインスタンスに接続するシンプルで安全な手段です。認証されたユーザーが接続するたびに生成される 1 回限りの SSH キーを活用する以外に、既存の SSH キーで接続することもできます。EC2 のお客様は、EC2 Instance Connect での認証に、RSA ベースのキーに加えて、SSH 認証によく使われる楕円曲線ベースの公開キーシステムである ED25519 キーペアを使用することができるようになりました。

https://aws.amazon.com/jp/about-aws/whats-new/2022/01/ed25519-keys-authentication-ec2-instance-connect/

このアルゴリズムは2006年にDJBによって提案された[Curve25519]。その主な特徴は、高速であることと定時間実行(およびサイドチャネル攻撃への耐性)、およびハードコーディングされた曖昧な定数がないこと。

https://git.libssh.org/projects/libssh.git/tree/doc/curve25519-sha256@libssh.org.txt

しかし、より長い鍵を使うことには限界があることに注意してください[2][3]。GnuPG の FAQ にはこうあります。「RSA-2048 が提供する以上のセキュリティが必要な場合は、RSA を使い続けるのではなく、楕円曲線暗号に切り替えるほうが良いでしょう」[4]。

https://wiki.archlinux.jp/index.php/SSH_鍵#Ed25519

11.5 なぜ人々はRSA-4096を使わないように勧めるのですか?

ほとんどの場合、4096ビットのRSAを使う人は、RSA-4096が実際よりずっと強いと信じているからです。米国国立標準技術研究所(NIST)によると、RSA-2048はおよそ112ビット、RSA-3072はおよそ128ビットのセキュリティが得られるとされています。RSA-4096の安全性については、正式な勧告はありませんが、一般的には140ビット程度になると考えられています。これはRSA-2048と比較して28ビットの改善であり、言及する価値のないほどわずかな改善です。

RSA-2048が提供する以上のセキュリティが必要な場合、RSAを使い続けるのではなく、楕円曲線暗号に切り替えるのが得策でしょう。

https://www.gnupg.org/faq/gnupg-faq.html#please_use_ecc

ほとんどの場合、4096ビットのRSAを使う人は、RSA-4096が実際よりずっと強いと信じているからです

いててててて...

じゃあね〜〜〜。