Как CAPTCHA сначала защищала интернет от роботов, а потом помогала обучать ИИ

Был у интернета довольно странный период.

Чтобы доказать сайту, что ты человек, нужно было посмотреть на картинку, где буквы выглядели так, будто их печатали на машинке во время землетрясения, и попытаться разобрать:

x7Prm9

Не получилось?

Получайте ещё одну.

Теперь буквы перечёркнуты тремя линиями, повёрнуты, растянуты и частично растворились в тумане.

Компьютер в это время спрашивал:

Докажи, что ты человек.

Человек:

Сам попробуй, зараза.

😁

Потом появились две фотографии слов.

Потом номера домов.

Потом:

выберите все изображения со светофорами.

выберите все мотоциклы.

выберите все пешеходные переходы.

И вокруг CAPTCHA родилась очень красивая легенда:

Google бесплатно заставлял миллиарды людей обучать искусственный интеллект.

В этой истории есть правда.

Но реальность даже интереснее.

Потому что CAPTCHA действительно начиналась как способ использовать задачи, которые человеку давались легко, а компьютеру трудно. Потом создатели придумали превращать миллионы человеческих ответов в полезную работу — сначала оцифровывать книги. А затем произошло самое забавное:

искусственный интеллект настолько улучшился, что научился решать старые CAPTCHA лучше человека.

И тесту пришлось искать новые способы понять, кто перед ним.

Всё началось со спамеров

В конце девяностых интернет уже начал сталкиваться с проблемой, которая сегодня кажется совершенно привычной.

Боты.

Например, AltaVista позволяла владельцам сайтов отправлять новые URL в поисковую систему.

Очень быстро выяснилось, что если человеку разрешить бесплатно отправить один адрес, кто-нибудь обязательно напишет программу, которая отправит десять тысяч.

Команда AltaVista ещё в 1997 году стала использовать изображения с искажённым текстом: человек буквы прочитать мог, тогдашние системы OCR — распознавания текста — значительно хуже. Это считается одним из первых известных практических применений такого «обратного теста Тьюринга». (ScienceDirect)

Примерно в то же время похожая проблема возникла у Yahoo!.

Автоматические программы создавали аккаунты, лезли в чаты и распространяли рекламу.

В 2000 году специалисты Yahoo! обратились к исследователям Carnegie Mellon University. Команда Мануэля Блума, Луиса фон Ана, Николаса Хоппера и Джона Лэнгфорда разработала семейство подобных тестов и дала им название, которое пережило саму технологию:

CAPTCHA — Completely Automated Public Turing Test to Tell Computers and Humans Apart.

То есть:

полностью автоматизированный публичный тест Тьюринга для различения компьютеров и людей. (CMU School of Computer Science)

Название, конечно, совершенно человеческое.

Сразу видно: придумывали учёные.

Идея была почти гениальной

Компьютер сам создаёт задачу.

Сам знает правильный ответ.

Сам проверяет результат.

Но решить задачу другой компьютер пока не умеет.

Человек — умеет.

Например:

что здесь написано?

На картинке буквы.

Для человека зрительное распознавание текста было естественной задачей.

Для машин начала двухтысячных — довольно серьёзной проблемой компьютерного зрения.

Получался почти идеальный охранник.

Не нужно нанимать человека, который сидит у формы регистрации:

— Так. Иван Иванов. Покажите паспорт.

Сайт автоматически выдаёт картинку.

Прочитал?

Проходи.

Не прочитал?

Возможно, бот.

И CAPTCHA очень быстро расползлась по интернету.

Но Луиса фон Ана начала беспокоить одна вещь

Люди тратили на эти картинки огромное количество времени.

В 2007 году Carnegie Mellon приводил оценку: ежедневно решалось не менее 60 миллионов CAPTCHA, примерно по десять секунд каждая.

Получалось более 150 тысяч человеко-часов ежедневно. (Карнеги Меллон Университет)

Огромная человеческая вычислительная мощность просто исчезала.

Человек:

g… r… это вообще r или n?

Ввёл.

Сайт сказал:

Спасибо.

И результат больше никому не нужен.

Фон Ан задал очень хороший вопрос:

А можно заставить человека одновременно доказывать, что он человек, и делать что-нибудь полезное?

Так появился reCAPTCHA.

И вот reCAPTCHA была действительно прекрасной аферой

В хорошем смысле.

В те годы библиотеки и архивы массово сканировали старые книги и газеты.

Сканер прекрасно превращал бумагу в картинку.

