CAPTCHA – historia, rodzaje, zastosowania i przyszłość

CAPTCHA – historia, rodzaje, zastosowania i przyszłość

Niemal każdy internauta zetknął się z komunikatem w stylu: „Udowodnij, że nie jesteś robotem”. Zazwyczaj towarzyszy mu drobne zadanie: przepisanie zniekształconego tekstu z obrazka, wskazanie na zdjęciach wszystkich obiektów danego typu (np. sygnalizacji świetlnej lub samochodów) czy rozwiązanie prostej łamigłówki. Dla człowieka takie czynności są zazwyczaj łatwe, ale dla programu komputerowego mogą być niezwykle trudne. Właśnie na tym polega idea tych testów.

Wspomniane zadania to element popularnego mechanizmu zabezpieczającego znanego jako CAPTCHA. Spotkamy go przy zakładaniu konta w serwisie internetowym, pisaniu komentarza na blogu czy wysyłaniu formularza kontaktowego. CAPTCHA dba o to, by daną operację mógł wykonać tylko prawdziwy człowiek, a nie automat (skrypt, bot). Innymi słowy, służy do odróżnienia użytkownika będącego człowiekiem od zautomatyzowanego programu. Choć bywa dla nas uciążliwa, odegrała kluczową rolę w zabezpieczaniu Internetu przed zalewem spamu i nadużyć.

CAPTCHA to akronim od angielskiego Completely Automated Public Turing test to tell Computers and Humans Apart, co można przetłumaczyć jako w pełni zautomatyzowany publiczny test Turinga odróżniający komputery od ludzi. Mówiąc prościej, to pewnego rodzaju odwrócony test Turinga – nie człowiek sprawdza, czy ma do czynienia z maszyną, lecz maszyna weryfikuje, czy interakcja pochodzi od człowieka. W kolejnych częściach artykułu przyjrzymy się bliżej temu, jak powstały i ewoluowały mechanizmy CAPTCHA, jakie są ich rodzaje, gdzie znajdują zastosowanie, a także jakie wyzwania stoją przed nimi w przyszłości.

Historia CAPTCHA

Początki (AltaVista i pierwsze testy)

Pierwsze pomysły stojące za CAPTCHA zrodziły się pod koniec lat 90. XX wieku, gdy zaczęto dostrzegać problem automatycznych nadużyć w sieci. W 1997 roku inżynierowie wyszukiwarki AltaVista opracowali mechanizm filtrujący zgłoszenia dodawanych adresów URL. Użytkownicy mogli ręcznie zgłaszać strony do zaindeksowania w AltaViście, co niestety próbowano automatyzować na masową skalę, by wpłynąć na wyniki wyszukiwania. Andrei Broder i jego zespół stworzyli wtedy prosty test – obrazek z losowym tekstem, którego OCR (optyczne rozpoznawanie znaków przez komputer) nie był w stanie poprawnie odczytać, podczas gdy człowiek nie miał z tym problemu. Rozwiązanie to okazało się niezwykle skuteczne – liczba spamerskich zgłoszeń spadła o ponad 90%. Choć wówczas nie nazwano go jeszcze formalnie „CAPTCHA”, był to praktycznie pierwowzór tej technologii.

Kilka lat później z podobnym problemem zmagał się portal Yahoo!, gdzie boty masowo zakładały konta i wysyłały spam na czatach. W 2000 roku programista Udi Manber z Yahoo zwrócił się o pomoc do naukowców z Carnegie Mellon University. Zespół pod kierunkiem prof. Manuela Bluma i doktoranta Luisa von Ahna opracował test o nazwie GIMPY. Polegał on na wyświetleniu kilku nachodzących na siebie słów (wybranych z bazy słownika angielskiego) w formie mocno zniekształconej grafiki. Użytkownik musiał poprawnie rozpoznać i wpisać określoną liczbę z tych słów. Było to wyzwanie łatwe dla człowieka, lecz praktycznie niewykonalne dla ówczesnego oprogramowania. Wersja uproszczona tego testu, nazwana EZ-GIMPY, wykorzystująca już tylko pojedyncze słowo, została wdrożona przez Yahoo! w celu zabezpieczenia dostępu do swoich czatów przed automatami.

Rozwój i popularyzacja

