公開鍵認証、例えばSSHによるアクセスにおける「クライアント(ユーザ)認証」のやり取りについて、中間者攻撃やなりすましの可能性、及びそれに対する防御がどう考慮されているのかがわからず、質問させていただきます。 まず、チャレンジ・レスポンス方式によるクライアント認証は、以下のような流れだと認識しています。 (1)サーバ側が、公開鍵(あらかじめユーザが配置したauthorized_keys)を用いて認証用のランダムデータを暗号化し、クライアント側に送る(チャレンジ)。 ※ここで第三者がデータを盗っても、正しいユーザ以外は対応する秘密鍵を持ってないのでどうすることもできない (2)クライアント側は、公開鍵に対応する秘密鍵によってデータを復号し、サーバへ送り返す(レスポンス)。 ※これは安全なのでしょうか…?(疑問点として詳細後述) (3)サーバ側では、クライアントから送られてきた復号済みデータと、元データと比較し、 合っていれば正しいクライアント(ユーザ)であると認証できる。 ここで、何か大きな思い違いをしているのかもしれませんが、 以下の疑問が生じています。 -------------------------------------- ◆疑問点1 (2)において、復号済みデータ自体がネット回線上に流れた際に、それが盗まれる可能性は存在すると思います。 第三者による不正な認証に使われてしまったりしないのでしょうか? もしかして、先に正しいクライアントが認証されれば、同じ復号済みデータは二度と使えなくなるから安全、とか…? でも、正しいクライアントが認証される前に悪意ある第三者が認証されてしまう可能性はないのでしょうか?(疑問点2に繋がります。 ◆疑問点2 (2)において、悪意ある第三者が介入し、サーバ側には届かないように復号済みデータを横取りし、あたかも自身が復号したデータであるかのようにそのままサーバへ送り、認証自体を横取りしてしまう(第三者が正しいクライアントとして認証されてしまう)ことはありうるのでしょうか? (→中間者攻撃:man-in-the-middle attack?なりすまし?) -------------------------------------- 上記、2つの疑問点についてご教授いただきたいです。 公開鍵、秘密鍵の性質は理解しているつもりなのですが、 データの暗号化・復号化自体をそれぞれの正しいクライアント・サーバにやらせつつ 第三者がやり取りの中間に立つようなことが可能なのであれば、 認証自体が第三者に横取りされ、そこでアクセスが確立しまうのではないかと思った次第です。 (この方法がおそらく無理だからこそ、公開鍵認証が安全なセキュリティ技術として普及しているのだと思いますが、何故無理なのかがわからず…。) お手数ですがどうぞよろしくお願いいたします。
↧