CAPTCHA: Jak se stát otrokem podivného obrázku

CAPTCHA letos slaví osmé narozeniny. Za tu dobu se z jednoduchého Turingova testu stal hlavolam, se kterým má občas problém i člověk. Jaké formy existují a k čemu vlastně slouží?

CAPTCHA. Těch sedm písmen před několika málo lety skoro nikdo neznal a na českém webu se jednalo spíše o unikát. Přitom je to relativně starý akronym, jehož kořeny sahají až do roku 2000 – na univerzitu Carnegie Mellon v Pittsburgu.

Co je to ale vlastně CAPTCHA, co tato podivná zkratka ve skutečnosti znamená a jaké jsou její možnosti a slabiny (kterých je skutečně mnoho)? Na tuto a další otázky se ve stručnosti pokusím odpovědět v dnešním článku.

Co je to vlastně CAPTCHA?

CAPTCHA je zkratkou pro Completly Automated Public Turing test to tell Computers and Humans Apart“. Hezky-česky se tedy jedná o Plně automatizovaný Turingův test. Zbytek už překládat není třeba, Turingův test je totiž ve vší obecnosti jakákoliv zkouška, která testuje, jestli jste člověk nebo „hloupý“ stroj. Jeho historie sahá do padesátých let minulého století, kdy sloužil k jednoduchému testu, zdali náhodná osoba pozná, jestli mluví s člověkem nebo umělou inteligencí. Turingův test má dnes mnoho podob a kdo jej pokoří (zejména někteří chatovací roboti), může usilovat o tzv. Loebnerovu cenu, o kterou se v každoročním soutěžním klání bojuje už od začátku devadesátých let minulého století. Seznam vítězů najdete na webu Loebner.net.

turing.png  loebner.png
Klasický Turingův test a osmnáctikarátová Loebnerova cena

CAPTCHA test dělá to samé – je to vlastně implementace Turingova testu pro web a bez nadsázky se dá říci, že se bez něj dnes neobejde jak velký internetový projekt, tak zapadlý blogísek. Podobné webové aplikace si bez něj neporadí díky stále rostoucímu počtu nejrůznějších spamovacích a automatizačních robotů a stále chytřejším vyhledávačům, jejichž zájmu neunikne na webu skoro nikdo.

Incest v článku – magnet pro spammery

Takoví boti pak prochází web, nebo se prostě sami kouknou do katalogu na Googlu a pokud na cílové stránce najdou veřejnou diskuzi nebo možnost registrace, vyplní potřebný formulář a je vymalováno.

Ostatně za vše jeden příklad z praxe. Kdysi jsem napsal článek o genealogii, v jehož názvu se objevilo slovo „incest“ – rudá na spamboty. Jakmile se webová adresa dostala do indexu Google, začali článek navštěvovat spamovací roboti. Nejprve vkládali do diskuze pod článkem pouze tradiční reklamy na Cialis nebo Viagru, časem ale přibyly i exotické kousky odkazující na webovou pornografii aj. Po letech mohu konstatovat, že z celkového počtu 15 000 návštěv patří pouze 4 000 z nich lidskému čtenáři.

Černé listiny

CAPTCHA má několik forem. Než připomenu ty nejčastější, vzpomenu na ty okrajové, se kterými se občas na webu vědomě i zcela nevědomky setkáte. První obranou vlastně ani není CAPTCHA, ale brutální zásah v podobě černé listiny – blacklistu. Ten může obsahovat buď zprofanované IP adresy, ze kterých nejčastěji útočí spamboti (třeba bezplatný komplexní online test OpenRBL), nebo seznam zakázaných slov, které se nesmí v textu objevit.

Nevýhod je v obou případech skutečně mnoho. Testování každé IP adresy v živém provozu leda prodlužuje odesílání formuláře s komentářem nebo registrací a na takovou černou listinu se snadno dostane i dynamická IP adresa, kterou později server přidělí někomu jinému.

Zakázaná slova velmi dobře fungují u webových diskuzí. Pokud na černou listinu dáte výrazy jako „Cialis, Viagra, casino, order, porn“, eliminujete většinu současných spambotů, můžete ale omezit i některé diskutující a spamboti by od svého autora časem dostali příkaz používat nezávadný text. U malého webu samozřejmě nikdo robota „na tělo“ psát nebude, u skutečně velkého projektu v angličtině se to ale už vyplatí.

CAPTCHA testy, které nemusíte vyplňovat

Pokud to dělat nechcete, přichází na řadu skutečné CAPTCHA testy. Ty mohou mít různé podoby a zdaleka to nemusí být pouze obrázek. Z těch nejjednodušších forem je to třeba potvrzení formuláře. Pokud tedy napíšete komentář, po odeslání formuláře se zobrazí stránka s potvrzením. Pro většinu jednoduchých botů končí úkol odesláním právě prvního formuláře a jakési potvrzení nebudou brát na vědomí.

