moderatio blog logo
CAPTCHA i zabezpieczenia serwisów społecznościowych przed spamem
ilustracja

Wprowadzenie.

Jestem Paweł i jestem "głównym technicznym" w Moderatio.

Pomysł na ten artykuł chodził mi po głowie już od dłuższej chwili. Swego czasu dużo zajmowałem się helpdeskiem i pytania o zabezpieczenia CAPTCHA były dla mnie na porządku dziennym. Wielu z moich klientów i ich pracownicy nigdy nie pytali co to jest. Przeważnie bali się zapytać, żeby nie zrobić z siebie nieuka internetowego. Później i tak, z czerwonymi policzkami, przyznawali się, że nie wiedzą co jest ten „śmieszny klucz do strony internetowej” albo po co jest to „zabezpieczenie przez kopiowaniem” (skąd taki pomysł w ogóle?). Ale największym ignorantem okazała się pewna pani, która zapytała, dlaczego zawsze jest online i czy przypadkiem nie popsuł się jej internet, bo już od jakiegoś czasu nie widziała „tego kodu logowania”.

Chciałbym ten temat przedstawić w sposób prosty, może nawet i lakoniczny, ale moją intencją jest opisanie podstaw tego zagadnienia. Mam też nadzieję, że bardziej zaawansowani internauci też znajdą tu coś ciekawego dla siebie.

CAPTCHA i inne powiązane definicje.

Na początek Test Turinga. W roku 1950 Alan Turing opisał jak powinno się próbować rozróżnić komputer od człowieka. Do tej pory żaden program komputerowy nie przeszedł tego testu w sposób jednoznaczny. Owszem, współczesne programy mogą czasem udawać człowieka zaskakująco dobrze, ale prawdziwe złamanie testu Turinga nastąpi dopiero po znaczącym postępie w dziedzinie sztucznej inteligencji i sztucznych sieci neuronowych, czyli wtedy, kiedy ludzie napiszą oprogramowanie działające jak ludzki mózg.

CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart, wolne tłumaczenie: „Automatyczny test do odróżniania komputerów od ludzi”, wymowa: „kapcza”) jest to zabezpieczenie witryn internetowych przed używaniem ich przez programy komputerowe służące do rozsyłania spamu, zbierania informacji i innych nielegalnych lub niepożądanych celów.

Powyżej opisane programy nazywamy botami.

Gdzie i po co stosuje się mechanizmy CAPTCHA?

Kapcza ma zastosowanie przede wszystkim na społecznościowych stronach internetowych (generalnie w całym Web 2.0).

Wszędzie tam, gdzie publikacja treści w Internecie nie jest zabezpieczona przez botami w ciągu krótkiego czasu mogą one wygenerować tyle niechcianej treści, że odfiltrowanie jej od kontentu dostarczonego przez prawdziwych użytkowników serwisu będzie praktycznie niemożliwe.
Przykładem może być choćby… blog Moderatio. Przed wprowadzeniem prostego mechanizmu zabezpieczającego, który zauważycie komentując ten artykuł, codziennie, pod artykułami pojawiały się dziesiątki komentarzy, które byłem zmuszony ręcznie usuwać. W ciągu około tygodnia na takim niszowym blogu jak nasz znalazło się około kilkudziesięciu (!) wpisów reklamujących przeróżne produkty, usługi oraz strony www. Po dodaniu kapczy do bloga proste i niededykowane boty są bezradne – nie mogą napisać za nas artykułu, bo nie znają loginu ani hasła do konta, nie mogą też opublikować reklamy w komentarzu bo tego broni kapcza.
Oczywiście nasz mechanizm jest banalny i nawet dla początkującego programisty napisanie programu który by łamał to zabezpieczenie nie jest problemem. To jednak przestępcom internetowym się nie opłaca. Mamy mniej odsłon (:P) niż portale społecznościowe i zysk z darmowej reklamy na naszej stronie byłby nikły.

