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

При этом российский исследователь сумел из тестового образца секретный ключ прочитать. Правда, карта была испорчена. Ключ каким-то образом был прочитан с использованием микроскопа. Грубо говоря, исследователь просто посмотрел, что за биты записаны в соответствующих ячейках микросхемы. Микросхему, понятно, предварительно вскрыли.

Сейчас используются другие модули памяти. Микроскоп вряд ли поможет. Хотя, с другой стороны, и микроскопы развились до невероятного уровня, так что можно детектировать состояния молекул и атомов. Вообще, исследование под микроскопом микросхем, составляющих различные электронные устройства, связанные с обеспечением безопасности, популярно и сейчас. Даже если не удастся прочитать состояния ячеек памяти, то можно обнаружить логические элементы и понять, как именно реализованы те или иные алгоритмы.



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

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

В общем-то, понятно было, что те, кому положено, уже несколько лет занимаются реализацией описанной технологии. Сейчас настал момент, когда тему уже продвигают в массовой прессе (зачем? ну потому что бизнес-интерес). А именно, вот что пишет Guardian:

The US military is developing software that will let it secretly manipulate social media sites by using fake online personas to influence internet conversations and spread pro-American propaganda. (Военные США разрабатывают программное обеспечение, которое позволит скрытно манипулировать “социальными медиа”, используя поддельные персонажи для влияния на интернет-дискуссии и распространения про-американской пропаганды.)

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

Давно уже не удивить никого использованием интернетовских социальных сетей для выявления связей между людьми, существующих в реальном мире, для сбора персональной информации об участниках этих сетей. Это аналитика первого порядка. Делать её несложно. Для серьёзных задач – это просто рутина.

Гораздо интереснее, важнее технологии второго порядка. Что это? А это как раз когда с помощью автоматизированных механизмов в социальных сетях создаётся такое информационное поле, что простые аналитики, честно и качественно работающие на первом уровне, вполне достоверно извлекают как раз ту информацию, которую посеял специалист, овладевший инструментами второго порядка.

Разведка, контрразведка, дезинформация – да, фундамент всё тот же. Поле применения изменилось.



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

На правах технократического юмора. Продолжим рассуждения о механических замках в будущем. Это уже получается третья записка по теме, в двух предыдущих затрагивался вопрос автоматических замочных сканеров и замков, использующих новые физические принципы.

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

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

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

Как может быть устроен такой замок? Тысячи рычагов-перемычек с магнитными связками? Какие-нибудь вложенные сферы разного диаметра? Или трёхмерный пазл из множества кусочков со сложными поверхностями?

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

Проверка решения может сводится либо к оптимальному заполнению некоторого объёма – после этого подвижная часть замка поворачивается. Лишь один из вариантов. Вообще, чисто механические схемы могут легко выполнять арифметические действия с натуральными числами, так что тут есть где развернуться.

Единственная неприятность, что взломщик, единожды считав конфигурацию замка, может взять тайм-аут для проведения вычислений и за несколько суток разобраться с замком грубым компьютерным перебором вариантов. Поэтому число деталей замка обязательно должно быть очень большим, для механического устройства.

Может, есть уже такие замки?



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

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

А если у вас только пассивный сенсор, то в таком случае больше неопределённости. Конечно, световое оптическое наблюдение, например, может использовать тот факт, что параметры солнечного света известны. Куча интересных результатов возникает в том случае, если используются два синхронных сенсора – один принимает солнечный свет, второй наблюдает объект; при построении изображения используется приведённая по времени информация от обоих сенсоров (датчиков). Но на практике довольно сложно получить подробную модель освещения объекта, потому что нужно учитывать множество факторов, локализованных где-то там рядом с этим объектом. В случае с ИК-наблюдением или пассивным радионаблюдением – тоже проблемы. Правда, часть из них можно попытаться решить, если вписать в систему наблюдения некоторые эффекты с заведомо известными характеристиками. Главный из них – движение сенсора.

