2013-01-16 30 views
0

我正在創建一個遵循服務器/客戶端範例的聊天服務程序。該聊天程序既作爲聊天服務器也作爲聊天客戶端存在,用戶可以主持聊天室(並將其客戶端連接到該服務器),也可以加入現有聊天室。中間人可以發起什麼樣的攻擊?

客戶端通過其他用戶告訴他們的直接IP地址連接,例如從whatismyip.com獲得的IP地址和指定的端口號。

在這個聊天程序中的任何時候,一個用戶可以發送文件給另一個用戶。這是通過要求服務器在兩個用戶之間建立握手而發起的,其中用戶A通過服務器將他的IP傳遞給用戶B,並且用戶B調用用戶A爲文件傳輸創建的新服務。這消除了原始的聊天服務器,並且用戶通過使用nettcp協議的直接IP連接。

通過此文件傳輸,在最初通過RSA加密發送AES私鑰之後,文件會用AES加密。

我想知道有什麼樣的方法可以在這裏發起中間人的攻擊。很明顯,我看到了我通過服務器將IP地址傳遞給其他用戶的缺陷,但現在我沒有看到任何其他方式,因爲我無法讓服務器檢索發件人的IPV4。

中間人攻擊是如何工作的,是他可以看到這兩個用戶正在傳輸文件,並以某種方式將數據流從兩端拉向自己?他可以在已經進行的文件傳輸會話上做到這一點嗎?

我試圖理解MITM攻擊的方式,以便我可以看到我是否可以保護我的程序免受此類攻擊......但是如果可靠地這樣做的唯一方法是使用證書頒發機構(其中I還在學習中),請繼續並告訴我。

回答

0

是方式的中間人攻擊的作品,是他可以看到 這兩個用戶傳輸文件,並以某種方式 流從兩端拉取數據,以自己?他可以在已經進行的 文件傳輸會話上做到這一點嗎?

您需要定義威脅模型。通常的嫌疑人是消息插入,刪除,篡改和重新排序。有時攻擊者只需要篡改一條消息,以便做錯誤的事情。例如,他/她可能需要翻轉一點,所以「從A轉移$ 100」變爲「從A轉移$ 900」。在這種情況下,攻擊者不需要在中間或解密消息。


我想了解的方式MITM攻擊工作,所以我可以看到,如果我 可以保護我的程序免受此類攻擊......但如果要 的唯一可靠的方式這樣做是使用一個證書頒發機構(我仍然在學習 ),請繼續並告訴我這一點。

與其試圖設計一個強化協議,也許你可以使用一個已經存在的協議來解決你的問題。

該協議將是Z實時傳輸協議(ZRTP)。協議在RFC 6189,ZRTP: Media Path Key Agreement for Unicast Secure RTP中規定。

ZRTP是密鑰交換協議包括短認證字符串(SAS),保持出MITM。實質上,SAS是一種僅需要執行一次的語音認證。您可以省略SAS檢查,但不建議。如果您省略了支票,壞人不會攻擊,那麼當前和將來的會話都可以。

一旦你建立你的第一個安全通道無對抗性的篡改,將來的所有會話會因爲當前會話的方式密鑰協商的安全依賴於前幾屆會議。而最早的會議(第一屆會議)已知是安全的。

ZRTP還提供前向安全性,所以當前會話的妥協並不影響過去會話的安全性。

ZRTP不需要證書頒發機構或其他(UN)可信的第三方。

馬修·格林博士擁有約ZRTP他在Let's talk about ZRTP加密工程網站博客。

要獲得關於MITM問題,有太多的堆棧溢出的答案。一本很好的免費書籍是Peter Guttman的Engineering Security。 MitM有時是攻擊者的目標,但它不是他/她唯一的向量。 Guttman的書着眼於許多威脅,人類如何行動和反應,攻擊者爲什麼成功,以及如何設計許多問題。