W kolejnych latach technika CAPTCHA nabierała rozpędu. W 2003 roku von Ahn, Blum i inni badacze oficjalnie ukuli nazwę CAPTCHA dla opisanego typu testów, podkreślając ich charakter jako w pełni automatycznego „publicznego testu Turinga”. Od tego czasu CAPTCHA zaczęły pojawiać się masowo na różnych stronach internetowych. Popularne portale i usługi internetowe implementowały własne wersje tych testów, aby chronić formularze rejestracji, komentarze, fora dyskusyjne, systemy głosowań online czy mechanizmy resetowania hasła przed zalewem automatów.

Około 2007 roku ten sam zespół z Carnegie Mellon opracował projekt reCAPTCHA – był to szczególny rodzaj CAPTCHA, który nie tylko zabezpieczał strony przed botami, ale przy okazji wykorzystywał pracę użytkowników do cyfrowej transkrypcji starych tekstów. We wczesnej wersji reCAPTCHA użytkownik otrzymywał dwa słowa do przepisania: jedno służyło jako znany kontrolny test, a drugie było skanowanym wyrazem z książek lub gazet, którego programy OCR nie mogły rozpoznać. Gdy tysiące ludzi zgodnie przepisywało ten sam nieznany wyraz, system uznawał go za poprawnie odczytany. reCAPTCHA zyskała ogromną popularność jako darmowa usługa dla webmasterów, a jednocześnie pomogła zdigitalizować wiele milionów słów z archiwalnych wydawnictw. W 2009 roku projekt został przejęty przez Google, co jeszcze bardziej spopularyzowało stosowanie reCAPTCHA na stronach w całym internecie.

Od czasu powstania pierwszych testów upłynęło już ponad dwadzieścia lat, a koncepcja CAPTCHA stale ewoluuje. Aby pozostać skuteczną, musiała dostosowywać się do postępu w dziedzinie sztucznej inteligencji i coraz sprytniejszych botów. Na przestrzeni lat pojawiły się nowe rodzaje CAPTCHA – od prostych tekstowych zagadek po złożone łamigłówki i analizy zachowania użytkownika. Poniżej przyjrzymy się bliżej głównym typom CAPTCHA oraz temu, jak działają i jakie mają wady czy zalety.

Rodzaje CAPTCHA

CAPTCHA nie jest jednolitym mechanizmem – na przestrzeni lat opracowano wiele różnych sposobów stawiania użytkownikom tych wyzwań. Początkowo dominowały proste testy polegające na przepisaniu tekstu z obrazka, z czasem jednak pojawiły się również inne formy: wybieranie obrazów, słuchanie nagrania dźwiękowego, rozwiązywanie prostych zadań, a nawet wykonywanie drobnych gier lub obserwacja zachowania użytkownika. Poniżej opisujemy główne rodzaje CAPTCHA, wraz z przykładami ich działania, skuteczności oraz problemów, jakie mogą się z nimi wiązać.

CAPTCHA tekstowe (zniekształcone znaki)

Najstarszym i przez długi czas najpopularniejszym typem były CAPTCHA tekstowe. Polegają one na wyświetleniu na ekranie obrazka zawierającego ciąg znaków (litery, cyfry lub mieszane), często celowo zniekształconych, zdeformowanych lub przekreślonych, a następnie wymagają od użytkownika przepisania tych znaków do formularza. Przykładowo możemy zobaczyć na obrazie słowo w stylu AB12c z falującymi literami i szumem w tle – użytkownik musi wpisać AB12c w polu tekstowym, aby przejść dalej.

Tego rodzaju test bazuje na założeniu, że człowiek potrafi rozpoznać nawet zniekształcony tekst dzięki swojemu ćwiczonemu w życiu codziennym wzorcowi rozpoznawania znaków i słów. Program komputerowy natomiast (np. moduł OCR) ma znacznie większe trudności z odczytaniem tekstu, gdy każda litera jest lekko zdeformowana, nachodzi na inną lub otoczona zakłóceniami graficznymi. W praktyce strony internetowe generują losowy krótki ciąg znaków, przekształcają go w obrazek z dodaniem zakłóceń, a po stronie serwera przechowują oczekiwaną prawidłową wartość. Gdy użytkownik wpisze tekst, porównuje się go z oryginałem – jeśli się zgadza, zakłada się, że mamy do czynienia z człowiekiem.

Zalety: Tekstowe CAPTCHA są stosunkowo proste do wdrożenia i nie wymagają żadnych skomplikowanych bibliotek – wystarczy mechanizm generowania obrazka z losowym słowem. Przez lata były skuteczne przeciw prostym botom, a dla człowieka ich rozwiązanie zajmowało tylko chwilę.

