CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart), один з варіантів зворотного тесту Тьюринга, все частіше і частіше з'являється на сайтах, які страждають під натиском ботів, тобто автоматичних програм - імітаторів діяльності користувачів. Це відбувається у разі зіткнення інтересів кількох сторін: адміністрації сайту, програмістів, "хакерів", користувачів сайту і, можливо, якогось замовника атаки. Втім, слово "хакер" тут цілком можна вживати без лапок: для успішної складної атаки необхідно дійсно добре розбиратися в веб-технологіях та протидіяти спеціально захищеним системам.

Розглянемо інтереси і мотивації кожної із сторін. Адміністрація сайту займається своїм проектом: заробляє на ньому гроші (або одержує моральне задоволення), керує своєю персоналом (програмістами, адміністраторами, редакторами) і радіє високої популярності ресурсу. Популярність, як зазвичай, вимірюється кількістю людей, які відвідують сайт і користуються його сервісами: читаючих статті, переписувати в пошті, що залишають і читаючих коментарі і так далі.

Будь обширна інтернет-аудиторія відразу викликає інтерес тих людей, кому необхідно привернути увагу якомога більшої кількості інтернет-користувачів до чогось. Назвемо їх замовниками атаки. В залежності від етики і світогляду замовників атаки це може бути як залучення уваги до якогось цілком нормальному сервісу або інформацією (у такому випадку ми називаємо це рекламою), так і цілком може виявитися, що їм необхідно залучити максимум людей в якусь аферу (в такому випадку ми називаємо це шахрайством). Залучення уваги організується, наприклад, таким способом: пишеться програма, скануюча всі статті сайту і залишає до кожної з коментаря з привертають увагу словами і потрібними посиланнями. Як показує практика, ця схема відмінно працює - далеко не всі люди розуміють, що коментар не має ніякого відношення до статті, і переходять по посиланню. Етична сторона таких дій, ясна річ, не береться до уваги: ??головне - результат.

Якщо вас атакують - це обов'язково комусь потрібно

В першу чергу слід визначити цілі та засоби атаки. Якщо атакуються коментарі у вашому блозі, побудованому на одному з поширених движків, то, швидше за все, саме ваша аудиторія не є метою. Метою є аудиторія всіх блогів, побудованих на цьому движку. З позиції атакуючого це виглядає приблизно так: знайти якийсь популярний движок блогів, написати бот, який зможе пройтися по всіх записів у блозі і залишити по коментарю до кожної, потім знайти список блогів, побудованих на це движку (дуже допоможе будь пошуковик), і потім віддати адреси боту. Навіть якщо господар блогу видалить коментар - деякий час він буде видний. А враховуючи масштаби атаки (реально залишати подібні коментарі мало не мільйонами в день), а також бюджети на "чорне SEO" - цілком гідна мета для хакера. Його роботи в даній схемі - лише кілька днів. Що характерно - такі атаки є досить характерними і постійними. Оскільки до конкретного блогу атака не має ніякого відношення, то і протидіяти їй вкрай легко: достатньо злегка змінити движок так, щоб стандартна схема атаки вже не підходила - наприклад, змінити ім'я скрипта, на який іде форма коментарів. Тобто достатньо стати в чимось унікальним, щоб випасти із загального ряду.

Крім варіанта масової "бомбардування" маловідвідуваних ресурсів є також і протилежний варіант - цільова атака конкретного ресурсу. Тобто, наприклад, популярного порталу. У такому разі є шанс привернути увагу сотень тисяч користувачів, атакувавши всього один сайт. На відміну від попереднього варіанту сайт буде активно захищатися - адже його, як правило, підтримує команда професійних програмістів. Атаку зможуть виявити і присікти набагато раніше і оперативніше, але і мета прекрасніше - аудиторія досить велика.

І, як варіант, може також трапитися і атака з метою атаки - для дискредитації ресурсу, удару по бренду в конкурентній боротьбі. У такому випадку годяться будь-які засоби - не тільки рекламні повідомлення в місцях, де користувачі можуть щось написати, але і спроби порушення функціонування системи як такої. Втім, при різних цілях інструментарій та предметна область залишаються все тими ж - веб-програмування.

Програмісти і хакери - як добро і зло.

Дуже схожі, однаково вправні і постійно воюють

