Почему биометрическая авторизация нам не грозит +14


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

Объем данных


Не смотря на то, что мы живем в век BigData, на сегодняшний день мы не можем обеспечить авторизацию по биометрическим показателям через бэкенд сервис. Первая причина банальна — объем данных. Дело в том, что стандартная связка логин-пароль занимает порядка 30-60 символов, и для передачи по сети это ничтожный объем. В то же время, для передачи качественного скана пальца нам придется отправлять фактически изображение приличного размера. Если провести аналогию с черно-белыми картинками, изображение 1024*1024 пикселя с глубиной скажем, в 8 бит, будет занимать на порядки больше места, чем стандартная связка логин-пароль. А при авторизации по скану лица, объем вырастает еще в порядки.

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

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

Нечеткое сравнение


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

password — b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d7785e5976ec049b46df5f1326af5a2ea6d103fd07c95385ffab0cacbc86
passwor — cc28edf8bd1e768a03fd79cb48230dd13e082da4ff260526ad7a00b28f5f82a8624a05997040bb6ae501cbfeb7e089778de36f1fd4e56efb9356b02b675a9db8
Password — e6c83b282aeb2e022844595721cc00bbda47cb24537c1779f9bb84f04039e1676e6ba8573e588da1052510e3aa0a32a9e55879ae22b0c2d62136fc0a3e85f8bb
Рassword — 4846ee019bb2f83122c6aeaf92e61e9b5dcab8f4be0ffcaaa024cc1f992b7543b0dc1cc32bb68d29fca86753667b3a0cf7c712255907b1b8aeba2085dca74d6b

В последних двух парах в слове Password латинская буква P заменена на русскую Р. Как мы видим, строки получаются абсолютно разные, и при вводе пароля мы не сможем сравнить даже практически не различающиеся символосочетания.

Биометрические сканеры не позволяют считывать данные со 100% точностью. Прикладывая палец, смещение на доли миллиметров, изменения силы нажатия, травмы и другие побочные действия всегда слегка изменят получившийся рисунок, и сканы одного и того же пальца или лица всегда будут немного (или значительно) различаться.

Мы научились распознавать ключевые элементы и производить сравнение по наличию и размещению этих ключевых элементов.

Apple обещает распознавание до 30 000 ключевых точек по технологии face ID. Однако это совсем не значит, что все эти точки должны однозначно совпадать.

Как же работает биометрическая авторизация?


Дело в том, что для авторизации по отпечатку пальца или лицу используется нечеткий поиск.

Это такой поиск, при котором мы ищем не полностью совпадающие элементы (как это возможно при хешировании паролей), а сущности, наиболее похожие друг на друга. Скажем, для авторизации по отпечатку пальца, точность в повторении рисунка в 90 процентов — очень хороший показатель, и практически он означает, что перед нами и есть истинный владелец отпечатка. Тем не менее, его отпечаток на 10 процентов состоит из абсолютно других данных, в связи с чем мы получаем абсолютно другой хэш и теряем возможность безопасного хранения данных. Более того, данные придется хранить целиком — хэш функция, выдающая близкие значения для похожих символьных сочетаний не отвечает правилам безопасности и не может считаться сейчас хорошей хэш функцией.

Но даже если мы сможем каким-то образом описать данные с помощью «нечеткого» хэша, у нас возникает другая, еще более нетривиальная проблема.

Схожесть биометрических показателей


image

Всем попадись на жизненном пути люди, поразительно похожие на ваших знакомых. Существуют народности, в которых вообще типажей очень мало и вероятность совпадения еще более усугубляется. Для отпечатков пальца вероятность 100% совпадения — 1 к 64 000 0000 000 (данные могут быть не точными, но вероятность действительно крайне мала). Но при нечетком поиске ситауция выглядит совсем иначе.

Представьте ситуацию — вас покусали пчелы! Совершенно точно, что ваше опухшее лицо с большей вероятностью будет похоже на кого-то другого, чем на вас самих.

image

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

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

Компрометация данных


Наличие наших уникальных биометрических характеристик, позволяющих 100% идентифицировать пользователя — это как большой плюс, так и главный минус. Такой подход означает, что вы не можете поменять биометрические характеристики как пароль — они заложены в вас с рождения. Существует куча различных медицинских практик изменения этих характеристик, но мы совершенно точно не будем заниматься экспериментами со здоровьем при каждой утечке данных.

Более того, наши биометрические данные всегда доступны стороннему наблюдателю — мы постоянно оставляем отпечатки пальцев, фотографии лица, частички наших днк в волосах и ногтях. Мы делаем это ежеминутно, даже не задумываясь об этом.

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

Если ваши данные «утекут» в руки злоумышленников — вы не сможете мгновенно заменить эти данные, и даже если так, уведомить все системы о компрометации очень затруднительно. Гораздо проще использовать различные пароли для авторизации в разных системах, не так ли?

Подытожу, вот несколько ключевых трудностей в авторизации биометрическими методами

— большой объем данных
— нечеткое сравнение
— схожеть показателей у разных людей
— высокая вероятность компрометации

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




К сожалению, не доступен сервер mySQL