web-dev-qa-db-ja.com

ssh-keygenのベストプラクティスとは何ですか?

ほとんどのユーザーは単にssh-keygenと入力し、デフォルトで与えられたものを受け入れます。

しかし、ssh-keygenを使用してsshキーを生成するためのベストプラクティスは何ですか?

例えば:

  • 古いPEM形式ではなくOpenSSHキー形式に-oを使用します(OpenSSH 6.5は、ほぼ3年前にこの機能を導入しました 2014-01-

  • -aで使用する [〜#〜] kdf [〜#〜] のラウンド数を計算するにはどうすればよいですか?

  • 候補の素数の安全性をテストするために-Tを使用する必要がありますか?これでどの-a値を使用しますか?

  • さまざまなキーの種類について、推奨される最小-bビットサイズは何ですか?

  • etc ...( manual page には、気が遠くなるようなオプションのセットがあります)。

138
Tom Hale

私は Secure Secure Shell の記事をお勧めします。

ssh-keygen -t ed25519 -a 100

Ed25519は、OpenSSH 6.5で導入された非常に小さい(固定サイズ)キーを使用した EdDSA スキームです。これらは 楕円曲線暗号 (ECC)のおかげで、4096ビットのRSAに似た複雑さを持っています。 -a 100オプションは100ラウンドの鍵導出を指定するため、鍵のパスワードを総当たりすることが困難になります。

ただし、Ed25519は adoption が不完全な、かなり新しいキーアルゴリズムであるため、すべてのサーバーで使用できるとは限りません。それらについては、4096ビットのRSA鍵を生成します。

ssh-keygen -t rsa -b 4096 -o -a 100

-oオプションにはOpenSSH v6.5 +が必要であり、v7.8以降のデフォルトであるため、ssh-keygenのマニュアルページにはありません。これは、新しいOpenSSH形式を使用して保存することを指示します。以前のデフォルトではなくキー [〜#〜] pem [〜#〜] 。Ed25519はこの新しい形式を必要とするので、-t ed25519を指定して明示的に記述する必要はありません。以前のmanページには、「新しい形式ではブルートフォースパスワードクラッキングに対する耐性が高まった」とありました。詳細は この答え をご覧ください。)

[〜#〜] ecdsa [〜#〜] と呼ばれる他の新しいECCアルゴリズムは考慮しないでください。それは疑わしいと考えられています(それは 既知の弱点 を持ち、米国政府はその開発に関与しているため、 それは危うくなる可能性があります それ以上)。 Ed25519は、政府の関与なしに開発されました。

DSA(「ssh-dss」)キーから離れてください:それらは疑わしいだけではありません DSAは安全ではありません

135
Adam Katz

ほとんどのユーザーは単にssh-keygenと入力し、デフォルトで与えられたものを受け入れます。

はい。人々のためのセキュリティを行うには、それがシンプルである必要があります。したがって、デフォルトのオプションは安全で、互換性があり、高速でなければなりません。あなたは代替を提供することができますが、デフォルトは気にしないこれらのために「十分」であるはずです。したがって、現時点では、古いPEM形式のRSA(2048)がデフォルトです。

  • 古いPEM形式ではなくOpenSSHキー形式に-oを使用します(OpenSSH 6.5は、この機能を約3年前の2014-01-30に導入しました)。

三年は何もない。多くのコンテナがこの数年間でなんとか進化を遂げましたが、SSHはここ20年以上経っており、依然として古いクライアントに対応する必要があります。新しいOpenSSH形式はまだ広く採用されておらず、サポートされていません。

  • -aで使用するKDFのラウンド数を計算するにはどうすればよいですか?

ユースケースによって異なります。 Githubで「スタッフ」リポジトリのキーを作成することは、認証局として、またはスーパーにアクセスするためにお気に入りの国家機関でキーを作成することとは異なります。専用サーバー上の秘密文書。

指摘したように、これは新しいフォーマットのみに使用され、まだ広く使用されておらず、キーの復号化に時間がかかります。 デフォルトのラウンド数は16 です(どこかで文書化されているのを見るといいでしょう)。 暗号化の質問 の詳細。

  • 候補の素数の安全性をテストするために-Tを使用する必要がありますか?これでどの-a値を使用しますか?

いいえ。DHキー交換用の素数(/etc/ssh/moduli)の生成に使用されます。 SSHキーの生成には決して使用されません。 moduliファイルを生成してテストする方法は、MODULI GENERATIONのマニュアルページの別の章ssh-keygenで説明されています。

  • さまざまなキーの種類について、推奨される最小の-b bitサイズは何ですか?

これはSSH固有ではありませんが、通常、NISTは このドキュメント の12ページ(2015年あたり)でキーサイズを推奨しています。

RSA (2048 bits)
ECDSA (Curve P-256)

Ed25519のサイズは固定されているため、-bパラメータは無視されます。

21
Jakuje

以下は、推奨値に基づくEd25519の1つのライナーです(パスフレーズなし)。

ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_ed25519 -q -N ""

RSAのもう1つ:

ssh-keygen -t rsa -b 4096 -o -a 100 -f ~/.ssh/id_rsa -q -N ""
  • -N:新しいパスフレーズ
  • -q:沈黙ssh-keygen
5