web-dev-qa-db-ja.com

仕事用のSSH公開鍵を渡しても安全ですか?

私は現在、メンテナンスやアップグレードのために定期的にサーバーにアクセスする必要がある多くの組織でリモートで働いています。 RSA公開SSHキーを.ssh/authorized_keysファイルに追加して、パスワードを検索せずにはるかに速くログインできるようにしても安全ですか?私は、公開鍵から秘密鍵を生成することは不可能であるという前提で操作していますが、私の想定では正しいですか?

さらに一歩進んで、私のRSA公開鍵の内容をインターネットに投稿することで、セキュリティ上のリスクはありますか?私の秘密鍵が取得された場合、私は多くの問題に直面していることを知っていますが、それ以外に、実際に起こり得るセキュリティ上の脅威はありますか?

62
Naftuli Kay

はい、公開鍵から秘密鍵を復元することはできません。可能であれば、RSAは根本的に破られ、これは大きなニュースになります(RSAを破ることは、インターネット通信のセキュリティの多くを破るだけでなく、とりわけあらゆる種類の銀行詐欺を許すことになります)。

実際にはパスワードではなく公開鍵でログインすると、セキュリティが向上する傾向があります。パスワードの強度が十分でない場合は、十分な帯域幅を持つ攻撃者によってブルートフォース攻撃を受ける可能性があります。攻撃者が秘密鍵ファイルのコピーを持っていない場合、RSA鍵は事実上総当たりすることができません(1024ビットの鍵は、大文字と小文字が区別されるランダムな文字と数字で構成される160文字のパスワードのようなものと同等です)。 。肩越しに見ている誰かがあなたのパスワードとあなたの鍵のパスフレーズを見ることができるかもしれませんが、彼らは鍵を持っていれば彼らもその鍵を手に入れる必要があります。

秘密鍵は、パスワードよりも常に安全であるとは限りません。攻撃者が秘密鍵ファイルのコピーを取得した場合(たとえば、ラップトップまたはバックアップメディアを盗むことにより)、攻撃者はパスフレーズをブルートフォースで攻撃しようとする可能性があります。制限する方法がないため、攻撃者はそれを高速で実行できます。率(オンラインにする必要があるパスワード推測とは異なります)。パスフレーズが十分で、盗難にすぐに気が付いた場合でも、鍵を取り消す時間はあります。

公開鍵はプライバシーの露出の要素を導入します。AへのログインとBへのログインに同じ公開鍵を使用したことを誰かが知っている場合、彼らはAとBにログインしている同じ人物を知っています。公開鍵を所有しているだけで、あなたは秘密鍵も持っているので、いくつかの匿名性が失われている疑いがあります。ただし、特に~/.sshにキーを格納しているだけで、システム管理者(ログイン元のIPアドレスも知っている)だけがそれを見ることができる場合は、それは通常はマイナーです。

これらのセキュリティの考慮事項は別として、秘密鍵には多くの実用的な利点があります。パスワードをそれほど頻繁に入力する必要はありません。特に、ssh-agentなどでキーを入力すると、プロンプトを表示しない自動スクリプトを実行できます。パスワードをそれほど頻繁に入力する必要がないので、より高いエントロピー(長く、入力するのが難しい)にする余裕があります。パスワードをそれほど頻繁に入力する必要がないため、人間の観察者やカメラによってパスワードが盗まれるリスクが少なくなります。

Gilles ' answer は一般的に良いですが、

...特に、キーを〜/ .sshに格納しているだけで、システム管理者(ログインしたIPアドレスも知っている)だけがそれを見ることができる場合。

~/.sshのsshキーは、自分のアカウントで実行されているソフトウェアでも読み取ることができます。これはおそらく、実行するソフトウェアのほとんどです。したがって、そのソフトウェアとそれを作成した人を信頼する必要があります。

16
Stephen Blott