Вхід в 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" Гугл видав neave.github.io / face-detection / . Відмінний проект, вимогам відповідає, його і будемо використовувати.
 
 

Що вийшло

Скрипт від neave трохи модифікований — він буде передавати координати і розміри особи через форму на скрипт реєстрації та входу.
На php швиденько накидані скрипти реєстрації і логіна.
 
І ось результат http://nikto.us/facelogin/
Увага, працює не на всіх браузерах — рекомендується Chrome останній версії (desktop)
 
Якщо зацікавилися і хочете повторити у себе на сервері, ось список лінків
1. Інструкція по установці пакета openbr (на Убунту ставиться легко, з centos-му довелося помучитися, з windows-му взагалі без проблем)
2. Face Detection in JavaScript with getUserMedia
3. Ісходникі демо проекту (так, потоптані всі стандарти та рекомендації — тому прошу php код не коментувати — це лише щоб показати, як це працює) — не забудьте дозволити в php виконання / usr / local / bin / br і виставити дозвіл на запис для директорії $ facestorage
    
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.