Wady: Wraz z rozwojem algorytmów OCR i uczenia maszynowego, boty nauczyły się coraz lepiej odczytywać zniekształcone napisy. Aby utrudnić życie maszynom, twórcy CAPTCHA zaczęli stopniowo zwiększać poziom deformacji tekstu, co niestety odbiło się na ludziach – wiele graficznych kodów stało się trudno czytelnych również dla przeciętnego użytkownika. Z tego powodu ten rodzaj zabezpieczeń zaczął tracić na skuteczności. Już około 2014 roku firmy badawcze i technologiczne (w tym Google) demonstrowały, że automaty potrafiły z ponad 90% skutecznością rozwiązywać popularne wówczas captche tekstowe, podczas gdy ludzie osiągali znacznie niższy odsetek przy mocno zniekształconych obrazach. Oznaczało to, że klasyczna „przepisz literki” CAPTCHA przestała spełniać swoją rolę. Dodatkowo jest ona nieużyteczna dla osób niewidomych lub z poważnymi wadami wzroku (dla nich opracowano alternatywę audio, o której niżej). Z tych względów obecnie odchodzi się od czystych CAPTCHA tekstowych na rzecz bardziej złożonych metod.

CAPTCHA obrazkowe (rozpoznawanie obrazów)

Innym szeroko rozpowszechnionym rodzajem są CAPTCHA oparte na obrazach. Tutaj zamiast liter pojawiają się zdjęcia lub grafiki, a użytkownik musi wykonać zadanie powiązane z ich zawartością. Najczęściej spotykanym przykładem (np. w usłudze Google reCAPTCHA czy hCAPTCHA) jest siatka 9 lub 16 zdjęć, z poleceniem zaznaczenia wszystkich, które przedstawiają określony obiekt, np. „wybierz wszystkie obrazki z sygnalizacją świetlną” albo „kliknij w pola zawierające samochód”. Innym podejściem jest pokazanie kilku zdjęć i pytanie w stylu: „Które z tych zdjęć pokazuje kota?”.

Takie testy bazują na zdolności człowieka do rozpoznawania obiektów na zdjęciach – dla nas naturalne jest rozróżnienie, gdzie jest samochód, a gdzie sygnalizator, nawet jeśli zdjęcia są trochę rozmazane czy z różnych ujęć. Dla komputera analiza zawartości obrazu przez wiele lat była zadaniem bardzo trudnym. Dlatego CAPTCHA obrazkowe przez długi okres zapewniały wyższy poziom zabezpieczenia niż proste teksty. Równocześnie były one postrzegane jako nieco wygodniejsze dla człowieka – wielu użytkowników uważa wskazywanie obiektów na zdjęciach za mniej frustrujące niż rozszyfrowywanie pokręconych liter. Oczywiście i ten rodzaj ma swoje wady: jeśli obrazki są niskiej jakości lub obiekt jest nietypowy, nawet człowiek może mieć wątpliwości (np. czy niewielki fragment słupa na rogu zdjęcia to część sygnalizacji, czy już nie?). Ponadto osoby słabowidzące lub takie, które nie znają danego pojęcia w języku testu mogą napotkać trudności (np. nie każdy może wiedzieć, jak wygląda amerykański hydrant uliczny, a taki obiekt często pojawia się w anglojęzycznych captcha).

W ostatnich latach rosną też umiejętności sztucznej inteligencji w zakresie rozpoznawania obrazów – sieci neuronowe potrafią coraz lepiej wykrywać obiekty na zdjęciach. To sprawia, że bez przerwy trwa wyścig zbrojeń: dostawcy CAPTCHA starają się utrudnić zadania obrazkowe (np. stosują bardziej złożone sceny, ruchome obrazki, większe zbiory zdjęć do analizy), a twórcy botów trenują swoje algorytmy na tysiącach przykładowych captcha, by również je rozpoznawać. Mimo to obrazkowe CAPTCHA wciąż uchodzą za względnie skuteczne, zwłaszcza w połączeniu z innymi technikami (np. weryfikacją zachowania użytkownika przed wyświetleniem obrazków).

CAPTCHA dźwiękowe (audio)