CAPTCHA jest tylko jednym z elementów obrony i walki ze spamem. Pozostałe to w dużej mierze hasła i moderacja. Te trzy główne elementy pozostają ze sobą w symbiozie i nawzajem się uzupełniają.

Hasła są zabezpieczeniem głównie przed ludźmi, dlatego, że każde hasło jest do złamania – tutaj ważną czynnością jest zabezpieczenie serwera przed próbą zgadywania hasła. Jeśli ktoś loguje się sto razy na sekundę od kilku dni na jedno konto to strona internetowa powinna odpowiednio wcześnie to zauważyć i zapobiec tego typu atakom.

Moderacja, działa przeważnie już po opublikowaniu danej treści (ale czasem też prewencyjnie). Pamiętajmy, że moderacja to nie tylko power-user albo administrator, ale też sama społeczność. Spamera nikt nie przyjmie do grona swoich znajomych i prędzej czy później zrezygnuje ze społeczności w jakiej nie jest ciepło przyjmowany. Bardzo często też serwisy społecznościowe pozwalają ustawić filtr na otrzymywanie lub nie wiadomości od nieznanych użytkowników. Niektóre społecznościówki odsyłają też treści o określonej liczbie negatywnych komentarzy do moderacji przez administratorów serwisu.

Z powyższych powodów mechanizmy CAPTCHA stosuje się przeważnie tylko przy rejestracji nowych użytkowników. Ze spamem wewnątrz serwisu radzą sobie moderacja i hasła, trzeba tylko zabezpieczyć serwis przed tworzeniem przez boty nowych fikcyjnych kont, które mogły by posłużyć jako furtki do spamowania serwisu bądź kont pocztowych.

Jaka jest skuteczność Kapczy?

Trudno jednoznacznie odpowiedzieć na to pytanie. O kapczy można powiedzieć, że jest bardzo dobra, jeżeli odpiera 90% dedykowanych dla niej botów a jednocześnie jest akceptowana przez użytkowników.

Spora część największych społeczności i portali (choćby sam koncern Google albo Yahoo) ma własne algorytmy tworzenia takich zabezpieczeń, część, szczególnie te nowsze serwisy (jak np. FaceBook czy Twitter) zdaje się na ogólnodostępne rozwiązania (reCAHPTCHA). Portale z własnymi rozwiązaniami kierują się chęcią bycia o krok przed spamerami i rozwijają swoje zabezpieczenia. Nie bez znaczenia jest też to, że przy własnym mechanizmie... znają jego kod.
Użytkownicy reCAPTCHA mają dobre, darmowe i ciągle rozwijane zabezpieczenie. Na pewno często powodem wyboru reCAPTCHA jest też fakt, że każda kapcza jest do złamania i nie ma sensu inwestować w mechanizm, który za jakiś czas okaże się nieużyteczny.

Na początku 2008 roku w spektakularny sposób walkę z botami przegrały zabezpieczenia wspomnianych wcześniej Google, Yahoo jak również, niedługo potem Windows Live Hotmail. Pamiętajmy też, że bot lub sieć botów nie potrzebują stuprocentowej trafności: 10% skuteczności, 1 komputer, 15.000 zapytań dziennie daje 1.500 nowych kont na serwisach (dane rzeczywiste). Zastanówcie się więc i sami oceńcie, czy 90% skuteczności zabezpieczenia to dużo czy mało. Przemyślcie też, co by było, gdyby nie było kapczy.

Czy potrzebuję kapczy na mojej stronie?

Budując własną stronę internetową, niezależnie czy jest to blog, strona firmowa z formularzem do wysyłania wiadomości albo start-up Web 2.0, musicie przemyśleć, czy wasz serwis nie będzie narażony na spam treści na serwisie i/lub na zakładanie fikcyjnych kont email. Faktem jest jednak, że dużo lepiej jest zapobiegać niż leczyć.
Blogując na np. WordPressie macie do wyboru wiele wtyczek do walki ze spamem, ale tworząc własnego bloga bez zabezpieczeń możecie być pewni, że wasi goście oprócz komentarzy obejrzą dużą dawkę reklam „niebieskich pigułek”.