Но чтобы по книге можно было искать, копировать текст или индексировать его, изображение нужно было преобразовать обратно в буквы.

Для этого использовался OCR.

Хорошая печать?

Нет проблем.

А теперь берём газету 1893 года.

Бумага пожелтела.

Чернила расплылись.

Буква повреждена.

Страница помята.

Компьютер смотрит:

¯\(ツ)

Вот именно такие слова reCAPTCHA и начала показывать людям. (Карнеги Меллон Университет)

Поэтому человеку показывали два слова

Одно система уже знала.

Второе OCR распознать не смог.

Допустим:

garden wa?er

Первое — контрольное.

Если человек правильно написал garden, система получает основания считать:

наверное, это действительно человек.

А ответ на второе слово сохраняется.

Его показывают другим людям.

Если несколько независимых пользователей отвечают одинаково, появляется довольно высокая уверенность:

ага, здесь написано water.

Получается невероятно красивая схема.

Человек думает:

я прохожу защиту от спама.

На самом деле одновременно помогает компьютеру читать старую книгу.

Масштаб оказался совершенно безумным

В научной статье о reCAPTCHA, опубликованной в Science, команда сообщала, что система была установлена более чем на 40 тысячах сайтов и уже распознала свыше 440 миллионов слов. Точность получаемой расшифровки превышала 99%. (CMU School of Computer Science)

Carnegie Mellon позже писал, что reCAPTCHA использовалась для оцифровки старых книг и периодики, а сервис прошли более миллиарда пользователей. (Карнеги Меллон Университет)

Среди проектов был и огромный архив The New York Times за XIX–XX века. (Карнеги Меллон Университет)

То есть вполне возможно, что когда-то вы хотели просто зарегистрироваться на форуме…

…а заодно бесплатно поработали наборщиком текста для газеты 1911 года.

Вы об этом не знали.

В зарплатной ведомости вас тоже почему-то не оказалось.

😁

Это был ранний краудсорсинг в невероятных масштабах

Сегодня мы привыкли к словам:

разметка данных;

human feedback;

датасет;

обучение модели.

Тогда выражения были другие.

Но принцип очень знакомый.

Есть задача, которую машина пока решает плохо.

Есть огромное количество людей.

Каждому человеку дают микроскопический кусочек задачи.

Ответы объединяются.

Из миллионов человеческих решений получается набор данных, который потом способен использовать компьютер.

Фон Ан вообще очень увлекался этой идеей — human computation, человеческими вычислениями.

Даже до reCAPTCHA он создавал игры, в которых люди развлекались, одновременно размечая изображения и создавая полезные для компьютеров данные. В его научном списке работ есть, например, проект 2004 года Labeling Images with a Computer Game. (CMU School of Computer Science)

А затем похожая логика привела его к следующему проекту.

Duolingo.

Но это уже другая история.

Потом книги начали заканчиваться — а интернет получил Street View

Наверняка многие помнят момент, когда вместо странных книжных слов CAPTCHA внезапно начала показывать:

274

Причём цифры были сфотографированы на доме.

Или табличке.

Или вообще где-то на покосившемся заборе.

Это тоже было не случайно.

Google приобрела reCAPTCHA в 2009 году. (CMU School of Computer Science)

А у Google к этому времени уже существовал огромный другой источник изображений:

Street View.

Машины ездили по улицам и фотографировали мир.

На фотографиях были:

дома;

улицы;

вывески;

номера;

адреса.

Для Google Maps крайне полезно понимать:

вот дом №17;

а вот №19;

следовательно, координаты адреса можно уточнить.

Для человека прочитать номер дома довольно легко.

Для компьютерного зрения начала 2010-х — далеко не всегда.

Знакомая ситуация, правда?

И тут CAPTCHA снова оказалась рядом с задачей компьютерного зрения

Google активно исследовала автоматическое распознавание номеров домов в Street View.

Для исследований появился набор Street View House Numbers — более 600 тысяч размеченных цифр, снятых с реальных улиц. (Google Research)

Следующие нейросетевые системы уже умели читать целые номера.

К 2014 году Google сообщала, что её модель распознаёт сложные номера домов на Street View с точностью более 90% и помогла извлечь почти 100 миллионов физических адресных номеров со снимков по всему миру. (Google Research)

И здесь произошло событие, которое прекрасно показывает всю историю искусственного интеллекта.

Компьютер наконец научился делать то, что использовалось для проверки:

а не компьютер ли ты?

В 2014 году ИИ фактически сломал старую CAPTCHA

Google обучила систему компьютерного зрения для Street View.