Отже, що ж може протиставити програміст хакеру? Було б наївно рахувати, що програміст володіє великими знаннями або навичками - по суті, ці люди відрізняються лише ролями в нашій моделі, самі ж по собі вони взагалі нічим не відрізняються і володіють однаковим рівнем професіоналізму. Сучасний стан технологій такий, що зі сторони сервера при обробці запиту немає взагалі ніяких передумов вважати дані справжніми або якось їх перевірити. IP-адреса може змінюватися за допомогою проксі-серверів, будь-які дані, що приходять від користувача, можуть бути сфальсифіковані.

Як і будь-яка ненова проблема, ця також має кілька відомих підходів до вирішення. Алан Тьюринг, в принципі, назвав проблему задовго до появи Інтернету, і проблема мала більш абстрактний і філософський характер: чи можна, спілкуючись з кимось дистанційно, за допомогою листування, достовірно знати - спілкуєшся ти з людиною або з машиною? З появою Інтернету завдання стала досить життєвою, але створити програму - симулятор людського спілкування все так само не вдається.

В нашому ж випадку проблема прямо обратна - автоматичними засобами (тобто без участі людини) відрізнити людину від машини . Називається це зворотним тестом Тьюрінга і в даний момент вирішується у вигляді CAPTCHA-зображень.

Ідея CAPTCHA, як правило, полягає в наступному: показати у формі з коментарем ще й картинку, на якій щось намальовано (як правило , букви і цифри), і в отриманих даних перевіряти, чи збігається відповідний код із збереженим на сервері. Завдання розпізнавання образів - класична задача класу так званого штучного інтелекту, тобто задача, вирішення якої вимагає імітації діяльності людського мозку. Її рішення в даний момент дуже і дуже нечітко - вирішені лише окремі вузькі класи задач, однак розпізнавання намальованих символів - якраз один з таких класів. Він називається OCR, Optical Character Recognition, і робить це дуже успішно для свого класу зображень, наприклад для сканованих книг. Тому програмістам доводиться вносити в картинки ускладнюють елементи, щоб поширене програмне забезпечення розпізнавання образів не справлялося з ними і написання спеціалізованої програми також було справою нетривіальним.

Написати дійсно хорошу CAPTCHA - справа вельми непроста

Наскільки складно написати генератор CAPTCHA-картинок і наскільки складно написати для нього распознаватель? У найпростішому варіанті це досить швидко - зробити картинку, розмістити на ній кілька літер, повернути їх, програти з квітами, додати шуму - і картинка готова. Час створення - від пари годин до тижня. Розпізнавати ж їх значно складніше - фактично такий генератор картинок є окремою вузької завданням, для якої доведеться писати окремий распознаватель, заснований на використанні особливостей цієї картинки. Зрозуміло, існує кілька проектів, присвячених саме цьому ремеслу.

Таким чином, написання распознавателя - штучна робота, і написати щось універсальне тут досить складно. Однак, з іншого боку, далеко не кожен веб-програміст має якісь знання або досвід створення систем розпізнавання образів, щоб розуміти, яку потрібно генерувати картинку, щоб її складно було розпізнати. У результаті виходить досить сумна картина: маса бездарно написаних CAPTCHA-генераторів і деяку кількість людей, які в змозі їх зламати, достатню для того, щоб їх цілком можна було знайти і найняти для цієї роботи.

Однак такий злом обійдеться вже зовсім недешево - для гарної CAPTCHA-системи распознаватель доведеться писати тижні і місяці. Однак є й гранична ціна - вручну CAPTCHA розпізнається приблизно за пару центів за одну картинку. Тому має сенс робити тільки таку програму, яка у підсумку розпізнає картинки дешевше або, що важливо, значно швидше.

У кожному разі, з цього можна зробити наступні висновки: якщо вас не зламують, можливо, ви нікому не потрібні . Якщо вас зламують, можливо, це відбувається тому, що це занадто легко, щоб цього не зробити. Якщо все-таки ламають саме вас, залучаючи серйозні засоби і методи, знайте: ваш інтерфейс коштує один цент за картинку.

Посилання по темі

  • CAPTCHA
  • PWNTCHA - взлом CAPTCHA (англ.)
  • OCR Research Team - злом CAPTCHA, пошук по CAPTCHA-ресурсам (англ.)

Статьяполучена: hostinfo.ru

Детальніше »