Wady.

Każde rozwiązanie ma swoje wady. Każda kapcza też. Jest to rozwiązanie frustrujące dla użytkowników serwisów. Tym bardziej, że bardziej świadomy internauta zdaje sobie sprawę, że przy wpisywaniu ciągu znaków portal ceduje na niego część swoich obowiązków walki ze spamem.

Z mechanizmami CAPTCHA mają problemu osoby niedowidzące, częstym problemem jest też brak znajomości języka w którym CAPTCHA podaje wyrazy do przepisania. Niemożliwe jest przepisanie zabezpieczenia tekstowego użytkownikom, którzy surfują przy wyłączonych obrazkach lub w trybie tekstowym.

Zabezpieczenia dźwiękowe mają jeszcze więcej wad. Wykluczają one osoby bez znajomości danego języka, niedosłyszące albo te bez kart muzycznych.

Dość ciekawym rozwiązaniem są mechanizmy bazujące na wskazywaniu np. trzech owoców spośród dziewięciu obrazków przedstawiających jedzenie, albo „najgorętszej laski”... Nie wiem co przyświecało twórcom tych zabezpieczeń, być może było to tylko żart, ale z funkcjonalnego punktu widzenia takie kapcze są bardzo łatwe do rozszyfrowania. Mają ograniczoną liczbę kombinacji, a przecież trudno dodawać nowe obrazki w nieskończoność.

Jaka więc zatem powinna być dobra CAPTCHA z punktu widzenia usability i user care?

1. Sama formuła tego zabezpieczenia musi być czytelna, user musi wiedzieć dlaczego trafił na takie zabezpieczenie oraz co powinien wpisać (warto np. podać ilość znaków jeśli zabezpieczeniem są losowe litery i cyfry).
2. Jeśli decydujemy się na kapczę jednego rodzaju powinniśmy zapewnić dodatkowy sposób weryfikacji. W praktyce jest to przeważnie tekst oraz dźwięk. Możliwa jest do przeprowadzenia również weryfikacja przez telefon.
3. Umożliwia obsługę osobom niepełnosprawnym.
4. Idealna CAPTCHA jest w języku użytkownika.
5. Posiada możliwość generacji nowego obrazka/dźwięku.

Ciekawostki.

Jedne konto na znanym serwisie lub konto email wygenerowane przez bota który złamał zabezpieczenie na czarnym rynku jest warte około 0,01 USD. Z tego powodu w biedniejszych krajach opłaca się zatrudniać ludzi do rozwiązywania zabezpieczeń (są to tzw. „Farmy Turinga”).

Oprócz łamania CAPTCHA przez boty i wprost przez ludzi stosuje się manipulację: użytkownik który rejestruje się na stronie internetowej (przeważnie są to strony z pornografią) dostaje do rozwiązania test z innego serwisu. Niczego nie świadomy internauta aby się zarejestrować w serwisie pierwotnym przeważnie nie trafia pierwszych dwóch lub jednej kapczy...

Ciekawe linki.

1. Opis ataku na Hotmail.com z 2008 roku. Jak widać cracker musi się natrudzić, aby osiągnąć swój cel.
2. Ciekawy raport z badania użyteczności zabezpieczeń CAPTCHA udostępniony przez jedną z konkurencyjnych firm.
3. Strona WWW projektu reCAPTCHA.
4. Bardzo dobry artykuł porneLa pokazujący jak łatwo boty radzą sobie z nieczytelnymi dla ludzi zabezpieczeniami. Artykuł ma obrazki! :P.
5. I drugi artykuł porneLa o walce ze spamem bez użycia kapczy.

Dla wytrwałych bonus: polska CAPTCHA stworzona wbrew wszystkim zasadom. Aby publicznie nie kompromitować właściciela strony link podaję tylko na priva ;)

2009-09-19 22:40:58
Dudzisław
Kapcze jak na załączonym obrazku są całkiem popularne. Zdarza się trafić od czasu do czasu na to, że w adresie obrazka jest podane całe słowo :)
powrót na górę strony