Рубрика:
Карьера/Образование /
Пятая пара
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
АРТЕМ ШУМИЛОВ, обладатель первого места регионального тура «Россия и СНГ». МГТУ имени Н.Э.Баумана, студент, ashumilov@it-claim.ru
АНДРЕЙ ФИЛИППОВИЧ, МГТУ имени Н.Э.Баумана, доцент, aphilippovich@it-claim.ru
Анимированная капча с использованием жестов рук
Статья посвящена созданию капчи нового типа с использованием трехмерных анимированных жестов, которая обладает повышенной сложностью для автоматического распознавания
Описываются этапы создания капчи, анализируются возможные уязвимости и способы улучшения защиты от взлома, рассматриваются перспективы использования. Раскрываются особенности создания 3D модели руки и жестов, выбранные технологии для представления модели в браузере с помощью кроссбраузерной JavaScript-библиотеки Three.js.
Владельцы и администраторы сайтов ежедневно сталкиваются с проблемой спама, целью которого являются реклама, получение доступа к личной информации, создание ссылок для повышения рейтингов в поисковых системах и тому подобное. Очень часто для защиты сайтов от спама и автоматических регистраций используются различные варианты капчи – специальных виджетов, которые предлагают пользователю выполнить простое задание – например, отображают искаженный текст и просят его ввести.
Подобные задания не вызывают трудностей у человека, но оказываются сложны для спам-бота, который после нескольких неудачных попыток прохождения теста переходит к поиску другого сайта с более слабой защитой. Подробнее об изучении эффективности капчей – в публикациях [1-6].
Из всего многообразия вариантов реализации капчи можно выделить следующие группы:
- Текстовая капча. Это наиболее распространенный вариант реализации, в котором пользователю предлагается ввести в текстовое поле символы, показанные на картинке. Картинки обычно содержат помехи разного рода: символы в той или иной степени искажены, развернуты, расположены не на одном уровне, на изображение наложены цветовые пятна, полосы и т.п. Чем сильнее искажена картинка, тем сложнее боту распознать ее, но и человек часто испытывает затруднения в понимании искаженного текста.
- Звуковая капча. Звуковая или аудиокапча обычно используется как дополнение к текстовой и дает возможность пользователю пройти тест, даже если он не может по какой-то причине прочитать картинку. Аудиокапча обычно содержит фоновые звуки и посторонние шумы, добавленные для защиты от ботов, но затрудняющие распознавание и человеку. К тому же аудиокапча требует наличия оборудования воспроизведения звука на компьютере или мобильном устройстве.
- Математическая капча. В этом варианте пользователю предлагается выполнить простейшие математические вычисления. Для человека такое задание будет необременительным, только если предлагается выполнить действия над простыми числами. Однако в этом случае существует опасность угадывания ботом правильного ответа простым перебором.
- Логическая капча. Логические варианты реализации предлагают пользователю ответить на простой логический вопрос. Проблема в том, что пользователь может не знать языка, на котором задается вопрос. Кроме того, количество вопросов ограничено, что позволяет спамеру составить базу данных с вариантами правильных ответов.
- Образная капча. Пользователю предлагается распознать объект на изображении. При ограниченном количестве предлагаемых изображений спамер, как и в случае с логическими вопросами, может составить свою базу данных изображений.
- Интерактивная капча. В этом случае пользователю предлагается выполнить одно или несколько действий, как правило, с помощью компьютерной мыши, или сыграть в мини-игру. Такая капча действительно сложна для распознавания ботами, особенно пока она новая. Но проблема в том, что обычно на ее выполнение пользователь затрачивает значительное время, большее, чем на решение текстовой капчи.
- Анимационная капча. В этом варианте пользователю предлагается распознать движущееся изображение (чаще всего это бегущая строка символов). Однако есть и другие, более сложные, варианты. Например, азиатские разработчики представили вариант теста с движением изображения на сильно зашумленном фоне [2]. Анимационная капча действительно сложна для распознавания ботами, но вместе с тем может вызывать трудности у людей с дефектами зрения.
 |