А потом исследователи проверили её на искажённых текстовых CAPTCHA.

Результат:

более 99% самых сложных искажённых текстов система смогла прочитать автоматически. (Google Безопасности)

В другом официальном сообщении Google приводила значение 99,8% для сложных текстовых вариантов. (Google Безопасности)

Получилась прекрасная технологическая ирония.

2000 год:

Покажем компьютеру буквы. Он же тупой, не прочитает.

2014 год:

Компьютер читает.

— Ну…

Иногда лучше человека.

— Блин.

😁

Искажать буквы ещё сильнее было уже бессмысленно.

Потому что первым начинал сдаваться не бот.

Человек.

Поэтому появилась знаменитая галочка

☑ Я не робот

Самое смешное в этой кнопке: правильный способ её пройти — нажать:

Я не робот.

Если бы защита действительно верила вашему заявлению, это была бы великолепная система безопасности.

Бот:

Я не робот.

Google:

Ну ладно, проходи.

Разумеется, галочка работает не так.

В 2014 году Google представила No CAPTCHA reCAPTCHA. Вместо обязательного распознавания текста система стала использовать анализ риска и учитывать значительно больше признаков взаимодействия пользователя с сайтом. Для многих людей хватало простого клика; дополнительная задача появлялась только если система была недостаточно уверена. (Google Безопасности)

То есть главным тестом постепенно стало уже не:

можешь прочитать кривое слово?

А:

насколько твоё поведение похоже на нормального пользователя?

А подозрительным людям начали показывать картинки

Вот здесь появляются наши любимые:

выберите все автобусы;

выберите все светофоры;

выберите все велосипеды;

выберите все пешеходные переходы.

И отсюда родилась популярная история:

Мы все бесплатно обучали беспилотные автомобили Google.

Звучит настолько правдоподобно, что хочется немедленно потребовать долю в Waymo.

Только доказательства именно такой прямой схемы значительно слабее интернет-легенды.

Google действительно связывала разработки команд reCAPTCHA и Street View, а задачи распознавания объектов и текста на уличных изображениях являются реальными задачами компьютерного зрения. Например, технологии Street View использовались для автоматического извлечения номеров домов, названий улиц и информации о бизнесах. (Google Безопасности)

Но утверждать:

каждый раз, когда вы отмечали светофор, вы непосредственно размечали датасет для беспилотной машины,

я бы не стал.

Официальные источники этого в такой простой форме не подтверждают.

Тем более CAPTCHA имеет другую главную задачу

Поймать бота.

Изображение должно быть таким, чтобы текущей автоматике было сложнее решить задачу, чем человеку.

Какая именно задача хорошо разделяет человека и машину сегодня?

Это постоянно меняется.

В нулевых:

прочитай буквы.

ИИ научился.

Тогда:

распознай объект на фотографии.

ИИ научился и этому.

И довольно неплохо.

Значит, сама CAPTCHA вынуждена всё время отступать.

Человек как будто стоит на берегу, а искусственный интеллект идёт к нему:

— Прочитай буквы!

— Уже умею.

— Найди светофор!

— Умею.

— Велосипед?

— Умею.

— Ладно, а вот эта маленькая часть светофора в соседнем квадратике считается?

— …

— АГА!

😁

В 2018 году Google сделала ещё один логичный шаг

Появилась reCAPTCHA v3.

Она вообще не обязана показывать человеку задачу.

Система работает в фоне и выдаёт сайту оценку риска от 0 до 1:

насколько это взаимодействие похоже на нормального пользователя?

Высокая оценка — вероятно, человек.

Низкая — возможно, автоматизация.

А сайт уже решает, что делать:

разрешить действие;

потребовать дополнительную проверку;

включить двухфакторную авторизацию;

отправить комментарий на модерацию;

заблокировать подозрительную операцию. (Google for Developers)

То есть современная защита постепенно превращилась из экзамена:

реши головоломку

в поведенческий анализ:

покажи мне, как ты взаимодействуешь с системой.

И это уже совсем другая философия.

Получается забавный цикл

Сначала человечество создало CAPTCHA, потому что компьютеры были слишком глупыми.

Затем мы обнаружили:

раз компьютеры не умеют решать эти задачи, давайте использовать миллионы человеческих решений для полезной работы.

Люди начали оцифровывать книги.

Размечать сложные данные.

Помогать системам компьютерного зрения.

Параллельно развивалось машинное обучение.

И постепенно машины научились решать те самые задачи, которые отличали человека от машины.

Фактически CAPTCHA содержит очень красивую идею из исходной научной работы 2003 года.

