В рамках “Премии Рунета”, как обычно, проходит “народное голосование” – здесь каждый желающий пользователь Сети может заполнить анкету, поддержав те или иные веб-сайты из списка номинантов. Конечно, голосовалку защищают капчей, которую интересно разобрать. Капчи, используемые разработчиками сайтов премии, уже традиционно служат хорошим иллюстративным материалом по теме “как не нужно делать” (пару лет назад я уже рассказывал про один из вариантов “премиальной капчи”).

Итак, вот что нам предлагают в этом году:

То есть, для того, чтобы доказать “что не робот”, нужно выполнить типичную для робота задачу – арифметическое действие с двумя числами. Кстати, забавно читать, что ответ требуется вводить “числом”. Видимо, это оговорка для тех настоящих геометров, кто предпочитает числам фигуры. (Да, понятно, что хотели сказать “введите цифрами”.) Начинаем разбирать капчу с точки зрения робота “или скрипта накрутки”. Рассматриваем только само изображение, не используя всякой сопутствующей информации, которая скрыта в механизме проверки/демонстрации капчи.

Во-первых, подумаем, сильно ли добавляет вычислительной сложности этот вот финт с требованием “выполнить простое математическое действие”. Понятно, что для обычного человека сложность сильно возрастает: вычитать/складывать числа – это вам не бенгальских тигров от африканских жирафов отличать по фотографиям, может потребоваться калькулятор (да ещё и прочитать ведь нужно правильно, учитывая все эти линии и окружности). А вот для робота, если он уже научился распознавать числа, составляющие данную капчу, ещё одна операция сложения не имеет никакого значения. Обратите внимание, что оба числа записаны одним и тем же шрифтом, в рамках одного и того же шаблона. Поэтому если “скрипт” научился распознавать слова в этой капче, то будьте уверены: он научился распознавать их все и сразу получит оба числа. Так что опять усложняют задачу только для человека. С точки зрения стойкости к распознающим автоматам, в данном варианте капчи достаточно было записать любое четырёхзначное числительное и предложить человеку ввести его. Но, видимо, задача состояла в том, чтобы усложнить капчу, не используя знаний о том, как работают распознавалки.

(Между прочим, именно по только что описанным причинам в хороших текстовых капчах-изображениях всегда используются некоторые “псевдослова”, и ни в коем разе не типовые числительные. Скорее всего, требование выполнить записанную операцию перекочевало в капчу “Премии Рунета” из популярных чисто текстовых капчей, работающих без изображений. Но если в текстовой капче такой подход как-то оправдан, то в графике – он пугает только реальных биологических человеков.)

Кстати, уже на небольшой выборке хорошо заметно, что для вывода текста капчи используется жёсткий шаблон (наверняка так и есть, вряд ли программист что-то изменяет на длинном интервале): здесь всегда две строки, первый “операнд” занимает верхнюю, вторая строка начинается со знака операции. Роботов такие шаблоны всегда очень радуют. Посмотрим на капчу в увеличенном виде:

Как это распознавать?

Казалось бы, нужно распознать все буквы, собрать из них слово, проверить по словарю, преобразовать в число, определить знак операции, вычислить, ввести ответ. Вроде бы с буквами и словами должна возникнуть трудность, типа, они иногда закрыты линиями и вообще – искажены. Фокус в том, что те, кто делают автоматы, распознающие капчи, не используют такого фундаментального “академического” подхода.

Всякий криптолог скажет вам, что шифрованный текст, о котором известно, что он состоит только из числительных – большая радость для взломщика шифров. А случай с капчей “Премии” ещё более простой. Дело в том, что числительные здесь можно очень эффективно распознавать даже при самом большом уровне шума, потому что они записываются словами с известными свойствами и набор этих слов не велик. Например, число 4 можно безошибочно узнать по двум критериям: первая буква “Ч”, а число букв в слове – 6 (тут даже не страшна погрешность по подсчёту букв, потому что числительных на “Ч” в интервале 1-100 – совсем уж мало). То есть, как читатели догадались, для распознавания числительных не нужно распознавать все буквы (можно букв вообще не распознавать – см. ниже), а нужно правильно использовать другие математические свойства изображения капчи. Забавно, что в использованном шаблоне даже число слов даёт уйму информации: например, “сорок” (40), в качестве первого слагаемого, так и записывается в первой строке шаблона одиноким словом, позволяя совершенно точно не перепутать 40 и 41, 42, … И это хорошо, роботы не любят дополнительной работы по проверке, им нужно экономить батарейки.