CAPTCHA dźwiękowe stanowią alternatywę dla testów wizualnych, przeznaczoną przede wszystkim dla osób niewidzących lub mających problemy ze wzrokiem. W takiej wersji użytkownik nie ogląda żadnego obrazka, lecz odsłuchuje nagranie audio – zazwyczaj jest to ciąg cyfr lub liter odczytany syntetycznym głosem, często zagłuszany przez dodatkowe dźwięki lub szumy. Po wysłuchaniu nagrania użytkownik ma za zadanie wpisać usłyszane znaki. Na przykład system może odtworzyć głos mówiący kolejno cyfry „dziewięć, dwa, zero, pięć” na tle zakłóceń, a my musimy wpisać 9205.

Takie audio-CAPTCHA zwykle są udostępniane jako opcja zamienna dla klasycznej wizualnej CAPTCHA – użytkownik może kliknąć ikonkę głośnika, by odsłuchać kod, gdy nie jest w stanie odczytać obrazka. Rozwiązuje to problem dostępności dla wielu osób niepełnosprawnych wzrokowo. Jednak testy audio również mają ograniczenia. Po pierwsze, ludziom sprawiają one niekiedy trudność – z powodu zagłuszeń i zniekształceń dźwięku odszyfrowanie nagrania bywa wyzwaniem, zwłaszcza dla osób starszych lub tych, które słabiej znają język, w którym odczytywane są słowa. Po drugie, postęp technologii rozpoznawania mowy sprawił, że również tego typu captche mogą być atakowane przez boty wyposażone w algorytmy ASR (Automatic Speech Recognition). Twórcy systemów starają się temu przeciwdziałać, dodając różnego rodzaju szumy, modyfikując głosy lub zadając proste pytania słuchowe zamiast jednolitego ciągu znaków. Niemniej audio-CAPTCHA stanowi raczej uzupełnienie tradycyjnych metod i występuje głównie jako opcja dla potrzebujących – stosunkowo rzadko spotyka się strony wymagające wyłącznie testu audio od wszystkich użytkowników.

CAPTCHA pytaniowe (pytania i zadania tekstowe)

Osobną kategorią są captcha, które nie opierają się na żadnej grafice ani audio, lecz zadają użytkownikowi proste pytanie tekstowe. Może to przybrać formę krótkiego polecenia obliczenia czegoś lub podania konkretnej informacji. Przykładowo formularz może zawierać pytanie: „Ile jest 2 + 3?” z oczekiwanym wynikiem 5, albo „Proszę wpisać ostatnią literę wyrazu kot„. Tego typu zagadki są zazwyczaj bardzo łatwe dla człowieka i nie wymagają dodatkowych mediów (obrazów czy dźwięku).

Zaletą pytaniowych CAPTCHA jest ich prostota i wygoda – zajmują mało miejsca, są szybkie do rozwiązania, nie sprawiają problemu większości użytkowników (zwłaszcza gdy pytania dotyczą bardzo podstawowej wiedzy lub prostej matematyki). Są też neutralne dla osób korzystających z czytników ekranowych (pytanie tekstowe można łatwo odczytać i wpisać odpowiedź). Niestety, ich skuteczność przeciw botom jest ograniczona. Stałe lub przewidywalne pytania są trywialne do obejścia – wystarczy, że autor bota zaprogramuje kilka reguł (np. rozpoznawanie cyferek i dodawanie ich, czy też wprowadzi bazę odpowiedzi do popularnych pytań typu „jakiego koloru jest niebo”). Bardziej zaawansowane boty mogą nawet użyć mechanizmów przetwarzania języka naturalnego, by zrozumieć i odpowiedzieć na pytanie. Dlatego taka forma zabezpieczenia sprawdza się głównie przeciw najprostszym, masowym spam-botom, które nie zostały specjalnie dostosowane do konkretnej strony. W praktyce pytaniowe CAPTCHA często są stosowane na małych stronach lub blogach – jako przykład można wskazać proste pytania kontrolne w formularzach komentarzy (np. pytanie o wynik dodawania albo przepisanie losowego słowa typu „DOM”). Nie zapewniają one pełnej ochrony, ale mogą odfiltrować najbardziej prymitywne boty.

CAPTCHA interaktywne i puzzle

Coraz popularniejszy staje się nurt CAPTCHA wymagających od użytkownika wykonania pewnej drobnej interakcji, która dla człowieka jest błaha, ale dla maszyny stanowi znaczący problem. Przykładem mogą być tzw. slider CAPTCHA, gdzie należy przesunąć suwakiem puzzel tak, by idealnie dopełnił brakujący fragment obrazka. Użytkownik widzi np. zdjęcie z brakującym kawałkiem i obok przesuwalny element – po prostu przeciąga klocek myszą w odpowiednie miejsce jak w układance. Dla człowieka to czynność niemal odruchowa, natomiast bot musiałby najpierw przeanalizować zawartość obrazka, zidentyfikować właściwy punkt dopasowania, a następnie zasymulować odpowiedni ruch kursorem. Inny rodzaj interaktywnej CAPTCHA może wymagać kliknięcia w poruszający się obiekt lub rozwikłania prostej gry logicznej (np. ułożenia prostego obrazka z rozsypanych części czy wskazania brakującego elementu sekwencji).

