web-dev-qa-db-ja.com

SSHキータイプ、rsa、dsa、ecdsa、いつ選択するかについて簡単な答えはありますか?

暗号化についてほとんど知らない人として、ssh-keyを作成するときに私が行う選択について疑問に思います。

ssh-keygen -t type、ここでtypeはdsa、rsa、ecdsaのいずれかです。

グーグルによって、型間の違いに関するsome情報を提供できますが、決定的なものはありません。だから私の質問は、暗号化の知識がほとんどない開発者/システム管理者にとって、どのキータイプを選択するべきかについて「簡単な」回答はありますか?

「DSAをXとYに、RSAをZに、そしてECDSAをその他すべてに使用する」というスタイルで回答を期待していますが、そのような単純な回答が利用できない可能性も十分にあります。

164
user50849

実際には、RSAキーはどこでも機能します。 ECDSAのサポートが新しいため、古いクライアントまたはサーバーでECDSAキーに問題が発生する可能性があります。 SSH標準( RFC 4251 以降)に従って、DSAキーはどこでも機能していましたが、最近変更されました:OpenSSH 7.0以降では、デフォルトでDSAキーを受け入れなくなりました。

ECDSAは計算上は軽量ですが、違いに気づくには、非常に小さなクライアントまたはサーバー(たとえば、50 MHzが埋め込まれたARMプロセッサ))が必要になります。

今のところ、十分な大きさのキー(RSAまたはDSAの場合は2048ビット、256ビット)を想定して、あるタイプを他より優先するセキュリティ関連の理由はありません。 ECDSAの場合);キーのサイズは-bパラメータで指定します。ただし、一部のssh-keygenバージョンは、1024ビット以外のサイズのDSA鍵を拒否する場合があります。これは、現在のところ壊れていませんが、希望どおりの堅牢性はありません。ですから、ちょっとした妄想にふけるなら、RSAを好むかもしれません。

要約すると、ssh-keygen -t rsa -b 2048を実行すると、あなたは幸せになります。

127
Thomas Pornin

ギルが言うように、DSAは危険です。不正なRNGのあるボックスで署名を作成すると(そして、sshクライアントでログインしてキーを使用すると、効果的に署名が作成されます)、キーが危険にさらされる可能性があります。 AIUIにより、Debianが基本的に作成されました abandon DSA Debian OpenSSL乱数ジェネレータの大失敗に照らして、インフラストラクチャで使用されるキー。

http://meyering.net/nuke-your-DSA-keys/

ECDSAは比較的新しく、いくつかのクイック検索から、5.7で導入されたようです。 Afaictこれらのシステムのほとんどはサポート対象外であり、おそらく移行する必要がありますが、それが時々発生しないことは誰もが知っています。たとえば、Debian squeezeやubuntu lucidなどです。 ECDSAには、同じレベルの(推定)セキュリティーのために、鍵がRSAまたはDSA鍵よりもはるかに小さいという利点があります。残念ながら、それは悪い乱数発生器に敏感であるというDSAの欠点を共有します。また、従来使用されている楕円曲線がバックドアされている可能性があるという懸念もあります。

ED25519はさらに新しいオプションで、openssh 6.5で導入されました。これはECDSAアルゴリズムの変形ですが、乱数ジェネレーターの問題を解決し、「何もない」曲線を使用します。それはおそらく長期的には最良の選択肢となるでしょうが、現在のところ、十分に新しいopensshを備えていないサポート対象システムがまだ存在しています。

したがって、RSAを作成するIMO(パラノイアの程度に応じて2048または4096ビットのキーを使用)は、一般的な使用にとって最も合理的な選択肢です。

編集:2017年3月現在の状況に更新します。

25
Peter Green

DSAとECDSAには固定長の鍵があり、それらは米国政府の標準であり、一般大衆よりも標準についてよく知っています。 RSAの方がよく知られており、RSAを使用するとより長いキーを生成できます(デフォルトは、DSAの1024ビットの固定長ではなく2048です)。

9
GdD

RSAを使用します。セキュリティ上の理由ではなく、互換性の理由によるものです。

DSAキーの使用はお勧めしません。 OpenSSH 7.0以降、SSHはデフォルトでDSAキーをサポートしなくなりました。 OpenSSH 7.0のリリースノートでは のように、「ssh-dssホストおよびユーザーキーのサポートは、実行時にはデフォルトで無効になっています」。したがって、DSAキー(ssh-dss)を使用すると、頭痛の種になるだけです。

ECDSAキーの方が優れている場合がありますが、悲しいことに、ECDSAキーは一部のプラットフォームで互換性の問題を引き起こす可能性があります。 Fedoraでは、gnome-keyring-daemonはECDSA SSHキーを自動的に取得しないため、FedoraでSSHキーを使用しようとしたときに、SSHキーのロックを解除するためのパスワードを自動的に要求されません。

RSAキーには、これらの互換性の問題はまったくありません。これらは最も広く使用されているため、サポートされているのが最も良いようです。したがって、RSAキーを生成して、後で煩わしさから身を守ることをお勧めします。


編集注記として、DSAサポートを無効にするOpenSSHの決定は少し不可解です:1024ビットDSAキーには1024ビットRSAキーと ほぼ同じセキュリティ があるため、OpenSSHが1024のサポートを無効にした理由は明らかではありませんビットDSA鍵ですが、1024ビットRSA鍵のサポートは保持されます。 (OpenSSHは引き続きRSAをサポートしています。768ビット以下のRSAキーを無効にする特別なチェックがありますが、DSAの場合、長さに関係なくすべてのDSAキーを無効にするだけです。)また、OpenSSHは、より長いDSAキーをサポートするために使用されていました。長さが1024ビット。それらのサポートが無効になっている理由は明らかではありません。まあ、そうなります。

8
D.W.