2007年7月8日 星期日

eMule的模糊協定

※本文以GNU自由文件授權發佈,並張貼於維基百科

eMule在0.47b之後的版本正式加入了模糊協定的功能,這個功能主要是針對ISP的流量限制做出反擊。

簡介


在網路上傳輸的封包,大致上可以很簡單的分為兩個部份:標頭與資料。在標頭的部份都含有特定的識別資訊,因此只要透過特定的觀察器,去擷取在網路上傳播的 封包,就可以知道「誰」正在用何種「通訊協定」在傳輸訊息。而eMule所使用的ED2K通訊協定,在每個封包的標頭的部份,自然也包含著特定的識別資 訊。最近幾年,各國的ISP業者因為感受到P2P流量對自身網路所帶來的衝擊,因此紛紛開始研究去限制P2P的流量。而eMule所使用的ED2K通訊協 定,自然是主要的目標之一,因為同時在使用eMule的人可能有數百萬到數千萬人以上。

為了對ISP的流量限制做出反制,eMule的開發團隊,開發出「模糊協定」這項功能。開啟這個功能,eMule傳輸的封包標頭看起來就會變成一群亂數而無意義的資料,因為缺乏固定的特徵,所以沒有辦法被簡單的識別出來,如此一來ISP的流量限制也就變得毫無效果。

注意事項


「模糊協定」經常在某些地方會被誤解:

  • 模糊協定無法增加隱匿性,因為這個功能不是對封包進行加密的動作,它只是利用某種演算法讓封包標頭的資訊變成一串看似無意義的亂數。

  • 因為封包沒有加密,對那些告密者而言,他們還是能知道「誰」正在傳輸「特定的資料」。


目前模糊協定已經在ED2k TCP與UDP、伺服器的TCP與UDP、Kad的TCP上實做,至於Kad的UDP則尚未實做。

開啟這項功能會使CPU的佔用率稍微提高,並且在傳輸資料時,會需要多傳數Bytes的資料,然而這並不是什麼大問題。

L7-filter與IPP2P


L7-filter是針對OSI模型 的第七層-應用層所設計,是Linux防火牆Netfilter的分類器。它可以對每個封包所使用的通訊協定做出分類,進而讓Netfilter對特定的 通訊協定進行阻擋或者是頻寬控管。目前針對ED2K的比對檔只測試到eMule 0.47a的版本,之後的版本因為模糊協定的關係,應該無法對經過模糊化的ED2K封包做出有效的比對。

IPP2P則是Netfilter的模組,專門針對P2P通訊協定來設計。在IPP2P的網站並沒有任何關於成功辨識模糊協定的消息,因此可以認定IPP2P無法對經過模糊化的ED2K封包做出有效的比對。

參考資料