Objavljeno: 26.3.2008 13:43 | Avtor: Marko Hölbl | Monitor Marec 2008 | Teme: google

Preverjamo s CAPTCHA

Pri prijavi v forume, sisteme, v katerih si ustvarimo brezplačen elektronski naslov ipd., moramo pogosto vpisati znake, prepoznane s slike, ki nam jih prikaže spletna stran. Ta varnostni preizkus poznamo kot CAPTCHA - Completely Automated Public Turing test to tell Computers and Humans Apart. To bi lahko prevedli kot Popolnoma avtomatiziran Turingov test, ki razloči med računalniki in ljudmi. V članku bomo podrobneje predstavili, kaj sploh je CAPTCHA, opisali lastnosti in rabo, napade na ta preizkus in prihodnost te tehnologije.

CAPTCHA je test, ki ugotovi, ali je določen uporabnik človek ali program (stroj). Temelji na načelu poziv-odgovor. To pomeni, da spletna stran uporabniku prikaže sliko, na kateri je zaporedje znakov (lahko tudi beseda), in ga pozove, naj znake s slike vpiše v ustrezno pozivno okno. Za izvedbo testa CAPTCHA potrebuje strežnik in uporabnika. Računalnik test CAPTCHA naredi (generira) in oceni, ali ga je uporabnik pravilno rešil, ne more pa ga rešiti sam. In prav to omogoča, da lahko na podlagi testa CAPTCHA razločimo med človeškimi in nečloveškimi (programi, boti ...) uporabniki. Izraz CAPTCHA so prvič uporabili Luis von Ahn, Manuel Blum, Nicholas J. Hopper z Univerze Carnegie Mellon in John Langford iz podjetja IBM leta 2000. Na splošno lahko CAPTCHA od uporabnika zahteva tudi druge prepoznave s slike (npr. sliko v sliki), vendar večina današnjih testov uporablja črke in številke, vstavljene v sliko.

Primer Gmailovega poziva CAPTCHA

CAPTCHA in raba tega preizkusa

Poleg tega, da s testom CAPTCHA razločimo med človeškimi in nečloveškimi uporabniki, ima ta tehnologija tudi druge lastnosti. Tako s trenutnimi računalniškimi in programskimi rešitvami ni mogoče, da bi avtomatizirano rešili test CAPTCHA. Trditev sicer ne drži povsem, saj so že na voljo programi za razbijanje ali samodejno reševanje testov, vendar je uspešnost teh programov precej odvisna od vrste uporabljenega testa CAPTCHA. Če so pozivi (slike) CAPTCHA dovolj dobro zasnovani (glej tabelo primerjav pozivov CAPTCHA), jih strojno še zmeraj ni mogoče rešiti. Na drugi strani pa lahko večina uporabnikov test reši brez večjih težav. Izjema so zgolj uporabniki s posebnimi potrebami, kot so slabovidni ali uporabniki z drugimi okvarami, ki lahko vplivajo na zmožnost prepoznave (npr. slabovidnost).

Algoritmi, ki se uporabljajo za ustvarjanje testov CAPTCHA, pogosto niso javno znani. Možno je, da so zaščiteni (npr. s patentom) ali pa njihovi snovalci menijo, da bodo s skrivanjem algoritma preprečili morebitno razbitje. Kakor pri vseh algoritmih, povezanih z varnostjo, tudi pri algoritmih za ustvarjanje testov CAPTCHA velja, da ni mogoče doseči varnosti s skrivanjem (angl. Security through obscurity). Razbijanja določene skupine testov CAPTCHA se je treba lotiti dokaj individualno, saj so algoritmi za prepoznavanje znakov s slike prilagojeni določeni vrsti CAPTCHA. Treba pa je tudi oceniti, ali se nam razviti napad na določeno vrsto CAPTCHA sploh izplača; morda so stroški napada večji kot vrednost razbitja oz. vrednost, ki jo CAPTCHA varuje.