Да, в капче шаблон текста искажается “волнами” и “перспективой”. И есть ещё суперчёрточки – очень популярное явление. Но это не страшно, потому что для определения чисел, указанных на капче, не нужно все эти искажения компенсировать. Достаточно сделать примерно следующее:

1) найти углы шаблона (приблизительно), это делается с помощью обнаружения крайних компактных комплексов точек (буквы, либо попавшие на буквы окружности);

2) посчитать пробелы в строках (строк всегда две, пробелы определяются подсчётом расстояний между “буквами” – распознавать их для этого не нужно – вдоль горизонтальной средней линии строки, которая определяется из положения углов шаблона и центра масс нескольких “букв”, в строке может присутствовать только один пробел, то есть ошибиться программе сложно);

3) посчитать длины слов в строках (определяется длина и в пикселах, и в “буквах”);

4) отфильтровать множество возможных значений элементов капчи по “словарю”, содержащему длины слов, составляющих записи числительных;

5) учесть пробелы и относительные длины слов (сравните сами: “сорок два”, “семнадцать”, “пять” – отличить легко без распознавания букв; составить словарь могут те, кто займётся реализацией очередной распознавалки для народного голосования);

6) в оставшихся после разбора неоднозначных случаях использовать пиксельные признаки записи букв в капче. Там используется один шрифт, пусть и с искажениями. Отличить “семь” и “пять” можно, посчитав число “ножек” у букв по “нижней линии”. У букв слова “семь” – две “ножки” (буква “м” – ну, если с погрешностью, то максимум три “ножки”). У букв слова “пять” “ножек” тоже пять: их дают “п”, “я”, “т”. Считать программно “ножки” не сложно, они складываются из числа границ, пересекаемых при трассировке изображения слова вдоль прямой.

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

Если кто захочет пойти дальше, то можно, конечно, подключить распознавание “простых” букв, вроде, “п” и “м”, для получения стопроцентного распознавания. Главное, что сегментацию в капче не нужно делать, там уже и так всё в бинарном контрастном виде.

В общем, в этой капче – следующие проблемы: использование числительных в качестве основного элемента из-за малой вариативности сводит к нулю все усилия по затруднению “распознавания текста”; использование двух этапов решения (прочитай слова/вычисли результат) опять затрудняет распознавание только для человека и никак не влияет на сложность автоматического распознавания. То есть, снова защита от добросовестных пользователей, которую пробьют роботы.

(И я не преследовал цели расписать алгоритм детально, потому что, очевидно, ломать капчи народного голосования – нехорошо. Ну и ошибки проектирования часто случаются, да, поэтому лучше было бы взять какую-нибудь проверенную капчу, а не городить новый огород.)



Комментарии (8) »

Вышел из печати очередной номер “Доменных имён“. Тема номера – будущее Интернета. Пишем про идентификацию пользователей, корневую зону и так далее. Вообще, уделили внимание важным тенденциям, которые сейчас для рядовых пользователей, и даже для сообществ “интернетчиков-контентщиков” – не очень заметны.

А между тем, благодаря этим тенденциям, лет через пять и рядовые пользователи, и типичные “контентщики” (сайтостроители, например) окажутся в новом Интернете. Изменения, например, в идентификации пользователей самым прямым образом коснутся интернетовских социальных сетей и принципов их построения. Это особенно интересно смотрится на фоне того, что в “популярной культуре” сейчас на слуху разные поверхностные проявления, типа “тенденции” вида “мода на Twitter”, отмеченной вторым местом в номинации “Тенденция года” конкурса РОТОР. (Первое место там досталось “тенденции” из той же категории “мода”, но это тема для отдельной заметки.)

