このブログはURLが変更になりました

新しいブログはこちら→ https://matsuu.hatenablog.com/

OpenSSH 5.7でサポートされた楕円DSAを試してみた

OpenSSH 5.7で楕円DSA(ECDSA)が使えるようになったらしい。

OpenSSH 5.7 released[LWN.net]

OpenSSH 5.7 has been released. Some new features in this release include Elliptic Curve Cryptography modes for key exchange (ECDH) and host/user keys (ECDSA), a protocol extension to support a hard link operation added to sftp, new options for scp and ssh, and more.

早くもGentooにopenssh-5.7が降りてきたので早速楕円DSAを作ってみた。Gentooパネェ。

楕円DSAの作り方

ssh-keygen(1)でtypeにecdsaを指定すればok。 

$ ssh-keygen -t ecdsa
Generating public/private ecdsa key pair.
Enter file in which to save the key (/home/matsuu/.ssh/id_ecdsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/matsuu/.ssh/id_ecdsa.
Your public key has been saved in /home/matsuu/.ssh/id_ecdsa.pub.
The key fingerprint is:
e7:6c:e4:af:86:36:31:ad:b7:e4:97:4b:8d:e1:c9:44 matsuu@lets
The key's randomart image is:
+--[ECDSA  256]---+
|                 |
|                 |
|            E    |
|           .     |
|        S.o o    |
|        o*.+ =   |
|         =* *..  |
|        =+ooo    |
|       . +++o.   |
+-----------------+

256bitしかない。短っ!公開鍵は140文字ですぜ旦那。

$ cat ~/.id_ecdsa.pub
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBGTZQ1z7sRerzq5cz6AD6nctM7AT33ENRiq8omY8afUq097FY1Z8APN0UEnVulPNJvp2Ofm0bO+DgLlvHD50oko= matsuu@lets

そんな短くて大丈夫か?

大丈夫だ問題ない、らしい。
楕円曲線暗号、RSA暗号との相対強度は従来の数千倍−富士通が解読実験 - クラウド Watch

 これにより、「楕円曲線暗号RSA暗号と比較して、従来考えられていたよりも、数千倍程度相対的に高い強度であることが考えられる」と判明。富士通研によると「従来、RSA暗号/1024ビットと楕円曲線暗号/160ビットがほぼイコールと考えられていたが、今回の成果で、楕円曲線暗号/140ビットでほぼイコールであることが判明した」のだという。

ここでいう楕円曲線暗号/140ビットがECDSA-140と同じ意味なのかは私は専門家ではないのでよくわからないが、まぁきっと大丈夫なんでしょう。

ちなみに、opensshの楕円DSAは現状256bit, 384bit, 521bitの3種類が作れるようだ。512bitではなく521bit。なんだそれ。

RFC 4754でも256, 384, 521と定義されている模様。理由はなんでしょうね。

簡単なベンチマークをとってみた(正しくないかも)

RSA2、DSA、ECDSAでそれぞれ鍵長はそれぞれのデフォルトを使用。512MBのファイルをsshを通して転送時間を計ってみた。

公開鍵 転送時間(秒)
RSA-2048 24.825
DSA-1024 34.941
ECDSA-256 39.154

ありゃ、遅いね。私のテストのやり方が悪いのかも。追試求む。
そもそもSSHの公開鍵は共通鍵の交換にだけ使うんだっけ?すみませんちゃんと調べてません。