Dalším netradičním CAPTCHA testem je Javascript, který zpravidla roboti neumí přeložit. Do formuláře tedy můžete vložit ještě jedno textové pole, které bude pro běžného návštěvníka neviditelné pomocí kaskádového stylu. Když na stránku přijde robot, zpravidla vyplní všechna textová pole. Vzhledem k tomu, že jakési CSS nebude brát v úvahu, vyplní i „neviditelné“ pole, formulář odešle a… Neprojde testem.

A pokud by naše pole robot přeci jen nevyplnil, můžete do stránky přidat jednoduchý Javascript kód, který neviditelné pole po načtení stránky vyplní třeba aktuálním rokem. Při kontrole pak bude spam naopak jakýkoliv příspěvek, který v inkriminovaném poli bude mít cokoliv jiného než aktuální rok. Takový způsob CAPTCHA testu používá třeba jeden z českých zpravodajských webů.

Klasický CAPTCHA je stále složitější

Nejuniverzálnější CAPTCHA je ale ten textový, který nejednomu surfaři včetně mě otravuje život. Zatímco dříve stačilo opsat jednoduchý text z obrázku s černým písmem a bílým podkladem, autoři spambotů velmi brzy začali použít stále chytřejší a chytřejší OCR techniky pro rozpoznávání textu a současná realita je občas taková, že testem na „živého člověka“ žádný živoucí člověk neprojde.

tezka_captcha.png  matematicka_captcha.png
Pro zasmání: zaručeně nejtěžší CAPTCHA na světě (Flickr a Opera)

Už delší dobu tedy mnozí experimentují s obrázkovým testem. Ten má obrovskou výhodu, mnohem efektivněji se při něm totiž zapojuje unikátní lidský mozek, kterému běžný OCR program jednoduše nemůže konkurovat. Písmena, i když je různě natočíte a zdeformujete, zůstávají stále písmeny, co když ale místo slova bude v CAPTCHA obrázku zdeformovaná fotografie kočky? Vy ji samozřejmě poznáte, pro současný počítač to ale bude nerozluštitelný oříšek.

assira.png
Microsoft Research Asirra: obrázkovým CAPTCHA testem se zabývá i Microsoft

Nicméně i obrázková CAPTCHA má své limity. Zatímco v případě písmen můžete vygenerovat obrovské množství kombinací kontrolních textů, zvířat, alespoň těch, které jsou v širokém povědomí, zase tolik není. Domácí kočku sice pozná každý, jak ale vypadá třeba tapír nebo kajman a tušíte, jak se mu říká v internetové „lingua franca“ – v angličtině? Samozřejmě to ale neplatí pouze o fauně. Snad i to je důvod, proč se obrázková CAPTCHA v globálním měřítku zatím neujala a v nejbližší době pravděpodobně ani neujme.

Distribuovaná digitalizace knihoven, aneb reCAPTCHA

Problém stále složitějšího textového CAPTCHA testu celkem elegantně vyřešili původní autoři z Carnegie Mellon. Jejich CAPTCHA je skutečně velmi složitá, pokud ji ale rozluštíte, prospějete dobré věci. Ve svém kontrolním systému reCAPTCHA, který můžete snadno implementovat do svého webu, totiž používají textové fráze z papírových knih, s nimiž měly při digitalizaci problém současné OCR programy.

recaptcha.png
reCAPTCHA používá při registraci účtu třeba Twitter

Onou dobrou věcí je skutečnost, že pokud správně odpovíte, vaši verzi se naučí OCR programy v knihovnách a příště už nebudou mít se slovem problém. Ptáte se, jak je možné takovým testem projít, když ani druhá strana netuší, co vlastně v obrázku zobrazila? Je to prosté, v obrázku reCAPTCHA jsou totiž dvě slova, která si jsou z typografického hlediska velmi podobná. Mají tedy stejný řez písma, obrazové vady i podobu. Zatímco jedno slovo ještě není identifikované, to druhé je známé. Autoři přitom předpokládají, že pokud správně rozluštíte známé slovo, podaří se vám to i s tím druhým. reCAPTCHA je prostě jedna velká distribuovaná OCR digitalizace knihovny v Carnegie Mellon a nebylo by vůbec na škodu, kdyby se stejným způsobem nechaly inspirovat i české knihovny – ty veřejné i univerzitní.