|
 |
Рисунок 1. Примеры простого и сложного вариантов текстовых капчей |
|
Рисунок 2. Пример капчи с использованием жестов рук |
Анимационная капча с использованием жестов рук
Основная идея этого вида капчи заключается в том, чтобы показывать пользователю последовательность легкоузнаваемых жестов, которые он мог бы воспринимать как последовательность символов или слов. Для обеспечения повышенной сложности автоматического распознавания демонстрируемого жеста предлагается использовать трехмерную интерактивную визуализацию.
В основе научной базы проекта лежат многолетние исследования в рамках научной школы МГТУ им. Н.Э. Баумана под руководством Ю.Н. Филипповича [7], направленные на создание жестомимического интерфейса [8, 9].
Разработка трехмерной модели руки для отображения в браузере
Трехмерную модель руки можно создать в одном из популярных графических редакторов, таких как Autodesk 3dMax, AutodeskMaya, Blender. Для демонстрации трехмерной модели в браузере выбрана кроссбраузерная библиотека Three.js [10]. Для исследования эффективности капчи на первом этапе была разработана модель кисти руки, которая содержит 17 костей.
Разработка алгоритма моделирования движений руки
Трехмерные графические редакторы позволяют нам создавать также и анимацию. Но эта анимация не предусматривает возможности ее динамического изменения и не может быть использована при создании капчи, так как в этом случае добавление нового жеста в алфавит требует вручную создавать и хранить анимации перехода руки из положения этого жеста в положения всех остальных жестов алфавита.
В связи с этим было принято решение анимировать руку программно, используя прямой доступ к положению костей скелетной модели. Это было сделано с помощью библиотеки Tween.js.
Однако при использовании Tween.js возможны коллизии, когда объекты (в нашем случае – пальцы руки) пересекают друг друга и проходят сквозь друг друга при движении. Поэтому было решено разработать собственный алгоритм моделирования движений и обработки коллизий для создания реалистичной динамической анимации.
Нами используется треугольная полигональная модель, то есть каждый полигон представляет собой треугольник и определяется координатами вершин. Кости содержат сведения о своем имени, имени кости-родителя, а также о координатах вершин начала и конца. Для вращения кости вокруг оси необходимо использовать матрицу поворота, если же кость необходимо повернуть сразу по нескольким осям, матрицы поворота перемножаются.

Ниже приведен код, используемый для вращения костей в вертикальной плоскости.
this.rotateV = function(angle, idx) {
idx = idx || 0;
varrMatrix = new THREE.Matrix4();
if (idx == 0) {
vMatrix.makeRotationAxis(hAxis, angle * Math.PI / 180);
rMatrix.multiplyMatrices(hMatrix, vMatrix);
}else {
vartempMatrix = new THREE.Matrix4();
tempMatrix.makeRotationAxis(hAxis, angle * Math.PI / 180);
rMatrix.multiplyMatrices(hMatrix,
tempMatrix);
}
bones[idx].setRotationFromMatrix(rMatrix);
};
Разработка интерфейса создания жестов и перевода текста в жесты
Для того чтобы модель руки могла воспроизводить в виде жестов заданные символы, необходимо создать алфавит жестов. Алфавит должен хранить для каждого символа углы расположения костей относительно друг друга. Для более удобного создания и пополнения алфавита жестов было принято решение разработать графический редактор жестов. С помощью редактора жестов можно также создавать разные алфавиты для различных целевых аудиторий. На рис. 3 показано окно прототипа редактора жестов, позволяющего управлять движением пальцев руки.

Рисунок 3. Скелетная модель кисти руки

Рисунок 4. Оси вращения указательного пальца