Zaletą takich łamigłówkowych CAPTCHA jest stosunkowo wysoka skuteczność – wprowadzają one element interakcji i kontekstu, który trudno jednoznacznie zautomatyzować. Dobrym przykładem są tutaj chińskie systemy typu Geetest, które spopularyzowały właśnie testy z przeciąganiem puzzla. Wielu użytkowników docenia je też jako mniej frustrujące niż kilkukrotne rozszyfrowywanie bazgrołów czy klikanie kilkunastu obrazków – interaktywna forma może być wręcz odebrana jako drobna zabawa. Oczywiście z perspektywy użytkownika ważne jest, by taka łamigłówka była prosta i działała płynnie; inaczej zamiast pomagać, zirytuje bardziej niż tradycyjna CAPTCHA.

Trzeba zauważyć, że boty również mogą nauczyć się obchodzić tego typu zabezpieczenia, zwłaszcza jeśli dana metoda staje się popularna i pojawia się motywacja, by stworzyć pod nią dedykowane narzędzia. Niemniej implementacja własnej, nietypowej puzzle-CAPTCHA może być skutecznym sposobem na filtrację automatów, które nie są na nią przygotowane.

Niewidoczne CAPTCHA (analiza zachowania)

Najbardziej nowatorski nurt w ewolucji CAPTCHA to takie, których użytkownik nawet świadomie nie zauważa. Zamiast zadawać jawne pytanie czy łamigłówkę, system potajemnie obserwuje zachowanie odwiedzającego na stronie i na tej podstawie ocenia, czy jest on człowiekiem. Przykładem jest tutaj reCAPTCHA v3 od Google, który działa w tle każdej wizyty – monitoruje ruchy myszką, czasy reakcji, używane urządzenie, a nawet historię interakcji z daną witryną. Następnie algorytm przypisuje użytkownikowi wynik (score) odzwierciedlający prawdopodobieństwo, że mamy do czynienia z botem. Właściciel strony może sam ustawić, przy jakim wyniku podjąć działanie (np. zablokować działanie, poprosić o dodatkową weryfikację lub wpuścić bez przeszkód).

Innym podejściem są tzw. honeypoty, czyli ukryte pola formularza lub inne pułapki: dla człowieka są one niewidoczne (np. schowane za pomocą CSS), ale prymitywny bot wypełni je myśląc, że są wymagane. Wykrycie, że użytkownik wypełnił takie ukryte pole, jednoznacznie wskazuje na automat. Tego typu mechanizmy działają zatem całkowicie niewidocznie dla prawdziwego człowieka.

Zaletą niewidocznych CAPTCHA jest doskonała wygoda użytkownika – w idealnym scenariuszu nie musi on robić nic, żaden dodatkowy krok nie jest wymagany. Witryna sama domyśla się, że ma do czynienia z człowiekiem, na podstawie subtelnych różnic w zachowaniu. Wady to natomiast niepewność i potencjalna zawodność takiego systemu: zawsze istnieją pewne odsetki fałszywych alarmów (gdy legitny użytkownik zostanie uznany za bota lub odwrotnie). Dlatego często łączy się je z tradycyjnymi metodami – np. jeśli niewidoczna analiza zachowania da wynik niejednoznaczny, dopiero wówczas wyświetlana jest standardowa CAPTCHA jako dodatkowa weryfikacja. Ponadto pojawiają się głosy obaw o prywatność – śledzenie ruchów myszki czy inne dane behawioralne mogą budzić dyskomfort, zwłaszcza gdy robi to duży koncern (jak Google) na wielu witrynach jednocześnie. Niemniej kierunek niewidocznych, inteligentnych CAPTCHA wydaje się bardzo perspektywiczny: zamiast utrudniać życie zwykłym użytkownikom, czynić weryfikację niemal niezauważalną i skupić się na wyłapywaniu faktycznych botów w sposób statystyczny.

Skuteczność i problemy CAPTCHA