Возвращаемся к журналу. Мы 7 октября проводим презентацию нового номера в Центральном доме журналиста – приходите, кому интересно. Там запланирована интересная программа (про домены, системы адресации, литературу и так далее) – описание на специальной странице.



Комментарии (1) »

На фото – один из прототипов, на которых в 60-70-х годах отрабатывались решения по созданию практических малозаметных самолётов:

(Фото: Lockheed Martin)



Комментарии (7) »

Итак, продолжаем выпускать блог dxdt.ru.

Кстати, в своё время гражданский сигнал GPS содержал существенную “уводящую помеху”, специально встроенную для того, чтобы систему (в гражданском варианте, понятно) нельзя было использовать для наведения сколь-нибудь быстрого и при этом высокоточного оружия. Позже ограничения сняли. Этот фактор только увеличивает потребность в “локальных” помехопостановщиках GPS.

То есть, прикрыть действительно важные объекты от систем наведения, работающих по GPS, можно с помощью создания помехи, которая не позволит гражданским приёмникам работать в некоторой зоне вокруг объекта. Такой подход компенсирует возможности современных навигационных устройств, доступных на рынке (ведь с их использованием уже давно делают любительские модели самолётов с автопилотами и тому подобные вещи). Метод используется в реальности, что не удивительно.

Интересно, что в те времена, когда гражданский GPS-сигнал транслировался в “сильно испорченном” виде, придумывали методы “корректировки”, которые могли бы позволить получать точную навигацию на базе GPS. Понятно, что коррекцию можно проводить, используя дополнительные точки привязки, координаты которых точно известны и до которых точно известно расстояние. Такими точками могут быть наземные маяки, передающие сигнал синхронизации по радио. При этом, маяк определял бы своё местоположение, используя GPS: для неподвижного приёмника ошибка исправлялась с помощью накопления сигнала в течение определённого промежутка времени.

То есть, для борьбы с помехой использовалась бы обратная схема: если сейчас можно с помощью помехи “закрыть” от GPS определённый участок пространства, то при “испорченном” GPS на нужном участке пространства можно построить дополнительную корректирующую “антипомеху” и – получить более точную (и практически столь же простую по реализации) навигацию. (Хорошие результаты дал бы уже один маяк, выставленный заранее.)



Комментарии (7) »

WebHiTech-2010

Между тем, на технологический конкурс сайтов – WebHiTech – принимаются заявки. Приём продлится до 29 октября включительно, но лучше подавать сайты уже сейчас. По итогам конкурса – призы и церемония награждения.



Comments Off on WebHiTech-2010

Блог: в эфире

1, 1, 2, 4, 11, 19, 56, 96, 296, 554, 1593, 3094, 10723, 20832, 75154, 159129, 686165



Комментарии (4) »

Готовим очередной выпуск журнала “Доменные имена” (как обычно, выход из печати запланирован на осень). По ходу подготовки удаётся пополнять список “фактов и объяснений”, которые затруднительно или “невозможно” опубликовать из-за особенностей редакционного процесса. Теперь, к “корневому домену“, добавлены ещё два объекта.

1. Пример уязвимости с инъекцией кода. Пример, понятное дело, содержит строку, которая начинается с буквы, содержит внутри кавычки (минимум одну) и не содержит “закрывающей” кавычки. Вот примерно так:

name”, request=”get”, value=”passwd

Проблема в том, что либо верстальщик, либо корректор – добавят “пропущенные” кавычки (и ещё могут поставить “ёлочки”).

2. Мощность пространства адресов IPv6 и число 2128. Как известно, с помощью 128 бит можно, в принципе, раздать 2128 адресов. Проблема: показатель степени 128 многим представляется очень большим, поэтому, на том или ином этапе работы с текстом, число 2128 превращается в 2128.



Комментарии (1) »

