web-dev-qa-db-ja.com

SSHキーを使用する方が、パスワードを使用するよりも安全なのはなぜですか?

人々がパスワードを使用してUNIXサーバーにログインする場合、パスワードを期限切れにするように強制される可能性があり、それを変更します。

人々がsshキーを使用していて、パスワードがなく、パスワードの有効期限もない場合は、SSHキーを定期的に変更するよう強制するものはありません。

質問:より安全なソリューションはどれですか?サーバーを強化するための「ハウツー」が、パスワードではなくsshキーを使用するよう常にアドバイスするのはなぜですか?

[〜#〜] update [〜#〜]:ブルートフォースの弱点を数えない-パスワードに関して、Fail2banのようなソリューションがない場合は推測される可能性があるため。

キーとパスワードの両方に長所と短所があります。 「ハウツー」などがSSHキーの使用を勧める理由は、パスワードの短所よりも短所のほうが気になるからです。

SSHキーは長く、複雑で、どのパスワードよりもはるかに複雑です。しかし、あなたが述べるように、彼らには有効期限はなく、彼らはディスクから盗まれる可能性があります。一方、パスワードが必要なリモートシステム(キー転送、ナッチを除く)には送信されません。

パスワードは一般に、予想通り、やむを得ず弱くなります。強力なパスワードを使用することは可能ですが、人々は弱いパスワードを使用し、パスワードの習慣が不十分であることが示されています...短く、単純な、Wordベースの単純なパターン( "p @ ssw0rd!")、書き込みそれらをダウンさせ、複数のサイトで使用し、電話番号、子供の誕生日、自分の名前に基づいてそれらを使用します。キーに有効期限はないが、なぜパスワードに有効期限があるのか​​?ブルートフォース攻撃によってパスワードが置き換えられる前にパスワードがクラックされる可能性が低くなるようにします。キーに影響を与える問題ではありません。

また、不正なパスワードは別として、「良好な」パスワードであっても、適切な条件下でブルートフォース(オンラインまたはオフライン)に対して脆弱です。それらは、他のシステム、またはユーザーが誤ってそれらを送信するようにだまされる可能性のある他の場所に送信される必要があります。

証拠のバランスは、パスワードがより弱く、鍵がより強力であることを強く示唆しています。

61
gowenfawr

パスワードを使用すると、パスワードがサーバーに送信されるため、パスワードの安全性は、サーバーがパスワードの確認に使用するものをどれだけ保護するか(たとえば、/etc/shadowファイル)。 SSHキーを使用する場合、秘密キーはクライアント側に残り、シークレット値がサーバーに送信されることはありません。サーバーが悪意のある制御下にある場合、または何らかの形で偽のサーバーに接続するように誘導された場合でも、SSHキーは安全なままです。偽のサーバーは、キーを回復したりMitMを実行したりするのに十分な情報をキーに取得しません。その意味で、SSHキーは、サーバー側の侵害に対してパスワードよりも堅牢です。

一方、SSHキーはコンピューターのどこかに保存する必要があり、これが脆弱性になる可能性があります。秘密鍵はパスフレーズで保護する必要があります。そうでなければ、盗まれたラップトップはアカウントの侵害に変わります。逆に、パスワードは脳に保存できますonly。これにより、(おそらく)漏洩する可能性が低くなります。

したがって、SSHキーはパスワードよりも「安全」であると主張できますが、その逆も主張できます。状況によります。ほとんどのハウツーは、平均して人間のユーザーがパスワードについてひどい実績を持っているため、キーの方が優れているというスタンスをとります。ユーザーは弱いパスワードを選択して再利用します(パスワードの再利用は非常に悪いです)。

36
Tom Leek

あなたの更新で私が理解していることがあれば、パスワードとキーで同じエントロピーを提供できる場合は、そのセキュリティに関する限り、それは問題ではありません。毎回パスワードを入力する必要がないため、「ユーザーエクスペリエンス」が向上するため、キーの方が優れている場合があります。

私はあなたの元の点についてもっと考えています。SSHパスワードとSSHキーの管理性について議論しています。はい、パスワードにポリシーを割り当てることができます。これにより、基本的なセキュリティ対策(IEパスワードの有効期限、パスワード履歴、最大パスワード長など)が可能になりますが、人間の習慣は変わりません。また、セキュリティが邪魔になるユーザーを満足させません。生産(組織レベルのバランス)。

キーは、ある程度のエントロピーと管理性を維持するための方法を提供すると同時に、ユーザーを煩わせないアクセス方法を提供します(キーのペアが設定されると、パスワードがなくても認証を取り消すことができます)。

さらに、キーをパスワードで保護し、別のレイヤーを提供できることを知っておいてください。

4
Shane Andrie