web-dev-qa-db-ja.com

SSHへのログインに公開鍵を使用する方が、パスワードを使用するよりも優れていますか?

パスワードとキー認証については質問していません。

SSHに大きな脆弱性があるとしても、キー認証によってそのようなエクスプロイトの脆弱性が低くなると何度か(そしてAmazons AWSでさえ)見たことがあります。しかし、キーの検証方法に悪用がある場合はどうなるでしょうか。これは、認証メカニズムに基づいた仮定をしているだけではありませんか?

なぜこれが考えなのですか?パスワードは認証の形式としては不十分であることがわかっているため、「秘密鍵を使用する」という前提になっているのでしょうか。

2
user26053

あなたが言及しているのは、チャレンジレスポンスモデルと呼ばれるものだと思います。このアプローチでは、回線を介してパスワードを送信する場合のように、キーペアがネットワークから盗聴されるような方法で公開されることはありません。そして、この事実のために、それははるかに安全であると考えられています。

answers このセキュリティSEのQ&Aのタイトルの1つ: SSHへのログインに公開鍵を使用する方がパスワードを保存するよりも優れていますか? 公開鍵を使用する利点について説明します/秘密鍵のペア。

抜粋

公開鍵の場合、状況は大きく異なります。この場合、サーバーにはユーザーの公開鍵が保存されています。次に起こることは、サーバーがランダムな値(nonce)を作成し、それを公開鍵で暗号化してユーザーに送信することです。ユーザーが本来の人物である場合、チャレンジを復号化してサーバーに送り返すことができます。サーバーはユーザーのIDを確認します。これは、古典的なチャレンジ/レスポンスモデルです。

したがって、NONCEを送信することによってキーペアが使用される方法を考えると、それらは真ん中の男性に知られることに真にさらされることはなく、キーの公開側のみが公開されます。

本当に疑わしい場合は、このキーペアの使用を中止して、新しいセットを再生成するだけです。

NONCEとは何ですか?

抜粋

セキュリティエンジニアリングでは、ナンスは暗号通信で1回だけ使用される任意の数です。それは精神的に臨時語に似ているので、その名前が付けられています。多くの場合、古い通信をリプレイ攻撃で再利用できないようにするために、認証プロトコルで発行される乱数または疑似乱数です。たとえば、ナンスは、パスワードのMD5ダイジェストを計算するためにHTTPダイジェストアクセス認証で使用されます。ナンスは、401認証チャレンジレスポンスコードが提示されるたびに異なるため、リプレイ攻撃は事実上不可能です。

参考文献

7
slm

はい、SSHの公開鍵認証メカニズムに脆弱性がある可能性があります。ただし、パスワードまたはチャレンジレスポンス認証メカニズムにも脆弱性がある可能性があります。したがって、基本的にその要素だけで、両方の認証方法は等しいと見なされます。

公開鍵認証の利点

秘密鍵がネットワーク経由で送信されることはありません。サーバーには公開鍵があり、その公開鍵を使用してランダムなデータを暗号化します。このデータは、秘密鍵でのみ復号化できます。暗号化されたデータはクライアントに送信され、クライアントはデータを復号化してサーバーに送り返します。

そのデータをブルートフォースで復号化することも不可能です。クライアントは、復号化を1回だけ試行します。間違っている場合は、新しく暗号化されたデータからやり直す必要があります。次に、時間制限もあります。クライアントが応答するのに数秒しかない場合です。

公開鍵認証の欠点

SSH秘密鍵はパスワードで保護できますが、セキュリティのために保護することをお勧めします。ただし、必須ではありません。
したがって、クライアントシステムで秘密鍵のパスワードが保護されておらず、誰かがシステムまたはその鍵のコピーに物理的にアクセスできる場合、その人はリモートシステムにアクセスできます。

エージェントキー転送の欠点

クライアントシステムがSSH秘密鍵を保存するために「鍵エージェント」を使用することは可能であり、一般的です。 sshクライアントがその秘密鍵を使用して何かを行う必要がある場合、sshクライアントは要求を鍵エージェントに送信します。
SSH接続を介してこのキーエージェントへのアクセスを転送することも可能であり、一般的です。これにより、リモートシステムでローカルSSHキーを使用できます(たとえば、別のボックスにSSH接続する場合)。 。

これの欠点リモートシステムが危険にさらされた場合、または他の誰かがルートアクセス権を持っている場合、そのシステムに接続している間、他の誰かがあなたのsshキーを使用できることです。

キー転送を使用すると、SSHデーモンは、SSHキーエージェントとの通信に使用される名前付きソケットをリモートシステムに配置します。このソケットは、基本的なファイルシステムのアクセス許可によって保護されているため、ユーザーだけがアクセスできます。ただし、rootは必要な処理を実行でき、ファイルシステムのアクセス許可には意味がないため、rootユーザーはそのソケットにアクセスして秘密鍵を使用できます。

これは、彼らがあなたの秘密鍵を取得することを意味するのではなく、彼らがそれを使用できるということだけに注意してください。 SSHキーエージェントは、キー自体を送信することはなく、公開キー認証に必要な「このデータの復号化」要求にのみ応答します。

2
Patrick