Machine Morning

機械学習やWebについて学んだことを記録しています。

sshキーのキータイプはなにがいいのか

sshキーを生成するためのコマンド

$ ssh-keygen

をオプションなしで実行するとデフォルトでキータイプrsaの長さ2048bitのキーペアが生成される。しかしオプションでキータイプやキーの長さを指定することができる。以下にssh-keygenがサポートするキータイプをまとめた。

[-t key_type] でキータイプ、[-b bits]でキーの長さを指定できる。

key-genコマンドで生成できるキータイプとして、

  • dsa
  • ecdsa
  • ed25519
  • rsa

をサポートしている。

dsaは1024bits固定で、サポートしていないハードウェアが多いので好んで使う理由がない。 ecdsaはとdsaの改良版で

この中で最も安全でパフォーマンスの高いアルゴリズムed25519で、

$ ssh-keygen -t ed25519

で生成できる。鍵長は256bitsと決まっているので指定する必要はない。

2018年現在キータイプをrsaとする場合、最低でも2048bits、推奨は4096bitsということである。rsaはデフォルトで生成できるアルゴリズムで広く使われおり、サポートも心配がない。 デメリットとして計算量が多くなる、メモリを食う、2048bitsより大きいものをサポートしていないハードウェアがある等が挙げられる。

$ ssh-keygen -t rsa -b 4096

面白い記事を発見した。

GitHubユーザーのSSH鍵6万個を調べてみた - hnwの日記

4年前と少し古いが、GitHubsshキーではrsaが圧倒的に多く使われているということである。一方で、ed25519はほとんど使われていない。

しかしこれからはサポートされているのを確認したら積極的にed25519を使うのがよい。その次にecdsa、rsa 4096bitsである。