Если существует задача, которая остаётся трудной для ИИ, её можно использовать для отличения человека от компьютера.

Если компьютер научился её решать — произошло что-то полезное для самого искусственного интеллекта. (Experts@Minnesota)

Для защиты плохо.

Для науки — прекрасно.

На самом деле CAPTCHA была своеобразным индикатором прогресса ИИ

Посмотрите, какие задачи постепенно переставали работать.

Распознавание печатных букв.

Решено достаточно хорошо.

Распознавание текста на реальных фотографиях.

Сильно улучшилось.

Классификация объектов.

Сегодня обычная нейросеть без особого труда расскажет, где автобус, мотоцикл или светофор.

То есть история CAPTCHA — маленькая история компьютерного зрения.

То, чем в 2005 году можно было надёжно остановить программу, через десять лет программа решала автоматически.

А сегодня мультимодальной модели можно просто показать фотографию и спросить:

Что здесь изображено?

И она перечислит половину содержимого кадра.

Причём теперь появилась новая проблема

Современные боты вообще стали гораздо больше похожи на человека.

Раньше бот был довольно примитивным скриптом:

открыть страницу
заполнить форму
нажать кнопку
повторить 100000 раз

Сегодня автоматизация может использовать:

настоящий браузер;

мышь;

JavaScript;

прокси;

изменяемые профили;

компьютерное зрение;

языковые модели.

Вместо тупого:

нажать кнопку №3

агент уже способен посмотреть на экран и понять:

нужно зарегистрироваться.

А мы буквально только что обсуждали, как современные ИИ научились видеть компьютерный интерфейс и нажимать кнопки самостоятельно.

Получается гонка вооружений.

Сайт пытается определить:

это человек или программа?

Программа всё лучше имитирует человека.

Защитная система всё больше анализирует не одну картинку, а целое поведение.

И однажды вопрос «Я не робот» вообще может потерять смысл

Потому что появляется странная промежуточная категория.

Вот человек открыл сайт.

Но форму за него заполняет ИИ-агент.

Он действует по прямому поручению человека.

Это бот?

Технически — да.

Злоумышленник?

Нет.

Теперь представим агент, который бронирует человеку гостиницу.

Сайт видит автоматизированный браузер.

Защита:

Робот! Не пущу!

Пользователь:

Так я его сам попросил!

И интернету придётся научиться различать уже не:

человек / робот,

а:

разрешённый агент / вредоносная автоматизация.

Это гораздо сложнее.

Возможно, CAPTCHA умрёт именно потому, что роботы станут нормальными пользователями

Представьте интернет через несколько лет.

Человек говорит ассистенту:

Найди билеты в Казань на следующие выходные, проверь три сервиса и забронируй самый удобный вариант до 20 тысяч.

Агент открывает сайты.

И каждый сайт спрашивает:

Докажи, что ты человек.

Агент:

Но я не человек.

— Тогда уходи.

Получается абсурд.

В новом интернете автоматическое посещение сайтов может быть не атакой, а нормальным способом использования сервиса.

Значит, понадобятся другие механизмы.

Авторизация агента.

Разрешения владельца.

Цифровая подпись.

Лимиты действий.

Репутация.

Платёжная идентичность.

Но точно не:

выбери квадратики с гидрантами.

И это делает историю CAPTCHA особенно красивой

Технология появилась для защиты людей от роботов.

Потом заставила людей выполнять работу, которую роботы ещё не умели.

Эта работа помогала оцифровывать человеческие знания и пересекалась с развитием компьютерного зрения.

Роботы становились умнее.

Старые тесты переставали работать.

Защита усложнялась.

А теперь мы движемся в мир, где роботы сами будут легитимными участниками интернета.

Получается почти полный круг.

В 2000 году сайт спрашивал:

Ты человек?

Через несколько лет ему, возможно, придётся спрашивать совсем другое:

Тебе человек разрешил это делать?

И это намного более интересный вопрос.

Потому что искусственный интеллект в итоге победил CAPTCHA не тогда, когда научился читать кривые буквы.

Он окончательно победит её тогда, когда интернет перестанет считать сам факт присутствия робота подозрительным.

А пока…

Если сайт опять покажет девять квадратиков и попросит найти светофоры, можно хотя бы утешить себя историей.

Когда-то за такое мы действительно помогали оцифровывать книги.

Сегодня, скорее всего, просто доказываем алгоритму, что ведём себя достаточно по-человечески.

Хотя после третьей подряд картинки с велосипедом начинаешь и сам слегка сомневаться.