captcha – inteligentne zabezpieczenie
- Mateusz Żeromski | 2009-03-19 | Ciekawostki Inne
Tak jak pisałem w poprzednim artykule, o tutaj, captcha służy do odróżnienia człowieka od maszyny. Napisałem też, że obrazek do rozczytania i przepisania nie jest wiarygodnym zabezpieczeniem, bo hakerzy bez problemu je łamią. Opisałem też mój problem z spamBotami oraz jak to rozwiązałem. Teraz chciałbym opisać sposoby w jaki sposób powinna działać inteligentna captcha.
Captcha jako obrazek, dźwięk czy film – czysta teoria
Zapraszam do poprzedniego artykułu gdzie pisałem o złamaniu takich zabezpieczeń. Jeżeli hakerzy są w stanie złamać obrazek, to i dźwięk i film.
Captcha abstrakcyjna – ciekawostka
To co ma tylko człowiek, a czego nie posiadają zwierzęta i maszyny – to myślenie abstrakcyjne. Dlatego też były wykorzystywane obrazki z zniekształconym tekstem, lecz jak pokazuje życie – to nie jest dobre zabezpieczenie.
Ja proponuje wykorzystać unikalność ludzi i zamiast kazać im przepisywać obrazek – rozpoznać człowieka inaczej, np zadając pytanie na które odpowiedzieć może tylko człowiek.
- jakie zwierze robi miau
- ile nóg ma pies
Po takim pytaniu z pewnością rozpoznamy człowieka lecz nie wyobrażam sobie tego w praktyce, chociaż takie rozwiązanie byłoby ciekawe i z pewnością przynosiłoby uśmiech u użytkowników
Captcha jako operacja logiczna – szybko i pewnie
Tutaj opisuje rozwiązanie które sam zastosowałem i działa skutecznie – chodzi o to aby wymusić na użytkowniku myślenie jakiemu nie podoła maszyna. Można dodać w formularzu pole: Wprowadź sumę długości loginu i dwa. Takie proste polecenie może wykonać tylko człowiek. Co prawda odpowiednio zbudowany system rozpoznający języki oraz z zainstalowanym AI być może sobie poradzi – ale wystarczy zastosować kilka sztuczek *.js jeżeli chodzi o pokazywanie pytania i problem z głowy, np dodając treść podpowiedzi po jakimś losowym czasie (mowie o przedziale 1-3 sek).
Taki sposób jest bardzo prosty w implementacji – chyba najprostszy, bo w akcji po wypełnieniu wystarczy sprawdzić if( (strlen($_POST['login'])+2) == $_POST['liczba']), nie trzeba zapamietywać captchy itp, – jest to zdecydowanie najszybsze w implementacji z możliwych zabezpieczeń
Rozpoznajmy człowieka poprzez jego reakcje
Tutaj stoimy przed wyzwaniem – jak rozpoznać człowieka. Według mnie najlepiej by było zastosować jakiś kod js, który po wykonywanych akcjach wykrywał by ludzi. Wiadomo, że maszyny działają w sposób zautomatyzowany – tzn.: nie szukają pól formularzy, nie machają myszką, a czas potrzebny im do wypełnienia formularza można liczyć w częściach sekundy.
Jakie są specyficzne dla człowieka zachowania:
- pola są wypełniane nie na raz – ale w kolejności – często losowej
- czas wypełniania jest dłuższy niż 1 sekunda na każde pole tekstowe
- użytkownik rusza myszką, można wykryć akcje onClick – bardzo mało użytkowników działa bez używania myszki
Podałem tylko przykładowe możliwości – zapewne jest ich więcej. Teraz po rozpoznaniu człowieka, wystarczy, że dodamy przez js – jakieś pole do formularza, albo nadamy cookiesa – na etapie walidacji serwerowej prosto rozpoznamy czy formularz został wypełniony poprzez człowieka.
Podsumowanie
Rozpisałem się na oczywisty temat, aczkolwiek jeszcze nie spotkałem rozwiązania trzeciego. To chyba jest zachęta dla mnie aby cos takiego stworzyć i zaprezentować – czemu nie W przyszłości umieszczę kolejny artykuł z przykładem jako dokończenie tematu.
Polecam poszukanie na googlu troche o cpatchy – jest kilka ciekawszych artykułów niż ten, gdzie są opisywane metody łamania tego typu zabezpieczeń (obrzkowych).
Tagi: captcha, Ciekawostki, Inne, zabezpieczenia
1 Piraci 2009-04-10 19:53:57
Hmm, na razie wszystko co podajesz to pikuś do złamania w 3 minuty… Kod js – dziecko to złamie, dlaczego nie robi się kluczowych if’ów w js i zawsze sprawdza wszystko po stronie serwera? Captcha abstrakcyjna, uuuu, nawet człowiek nie był by wstanie zweryfikować odpowiedzi “jak kot robi miał” – było by tyle nędznych i ogólnikowych odpowiedzi a boty posłużyły by się efektem Elizy. Captcha jako operacja logiczna – także strasznie słabe zabezpieczenie, to tak jak by zrobić zdjęcie chmurze, szklance i kartoflowi i kazać napisać co obrazek przedstawia, od razu by się boty “nauczyły”.
Ciekawym rozwiązaniem jest Captcha 3D, tzn. wygenerowany obrazek 2d prezentujący coś w 3D, ulepszona wersja captch’y obrazkowej w której problemem była ograniczona ilość obrazków, w ulepszonej wersji pod tym względem już lepiej – z tym że także da rade to złamać(jestem zwolennikiem teorii że nie ma w człowieku niczego czego maszyna by nie mogła :P), ale wymaga to już czegoś więcej niż prób cofnięcia modyfikacji i dopasowania znaków, a przybliża nas do sztucznej inteligencji ;D.
Pozdrawiam
2 pebu 2009-06-02 23:26:27
Ale co jest ciekawe w tych rozwiązaniach to to że nie są zbyt powszechne a co za tym idzie trudniejsze do złamania. Do zabezpieczenia ‘zwykłych’ stron idealne. Kiedyś widziałem przy rejestracji na jakimś forum zwykłą captche obrazkową tylko że należało tekst z obrazka przepisać od tyłu.
Wydaje mi się że każde w pewnym sensie innowacyjne rozwiązanie będzie dobra na jakiś czas.
3 Prawo Jazdy Poznań 2009-11-15 12:21:30
Podane przykłady typowych ludzkich zachowań w akapicie “Jakie są specyficzne dla człowieka zachowania” dają się już zasymulować przez komputer. Najnowszą nowinka są metody capcha dwołujące się do emocji.
4 Skutery 2010-05-18 01:24:36
Jak dla mnie idealnym rozwiązaniem jest właśnie pytanie. To rozwiązuje wszelkie problemy. Obawa jest taka, że niektóre zagadki będą na tyle popularne, że bez problemu bot będzie mógł metodą prób i błedów odgadnać i uzupełnić pole…