CAPTCHA od Seznamu pro každého: API pro implementaci CAPTCHA testu nabízí i český Seznam. K dispozici jsou také knihovny pro Python a triviální PHP. Více informací a možnosti stažení knihoven najdete na webových stránkách projektu Seznam.cz CAPTCHA API.

seznam_captcha.png
CAPTCHA API od Seznamu

Zrakově postižení mají smůlu

CAPTCHA má několik nevýhod a rizik. Asi největší problém je přístupnost. Zrakově postižený návštěvník, kterému text stránky přečte screenreader, bude v případě obrázkového CAPTCHA naprosto diskvalifikovaný. Tento problém postupně některé weby řeší pomocí zvukového přehrání kontrolního textu, není to ale zdaleka samozřejmost. Z poněkud nepochopitelného důvodu ke všemu některé velké portály nepoužijí k přehrání všudypřítomný Flash, ale vyžadují instalaci Apple QuickTime. Této „trestuhodnosti“ se bohužel propůjčil i Google.

google_captcha.png  Microsoft_captcha.png
Google CAPTCHA je občas nesrozumitelný, audiozáznam ale není o moc lepší
Mluví i CAPTCHA od Microsoftu a jde mu to trochu lépe

Zvukovou alternativu má i reCAPTCHA, kde vám smíšený ženský a mužský hlas nadiktuje řadu textových znaků. Autoři pamatují i na strojové rozpoznávání zvuku, takže ani nahrávka není bez problémů a troufám si říci, že rozpoznat správná písmena a čísla, když na pozadí nahrávky slyšíte matoucí text, je občas těžší než porozumět obrázkovému textu. O moc lépe na tom není ani výše jmenovaný Google, ten má ale jeden bod k dobru – nadiktuje text v češtině. Česky mluví i Microsoft při registraci Live účtu a zdá se mi, že je v tom ještě o kousíček lepší.

Standardizace a prolomení CAPTCHA in vitro

A rizika? Tím největším je standardizace. Pokud si vyrobíte vlastní proprietární CAPTCHA, budete pro spamové roboty a jejich OCR velkou neznámou. Pokud ale budete budovat svůj web na nějakém známém řešení – ať už to bude redakční systém nebo diskusní fórum, paradoxně spammerům usnadníte život, jakmile se jim totiž podaří prolomit ochranu in vitro, bude na reálném internetu prolomena i na tisících a milionech webů, které používají stejnou technologii.

60 000 000 CAPTCHA testů každý den

Jestli klasický poštovní spam významně vytěžuje servery a zvyšuje rozpočty velkých korporací, pak i ten webový spam má své statistiky. Na webu autorů reCAPTCHA se tak třeba dočtete, že každý den lidé na internetu správně vyplní šedesát milionů CAPTCHA testů, přičemž jeden test průměrnému návštěvníkovi zabere deset sekund. To není mnoho, mně to zpravidla trvá mnohem déle, pokud ale těch pár okamžiků sečtete, zjistíte, že během pouhých 24 hodin to v globálním měřítku činí 150 tisíc hodin práce a při průměrné velikosti CAPTCHA obrázku okolo 1,5 kB spotřebují jen ty úspěšné testy téměř 100 GB datového přenosu. Tyto prostředky by se daly bez spammerů jistě využít lépe.

Spam, ten poštovní i webový, je ale stejně jako virus chřipky naprostou přirozeností a součástí internetu. Nemusíme ho mít rádi, můžeme se mu bránit, nic to ovšem nemění na skutečnosti, že jeho přítomnost na webu i v poště souvisí s fenomenální svobodou a neurčitostí celého internetu.

Hardwarový Turingův test

CAPTCHA testy jsou stále komplikovanější, to je nicméně pouze výzva pro autory OCR, a pokud jsou současné nejsložitější textové testy pro roboty nerozpoznatelné, neznamená to, že se za několik měsíců nemůže situace dramaticky změnit. Ostatně na webu najdete desítky a stovky článků o tom, jak se robotům podařilo v minulosti pokořit prakticky všechny globální hráče počínaje Microsoftem a konče třeba Yahoo!

CAPTCHA i spam jsou součástí jednoho velkého ekosystému a oba mají stejné možnosti útoku a obrany. Řešením tak mohou být nástroje, které pracují na vyšší úrovni. Mohou to být třeba identifikační karty. Za pár let se tedy možná dočkáme toho, že bez osobní čipové „kreditky“ a čtecího zařízení v počítači si na webu ani neškrtneme. Řešení by to bylo jistě účinné, otázkou ale zůstává, jak by se lidé vyrovnali s něčím, co je v přímém rozporu s fundamentálním elementem celého internetu – tedy s velmi, skutečně velmi, relativní anonymitou.

Diskuze (47) Další článek: Norton zveřejní speciální herní edici antiviru

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , ,