中間者攻撃

暗号理論において、中間者攻撃 (ちゅうかんしゃこうげき、"man-in-the-middle attack"、MITM と略記されることもある) またはバケツリレー攻撃(バケツリレーこうげき、"bucket-brigade attack")は、能動的な盗聴の方法である。中間者攻撃では、攻撃者が犠牲者と独立した通信経路を確立し、犠牲者間のメッセージを中継し、実際には全ての会話が攻撃者によって制御されているときに、犠牲者にはプライベートな接続で直接対話していると思わせる。攻撃者は2人の犠牲者の間で交わされている全てのメッセージを横取りし、間に別のメッセージを差し挟む。これは多くの状況で容易なものである。(例えば、公開された無線アクセスポイントの所有者は、ユーザへの中間者攻撃を実行することが、本質的に可能である。)
それぞれの端点 (エンドポイント) が十分納得できるように、攻撃者が相手に扮することができるときだけ、中間者攻撃は成功する可能性がある。多くの暗号プロトコルは、特に中間者攻撃を防ぐためのエンドポイント認証を含んでいる。例えば、TLS では相互に信頼された認証局を使用することで、サーバを認証する。
セキュアチャンネルの上での追加的な転送の必要性.
インターロックプロトコルを除いて、中間者攻撃に対して安全な全ての暗号システムは、何らかのセキュアチャネルの上での情報の追加的な交換や転送が必要になる。セキュアチャネルの異なるセキュリティ用件に対応するための、多くの鍵合意手順が開発されている。
公開鍵暗号に対して中間者攻撃が成功する例.
アリスがボブと情報交換すると仮定する。このときマロリーという第三者が会話を盗聴したり、ボブに嘘のメッセージを伝えたりしようとしているとする。
まず最初に、アリスはボブから公開鍵を入手しなければならない。このときもし、ボブがアリスに公開鍵を送り、マロリーがそれを妨害することができれば、マロリーは中間者攻撃を開始することができる。マロリーは、ボブからのメッセージと見せかけて、(ボブではなく) マロリーの公開鍵を含んだ、捏造したメッセージをアリスに送る。アリスはこの公開鍵がボブのものであると思い、自らのメッセージをマロリーの公開鍵で暗号化し、暗号メッセージをボブに送りかえす。ここでマロリーはもう一度妨害を行う。マロリーはアリスからのメッセージを解読して、コピーを保存し、(必要であればメッセージの内容を変更の後) ボブが最初にアリスに送った公開鍵で再度暗号化する。ボブが暗号化された新しいメッセージを受信したとき、ボブはそれがアリスからのものであると信じることとなる。
以上より、アリスとボブは、お互いが相手の公開鍵だと信じている鍵が攻撃者によるものではなく、真に相手の公開鍵であることをなんらかの方法で確認しなければならないことがわかる。原理的には、公開鍵を用いて送られるどのようなメッセージに対しても、この種の攻撃を受ける可能性があるためである。幸い、中間者攻撃に対する有効な防御技術としてはいくつか知られているものがある。
中間者攻撃に対する防御.
中間者攻撃に対する防御は、以下の認証技術を使用する:
通常、公開鍵の完全性は何らかの方法で保証されなければならないが、秘匿性は必要ない。パスワードと共有秘密鍵には、完全性と同時に秘匿性が必要である。公開鍵は認証局によって確認されることができる。認証局の公開鍵は、セキュアチャネルで配信される。(例えば、ウェブブラウザやOSのインストールによって行う。) 公開鍵は、セキュアチャネルを通して公開鍵を配信する web of trust によっても確認することができる。(例えば、対面でのミーティングにより配布する)
また、DH鍵交換などの共通鍵配送技術を安全に使用することは、この項にある防御に使用するための認証情報（例えば共通鍵）を別途配送することで可能となっている。
中間者攻撃を防ぐための、いろいろな鍵やパスワードの形式を使用するプロトコルの分類については、鍵の合意を参照のこと。
量子暗号での中間者攻撃.
中間者攻撃は量子暗号に対しても、問題となる可能性がある。近年では、この問題に対応するため、特に3ステージ量子暗号プロトコルのために、ハイブリッドプロトコル (古典暗号＋量子暗号) が提案されている。
暗号以外の中間者攻撃.
中間者攻撃は、両側のクライアントの代理をする中間者の存在から生じている一般的な問題と考えるべきである。中間者が信頼でき正当なものであれば、まったく問題がない。そうでない場合は、問題がある。これをどのように見分けることができるだろうか。代理の働きをして、両側への信頼されたクライアントとして振舞うことによって、中間の攻撃者は通過するデータの秘匿性や完全性に対する攻撃を含む多くの危害を加えることができる。
注目すべき非暗号の中間者攻撃が、2003年にBelkin社の無線LANルーターの1つのバージョンによってに行われた。時々、このルータは通過する HTTP コネクションを乗っ取った。これはトラフィックを送信先に送らず、自分自身がサーバとして応答した。ユーザが要求したウェブページの代わりに送信した応答内容は、Belkin社の他の製品の広告であった。技術的知識のあるユーザからの抗議の後、この「特質」はルータのファームウェアの新しいバージョンで取り除かれた。
非暗号の中間者攻撃のもう一つの例は、「チューリング・ポルノ・ファーム」である。ブライアン・ワーナーは、これがスパマーが CAPTCHA に勝つために用いることができた「あり得る攻撃」であると述べている。スパマーは、ユーザがアクセスするためには CAPTCHA の質問に答える必要があるポルノサイトをセットアップする。しかし、ジェフ・アトウッドは、この攻撃が理論的なものであるに過ぎないと指摘している。一人のスパマーも、チューリング・ポルノ・ファームを構築したという証拠はない。しかし、このようなファームが存在しないと思われていた2007年10月にニュース記事で報じられたとおり、スパマーは確かにヤフーウェブメールサービスから得られる CAPTCHA を入力することでポルノ画像で報いられる、Windows のゲームを作成した。これにより、スパマーはスパムメールを送るための一時的な無料のEメールアカウントを作成することができた。