Bayes wiecznie żywy
5 kwietnia 2004
Dotychczasowe
metody walki ze spamem okazały się z punktu widzenia użytkowników systemów pocztowych nieskuteczne.
Wygląda jednak na to, że rozwiązaniem problemu są algorytmy matematyczne odkryte jeszcze w dziewiętnastym
wieku.
Tomasz Grabowski
Zaczyna się niewinnie: jeden, dwa listy dziennie. Wykasowanie
kilku maili informujących o świetnym biznesie w Nigerii czy dużej wygranej na loterii nie sprawia większych
problemów. Jednak firmy zajmujące się „promocją przez Internet” wymieniają się
posiadanymi adresami i z czasem listów przybywa. Gdy do skrzynki trafia 100-200 listów dziennie, kasowanie spamu
staje się przymusowym porannym rytuałem – człowiek przyzwyczai się do wszystkiego.
Nerwy
puszczają zwykle któregoś pięknego poranka, gdy walcząc z powodzią niechcianej korespondencji
przez nieuwagę kasujemy ten jeden ważny list, na który czekaliśmy. Zwykle dopiero wtedy uświadamiamy
sobie, że spam stanowi realne zagrożenie dla biznesu: zwiększa prawdopodobieństwo przeoczenia ważnego
listu, odrywa ludzi od produktywnej pracy, a ponadto zapycha łącza do Internetu i zmniejsza wydajność
serwerów pocztowych.
Strach przed czarną listą
Najstarszą metodą walki ze spamem jest powiadamianie administratorów sieci, z których spam jest
wysyłany. Wymaga to jednak szeregu zabiegów ze strony administratora: dodatkowych kontaktów z użytkownikami
systemu pocztowego, analizy nagłówków niechcianych listów, wyszukiwania kontaktów do administratorów
innych sieci, dodatkowej korespondencji z nimi. Część tych czynności można zautomatyzować pisząc
odpowiednie skrypty, nadal jest to jednak zajęcie bardzo niewdzięczne i bez jakiejś formy automatyzacji na
dłuższą metę wytrzymać się nie da.
Jedną z prostszych technik walki ze spamem
na poziomie serwera poczty, jest korzystanie z tzw. czarnych list (black lists) – tworzone przez ochotników i
wymieniane między administratorami spisy domen, w których działają źle skonfigurowane systemy pocztowe
umożliwiające wysyłanie spamu. Znalezienie się domeny na takiej liście to dla jej administratora
środowiskowy wstyd i zwykle powód do natychmiastowego działania. Czarne listy nie są jednak panaceum
na spam.
Z listami wiąże się też realne niebezpieczeństwo, że niekiedy poszczególne
adresy mogą na nie trafić przez pomyłkę lub nawet czyjeś celowe działanie. Nieostrożne
korzystanie z czarnych list może więc skończyć się tym, że w pewnym momencie dostęp do
sieci zostanie odcięty użytkownikom na których obsłudze nam zależy, np. klientów. Wielokrotnie
przeprowadzane testy wykazują ponadto, że metoda ta pozwala wyeliminować w najlepszym razie około 50%
spamu, a najczęściej dużo mniej – w granicach 15-25%. Atrakcyjne jest głównie to, że
jest ona niezmiernie prosta w implementacji, dlatego można ją traktować jako pierwszy krok w walce ze spamem.
Warto w tym celu skorzystać z odpowiedzialnie prowadzonej listy, np. The Spamhaus Block List.
Z reguły nieskutecznie
Stosowaną z powodzeniem techniką walki ze
spamem jest filtrowanie nagłówków i treści listów na poziomie bramki pocztowej lub serwera
pocztowego. Filtry dzielą się na takie, które posługują się sygnaturami (wzorcami) oraz takie,
które analizują zawartość listu według pewnych ogólniejszych kryteriów (skanery oparte
na regułach, zwane niekiedy heurystycznymi).
Bieżącym tworzeniem wzorców zajmują się
wyspecjalizowane firmy. Przykładowo firma Brightmail utrzymuje ponad 2 miliony kont pocztowych, na które przychodzi
dziennie ok. 2 miliardy spamerskich przesyłek. Dla każdego z tych listów tworzona jest sygnatura, która
ląduje w bazie danych dostępnej dla klientów. Jeśli do klienta trafi list podobny do tego, który
został opisany w sygnaturze, zostanie on oznaczony jako spam. Oczywiście spamerzy są tego świadomi i stosują
metody, które mają za zadanie zmylenie filtrów (np. do każdego listu wstawiają jakieś losowe
słowo, aby różnił się od wzorca zawartego w sygnaturze). Spam nadal płynie więc szerokim
strumieniem, napędzany nieustanną kreatywnością spamerów, a twórcy oprogramowania antyspamowego
ciągle wydają nowe sygnatury.
Ten wyścig wydaje się nie mieć końca – podobnie
jak nie widać końca zapału ludzi do pisania wirusów. Biorąc jednak pod uwagę fakt, że
skuteczność tego typu filtrów oceniania jest na około 50-70%, wygląda na to, że w tym wyścigu
spamerzy są cały czas o krok z przodu. Filtry wymagają też ciągłego utrzymywania odpowiedniej
infrastruktury umożliwiającej tworzenie sygnatur, w związku z czym są to rozwiązania raczej drogie
– wspomniane oprogramowanie firmy Brightmail kosztuje 1500 USD rocznie za licencję dla 50 użytkowników.
Mocną ich stroną jest jednak to, że nie ma w praktyce możliwości, aby list, który nie jest
spamem, został przez oprogramowanie jako taki zakwalifikowany. Jest to więc bardzo istotny czynnik dla firm, których
funkcjonowanie związane jest z nawiązywaniem kontaktu z nowymi klientami za pomocą poczty elektronicznej.
Filtry oparte na regułach działają na nieco innej zasadzie. Najczęściej nie przechowują
żadnej bazy danych, którą trzeba by na bieżąco uaktualniać. Zamiast tego analizują treść
każdego listu według pewnych kryteriów. Sprawdzają np. czy list pisany jest wielkimi literami, czy występują
w nim pewne słowa kluczowe najczęściej występujące w spamie jak np. „YOU WON”, „SEX”,
„VIAGRA”, do ilu osób jest adresowany, czy zawiera odnośniki do zewnętrznych stron i do jakich
itp. Każda z reguł ma przypisaną odpowiednią wagę wyrażoną pewną ilością
punktów. Jeśli list zbierze zadaną ilość punktów (np. zawiera „podejrzane” słowa
kluczowe oraz linki do zewnętrznych stron) to jest on oznaczany jako spam. Skuteczność takich filtrów
jest już całkiem zadowalająca – oscyluje w granicach 90-95% - dotyczy to jednak tylko najlepszego oprogramowania
tego typu, takiego jak bardzo popularny SpamAssasin rozwijany na zasadach open source.
Nie ma niestety róży
bez kolców. Okazuje się, że tego typu filtry posiadają tendencję do oznaczania jako spam listów,
które trudno zaliczyć do tej kategorii. Odsetek takich źle sklasyfikowanych listów sięga około
0.5%, co w większości przypadków jest wynikiem niedopuszczalnym, skutkuje bowiem „wycinaniem”
uprawnionej korespondencji. Dodatkowo z racji tego, że oprogramowanie to korzysta z konkretnych algorytmów, przed
wysłaniem konkretnego listu spamerzy mogą po prostu sprawdzić, czy zdoła on prześlizgnąć
się przez dostępne filtry. Szanse na oszukanie filtra są w praktyce spore.
Centralnie
i w rozproszeniu
Centralne filtrowanie poczty na serwerze, który nierzadko obsługuje
kilkaset lub kilka tysięcy kont pocztowych, nie może być jednak uważane za skuteczne. Łatwo bowiem
wyobrazić sobie, że w zasadzie każdy użytkownik posługuje się innym „rodzajem” listów.
Np. używa różnych języków, korzysta z list dyskusyjnych, wysyła wiele załączników
lub w treści jego listów często znajdują się linki do innych stron – słowem nie sposób
jest skonfigurować centralnego filtra poczty w sposób, który brałby pod uwagę wszystkie możliwe
preferencje. Na szczęście, w wielu pakietach istnieje możliwość udostępnienia użytkownikom
narzędzi do samodzielnej konfiguracji.
Wspomniany wcześniej SpamAssasin udostępnia pewne możliwości
konfiguracji. Jeżeli np. w poczcie przesyłane jest wiele odnośników do witryn WWW, możemy zmniejszyć
ilość punktów wagowych przyznawanych tego typu listom i tym samym zmniejszyć szansę na to, że
jakiś ważny list zostanie uznany jako spam. Podobnie, jeśli np. nigdy nie używamy języka innego niż
Polski, możemy zwiększyć ilość punktów, które będą otrzymywały listy
zawierające słowa w innych językach. Dzięki temu skuteczność filtra zostanie w prosty sposób
zwiększona. Niezależnie można też samodzielnie tworzyć nowe reguły. W pakiecie SpamAssasin robi
się to przy pomocy wyrażeń regularnych.
To, że możliwość dostosowania do preferencji
użytkownika jest kluczowa dla jakości filtrowania producenci zrozumieli już dawno i w tym kierunku zmierzają
w zasadzie wszystkie wiodące systemy antyspamowe. Ideałem byłoby oprogramowanie, które uczyłoby
się samo jakie listy użytkownik uważa za spam, a jakie za normalną pocztę. Powinno dostosowywać
się do zmian zarówno w samym spamie, jak też w preferencjach użytkownika. Najlepiej byłoby także,
gdyby oprogramowanie to wymagało jak najmniej konfiguracji i działań ze strony samego zainteresowanego.
Utopia? Okazuje się, że nie. Najnowsze oprogramowanie do walki ze spamem zaprzęga bowiem do pracy sieci
neuronowe. Rozwiązania takie posiadają pewne zdolności uczenia się i przewidywania wyników na podstawie
wcześniej zdobytych informacji. W powiązaniu z narzędziami do analizy statystycznej podejście to sprawdza
się w walce ze spamem. Dochodzimy więc do kolejnego rodzaju oprogramowania antyspamowego czyli tzw. Bayesian Filtering.
Nazwa pochodzi od Thomasa Bayes’a – osiemnastowiecznego twórcy koncepcji analizy statystycznej (patrz
ramka).
Pomysł na wykorzystanie do filtrowania nie jest nowy – jego korzenie sięgają 1996
r., a tak naprawdę technik analizy statystycznej opracowanych przez Dopiero jednak ostatnio udało się wypracować
algorytmy, które dobrze sprawdzałyby się w przypadku filtrowania spamu. Prawdziwa eksplozja tego typu oprogramowania
rozpoczęła się tak naprawdę pod koniec 2003 r. Najnowsze wersje programów wykorzystujące filtrowanie
oparte na koncepcji Bayes’a mają współczynnik skuteczności na poziomie 99,98%! Dodatkowo ilość
„dobrej” korespondencji klasyfikowanej przez te filtry jako spam jest praktycznie zerowa. Skąd biorą
się tak dobre rezultaty?
Użytkownik decyduje sam
Filtr
oparty na algorytmie Bayes’a działa następująco. Dla każdego użytkownika na serwerze pocztowym
lub w oprogramowaniu klienckim tworzone są dwa pliki. W jednym przechowywane są informacje dotyczące listów
uznanych za spam, w drugim zaś pozostałych. Początkowo pliki te są puste, użytkownik musi bowiem
„nauczyć” oprogramowanie odróżniać spam od właściwej poczty. Proces ten wygląda
różnie w zależności od tego jakiego oprogramowania używamy.
W większości programów
instalowanych na serwerze odbywa się w taki sposób, że po otrzymaniu listu użytkownik wysyła go
z powrotem na swoje konto z adnotacją czy jest to spam, czy też normalny list (tak działa np. w darmowe oprogramowane
o nazwie CRM114). Czasami też zamiast przesyłać cały list, wystarczy przesłać tylko jego sygnaturę
(tak działa inny pakiet – również darmowy – o nazwie Dspam). W przypadku niektórych pakietów
komercyjnych, jak np. SpamBully (cena ok. 30 USD za jedno stanowisko) wystarczy tylko jedno kliknięcie. Bez względu
na metodę oznaczania spamu przez użytkownika, wszystkie te programy działają podobnie.
Najczęściej
wykorzystywana przez filtry Bayes’a metoda uczenia się zwana jest Train Only Errors (TOE). Oznacza to, że
programowi wskazywane są tylko te listy, przy klasyfikacji których popełnił błąd. Na początku
program popełnia oczywiście dużo błędów i jego używanie może się wydawać
kłopotliwe. Pojawia się więc pytanie jak szybko odczujemy korzyści płynące ze stosowanie filtrowania
Bayes’a. I tu kolejne zaskoczenie. Okazuje się, że po sklasyfikowaniu kilkudziesięciu listów,
program jest skuteczny już w ponad 90% swoich decyzji. Sklasyfikowanie około 100 – 150 listów pozwala
osiągać skuteczność na poziomie przekraczającym 95%. Po miesiącu używania programu ponad
99% listów jest klasyfikowana poprawnie. Czy warto czekać tak długo?
Zdecydowanie tak! Kiedy
już filtr nauczy się odróżniać pocztę od spamu, jego skuteczność już na zawsze
pozostanie wysoka. Co więcej, ponieważ program uczy się cały czas, zmiany w sposobie tworzenia spamu jak
i charakteru tworzonej i odbieranej „poprawnej” poczty są na bieżąco uwzględniane. Inaczej
mówiąc, dzięki wskazówkom otrzymywanym od użytkownika program ewoluuje wraz z jego potrzebami.
Niezbyt wydajnie, ale skutecznie
Pliki, w których przechowywane
są informacje pozwalające odróżniać spam od normalnej poczty zajmują zwykle od kilku do kilkudziesięciu
Megabajtów. Dopóki pliki są przechowywane na komputerach klienckich problemów z wydajnością
czy pojemnością dysków raczej nie ma. Przechowywanie tak dużych plików na serwerze pocztowym
może już jednak spowodować konieczność dokupienia dodatkowych dysków. Jeśli chodzi o
potrzebną moc procesora, to najszybsze obecnie programy pozwalają sprawdzać nadchodzącą pocztę
w tempie około 120 KB/s (pomiary na serwerze z 1 procesorem Pentium III 1,4 GHz). W przypadku dużych instalacji
serwerowych konieczne wydaje się zbudowanie farmy równoważącej obciążenie.
Skoro
filtry Bayes’a są aż tak skuteczne, pytanie brzmi: jak trudno jest spamerom skonstruować list, który
przejdzie przez nasz filtr. Z racji tego, że ten sposób obrony przed spamem jest na razie rzadko stosowany, trudno
wysnuć wnioski, co do jego skuteczności w przyszłości. Jedno jest jednak pewne – fakt, że tego
typu filtry są dostosowane do indywidualnych wymogów użytkowników powoduje, że skonstruowanie
listu, który przeszedłby wszystkie filtry jest w zasadzie niemożliwe.
Istnieją propozycje
pomagające w zwiększeniu prawdopodobieństwa, że dany list przejdzie dużą część
filtrów, jednak wszystkie one wymagają utrzymywania swego rodzaju bazy danych na temat tego jakie listy należy
wysyłać pod konkretne adresy. Z racji tego, że na 1 milion wysłanych listów spamowych odpowiada
od 1 do 5 osób, utrzymywanie takiej bazy jest dla spamerów po prostu nieopłacalne. Poza tym trudno oczekiwać,
że użytkownik, który z własnej woli korzysta z takiego oprogramowania odpowie na jakąkolwiek ofertę
wysyłaną w ten sposób. Oznacza to, że ten obszar „rynku” konsumentów jest dla spamerów
po prostu nieatrakcyjny.
Już teraz widać, że stosowanie tego typu filtrów odnosi skutek.
Na przestrzeni ostatnich miesięcy daje się bowiem zauważyć wyraźną tendencję do zmniejszania
ilości informacji zawartej w samych listach, a zamiast tego umieszczanie w nich odnośników do witryn WWW.
Coraz częściej list spamowy zawiera jedno zdanie „na zachętę” i towarzyszący mu odnośnik,
po kliknięciu którego otwiera się właściwa strona z reklamą. Skuteczność tego typu
działań jest jednak dużo mniejsza niż zwykłego spamu. Implementacje filtrów Bayes’a
istnieją dopiero od niedawna, a jednak ich skuteczność zwiększa się praktycznie z dnia na dzień,
dlatego też istnieje realna szansa na to, że spam da się jednak ograniczyć.
Spam
zostaje za drzwiami
Jaka przyszłość czeka oprogramowanie antyspamowe? Istniejące
obecnie propozycje, takie jak wprowadzenie mikropłatności czy też wymóg przeprowadzenia przez komputer
wysyłający szeregu działań matematycznych mających za zadanie zmniejszyć szybkość
wysyłania spamu, wymagają zmiany lub rozwinięcia protokołu SMTP. Oznacza to, że nowe rozwiązania
będą wymagały nowego oprogramowania. Szansa na to, że większość użytkowników
Internetu zdecyduje się na ich zastosowanie jest niewielka.
Inne pomysły, takie jak np. filtry agresywne
(filters that fight back) też raczej nie mają przed sobą świetlanej przyszłości. Ich działanie
miałoby bowiem polegać na tym, że specjalne automaty nawiązywałyby połączenia z adresami
WWW zawartymi w spamie, przeciążając tym samym serwery spamerów. Technika ta niesie jednak ze sobą
niebezpieczeństwo wykorzystania jej do ataków typu Distributed Denial of Service.
Prawdziwą szansę
na skuteczną walkę ze spamem dają więc chyba tylko filtry Bayes’a. Skoro raptem po kilku miesiącach
od powstania ich wczesnych implementacji cechują się one tak wysoką skutecznością, to jakiej skuteczności
będziemy mogli oczekiwać od dojrzałych produktów tego typu, które pojawią się na rynku
np. za rok?
Z drugiej strony, kto to wie? Być może do tego czasu spamerzy wynajdą nowe techniki
pozwalające ominąć tego typu zabezpieczenia. W informatyce bardzo często okazuje się bowiem, że
z pozoru niemożliwe do złamania systemy są po jakimś czasie skutecznie oszukiwane. Czy tak będzie
w przypadku filtrów Bayes’a przekonamy się prawdopodobnie w ciągu kilkunastu miesięcy. Jedno jest
pewne: arsenał środków przeciwko spamerom jeszcze nigdy nie zawierał tak skutecznej broni.
***RAMKA**
Czy na pewno wysłałeś?
Niezależnie od filtrów Bayes’a interesującym sposobem ograniczania spamu jest technika zwana
Challenge-Response Filtering. W skrócie polega ona na tym, że do nadawcy listu, który nigdy wcześniej
do nas nie pisał, filtr wysyła zapytanie. Dopiero, kiedy nadawca udzieli na nie odpowiedzi (zazwyczaj musi po prostu
odesłać list z powrotem) właściwy list jest dostarczany do naszej skrzynki odbiorczej. Ta prosta metoda
zatrzymuje ponad 99,9% spamu, choć może być nieco uciążliwa zwłaszcza dla osób korzystających
z poczty sporadycznie.
O ile to możliwe, technikę Challenge-Response Filtering najlepiej stosować
równolegle z innymi. Najkorzystniejszym rozwiązaniem wydaje się więc zastosowanie filtru Bayes’a
lub heurystycznego filtrowania treści opartego na regułach dla wstępnego segregowania poczty, a następnie
wykorzystywania techniki Challenge-Response dla listów, które zostały oznaczone jako spam. Dzięki
temu można mieć pewność, że nie przeoczyło się żadnej istotnej wiadomości. Wspomniane
wcześniej komercyjne oprogramowanie SpamBully działa właśnie w taki sposób. Jeśli chcemy korzystać
z oprogramowania open source, musimy połączyć ze sobą funkcjonalność dwóch różnych
programów, np. SpamAssasin i Active Spam Killer.
Klasyfikacja wg Bayes’a
Thomas Bayes, osiemnastowieczny brytyjski kleryk opracował metodę pozwalającą, w uproszczeniu,
przewidywać prawdopodobieństwo występowania zjawisk w przyszłości na podstawie obserwacji dotychczasowej
częstotliwości ich występowania. Metoda Bayes’a jest stosowana m.in. do rozwiązywania problemów
sortowania i klasyfikowania danych przy wykorzystywaniu uczenia maszynowego, ale także w bankowości i ubezpieczeniach,
a więc wszędzie tam, gdzie występuje ryzyko. Najnowszym zastosowaniem jest klasyfikacja wiadomości e-mail
pod kątem spamu.
Twierdzenie Bayes’a mówi, że dla dwóch niezależnych zdarzeń
A i B prawdopodobieństwo wystąpienia B, jeśli wystąpiło A wynosi:
P(B|A) = (P(B) * P(A|B))
/ P(A) = P(A i B) / P(A),
gdzie:
P(A) oznacza prawdopodobieństwo że wystąpi A
P(A|B)
oznacza prawdopodobieństwo, że wystąpi A pod warunkiem że wystąpiło już B
P(A i B)
oznacza prawdopodobieństwo tego, że wystąpią zarówno A jak i B
W odniesieniu do spamu
za A uznajemy otrzymanie zwykłego listu, zaś za B – listu ze spamem. Powyższy wzór można
by więc odczytać następująco: prawdopodobieństwo tego, że nowy list jest spamem, jest równe
prawdopodobieństwu tego, że ten konkretny list jest spamem – ustalonemu na podstawie porównania z dotychczas
otrzymanymi listami uznanymi za spam, pomnożonemu przez udział normalnych listów w dotychczasowej korespondencji
i podzielonemu przez prawdopodobieństwo tego, że list spamem nie jest – ustalonemu na podstawie porównań
z listami uznanymi za spam (jw).
W przypadku bankowości, klasyfikację Bayes’a można zastosować
do oceny wiarygodności klientów. Można np. stworzyć dwie klasy decyzyjne: pierwsza, to klienci, którzy
nie spłacają rat w terminie. Druga, to klienci, którzy sumiennie wywiązują się ze swoich zobowiązań.
Gdy pojawi się nowy klient, można szacować prawdopodobieństwo, z jakim znajdzie się on w jednej bądź
w drugiej grupie, a na podstawie obserwacji spłaty kredytu modyfikować ocenę jakości przyporządkowania
do jednej z dwóch klas.
Na podobnej zasadzie działają także np. katalogi stron WWW w wyszukiwarkach
internetowych. W tym przypadku tworzone są odpowiednie grupy tematyczne (np. sport, wiadomości, rozrywka) do których
przypisane są odpowiednie strony. Na tej podstawie klasyfikator Bayes’a jest w stanie zdecydować, do której
kategorii zaliczyć nowo dodaną stronę.
***RAMKA***
Pakiety
wykorzystujące filtry Bayes’a
Komercyjne
SpamBully ( http://www.spambully.com
)
IronMail 4.0 ( http://www.CipherTrust.com )
Disruptor OL ( http://www.hlembke.de/prod/disruptor
)
InBoxer ( http://www.inboxer.com )
InboxShield ( http://www.edovia.com/inboxshield
)
PreciseMail ( http://www.process.com/precisemail
Open source
SpamAssasin
( http://www.spamassasin.org )
CRM114 ( http://www.crm114.sourceforge.net )
Dspam ( http://www.dspam.com )
POPFile ( http://popfile.sourceforge.net/cgi-bin/wiki.pl )
SpamTUNNEL ( http://uiorean.cluj.astral.ro )
SpamProbe ( http://spamprobe.sourceforge.net )
ifile ( http://www.nongnu.org/ifile/ )
99,98%
Tyle
wynosi współczynnik skuteczności filtrów opartych na algorytmie Bayes’a i wciąż się
poprawia! Dla porównania metody heurystyczne zapewniają skuteczność na poziomie ok. 90-95%, zaś
filtrów opartych na wzorcach – 50-70%.
***RAMKA OPCJONALNA***
Użytkownicy systemów pocztowych mogą zrobić całkiem sporo, by ograniczyć ryzyko umieszczenia
ich adresu na spamowych listach wysyłkowych. W pierwszym rzędzie wypada zalecić wykorzystywanie aliasów
zamiast rzeczywistych nazw kont, zwłaszcza jeśli adres ma być udostępniony publicznie, np. na witrynie
WWW. Można też doradzić unikanie podawania adresu przypadkowym osobom, choć w praktyce, np. w biznesie,
jest to raczej trudne. Na pewno jednak warte rozważenia jest unikanie podawania go na listach dyskusyjnych.
Powyższe zabiegi są jednak skuteczne jedynie do momentu, w którym nie popełnimy błędu, lub
ktoś z kręgu osób zaufanych wpadnie na pomysł wysłania do nas kartki internetowej z publicznego
serwisu. Wniosek jest więc taki, że są to pomocnicze, dodatkowe środki, nie pozwalające na dłuższą
metę pozbyć się problemu spamu.