2、反垃圾郵件技術
已經存在的和在被提及的反垃圾郵件方法試圖來減少垃圾郵件問題和處理安全需求。通過正確的識別垃圾郵件,郵件病毒或者郵件攻擊程序等都會減少。這些解決方法採取多種安全途徑來努力阻止垃圾郵件。
Dr. Neal Krawetz在Anti-Spam Solutions and Security[ref 1]文中將反垃圾郵件技術作了非常好的分類。當前的反垃圾郵件技術可以分為4大類:過濾器(Filter)、反向查詢(Reverse lookup)、挑戰(challenges)和密碼術(cryptography),這些解決辦法都可以減少垃圾郵件問題,但是都有它們的局限性。本文將在下面的內容討論這些技術以及一些主要技術的實現。
2.1、過濾
過濾(Filter)是一種相對來說最簡單卻很直接的處理垃圾郵件技術。這種技術主要用於接收系統(MUA,如OUTLOOK EXPRESS或者MTA,如sendmail)來辨別和處理垃圾郵件。從應用情況來看,這種技術也是使用最廣泛的,比如很多郵件服務器上的反垃圾郵件插件、反垃圾郵件網關、客戶端上的反垃圾郵件功能等,都是採用的過濾技術。
2.1.1、關鍵詞過濾
關鍵詞過濾技術通常創建一些簡單或複雜的與垃圾郵件關聯的單詞表來識別和處理垃圾郵件。比如某些關鍵詞大量出現在垃圾郵件中,如一些病毒的郵件標題,比如:test。這種方式比較類似反病毒軟件利用的病毒特徵一樣。可以說這是一種簡單的內容過濾方式來處理垃圾郵件,它的基礎是必須創建一個龐大的過濾關鍵詞列表。
這種技術缺陷很明顯,過濾的能力同關鍵詞有明顯聯繫,關鍵詞列表也會造成錯報可能比較大,當然系統採用這種技術來處理郵件的時候消耗的系統資源會比較多。並且,一般躲避關鍵詞的技術比如拆詞,組詞就很容易繞過過濾。
2.1.2、黑白名單
黑名單(Black List)和白名單(White List)。分別是已知的垃圾郵件發送者或可信任的發送者IP地址或者郵件地址。現在有很多組織都在做*bl(block list),將那些經常發送垃圾郵件的IP地址(甚至IP地址範圍)收集在一起,做成block list,比如spamhaus的SBL(Spamhaus Block List),一個BL,可以在很大範圍內共享。許多ISP正在採用一些組織的BL來阻止接收垃圾郵件。白名單則與黑名單相反,對於那些信任的郵件地址或者IP就完全接受了。
目前很多郵件接收端都採用了黑白名單的方式來處理垃圾郵件,包括MUA和MTA,當然在MTA中使用得更廣泛,這樣可以有效地減少服務器的負擔。
BL技術也有明顯的缺陷,因為不能在block list中包含所有的(即便是大量)的IP地址,而且垃圾郵件發送者很容易通過不同的IP地址來製造垃圾。
2.1.3 HASH技術
HASH技術是郵件系統通過創建HASH來描述郵件內容,比如將郵件的內容、發件人等作為參數,最後計算得出這個郵件的HASH來描述這個郵件。如果HASH相同,那麼說明郵件內容、發件人等相同。這在一些ISP上在採用,如果出現重複的HASH值,那麼就可以懷疑是大批量發送郵件了。
2.1.4 基於規則的過濾
這種過濾根據某些特徵(比如單詞、詞組、位置、大小、附件等)來形成規則,通過這些規則來描述垃圾郵件,就好比IDS中描述一條入侵事件一樣。要使得過濾器有效,就意味著管理人員要維護一個龐大的規則庫。
2.1.5 智能和概率系統
廣泛使用的就是貝葉斯(Bayesian)算法,可以學習單詞的頻率和模式,這樣可以同垃圾郵件和正常郵件關聯起來進行判斷。這是一種相對於關鍵字來說,更複雜和更智能化的內容過濾技術。我將在下面詳細描述這種在客戶端和服務器中使用最廣泛的技術。
2.1.5.1 Bayesian 貝葉斯算法
在過濾器中,現在表現最好的應該是基於評分(score)的過濾器,因為我們很容易就可以明白對付狡猾的垃圾郵件,那些黑白名單、關鍵詞庫或者HASH等過濾器是多麼的簡單。評分系統過濾器是一種最基本的算法過濾器,也是貝葉斯算法的基本雛形。它的原理就是檢查垃圾郵件中的詞或字符等,將每個特徵元素(最簡單的元素就是單詞,複雜點的元素就是短語)都給出一個分數(正分數),另一方面就是檢查正常郵件的特徵元素,用來降低得分的(負分數)。最後郵件整體就得到一個垃圾郵件總分,通過這個分數來判斷是否spam。
這種評分過濾器盡量實現了自動識別垃圾郵件的功能,但是依然存在一些不適應的問題:
*特徵元素列表通過垃圾郵件或者正常郵件獲得。因此,要提高識別垃圾郵件的效果,就要從數百郵件中來學習,這降低了過濾器效率,因為對於不同人來說,正常郵件的特徵元素是不一樣的。
*獲得特徵元素分析的郵件數量多少是一個關鍵。如果垃圾郵件發送者也適應了這些特徵,就可能讓垃圾郵件更像正常郵件。這樣的話,過濾特徵就要更改了。
*每個詞計算的分數應該基於一種很好的評價,但是還是有隨意性。比如,特徵就可能不會適應垃圾郵件的單詞變化,也不會適應某個用戶的需要。
貝葉斯理論現在在計算機行業中應用相當廣泛,這是一種對事物的不確定性描述,比如google計算中就採用了貝葉斯理論。貝葉斯算法的過濾器就是計算郵件內容中成為垃圾郵件的概率,它要首先從許多垃圾郵件和正常郵件中進行學習,因此,效果將比普通的內容過濾器更優秀,錯報就會更少。貝葉斯過濾器也是一種基於評分的過濾器。但不僅僅是一種簡單的計算分數,而更從根本上來識別。它採用自動建立特徵表的方式,原理上,首先分析大量的垃圾郵件和大量的正常郵件,算法分析郵件中多種特徵出現概率。
貝葉斯算法計算特徵的來源通常是:
·郵件正文中的單詞
·郵件頭(發送者、傳遞路徑等)
·其他表現,比如HTML編碼(如顏色等)
·詞組、短語
·meta信息,比如特殊短語出現位置等
比如,正常郵件中經常出現單詞AAA,但是基本不在垃圾郵件中出現,那麼,AAA標示垃圾郵件的概率就接近0,反之則然。
貝葉斯算法的步驟為:
1. 收集大量的垃圾郵件和非垃圾郵件,建立垃圾郵件集和非垃圾郵件集。
2. 提取特徵來源中的獨立字符串,例如 AAA等作為TOKEN串並統計提取出。