Рисунок 5. Интерфейс управления движением пальцев
Защита капчи от взлома
Относительно небольшое количество символов в алфавите может позволить злоумышленнику создать собственную базу данных относительных углов костей, соответствующих символам алфавита. Поэтому имеет смысл рассмотреть возможность преобразования сформированной анимации в формат GIF для демонстрации его пользователю в качестве капчи. В дальнейшем также предполагается отработать и другие методы защиты – повышение полигональности модели, изменение текстур, добавление шумов и т.д.
Понимание жестов человеком
В настоящее время количество общепринятых или интуитивно понятных жестов руки невелико, поэтому использование только таких жестов диктует достаточно небольшой размер алфавита. Алфавит может быть расширен в случае использования на специализированных сайтах, предназначенных для людей, владеющих каким-либо жестовым языком, например, на сайтах, предназначенных для подводников, музыкантов, спортсменов и т.д.
Тем не менее подобная капча применима на любых сайтах, так как в задании теста жесты могут быть показаны несколькими моделями рук, а также скомбинированы с вращающимися моделями букв латинского или кириллического алфавита.
Таким образом, может быть зашифрован цифро-буквенный код, который применяется в большинстве современных капчей. Кроме того, жестовая капча может содержать несколько моделей рук и предлагать пользователю выбрать определенный символ на основании того, какая именно в данный момент используется модель.
***
У предлагаемого варианта капчи хорошие перспективы использования. Во-первых, пользователю предлагается качественное, легкое для восприятия трехмерное изображение знакомого жеста, распознавание которого не вызовет у него затруднений и не потребует длительного времени. Во-вторых, этот вариант реализации капчи относится к анимационной группе, которая считается самой сложной для автоматического распознавания.
У проекта также могут быть перспективы развития в части создания тематических (настраиваемых администраторами) серий жестов для различных профессиональных и социальных групп, в том числе и с ограниченными возможностями. Развитие мобильных технологий позволяет потенциально использовать технические возможности устройств для повторения жестов вместо набора, а также применения соответствующих алгоритмов для задач идентификации и авторизации пользователей.
Жестовая капча может использоваться в качестве альтернативного варианта вместо аудиотестирования, что позволит людям с проблемами восприятия звуков или не имеющим аудиооборудования пройти тест.
- Converse, T.: капча Generation as a Web Service. In: Baird, H.S., Lopresti, D.P. (eds.) HIP 2005. LNCS, vol. 3517, pp. 82-96. Springer, Heidelberg (2005).
- Moy, G., Jones, N., Harkless, C., Potter, R.: Distortion Estimation Techniques in Solving Visual капчаs. In: IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR 2004), vol. 2, pp. 23-28 (2004).
- Vicarious AI passes first Turing Test: капча [Электронный ресурс] – http://news.vicarious.com/post/65316134613/vicarious-ai-passes-first-turing-test-капча.
- Анимационная капча легче для людей и тяжелее для ботов [Электронный ресурс] – http://www.aiportal.ru/news/animated-капча.html.
- David Bushell. In Search Of The Perfect капча [Электронный ресурс] – http://coding.smashingmagazine.com/2011/03/04/in-search-of-the-perfect-капча.
- Jeff Atwood. капча Effectiveness [Электронный ресурс] – http://www.codinghorror.com/blog/2006/10/капча-effectiveness.html.
- Филиппович А.Ю. Научно-образовательный кластер в Интернете. //«Качество образования», сентябрь, 2012 г. – С. 40-45.
- Филиппович Ю.Н. Компьютерные средства поддержки коммуникативного взаимодействия людей с ограниченными слуховыми возможностями. Proceedings of 10th International Congress of the international society of applied Psycholinguistics «Challenges of information Society and applied psycholinguistics», RUDN-Institute of Linguistics RAN-MIL. – М.: 2013. – C. 254.
- Филиппович Ю.Н., Зеленцов И.А Распознавание скорописи XVII в. //«Проблемы полиграфии и издательского дела», №3, 2011 г. – С. 87-97.
- Кроссбраузерная библиотека [Электронный ресурс] – http://threejs.org.
Ключевые слова: капча, жестомимический интерфейс, распознавание жестов, 3D-моделирование, защита от спама.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|