Понятно, что информация о движении сенсора известна: ну, раз мы сами им двигаем, то траекторию можно измерить с нужной точностью. Более того, можно задать ту траекторию, которая нужна. При движении сенсора, картинка будет меняться, анализ изменений позволяет улучшить результаты наблюдения. Самый простой пример – определение расстояния до объекта с помощью одного сенсора: передвинули и измерили параллакс.

Но вот активные системы себя выдают. Это недостаток.



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

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

Роботы – хитрые машины. Поэтому тут подходят хитрые методы борьбы. Где уязвимость роботов? Они не обладают полноценным интеллектом. А поэтому их гораздо проще дезориентировать, чем подготовленного человека. А значит, тут хороши средства нестандартного изменения “среды” на поле боя. Речь вот о чём: например, можно изготавливать очень скользкие поверхности, которые при этом совсем не похожи на лёд, а, скажем, имитируют асфальт, и выкладывать ими участки на пути роботов. Понять, что именно происходит, после того как один или два компьютеризированных механизма подскользнутся и потеряют ориентацию в пространстве – это роботам нелегко дастся. Хотя, конечно, при условии оснащения продвинутым ПО, постепенно могут сообразить, что присутствует некая опасная для передвижения полоса.

Скорее всего будут неплохо работать замаскированные нетривиальным образом активные ловушки. Например, мины, представляющие собой что-нибудь вроде медленно переползающих по полю кустов. А можно и ещё что-то придумать. Главное, что “эффект неожиданности” он для роботов вообще будет часто фатальным.



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

Кстати, первые вычислительные системы распознавания речи конструировали ещё где-то в 60-х годах прошлого века. С тем чтобы решить исключительно практическую в своём роде задачу эффективного использования мощностей аудиозаписи для систем прослушивания переговоров. Задача вот в чём: есть возможность прослушивать некий важный канал речевой связи (организовали, скажем, утечку); канал используется интенсивно, а полезные сведения могут содержаться только в небольшой части переговоров, которые и нужно записывать. Автомат мог бы распознавать голоса участников переговоров, узнавать важных персон и включать запись только когда именно они общаются.

Экономится магнитная лента. Ну или там проволока, не так важно, что именно. Для 60-х это весьма важная экономия, потому что записывающее устройство установлено, например, прямо в линии, в каком-нибудь колодце или туннеле, забирать и заменять кассеты – то ещё приключение. Время записи принципиально мало, потому что сверхкомпактных микроэлектронных ОЗУ ещё нет, а проволока (ну, хорошо, лента) – она очень быстро заканчивается.

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

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



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

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

Но представьте, что у этой стороны появляется высокотехнологичный сверхсовременный союзник, с единственным ограничением – он не может себя проявить, открыто оказывая поддержку. А задача союзника состоит в том, чтобы, в случае конфликта с участием слабой стороны, передавать этой слабой стороне информацию о тактической обстановке в воздухе, ну и помогать наводить ракеты. Всё в режиме онлайн. Как быть? Установить собственные комплексы сильный союзник не имеет возможности. Модернизировать имеющиеся системы, добавив своё оборудование – тоже не может, слишком явные следы. Даже протянуть там кабели какие-нибудь – и то нельзя.

Но отличное решение – есть. Этот сильный союзник должен использовать активные системы помехопостановки, разработанные для устаревших комплексов ПВО слабой стороны. Как? Да просто помехи, передаваемые помехопостановщиками, будут не помехами, а информацией о настоящих целях. Союзнику и слабой стороне нужно только договориться, что помехам не будут мешать (а наоборот – помогать им). Ну а наведение ракет там вообще по командам с земли, как известно.

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

Такая история.



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

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