Nawet najlepsze zabezpieczenia mają swoje słabe strony – dotyczy to również CAPTCHA. W poprzednich częściach omówiliśmy już część wad poszczególnych rodzajów, takich jak utrudnienia dla użytkowników czy podatność na nowoczesne algorytmy. Warto jednak zebrać te zagadnienia ogólnie i spojrzeć na skuteczność CAPTCHA w szerszym kontekście oraz problemy, jakie się z nią wiążą.

Omijanie i łamanie CAPTCHA przez boty

Historia rozwoju CAPTCHA to wyścig zbrojeń między twórcami zabezpieczeń a autorami botów. Za każdym razem, gdy pojawiał się nowy typ testu, prędzej czy później opracowywano metody jego obejścia. Proste teksty zostały pokonane przez ulepszone OCR i sieci neuronowe potrafiące coraz lepiej rozpoznawać znaki. Bardziej złożone obrazki i łamigłówki zaczęły być rozwiązywane przez wyspecjalizowane algorytmy uczenia maszynowego trenujące na tysiącach przykładów.

Co jednak istotne, często nie trzeba nawet zaawansowanej AI, by pokonać CAPTCHA – wystarczy użyć człowieka po drugiej stronie. Istnieją tzw. farmy CAPTCHA, czyli usługi zatrudniające ludzi (nierzadko w krajach o niskich płacach) do hurtowego rozwiązywania testów za drobną opłatą. Szacuje się, że zleceniodawca potrafi zapłacić zaledwie kilka dolarów za rozwiązanie 1000 testów CAPTCHA, co dla masowych spamerów stanowi pomijalny koszt w porównaniu z potencjalnymi zyskami. Bot może więc automatycznie przekazywać napotkane CAPTCHA do takiej farmy poprzez API, a w ciągu kilku sekund otrzymać od człowieka prawidłowe rozwiązanie i tym samym ominąć zabezpieczenie.

Inną metodą łamania CAPTCHA jest atak socjotechniczny – zamiast płacić specjalnie zatrudnionym osobom, przestępca może spróbować nakłonić zwykłych internautów do nieświadomego rozwiązywania captcha na rzecz bota. Przykładowo można stworzyć stronę (np. oferującą atrakcyjne treści), która wyświetla użytkownikom obrazki CAPTCHA pobierane z docelowej atakowanej strony. Użytkownicy myślą, że rozwiązują normalny test by uzyskać dostęp, podczas gdy w rzeczywistości każda poprawnie przepisana przez nich captcha jest przekazywana do bota i pozwala mu wykonać akcję na innym serwisie. Takie ataki wymagają co prawda pewnego przygotowania (i zazwyczaj nie są masowe), ale pokazują, że czynnik ludzki można wykorzystać przeciw systemowi weryfikacji.

Wszystko to sprawia, że skuteczność CAPTCHA nigdy nie jest absolutna – zdeterminowany spammer czy botmaster może prędzej czy później znaleźć sposób na obejście zabezpieczeń. CAPTCHA ma jednak wciąż dużą wartość jako warstwa obrony, podnosząc znacznie poprzeczkę dla automatycznych ataków. Wiele botów „amatorów” lub masowych skryptów rozprowadzanych w undergroundzie sieci nie posiada zaawansowanych modułów łamiących CAPTCHA – w efekcie nawet prosty test potrafi odsiać ogromną większość przypadkowego spamu. Profesjonalni cyberprzestępcy mogą wprawdzie inwestować w jego obejście, ale rosnący koszt i skomplikowanie ataku działa na korzyść obrońców.

Uciążliwość dla użytkowników i dostępność

Drugą stroną medalu są problemy, jakie testy CAPTCHA powodują dla normalnych użytkowników. Najbardziej oczywista jest tu po prostu irytacja i stracony czas. Szacuje się, że globalnie każdego dnia ludzie łącznie rozwiązują miliony takich zagadek, co przekłada się na tysiące godzin poświęconych na udowadnianie, że jest się człowiekiem. Dla pojedynczego użytkownika dodatkowe 10-20 sekund to może drobnostka, ale z perspektywy firmy może to oznaczać np. obniżenie współczynnika konwersji (niektórzy użytkownicy porzucą rejestrację czy zakup, gdy muszą przechodzić uciążliwe testy). Zwłaszcza gdy CAPTCHA jest trudno czytelna lub wymaga wielu prób (np. kilkukrotne wybieranie obrazków), może frustrować i zniechęcać.

