透過不斷學習與訓練,貝氏過濾法準確度高達九成

垃圾郵件氾濫成災,是所有電子郵件使用者的夢魘。對抗垃圾信件的技術日新月異,其中最為被廣泛討論的就是「貝氏過濾法(Bayesian Filtering)」。貝氏過濾法是利用貝氏定理發明的過濾法,簡單來說,貝氏定理是結合事前機率與條件機率,導出事後機率的過程。

越來越多阻擋垃圾產品採用貝氏演算法來過濾。貝氏文字分類其實並不算為新興領域,近年來垃圾郵件氾濫,貝氏定理被應用在區分垃圾信件上有令人驚訝的成效,因此成了對抗垃圾信件的新寵兒。貝氏過濾法如何運作

現代人已逐漸習慣使用類似貝氏定理的概念來分析垃圾信件。例如我們會認為信件中出現「未滿十八歲」字眼即可能為垃圾信件。如果這封信件同時出現「極品」、「熟女」、「偷拍」等字眼,我們便已幾乎肯定此即為不折不扣的垃圾信件。說穿了,我們用過往的收信經驗,判定新的信件是否為垃圾信。同理可證貝氏定理應用在內容過濾領域方面的強大效能,貝氏過濾法即是採用類似,但更客觀的統計方式來偵測其為垃圾信件之機率。

上述所提及「未滿十八歲」、「極品」、「熟女」、「偷拍」對「貝氏過濾法」而言皆為單詞(Token)。一般來說「貝氏過濾法」會有個資料庫,暫且稱之為「貝氏過濾法資料庫」,其主要作用為儲存單詞與單詞的機率。資料庫一開始是淨空的,所以無法判定垃圾信件。別忘了貝氏定理是要仰賴過往累積的數據來預測事件發生的機率。

因此對於空的「貝氏過濾法資料庫」,如能事先提供1000封垃圾信,與1000封正常信件,對信件辨別的訓練過程將帶來莫大幫助,首先分別將1000封的正常信與垃圾信放入資料庫,系統會將這2000封信的內容切成單詞,給予不同的機率。當下次新信件來時,一樣會把信件分解成單詞,比對訓練過的「貝氏過濾法資料庫」,分析過往的經驗,將能精確評判此封高達為垃圾信件的機率。有了訓練「貝氏過濾法資料庫」的步驟,貝氏過濾法的精準率必能達到95%~99.95%之準值。優異的學習阻擋邏輯

貝氏過濾法仍可在眾多過濾法中一枝獨秀的最主要原因,乃為其極高的準確度、學習方式容易、可針對不同產業調整、垃圾信發送者(Spammer)不容易將垃圾信穿透。垃圾發送者會大量發放垃圾信件,於一段時間後更改內文結構,讓阻擋垃圾的產品疲於奔命更換新過濾規則。

垃圾其實類似於病毒;譬如防毒廠商必須為新病毒提供防毒定義檔,否則未被攔截的病毒勢將危害整個網路;假設一套有效系統能在初次中毒後,將病毒載入其中,日後即可自動攔阻同種病毒,聽起來是否很令人振奮?沒錯,貝氏過濾法即是基於此種理念,當同一封垃圾大量傳送時,同一間公司便會有相當人數收到同一封垃圾信,假設第一人將收到的垃圾信即刻送回系統學習,下一封垃圾信就會被有效攔截。此外,垃圾信件種類遠多於病毒,其製作門檻則反之,變形垃圾郵件在廠商還沒研發出新的垃圾定義檔時,貝氏過濾法已可先行學習,防範下一封類似的垃圾信件。

再者不同產業對垃圾的定義也會有所不同,一般人只要看到「威而剛」就想到垃圾,對於藥廠或是醫院而言則未必。使用貝氏過濾法的優點是;可針對各行各業學習不同的認定方式。一般廠商都使用規則來阻擋垃圾郵件,一旦被找出弱點,垃圾發送者即可針對弱點狡猾地避開系統偵測,長驅直入至收信者的信箱。

貝氏過濾法的使用者,基本上會依據產業需求學習自身認定垃圾與正常信件,故學習的信件不同,發送者不再輕易找到通用的弱點將信件寄給每個郵件使用者。當垃圾的攔截率高時,發送垃圾者的效益愈成反比,垃圾發送者自然漸漸將目標轉向無垃圾阻擋機制的使用者,甚或具備共通弱點的垃圾郵件阻擋機制。貝氏過濾對抗中文垃圾信

貝氏過濾法的功效卓越,但在中文環境上並非一應俱全。貝氏過濾法以單詞(Token)作為依據,對英語系語文而言,可善加利用空白或標點符號辨識單詞。但相較於中文字,Big5乃是由兩個byte所組成,字與字間基本上並無空白,在加上語意通常由「詞」而非「字」來產生,如果想切出有意義而準確的單詞則必須搭配中文詞庫,或自然語言技術將有意義的字句取出單詞。然而這也是為何國外產品使用相同貝氏過濾法的技術,準確度卻不一的主因。穿透貝氏過濾法的攔截