Зашифровать и преобразовать легко – используем openssl, поддерживающий все нужные шифры и коды. Мастер-пароль, понятно, придётся запомнить. Логины можно либо помнить, либо шифровать вместе с паролем (одной строкой, как обычно). Но возникает резонный вопрос: как найти нужную запись? Оказывается, очень просто: генерируем хеш (MD5, например) от названия ресурса, логин/пароль для которого сохранён в данной записи, и часть строки со значением хеша добавляем в качестве “индекса”, через пробел, или можно использовать “#” (как это принято в “Твитере”). Для экономии места можно использовать пять или семь последних символов от значения хеша. Теперь найти запись можно стандартным поиском “Твитера”.

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

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

Как восстановить зашифрованные пароли на своей машине – понятно: взял и восстановил (непонятно, впрочем, почему же тогда не воспользоваться локальным хранилищем). А вот получить доступ к паролям на произвольном компьютере, подключенном к Интернету – сложно. Ведь дешифровать пароли нужно локально (иначе снижается секретность), но на компьютере может отсутствовать подходящий инструментарий. Даже для поиска пароля потребуется вычислить MD5.

Конечно, можно подготовить и опубликовать веб-страницу, включив в её состав javascript-библиотеку, реализующую нужную криптографию в браузере, на клиентской стороне. Но тогда и зашифрованные пароли лучше хранить на такой странице, а не в “Твитере”.

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



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

Немного предсказаний и прогнозов.

Уже несколько лет в массовом медийном поле (СМИ, блоги и так далее) самой популярной технологической темой (если измерять на достаточно протяжённом временном интервале), связанной с Интернетом и ИТ, остаётся безопасность. Безопасность при этом рассматривается в самом широком, словарном значении термина.

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

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

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

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

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

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



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

Немного фантастики в воскресенье.

Известно, что Большой адронный коллайдер (БАК) непростой и очень мощный физический прибор. Так как этот прибор оперирует колоссальными плотностями энергии, с его работой связывают всякие популярные опасения из разряда “как бы чего не вышло”. Впрочем, самое драматическое (и многократно уже увековеченное в кинофильмах и литературе) опасение, – рукотворная черная дыра, поглощающая планету, – не осуществляется. Во многом благодаря тому, что та же самая физическая теория, которая могла бы допустить появление микроскопической чёрной дыры в БАК, предсказывает очень быстрое и безболезненное для окружающей материи испарение этой дыры.

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

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

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

Точка столкновения частиц в земном коллайдере – напротив, вполне обычное место: некоторый кусочек вакуума в подземном туннеле, не звезда, в общем. Поэтому, возникший там ход в параллельный мир не схлопнется, а начнёт расти. Что дальше?

Наверное, такой проход в параллельный мир привязан к одной точке в нашем пространстве, так как не имеет массы. Совсем не факт, что эта точка движется вместе с Землёй, Солнечной системой (и так далее). Поэтому, только открывшись, разрыв сразу куда-то улетит с огромной скоростью: ну да, из-за того, что Земля продолжит свой полёт по орбите.

Ход в параллельный мир начнёт набирать ширину, но в стороне от Земли, которая неизвестно когда вернётся в ту же самую точку пространства, где находился БАК в момент пробития дыры между измерениями. Обидно. Через какое-то время из параллельного мира полезут монстры, а вокруг – и нет никого. Или того хуже: однажды через эту самую дыру, разросшуюся до огромных размеров, в наш мир провалится целая планета “параллельных монстров”.

Хотя, можно предположить, что есть какая-то вселенская “сетка” привязки точек входа в параллельный мир, и в этой сетке задано движение. В таком случае, ход остаётся где-то в пределах Земли, но вовсе не обязательно в районе установки БАК. Может, где-то в пещере, в центре Австралии. Вот тогда с вылезающими монстрами уже придётся бороться с применением военной силы. При этом на коллайдер никто и не подумает. Ведь между ним и опасными монстрами будут тысячи километров.

Так вот.

(Или, кстати, межпространственный ход вылетает из ближайшей к нашей планете звезды – Солнца – и движется в направлении Земли. Тоже сюжет.)



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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