0

我正在创建一个遵循服务器/客户端范例的聊天服务程序。该聊天程序既作为聊天服务器又作为聊天客户端存在,用户可以托管聊天室(并将他的客户端连接到该服务器),或者他可以加入现有的聊天室。

客户端通过其他用户将告诉他们的直接 IP 地址(例如从 whatismyip.com 获得)和指定的端口号进行连接。

在此聊天程序中的任何时间,一个用户都可以将文件发送给另一个用户。这是通过要求服务器在两个用户之间建立握手来启动的,用户 A 通过服务器将他的 IP 传递给用户 B,并且用户 B 调用用户 A 为文件传输创建的新服务。这消除了原来的聊天服务器,用户通过使用 nettcp 协议的直接 IP 连接。

在此文件传输中,文件在最初通过 RSA 加密发送 AES 私钥后使用 AES 加密。

我想知道有人可以用什么样的方式在这里发起中间人攻击。显然,我看到了通过服务器将 IP 地址传递给其他用户的缺陷,但现在我看不到任何其他方式,因为我无法让服务器检索发件人的 IPV4。

中间人的攻击方式是不是他可以看到这两个用户正在传输文件,并以某种方式从两端将数据流拉到自己身上?他可以在已经进行的文件传输会话中执行此操作吗?

我试图了解 MITM 攻击的工作方式,以便我可以查看是否可以保护我的程序免受此类攻击......但如果唯一可靠的方法是使用证书颁发机构(我仍在学习关于),请继续告诉我。

4

2 回答 2

1

在进行了更多搜索之后,我发现这个很棒的链接解释了不同类型的 MITM 攻击以及它们是如何工作和执行的非常详细。

http://www.windowsecurity.com/articles/Understanding-Man-in-the-Middle-Attacks-ARP-Part1.html

一共有四个部分。

于 2013-01-20T11:14:44.320 回答
0

中间人的攻击方式是不是他可以看到这两个用户正在传输文件,并以某种方式从两端将数据流拉到自己身上?他可以在已经进行的文件传输会话中执行此操作吗?

您需要定义一个威胁模型。通常的嫌疑人是消息插入、删除、篡改和重新排序。有时攻击者只需要篡改一条消息,这样你就做错了。例如,他/她可能需要稍微翻转一下,以便“将 100 美元从 A 转移到 B”更改为“将 900 美元从 A 转移到 B”。在这种情况下,攻击者不需要在中间或解密消息。


我正在尝试了解 MITM 攻击的工作方式,以便我可以查看是否可以保护我的程序免受此类攻击......但如果唯一可靠的方法是使用证书颁发机构(我仍在学习关于),请继续告诉我。

与其尝试设计一个强化的协议,也许您可​​以使用一个已经存在的协议来解决您的问题。

该协议将是 Z 实时传输协议 (ZRTP)。该协议在 RFC 6189, ZRTP: Media Path Key Agreement for Unicast Secure RTP中指定。

ZRTP 是一种密钥交换协议,其中包括短身份验证字符串 (SAS) 以阻止中间人攻击。本质上,SAS 是一种只需要执行一次的语音认证。您可以省略 SAS 检查,但不建议这样做。如果您省略了检查并且坏人没有攻击,那么对于当前和未来的会话来说一切正常。

一旦您建立了第一个没有对抗性篡改的安全通道,所有未来的会话都将是安全的,因为当前会话的密钥协议依赖于早期会话。并且已知最早的会话(第一个会话)是安全的。

ZRTP 还提供前向保密,因此当前会话的妥协不会影响过去会话的安全性。

ZRTP 不需要认证机构或其他(不)受信任的第三方。

Matthew Green 博士在他的密码学工程网站Let's talk about ZRTP 上有一篇关于 ZRTP 的博客。

要回答您关于 MitM 的问题,Stack Overflow 的答案太多了。一本很棒的免费书籍是 Peter Guttman 的Engineering Security。MitM 有时是攻击者的目标,但它不是他/她唯一的载体。Guttman 的书着眼于许多威胁、人类如何行动和反应、攻击者成功的原因以及如何围绕许多问题进行设计。

于 2014-02-25T05:25:30.300 回答