Tehnologijo CAPTCHA je mogoče uporabiti v različne namene. Prvi zgled rabe je potrjevanje registracije uporabnika pri ponudniku brezplačne el. pošte (npr. Gmail). Test CAPTCHA je prav tako mogoče uporabiti pri prijavi na spletno stran, v forum ali za potrjevanje pošiljanja sporočil, kakor to počne spletna stran Najdi.si pri pošiljanju brezplačnih sporočil SMS. Tudi številne spletne strani uporabljajo teste CAPTCHA pri registracijah (naša Monitor.si, Google, Yahoo!, Najdi.si) in pri objavljanju v spletnih dnevnikih ali forumih. Tako onemogočamo objavljanje reklamnih in nezaželenih sporočil (smetja). Nevarnost grozi predvsem spletnim stranem, ki ponujajo brezplačne storitve (prej omenjeni brezplačni el. naslovi), ki jih napadalci pozneje uporabljajo za napade ali druge nezakonite dejavnosti.

Ko razmišljamo, za kaj vse je mogoče uporabiti CAPTCHA, nam šine na misel tudi preprečevanje večkratnega glasovanja. Poleg tega, da zapišemo naslov IP glasovalca, od tega zahtevamo tudi reševanje testa CAPTCHA in s tem preprečimo, da bi zlonamerni uporabniki spisali programe za večkratno ali nenehno glasovanje in tako vplivali na izid določenega glasovanja.

Najbolj zanimiva uporaba tehnologije CAPTCHA je zaščita el. naslovov pred nadležnimi nezaželenimi sporočili. Eno izmed rešitev ponuja spletna stran reCAPTCHA MailHide (povezavo je mogoče najti na koncu članka). Uporabnik preprosto vnese svoj el. naslov in spletna stran mu izpiše spletno povezavo ali HTML programsko kodo. To nato uporabnik objavi na svoji spletni strani, povezava oz. HTML programska koda pa omogoča, da je treba pred izpisom el. naslova rešiti test CAPTCHA in tako zaščiti el. naslov pred boti ali drugimi avtomatiziranimi zbiralci el. naslovov.

V prihodnosti bi lahko tehnologijo CAPTCHA uporabili tudi za preprečevanje nezaželenih sporočil, saj bi bilo mogoče preverjati, ali je pošiljatelj določenega el. sporočila človek. A to bi bilo nekoliko nadležno, priznamo. Ker nezaželena sporočila temeljijo na avtomatiziranemu pošiljanju el. sporočil, bi s tem lahko precej omilili količino poslane nezaželene el. pošte.

Uporaba testa CAPTCHA pri pošiljanju sporočil SMS na spletni strani Najdi.si

Tehnologijo CAPTCHA je nadalje mogoče uporabiti tudi v namene, ki niso povezani z varnostjo. Kot primer navedimo projekt reCAPTCHA, ki je namenjen izboljšanju digitalizacije knjig. Besede, ki jih ni bilo mogoče samodejno prepoznati (s programsko opremo OCR), objavimo v spletu v obliki testov CAPTCHA, tako da se vsaka neprepoznavna beseda vstavi v sliko CAPTCHA in se objavi v spletu. Hitro bomo pomislili, kako je mogoče, da bi računalnik preveril, ali je uporabnik vnesel pravilno besedo, saj je tudi sam ne prepozna. Rešitev, ki so si jo omislili snovalci reCAPTCHA, je ta, da vsako besedo, ki jo objavimo v spletu, povežemo z znano besedo (za katero poznamo rešitev testa CAPTCHA). Uporabnik nato reši test CAPTCHA, ki vsebuje obe besedi. Nato preverimo, ali je rešitev za znano besedo pravilna, in če je, predpostavimo, da je tudi rešitev za neznano besedo pravilna. Zaradi boljše zanesljivosti je enak poziv podan tudi drugim uporabnikom, da tako preverimo, ali je rešitev pravilna - čim več uporabnikov reši poziv CAPTCHA, sestavljen iz znane in neznane besede, tem bolj je verjetno, da je neznana beseda pravilna.