貝氏過濾法是由統計的觀點來分析,要躲過它,必須使用大量的中性且儘量不提及與「垃圾郵件」相關的字眼;或者必須是大量被使用者學習過的正常信件詞彙。雖然如此,垃圾發送者依然不容易將垃圾信件穿透貝氏過濾法的過濾,畢竟要垃圾信件完全不提及其相關字眼非常困難,因為此乃為其廣告來源。收信者將本身認定的正常信件送給貝氏過濾法學習,統計出來最常使用的正常信件用詞只有「貝氏過濾法資料庫」知道,垃圾發送者除非經過百般嘗試否則穿透機率十分渺茫。其嘗試過程中,又已迅速地被送回垃圾學習機制了。唯一要穿透貝氏過濾法的辦法,便是找到疏於訓練「貝氏過濾法資料庫」的使用者,成功機會也許較高。

貝氏過濾法的改良型
貝氏過濾法與「啟發式」最大相異處在於前者利用統計的方式找出垃圾特徵,後者乃經由人工找出垃圾特徵。啟發式同樣具備相當的優勢;例如「未滿十八歲的極品」,啟發式可採用作法為:「未滿十八歲」此字句中,其字眼出現過後的10個字內有出現「極品」一併列入垃圾特徵;換言之「未滿十八歲的極品」、「未滿十八歲的美女極品」即為此例。但一旦出現「極品燕窩未滿十八歲不適宜」,則啟發式就不認定為垃圾特徵,但由於此詞句中同時出現「未滿十八歲」與「極品」,「貝氏演算法」則可能誤判為垃圾信件。針對此點,目前貝氏過濾法也出現改良型,其改良方式為不單用單詞做統計,而改採用短句(Phrase)進行改良判斷的精準率,使用短句算是目前較新穎的技術。

貝氏過濾搭配啟發式過濾
貝氏過濾法與常被討論的「啟發式(Heuristic)」相異之處,在於啟發式可將已被研究出來的垃圾郵件特徵,採規則(Rule Base)方式給予不同的分數,進而偵測電子郵件中有多少符合的規則,再依據這些規則所被指定的分數加總,藉此判定郵件本身擁有垃圾特徵值的比重高低。與「啟發式」不同的是,「貝氏過濾法」是將信件切分成單詞,利用演算法統計每個單詞的機率,進而推算出可能為垃圾信高達的機率。

以攤販對假鈔真偽的辨為例,目前假鈔防偽線如假似真已無法逕行辨識,攤販得經由盲人點、浮水印甚至螢光燈照射…等多重管道下辨別偽鈔。同樣的,垃圾發送者的技術也越來越精進,不但使用真路由,更甚者偽造信件標頭也精進到與真正信件標頭無法區別。為避免高誤判率,目前主流技術會一併將信件標頭與內文同時進行垃圾信件特徵偵測,即使用真實信件標頭或幾可亂真之標頭的垃圾信件,其特徵仍可從內文察覺。最新趨勢是將「啟發式」與貝氏過濾法兩者搭配使用,將貝氏過濾法偵測垃圾機率當成「啟發式」的判斷條件之一。這樣的作法可以同時採用兩邊的優點,交叉比對。當然,持續訓練「貝氏過濾法資料庫」會讓準確度平穩地維持在95%~99.95%以上。文⊙蔡承家

作者簡介
蔡承家

寬華網路科技自有產品處經理,曾在澳洲ISP參與系統網路工程,並曾於IBM子公司擔任軟體、系統、EC、客服部等部門經理,累積ISP網路產業共有七年經驗。 近年來致力於發展郵件稽核側錄、郵件防駭、防毒、防垃圾等相關產品開發。

SPAM的歷史
我們一般稱垃圾郵件為SPAM或Junk Mail,更繞口的說法是Unsolicited Commercial Email(未經邀約的商業電子郵件)或Unsolicited Bulk E-mail(未經邀約的大量電子郵件),就是將一份內容相同的電子郵件,未經收件人同意,大量寄送給許多人,其內容大多是與收信人無關的商業廣告,而且收件人無法拒收。

其實SPAM不是現代的產物,早在1975年,就有關於垃圾郵件的記錄,1985年8月出現第一封透過電子郵件傳送的「連鎖信」。

1994年4月,Canter & Siegel法律事務所向6000多個新聞群組發送同樣內容的垃圾郵件,也就是著名的「綠卡樂透(Greencard Lottery)」事件。

1995年5月,第一個專門發垃圾郵件的軟體Floodgate誕生,能夠自動發送大量郵件,同年8月,已經有數百萬個電子郵件地址在市面上販售。

1996年3月,專家提出過濾垃圾郵件的方法,並研發一些簡單的過濾工具。1996年4月,垃圾郵件出現另一個名稱UCE(Unsolicited Commercial Email),而且漸受企業重視,人們也開始想辦法阻檔垃圾郵件的氾濫。

為了閃避各種對垃圾郵件的抵制,Spammer開始偽造寄件人及郵件地址,1997年3月,他們把目標轉到Mail Relay,利用其他人的郵件伺服器寄送垃圾郵件。

在過去幾年,世界各地成立許多反垃圾郵件組織,例如ORBS、DSBL、MAPS、SPAMHAUS、UXN等。不過,這些組織也是Spammer攻擊的對象,如SPEWS、Osirusoft(relay.osirusoft.com)及SORBS(www.dnsbl.sorbs.net),在去年就傳出被Sobig蠕蟲攻擊的消息。

我們可以預期,這場戰爭仍會持續多年,正對邪的對抗將持續下去。文⊙陳世煌

熱門新聞

Advertisement