我正在创建一个遵循服务器/客户端范例的聊天服务程序。该聊天程序既作为聊天服务器又作为聊天客户端存在,用户可以托管聊天室(并将他的客户端连接到该服务器),或者他可以加入现有的聊天室。
客户端通过其他用户将告诉他们的直接 IP 地址(例如从 whatismyip.com 获得)和指定的端口号进行连接。
在此聊天程序中的任何时间,一个用户都可以将文件发送给另一个用户。这是通过要求服务器在两个用户之间建立握手来启动的,用户 A 通过服务器将他的 IP 传递给用户 B,并且用户 B 调用用户 A 为文件传输创建的新服务。这消除了原来的聊天服务器,用户通过使用 nettcp 协议的直接 IP 连接。
在此文件传输中,文件在最初通过 RSA 加密发送 AES 私钥后使用 AES 加密。
我想知道有人可以用什么样的方式在这里发起中间人攻击。显然,我看到了通过服务器将 IP 地址传递给其他用户的缺陷,但现在我看不到任何其他方式,因为我无法让服务器检索发件人的 IPV4。
中间人的攻击方式是不是他可以看到这两个用户正在传输文件,并以某种方式从两端将数据流拉到自己身上?他可以在已经进行的文件传输会话中执行此操作吗?
我试图了解 MITM 攻击的工作方式,以便我可以查看是否可以保护我的程序免受此类攻击......但如果唯一可靠的方法是使用证书颁发机构(我仍在学习关于),请继续告诉我。