Всё ж lenta.ru не утратила хватки, и, как всегда, умеет лучше других СМИ сформулировать “объяснение” “сложных” вещей так, что мало не покажется. На этот раз про P vs NP и криптографию – замечательное:

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

(Шифры и “защита кредитных карт” вообще ни при чём там, в исходной теме, но всё ж упомянули их – потому что, видимо, красиво звучит.)



Комментарии (1) »

Достаточно давно я писал (в том числе, на страницах dxdt.ru) и рассказывал, что главный шаг на пути развёртывания DNSSEC – это массовое внедрение поддержки проверки подписей DNS на клиентские машины, а вовсе не подписывание корневой зоны. Понятно, что без подписи корня нет смысла продвигать DNSSEC на клиентов Интернета, потому что теряется возможность центрального контроля адресации в разросшейся Сети. Но важен как раз следующий шаг – новые резолверы на клиентских машинах (а не на серверах DNS), которые, например, не позволят интернет-провайдерам подмешивать всякую ерунду в DNS-ответы своим клиентам.

Собственно, теперь, когда зону успешно подписали, о втором шаге рассказывает уже ICANN: в официальном блоге пишут про предложенный Деном Камински (Dan Kaminsky) инструментарий, внедряющий поддержку DNSSEC на стороне браузера (например, упоминают “частную” версию Google Chrome, полностью поддерживающую DNSSEC) и почтового клиента. Собственно, это правильно.

До нового Интернета остались такие шаги (думаю, в таком порядке, как они перечислены дальше): DNSSEC на клиентах (года два на выполнение), строгое подписывание анонсов BGP и криптографическое удостоверение AS-ок (три-пять лет), переход подавляющей части трафика на IPv6 (пять-семь лет). А может даже и раньше.



Комментарии (3) »

С-300 в Иран

Пишут в новостях:

Контракт по поставкам Ирану комплексов противовоздушной обороны С-300 пока не аннулирован, сообщил глава госкорпорации “Ростехнологии” Сергей Чемезов.



Комментарии (19) »

В продолжение темы про охрану автомобилей: есть ещё задача “дистанционного информирования” владельца о каких-то проблемах с охраняемым авто, например, сработал какой-нибудь там датчик.

Простой подход состоит в передаче “тревожного сообщения” в момент обнаружения блоком управления на автомобиле “угрожающего события”. Открыли дверь – передаётся сигнал. Пока всё нормально, система молчит. Очевидно, для доставки сообщений можно использовать обычные радиоканалы. Но тут на стороне злоумышленников работает столь же простая помеха. Это, конечно, относится и к GSM: готовый помехопостановщик GSM стоит не так уж дорого.

Если есть спутниковый канал и замаскированная направленная антенна (ну, может же такое быть, да?), то помеху ставить сложнее. Но зато можно заэкранировать автомобиль целиком. И сделать это тихо. Например, машину накрывают тонкой металлической сеткой (длина волны малая), и только потом загоняют в трейлер.

Можно предположить, что охранная система устроена по принципу “работаю онлайн”. То есть, блок на автомобиле по расписанию передаёт короткие сообщения (“пинги”) в некий “центр”. (Будем считать, что это условный “центр”: в его роли может выступать и брелок, и настоящая специальная служба охраны.) В такой схеме непоступление сигнала уже сообщает о проблеме с автомобилем. Реализовать можно любым “радиоспособом”, но потребуется разумная помехоустойчивость, чтобы снизить число ложных срабатываний.

На ум приходит схема атаки: повторитель сигнала. Бороться с этим можно, использовав правильный алгоритм генерации сообщений от охранной системы – передаются особые одноразовые коды. Основная проблема такой онлайн-системы в том, что сигнал необходимо передавать на большие расстояния (в центр, или на брелок, если автовладелец уехал достаточно далеко). Иначе нет практического смысла. “Дальняя” связь порождает другие трудности: получение частот, регистрация и т.д. Впрочем, тут-то как раз и помогает GSM. Я так понимаю, что подобные системы предлагаются на рынке, верно?

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



Комментарии (10) »