Bardziej poważnym problemem jest kwestia dostępności (accessibility). Osoby z niepełnosprawnościami mogą zostać całkowicie zablokowane przez niewłaściwie przygotowane testy. Klasyczny obrazkowy kod był nie do przejścia dla osoby niewidomej – stąd konieczność opracowania CAPTCHA audio. Jednak i audio bywa trudno dostępne dla osób głuchych czy mających problemy ze słuchem. Co więcej, niektóre alternatywy mogą nie współdziałać dobrze z technologiami wspomagającymi (np. czytnikami ekranu). Twórcy nowoczesnych platform starają się uwzględniać te kwestie – stąd np. mechanizmy takie jak reCAPTCHA v3, które nie wymagają od użytkownika żadnego działania, są w pełni transparentne dla wszystkich. Niemniej zawsze może pojawić się sytuacja, w której człowiek z jakiegoś powodu nie może sprostać danemu testowi.

Wreszcie, warto wspomnieć o zaufaniu i ewentualnych nadużyciach związanych z CAPTCHA. Skoro użytkownicy nauczyli się, że pewne dziwne czynności (jak przekręcanie literek czy klikanie puzzla) są normalne i służą bezpieczeństwu, istnieją przypadki wykorzystania tego zaufania. Pojawiły się np. złośliwe strony podszywające się pod CAPTCHA, które nakazują wykonać określone czynności, a w rzeczywistości jest to metoda nakłonienia użytkownika do zainstalowania wirusa lub wyłudzenia danych. Choć nie jest to wina samej technologii, pokazuje, że nadmierne przyzwyczajenie do tych testów może być wykorzystane. Z drugiej strony – platformy takie jak reCAPTCHA wykorzystują również użytkowników do własnych celów (np. rozpoznawania zdjęć na potrzeby trenowania algorytmów). Niektórzy krytykują to jako darmowe „wykorzystywanie” pracy internautów. Większość jednak akceptuje tę wymianę – my zyskujemy bezpłatną ochronę przed spamem, a dostawcy systemu przy okazji pozyskują dane do poprawy swoich usług. Kluczowe jest, by ostateczny bilans był korzystny: CAPTCHA powinna minimalizować niedogodności dla normalnych użytkowników, maksymalizując jednocześnie przeszkody dla botów.

Przykłady zastosowań CAPTCHA

Testy CAPTCHA można spotkać wszędzie tam, gdzie istnieje ryzyko nadużyć ze strony automatycznych skryptów. Poniżej kilka głównych obszarów, w których są one wykorzystywane:

  • Formularze online i rejestracje kont – podczas tworzenia nowego konta e-mail lub na portalu społecznościowym często musimy rozwiązać CAPTCHA, by udowodnić, że nie jesteśmy maszyną zakładającą setki fałszywych profili. Podobnie formularze kontaktowe czy zapytania ofertowe w sieci często zabezpieczone są testem, aby zapobiec automatycznemu rozsyłaniu spamu.
  • Komentarze i fora dyskusyjne – aby ograniczyć zalew spamerskich wiadomości reklamowych, blogi i fora internetowe często wymagają wypełnienia prostej CAPTCHA przed dodaniem komentarza lub posta. Chroni to przed botami publikującymi masowo niechciane treści.
  • Głosowania i ankiety internetowe – w sondach online czy plebiscytach CAPTCHA może uniemożliwić wielokrotne głosowanie przez skrypty. Dzięki temu wyniki są bardziej miarodajne, bo jeden użytkownik nie może sztucznie nabić setek głosów poprzez bota.
  • Sklepy internetowe i rezerwacje – przy zakupie bardzo popularnych lub limitowanych produktów (np. sprzedaż biletów na koncert, premiera konsoli do gier) CAPTCHA może chronić przed botami wykupującymi towary na masową skalę. Również strony rezerwacji biletów lotniczych czy noclegów stosują nieraz CAPTCHA, by ograniczyć automatyczne skanowanie dostępności przez konkurencję lub skrypty do agregacji ofert.
  • Ochrona różnych usług przed nadmiarem zapytań – niektóre serwisy (np. wyszukiwarki, usługi typu WHOIS) wyświetlają CAPTCHA, gdy wykryją podejrzanie wiele zapytań z jednego źródła. Ma to zapobiec automatycznemu masowemu pozyskiwaniu danych (scrapowaniu) lub atakom typu denial-of-service wykonywanym przez boty. CAPTCHA działa tu jak dodatkowa blokada przed zbyt intensywnym, nienaturalnym ruchem.

