皆様は、中間者攻撃というサイバー攻撃をご存知でしょうか?英語では、Man in the Middle Attack と言います。中間者攻撃をされると、TLSなどで2点間の通信を暗号化していても、その暗号を解かれて盗聴されてしまいます。
中間者攻撃は、2点間の間に攻撃者の端末が介在して、通信を盗聴する攻撃です。2点間の終点同士は攻撃者の端末が正当な通信相手だと勘違いするのです。つまり、攻撃者の端末は、2点間のそれぞれになりすますことで通信を傍受するのです。
中間者攻撃はどうすれば実現できるのでしょうか?中間者攻撃は、DNSキャッシュポイズニングというサイバー攻撃をすることで実現します。
DNSは、Domain Name Systemの略で、名前解決をするサービスする機能を意味しています。つまり、ホスト名で通信先を指定すると、そのホスト名のIPアドレスに変換してくれる機能です。このホスト名からIPアドレスに変換することを名前解決と言います。
DNSキャッシュポイズニングとは、そのホスト名とIPアドレスの変換を偽物の組み合わせになるよう、攻撃者の都合の良いように書き換える攻撃なのです。
DNSキャッシュポイズニングに成功すると、A端末とB端末との間で通信する際に、それぞれの端末が参照するDNSサーバーのDNSテーブル(ホスト名とIPアドレスの組み合わせが記録されたテーブル)において、A端末とB端末に対応するホスト名のIPアドレスを攻撃者の端末のIPアドレスに改竄することができます。
そのようにDNSキャッシュポイズニングされたDNSサーバの名前解決を使って、A端末とB端末の間の通信をすると、攻撃者の端末を中継することになるのです。
TLSで暗号化通信をする際には、TLSハンドシェイクという暗号化通信を開始する端末間の折衝が完了してしまうと、中間にいる攻撃者の端末とは知らずに、攻撃者の端末との間で暗号化通信が構築されてしまうのです。つまり、暗号化された通信の内容は攻撃者の端末で復号ができるため、攻撃者が通信の内容を盗聴することができるのです。
しかも、通信内容を改竄してもう一方の端末に送信することも可能になります。
このような中間者攻撃を防ぐには、クライアント認証など、認証機構を導入するのが良いでしょう。
例えば、クライアントのディジタル証明書を通信する2点間で作成しておき、2点間での通信をする際には、そのクライアントのディジタル証明書での認証ができた場合のみに認可するようにすれば効果的です。なぜなら、中間者攻撃の端末では適切なクライアントのディジタル証明書がないので、認証に通らないからです。
以上のように、中間者攻撃を防ぐには認証する機構を導入するなどのセキュリティ対策が不可欠ですので、日頃からサイバー攻撃に備えて参りましょう!