サーバー/クライアントパラダイムに従うチャットサービスプログラムを作成しています。そのチャットプログラムはチャットサーバーとチャットクライアントの両方として存在し、ユーザーはチャットルームをホストする(そしてクライアントをそのサーバーに接続する)か、既存のチャットルームに参加することができます。
クライアントは、whatismyip.comから取得したものなど、他のユーザーが通知する直接IPアドレスと、指定されたポート番号を介して接続します。
このチャットプログラムでは、いつでも1人のユーザーが別のユーザーにファイルを送信できます。これは、2人のユーザー間にハンドシェイクを設定するようサーバーに要求することによって開始されます。ユーザーAはサーバーを介してユーザーBにIPを渡し、ユーザーBはユーザーAがファイル転送用に作成した新しいサービスを呼び出します。これにより、元のチャットサーバーが不要になり、ユーザーはnettcpプロトコルを使用して直接IP経由で接続されます。
このファイル転送では、最初にRSA暗号化を介してAES秘密鍵を送信した後、ファイルはAESで暗号化されます。
ここで、誰かが中間者攻撃を開始する方法を知りたいです。明らかに、サーバーを介して他のユーザーにIPアドレスを渡す際の欠陥がありますが、サーバーに送信者のIPV4を取得させることができないため、現在は他の方法はわかりません。
中間者攻撃の仕組みは、これら2人のユーザーがファイルを転送していることを確認し、データストリームを両端から自分自身にプルすることです。彼はすでに進行中のファイル転送セッションでこれを行うことができますか?
私はMITM攻撃がどのように機能するかを理解しようとしているので、そのような攻撃からプログラムを保護できるかどうかを確認できます...しかし、確実に保護する唯一の方法が認証局を使用することである場合(私はまだ学習中です)について)、先に進んでそれを教えてください。