Uporaba testa CAPTCHA pri objavljanju komentarjev v spletnem dnevniku

Napadi in zlorabe

Kakor vsaka druga varnostna tehnologija je tudi CAPTCHA žrtev napadov in poskusov razbijanja pozivov z namenskimi programi. Napade na CAPTCHA je mogoče deliti na tri skupine:

  • napake in razpoke v izvedbi generatorja testov CAPTCHA;
  • prepoznavanje znakov s slike - uporaba posebej razvite programske opreme za prepoznavanje znakov, podobna kot se uporablja pri avtomatskem prepoznavanju znakov skeniranih besedil (angl. Optical Character Recognition - OCR);
  • zloraba uporabnikov.
  • Kakor vsak varnostni sistem lahko tudi sistemi CAPTCHA vsebujejo napake pri načrtovanju dejanske izvedbe. Napake so predvsem pri izvedbah, ki sploh niso ali niso dovolj preizkušene. Zaradi tega je mogoče teste CAPTCHA zaobiti, ne da bi uporabili programe za prepoznavanje znakov. Ker številne spletne strani ne uničijo sejnih ID že uspešno rešenih testov CAPTCHA, lahko te napadalec znova uporabi. Tako dobro zasnovana izvedba ne sme dopuščati vnovične uporabe sejnih ID ali večkratnega reševanje enakega testa CAPTCHA. Ta pomanjkljivost namreč uporabniku omogoča ugibanje rešitve. Slabi so tudi tisti testi CAPTCHA, ki uporabljajo premajhen nabor pozivov (slik). V tem primeru lahko napadalec zbira vse rešitve in razbije sistem preprosto tako, da za določen poziv poišče ustrezno rešitev v tabeli rešitev (ki si jo je predhodno naredil).

    Drug pristop k samodejnemu reševanju CAPTCHA, v primerih, ko je ta dobro izvedena, je uporaba namenskih programov za prepoznavanje znakov v slikah. Napadalec take programe razvije namensko in za določene vrste ali več vrst testov CAPTCHA. Uspešnost napadov je odvisna od vrste CAPTCHA (glej tabelo) in od iznajdljivosti napadalca (izvedbe namenskega programa OCR).

    Kljub različnosti med posameznimi izvedbami imajo vsi programi za razbijanje testov CAPTCHA temeljne gradnike enake:

  • Program mora pridobiti sliko (poziv) s spletne strani. Korak je mogoče izvesti tudi ročno, vendar je v primeru avtomatizacije razbijanja priporočljivo, da program sam pridobi ustrezne pozive s spletne strani.
  • V naslednjem koraku je treba odstraniti ozadje slike. Številni pozivi namreč vsebujejo barvna ozadja, pike, kocke ali druge vzorce, ki otežujejo avtomatsko prepoznavo in tudi od uporabnika zahtevajo več energije pri prepoznavi CAPTCHA. Pristop k odstranjevanju ozadja je uporaba barvnih filtrov ali namenski program, ki omogoča odstranjevanje črt in likov.
  • Nato je treba tako sliko razbiti na segmente (posamezne znake) in vsak znak posebej prepoznati.
  • Na koncu sledi prepoznavanje znaka, ki za računalnik načeloma ne predstavlja težje naloge.
  • Največja težava med omenjenimi koraki je tretji korak, saj lahko snovalec testa CAPTCHA s črtami ali drugimi artefakti, ki prekrivajo posamezne znake, napadalčevemu programu onemogoča pravilno razdelitev slike na posamezne znake. Tako se zgodi, da program napačno prepozna znak ali prepozna dva znaka kot enega - npr. "ll" kot "f", saj ponavadi zmotno poveže črte iz ozadja z znaki, ki so predmet prepoznave.

    V praksi je številnim raziskovalnim projektom uspelo razbiti določene vrste CAPTCHA. Med drugim je Gregu Moriju in Jitendri Maliku z UC Berkeley Computer Vision Group oz. Univerze Simon Fraser uspelo razbiti sistem z imenom "EZ-Gimpy", ki ga je v preteklosti uporabljal Yahoo!. Razbiti so bili tudi tudi testi CAPTCHA nekaterih priljubljenih spletnih strani (PayPal) in odprtokodnega foruma phpBB.

    Za razbijanje CAPTCHA je mogoče uporabiti tudi človeške možgane, s prevaranjem "pravih" uporabnikov. vir: Panda Security

    Razbijanja se je sicer mogoče lotiti tudi drugače. Zelo iznajdljivi krekerji so si omislili uporabo škodljive programske opreme, ki razbija CAPTCHA s pomočjo uporabnikov. Trojanski konj, ki ga je TrendMicro poimenoval "TROJ_CAPTCHAR.A", uporabniku prikaže igro, v kateri nastopajo slačipunce. Če uporabnik želi, da slačipunca odvrže dodaten kos garderobe, mora razrešiti test CAPTCHA, ki mu ga zastavi program. Uporabnikov odgovor je posredovan v strežnik napadalca in se lahko uporablja za ustvarjanje zbirke rešitev.

    Zlorabe uporabnikov so tudi t. i. "Turingove kmetije" (angl. Turing Farms), pri čemer so ljudje plačani, da rešujejo teste CAPTCHA. Tudi če delavci rešujejo teste zelo hitro (npr. 10 sekund na test) in so slabo plačani (npr. 3 EUR/h), lahko izračunamo, da se napadalcu tak napad večinoma ne splača. V omenjenem izračunu bi tako delavec, ki dela 8 ur, v tem času razrešil 2880 testov CAPTCHA in dobil za plačilo 24 evrov. Če bi želeli, da razrešimo 1 milijon testov (npr. za potrebe izgraditve zbirke podatkov rešitev), bi tako potrebovali 347 ljudi, ti pa bi nas stali 8328 evrov. Izračun nam pokaže, da bi bil tak napad predrag.

    Ker je CAPTCHA tako priljubljen, lahko na spletnih dražbah (npr. eBay) zasledimo tudi oglase, ko posameznik ponuja storitev razbijanja testa CAPTCHA. Nekateri uporabniki so razvili programsko opremo, ki omogoča razbijanje CAPTCHA, vendar ni dostopna v spletu.

    Seveda je uspešnost pri razbijanju testov CAPTCHA povezana predvsem s tem, kako dobri so pozivi. Preproste sisteme, ki uporabljajo samo znake, vstavljene v sliko, je mogoče laže razbiti. Po drugi strani aktualni pristopi, ko so znaki prekriti s črtami, zamaknjeni ali kako drugače zakriti, otežijo ali onemogočajo samodejno prepoznavo.

    Kakšna je prihodnost CAPTCHA

    Ko se zazremo v prihodnost, lahko predvidimo, da se bo raba CAPTCHA še povečala, vendar se bodo na drugi strani tudi izboljšali napadi in ustrezna programska oprema. Tako bi lahko napredek na področju umetne inteligence kaj hitro ogrozil "klasične" CAPTCHA. Seveda znanstveniki in strokovnjaki za računalniško varnost ne sedijo križem rok. Nekateri (npr. Microsoft s projektom Asirra) so že predlagali nove pristope, ki naj bi naredili teste CAPTCHA odporne proti trenutno znanim napadom. Eden izmed pristopov je uporaba slikovnih pozivov, ki za razliko od "klasičnih" tekstovnih pozivov CAPTCHA od uporabnika zahtevajo prepoznavanje določene stvari na sliki (npr. ali gre za mačko ali psa). Vendar se na žalost pri slikovnih vrstah pozivov CAPTCHA srečujejo z določenimi težavami: slikovni pozivi CAPTCHA namreč zasedajo več pomnilniškega prostora, to pa lahko predstavlja težavo pri velikih množicah. Če imamo premajhno množico, pa je nevarnost, da napadalec oblikuje zbirko rešitev. Nadalje naletimo na problem, kako ustvariti pozive in rešitve samodejno. Trenutno stanje je tako, da se slikovni testi CAPTCHA v praksi ne uporabljajo, temveč skrbniki spletnih storitev in strani še zmeraj uporabljajo besedilne CAPTCHA, ki pa so izboljšane.

    Prihodnost CAPTCHA - sistem Asirra

    Prej omenjeni projekt Asirra je zgled slikovne vrste testov CAPTCHA, ki deluje tako, da mora uporabnik na sliki prepoznati, ali gre za mačko ali psa. Slike z mačkami mora nato označiti. Tak sistem je mogoče uporabiti tudi za zaščito lastne spletne strani.

    Za konec

    Sistemi CAPTCHA so nepogrešljiv del vsake spletne storitve, če se želimo izogniti zlorabam. Napredek na področju prepoznavanja znakov sili snovalce CAPTCHA k uporabi vedno bolj zapletenih slik. V skrajnih primerih so slike tako zapletene, da še človek s težavo prepozna, za katere znake gre. Iznajdljivi napadalci pa vedno znova najdejo načine, kako pretentati zaščito. Tudi prihodnje tehnologije, kot je slikovna vrsta CAPTCHA, obetajo. Vendar bo boj med snovalci zaščite in napadalci, predvsem zaradi vse večje komercializacije napadov, trd in dolg, na koncu pa so napadalci zmeraj korak pred snovalci.

    Koristne povezave:

  • CAPTCHA DECODE, www.lafdc.com/captcha
  • CAPTCHA From Wikipedia, en.wikipedia.org/wiki/CAPTCHA
  • Breaking a Visual CAPTCHA, www.cs.sfu.ca/~mori/research/gimpy
  • The Official CAPTCHA Site, www.captcha.net
  • PC stripper helps spam to spread, news.bbc.co.uk/2/hi/technology/7067962.stm
  • Has CAPTCHA Been "Broken"?, www.codinghorror.com/blog/archives/001001.html
  • Breaking CAPTCHAs Without Using OCR , www.puremango.co.uk/cm_breaking_captcha_115.php
  • reCAPTCHA: Stop Spam, Read Books, recaptcha.net
  • reCAPTCHA MailHide, mailhide.recaptcha.net
  • MSR Asirra: A Human Interactive Proof, research.microsoft.com/asirra
  • Hire People To Solve CAPTCHA Challenges, petmail.lothar.com/design.html#auto34
  • Defeating of some weak CAPTCHAs, www.captcha.ru/en/breakings
  • SPAM Solution using ASP Security Image Generator (CAPTCHA) and a Comment Approval Update, BP Blog, blog.betaparticle.com/template_permalink.asp?id=107
  • CAPTCHA Wish Your Girlfriend Was Hot Like Me?,
    blog.trendmicro.com/captcha-wish-your-girlfriend-was-hot-like-me
  • A new way of social engineering, pandalabs.pandasecurity.com/archive/A-new-way-of-social-engineering.aspx
  • CAPTCHA je preizkus, ki ugotovi, ali je določen uporabnik človek ali program (stroj).

    Ko se zazremo v prihodnost, lahko predvidimo, da se bo raba CAPTCHA še povečala, vendar se bodo na drugi strani izboljšali tudi napadi in ustrezna programska oprema.

    Iznajdljivi napadalci vedno znova najdejo načine, kako pretentati zaščito.

    Naroči se na redna tedenska ali mesečna obvestila o novih prispevkih na naši spletni strani!

    Komentirajo lahko le prijavljeni uporabniki

     
    • Polja označena z * je potrebno obvezno izpolniti
    • Pošlji