Oczywiście powyższe przykłady nie wyczerpują wszystkich możliwych zastosowań – wszędzie tam, gdzie pojawia się rozróżnienie między człowiekiem a maszyną, CAPTCHA może okazać się przydatna. Przez ponad dwie dekady stała się ona standardowym elementem bezpieczeństwa w sieci.

Przyszłość CAPTCHA i alternatywy

Czy w dobie coraz potężniejszych algorytmów sztucznej inteligencji CAPTCHA nadal będzie skuteczna? To pytanie zadaje sobie wielu ekspertów od bezpieczeństwa. Już dziś widzimy, że zadania dawniej trudne dla maszyn (rozpoznawanie tekstu, obrazów) stały się dla nich błahostką. Rozwój uczenia głębokiego sprawia, że modele AI potrafią coraz lepiej naśladować ludzką percepcję. Możliwe zatem, że w przyszłości znalezienie prostego testu odróżniającego człowieka od maszyny będzie niezwykle trudne – każde zadanie, jakie wymyślimy dla człowieka, może nauczyć się wykonywać również sztuczna inteligencja.

Nowe kierunki i technologie

Aby sprostać tym wyzwaniom, twórcy CAPTCHA już teraz eksperymentują z bardziej zaawansowanymi technikami. Wykorzystuje się m.in. analizę biometryczną zachowania – przykładowo rozkład ruchów myszką czy dynamikę pisania na klawiaturze unikalną dla każdej osoby. W przyszłości testy mogą być jeszcze bardziej spersonalizowane i oparte na subtelnych cechach, które trudno podrobić maszynie. Pojawiają się też pomysły CAPTCHA opartych na zadaniach dla sztucznej inteligencji – np. wymagających od użytkownika oceny czegoś kreatywnego lub etycznego, co dla człowieka jest oczywiste, a dla AI wciąż stanowi wyzwanie. Mogą to być różnego rodzaju zagadki logiczne lub pytania kontekstowe, które trudno rozwiązać metodą czystej kalkulacji. Innym trendem jest upraszczanie życia użytkownikom poprzez CAPTCHA niewidoczne, o których już wspomnieliśmy – wszystko wskazuje, że takie niewidzialne mechanizmy będą rozwijane dalej, by jak najmniej przeszkadzać człowiekowi. Być może w ogóle klasyczne „zagwozdki” znikną z oczu internautów, a wiarygodność będzie oceniana głównie w oparciu o historię działań i inteligentne modele predykcyjne.

Alternatywy dla klasycznych CAPTCHA

Coraz częściej dyskutuje się też o zastąpieniu CAPTCHA innymi metodami. Jedną z nich jest przeniesienie ciężaru weryfikacji na inne sposoby uwierzytelniania użytkownika. Przykładowo, wiele serwisów woli potwierdzić, że ktoś jest człowiekiem, za pomocą weryfikacji numeru telefonu lub logowania przez konto społecznościowe (Facebook, Google itp.). Skoro botom trudniej masowo zdobyć zweryfikowane numery czy konta, taka strategia zmniejsza potrzebę wyświetlania tradycyjnych testów. Innym podejściem są wspomniane wcześniej honeypoty, które w wielu przypadkach mogą wychwycić boty bez angażowania użytkownika. Istnieją także koncepcje wykorzystania proof-of-work (dowodu pracy) – komputer użytkownika musiałby wykonać trudne obliczenie przed wykonaniem np. postu czy rejestracji. Dla pojedynczego użytkownika nie byłoby to uciążliwe, ale dla bota próbującego wysłać tysiące żądań stałoby się to czasowo i zasobowo nieopłacalne.

Niektórzy eksperci prognozują, że tradycyjna CAPTCHA może stopniowo odchodzić do lamusa. Z jednej strony boty staną się na tyle „mądre”, że będą obchodzić niemal każdy test, z drugiej strony dla prawdziwych użytkowników dodatkowe zagadki stają się coraz bardziej niepożądane. Już teraz pojawiają się usługi, które reklamują się jako pozbawione klasycznych CAPTCHA, zastępując je analizą ruchu sieciowego, reputacji użytkownika czy nawet weryfikacją tożsamości. Być może doczekamy czasów, gdy zamiast rozszyfrowywać obrazki, będziemy np. logować się za pomocą zaufanego identyfikatora potwierdzającego nasz status człowieka.

< Powrót

Zapisz się do newslettera


Zadzwoń Napisz