...

среда, 9 июля 2014 г.

Вход в web-приложение с использованием распознавания лица


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


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


Итак, представленный ниже метод биометрической аутентификации не рекомендуется для промышленной эксплуатации в качестве замены первого фактора (пароля). Риск при использовании метода в качестве второго фактора существенно меньше, но все еще существует — решайте сами. Я просто расскажу, как и с помощью каких инструментов можно организовать аутентификацию для веб приложения с использованием распознавания и валидации изображения человеческого лица. Аппаратная реализация — обычная web-камера.


Утилита br




Я давно слежу за проектом Open Biometrics, и считаю что утилита br, входящая в комплект openbr, на данный момент это лучший из инструментов, который может помочь с основной нашей задачей – сравнением двух изображений: лицо пользователя, сфотографированное при логине сравнивается с оригиналом, записанным при регистрации. В итоге выдается коэффициент соответствия в диапазоне от 0 до единицы. Синтаксис довольно простой:

$ br -algorithm FaceRecognition -compare me.jpg you.jpg


Результат примерно такой:



[root@facelogin]# br -algorithm FaceRecognition -compare image1.png image2.png

Set algorithm to FaceRecognition

Loading FaceRecognition

Comparing image1.png and image2.png

Enrolling image1.png to image1jR5xN2.mem

00.00% ELAPSED=00:00:00 REMAINING=00:00:00 COUNT=1

00.00% ELAPSED=00:00:00 REMAINING=00:00:00 COUNT=1

1





Последняя единичка и есть искомый коэффициент (я сравнивал два одинаковых файла).

Выделение лица




Пользователям было бы не очень удобно следить за тем, чтобы в камеру попадало только лицо, и только одно. Поэтому второй нашей задачей является авто-определение лица на снимке камеры и использование только этого фрагмента для последующего сравнивания с помощью утилиты br. Я решил переложить это на плечи браузера, благо возможности HTML5 это позволяют. По запросу “face detection with HTML5” Гугл выдал http://ift.tt/17NqFAF. Отличный проект, требованиям соответствует, его и будем использовать.

Что получилось




Скрипт от neave немного модифицирован – он будет передавать координаты и размеры лица через форму на скрипт регистрации и входа.

На php быстренько набросаны скрипты регистрации и логина.

И вот результат http://ift.tt/VXDcni

Внимание, работает не на всех браузерах — рекомендуется Chrome последней версии (desktop)


Если заинтересовались и хотите повторить у себя на сервере, вот список линков

1. Инструкция по установке пакета openbr (на убунту ставится легко, с centos-ом пришлось помучиться, с windows-ом вообще без проблем)

2. Face Detection in JavaScript with getUserMedia

3. Исходники демо проекта (да, попраны все стандарты и рекомендации – поэтому прошу php код не комментировать – это лишь чтобы показать, как это работает) — не забудтье разрешить в php выполнение /usr/local/bin/br и выставить разрешение на запись для директории $facestorage


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий