Для идентификации пользователя в приложении можно использовать биометрию – например, сканеры радужной оболочки глаза, геометрии лица или отпечатка пальца. Хотя эти технологии известны и популярны, у начинающих разработчиков из-за недостатка информации до сих пор возникают те или иные вопросы.
Рассказываем о трех основных способах «узнать» пользователя, действительно ли злоумышленники могут обмануть камеру, «как в кино», и что общего между аутентификацией и игрой «Найди 10 отличий». Надеемся, что эти наблюдения будут полезны для тех разработчиков, которые начинают изучать возможности iOS и Android.
![](https://habrastorage.org/r/w1560/webt/ck/ds/zw/ckdszwvqftjucsznvdleg_sf35y.png)
Идентификация пользователей необходима во многих приложениях, которые обрабатывают личные данные, например, в онлайн-банках. Так, в России с 2018 года действует Единая биометрическая система (ЕБС), с помощью которой клиенты могут пользоваться услугами банков удаленно. По рекомендациям Банка России, в 2020 году все банки должны иметь возможность собирать биометрические данные пользователей.
Согласно исследованию Spiceworks, более 60% компаний Европы и Северной Америки используют биометрию для защиты данных и считают, что этот метод надежнее, чем пин-код или сочетание логина и пароля. 10% респондентов уверены, что для идентификации достаточно только биометрии, тогда как другие компании настаивают на использовании дополнительных способов.
Популярные способы биометрической идентификации, по данным исследования:
Существуют и другие способы аутентификации, например, голосовая биометрия – однако, их надежность ниже, поэтому обращаются к ним реже.
Рассмотрим особенности нескольких перечисленных способов.
Для того, чтобы «узнать» пользователя по отпечатку пальца и безопасно хранить его данные, каждый производитель мобильных устройств предлагает свои возможности. Так, на устройствах Apple образец отпечатка пальца проводится через хеш-функцию перед сохранением в защищенный вычислительном модуль. Все процессы, связанные с Touch ID, происходят именно в этом модуле, и извлечь такие данные невозможно.
На устройствах Android степень безопасности зависит от производителя, используемых им подходов и решений. Как правило, работа со сканерами отпечатка пальца регламентируется отдельными документами, в том числе спецификациями Google. Ведущие производители смартфонов, такие как Samsung, используют достаточно надежные и точные емкостные сенсорами и обеспечивают высокую степень безопасности данных. Однако, отдельные небольшие компании могут применять менее надежные сенсоры и хранить отпечатки на устройстве, иногда даже в свободном доступе.
![](https://habrastorage.org/r/w780q1/webt/d-/no/zk/d-nozkj-1_hgi_dqecbja7x0abm.jpeg)
Freepik.com
Если приложение идентифицирует пользователя по лицу, сканирование осуществляют за счет емкостной камеры. По сравнению с предыдущим способом, здесь требуется еще более сложный алгоритм, требующий высокой точности захвата изображения и распределения более 30 тысяч контрольных точек по изображению лица пользователя. В свою очередь, это определяет более высокие требования к камере смартфона.
По сути дела, емкостный сканер изучает лицо пользователя, выстраивая геометрическую модель и преобразуя её в результаты вычисления, которые можно хранить. Во время авторизации результат вычисления (с учетом погрешности) для конкретного пользователя сопоставляется с результатом, хранящимся в памяти.
![](https://habrastorage.org/r/w780q1/webt/dq/rm/jt/dqrmjtvztpt1kjhwul2bkvafbpg.jpeg)
Adobe Stock
При этом не все устройства предоставляют полноценные возможности для распознавания лиц. Бывают случаи, когда производители ограничиваются 2D-сканированием с помощью обычной камеры. Как правило, при этом на картинке выделяется лицо, которое можно сравнить с другими изображениями в базе – как в игре «Найди 10 отличий». Если приложению не удастся найти отличия, то пользователь может быть распознан как владелец. В этом случае есть риск, что потенциальному злоумышленнику удастся разблокировать приложение, просто просканировав фотографию владельца.
Важно помнить, что IRIS – это не сканер сетчатки глаза. Проще говоря, эта технология сканирует радужную оболочку, которая окружает зрачок, тогда как сетчатка располагается внутри глаза на задней стенке.
Сканер определяет те или иные особенности внешности пользователя и геометрическую форму радужки, используя емкостные камеры.
Хотя такой способ биометрической защиты может показаться перспективным, у него есть свои уязвимости. С одной стороны, для снятия блокировки недостаточно найти и предъявить фотографию владельца, ведь камера определяет объем изображения. Однако, такой риск выше при одновременном использовании фотографии и контактных линз. Сканер сетчатки глаза в этом отношении может быть безопаснее, поскольку данные владельца невозможно получить в открытых источниках или угадать.
![](https://habrastorage.org/r/w780q1/webt/ru/h3/bd/ruh3bdavrfbuanijqji1tbxmwzg.jpeg)
Adobe Stock
При использовании любого из перечисленных биометрических сканеров, как правило, 100% точности недостижима. Когда пользователь сканирует отпечаток пальца, получившийся рисунок зависит от силы нажатия, смещения на долю миллиметра вправо или влево, наличия незначительных травм кожи. В результаты несколько сканов лица или отпечатков пальца одного пользователя всегда содержат различия.
При этом для авторизации по лицу или отпечатку пальца используют метод нечеткого поиска.
![](https://habrastorage.org/r/w1560/webt/zv/uy/t2/zvuyt2l6x4wnudcrs6yi1vu7hue.png)
Блок-схема с симметричными криптографическими ключами (источник)
В этом случае приложение ищет не полностью совпадающие элементы, как при хешировании паролей, а наиболее похожие друг на друга сущности. Например, если вы авторизуетесь по отпечатку пальца, то совпадение рисунка на 90% — очень хороший показатель, который фактически подтверждает личность владельца отпечатка.
Однако, при этом на 10% отпечаток состоит из других данных. А значит, мы получаем другой хеш и теряем возможность безопасного хранения данных. Кроме того, хранить данные приходится целиком, ведь хеш-функция с выдачей близких значений для похожих символьных сочетаний недостаточно безопасна.
Рассмотрим, как будет выглядеть процесс регистрации:
Верификация происходит следующим образом:
![](https://habrastorage.org/r/w1560/webt/dg/vv/-z/dgvv-zpoiyy-oo1ne4cfe1i1_ju.png)
Блок-схема с асимметричными криптографическими ключами (источник)
Чтобы преобразование было повторяемым, перед его началом биометрический сигнал должен быть надлежащим образом зарегистрирован. Эта проблема частично решена с помощью ряда методов, описанных в научной литературе.
В этой статье мы разобрали самые популярные способы идентифицировать пользователя и их особенности, которые, по нашему опыту, могут быть полезны не только начинающим разработчикам, но и просто тем, кто интересуется этим вопросом со стороны механики исполнения.
Рассказываем о трех основных способах «узнать» пользователя, действительно ли злоумышленники могут обмануть камеру, «как в кино», и что общего между аутентификацией и игрой «Найди 10 отличий». Надеемся, что эти наблюдения будут полезны для тех разработчиков, которые начинают изучать возможности iOS и Android.
![](https://habrastorage.org/webt/ck/ds/zw/ckdszwvqftjucsznvdleg_sf35y.png)
Основные виды биометрии
Идентификация пользователей необходима во многих приложениях, которые обрабатывают личные данные, например, в онлайн-банках. Так, в России с 2018 года действует Единая биометрическая система (ЕБС), с помощью которой клиенты могут пользоваться услугами банков удаленно. По рекомендациям Банка России, в 2020 году все банки должны иметь возможность собирать биометрические данные пользователей.
Согласно исследованию Spiceworks, более 60% компаний Европы и Северной Америки используют биометрию для защиты данных и считают, что этот метод надежнее, чем пин-код или сочетание логина и пароля. 10% респондентов уверены, что для идентификации достаточно только биометрии, тогда как другие компании настаивают на использовании дополнительных способов.
Популярные способы биометрической идентификации, по данным исследования:
- Сканер отпечатка пальца (fingerprint) – 57%
- Сканер геометрии лица (face ID) – 14%
- Прочие методы: сканеры радужной оболочки глаза (IRIS) и геометрии руки (3-5%).
Существуют и другие способы аутентификации, например, голосовая биометрия – однако, их надежность ниже, поэтому обращаются к ним реже.
Рассмотрим особенности нескольких перечисленных способов.
1) Сканер отпечатка пальца (fingerprint)
Для того, чтобы «узнать» пользователя по отпечатку пальца и безопасно хранить его данные, каждый производитель мобильных устройств предлагает свои возможности. Так, на устройствах Apple образец отпечатка пальца проводится через хеш-функцию перед сохранением в защищенный вычислительном модуль. Все процессы, связанные с Touch ID, происходят именно в этом модуле, и извлечь такие данные невозможно.
На устройствах Android степень безопасности зависит от производителя, используемых им подходов и решений. Как правило, работа со сканерами отпечатка пальца регламентируется отдельными документами, в том числе спецификациями Google. Ведущие производители смартфонов, такие как Samsung, используют достаточно надежные и точные емкостные сенсорами и обеспечивают высокую степень безопасности данных. Однако, отдельные небольшие компании могут применять менее надежные сенсоры и хранить отпечатки на устройстве, иногда даже в свободном доступе.
![](https://habrastorage.org/webt/d-/no/zk/d-nozkj-1_hgi_dqecbja7x0abm.jpeg)
Freepik.com
2) Сканер геометрии лица (face ID)
Если приложение идентифицирует пользователя по лицу, сканирование осуществляют за счет емкостной камеры. По сравнению с предыдущим способом, здесь требуется еще более сложный алгоритм, требующий высокой точности захвата изображения и распределения более 30 тысяч контрольных точек по изображению лица пользователя. В свою очередь, это определяет более высокие требования к камере смартфона.
По сути дела, емкостный сканер изучает лицо пользователя, выстраивая геометрическую модель и преобразуя её в результаты вычисления, которые можно хранить. Во время авторизации результат вычисления (с учетом погрешности) для конкретного пользователя сопоставляется с результатом, хранящимся в памяти.
![](https://habrastorage.org/webt/dq/rm/jt/dqrmjtvztpt1kjhwul2bkvafbpg.jpeg)
Adobe Stock
При этом не все устройства предоставляют полноценные возможности для распознавания лиц. Бывают случаи, когда производители ограничиваются 2D-сканированием с помощью обычной камеры. Как правило, при этом на картинке выделяется лицо, которое можно сравнить с другими изображениями в базе – как в игре «Найди 10 отличий». Если приложению не удастся найти отличия, то пользователь может быть распознан как владелец. В этом случае есть риск, что потенциальному злоумышленнику удастся разблокировать приложение, просто просканировав фотографию владельца.
3) Сканер радужной оболочки глаза (IRIS)
Важно помнить, что IRIS – это не сканер сетчатки глаза. Проще говоря, эта технология сканирует радужную оболочку, которая окружает зрачок, тогда как сетчатка располагается внутри глаза на задней стенке.
Сканер определяет те или иные особенности внешности пользователя и геометрическую форму радужки, используя емкостные камеры.
Хотя такой способ биометрической защиты может показаться перспективным, у него есть свои уязвимости. С одной стороны, для снятия блокировки недостаточно найти и предъявить фотографию владельца, ведь камера определяет объем изображения. Однако, такой риск выше при одновременном использовании фотографии и контактных линз. Сканер сетчатки глаза в этом отношении может быть безопаснее, поскольку данные владельца невозможно получить в открытых источниках или угадать.
![](https://habrastorage.org/webt/ru/h3/bd/ruh3bdavrfbuanijqji1tbxmwzg.jpeg)
Adobe Stock
Как работает распознавание
При использовании любого из перечисленных биометрических сканеров, как правило, 100% точности недостижима. Когда пользователь сканирует отпечаток пальца, получившийся рисунок зависит от силы нажатия, смещения на долю миллиметра вправо или влево, наличия незначительных травм кожи. В результаты несколько сканов лица или отпечатков пальца одного пользователя всегда содержат различия.
При этом для авторизации по лицу или отпечатку пальца используют метод нечеткого поиска.
![](https://habrastorage.org/webt/zv/uy/t2/zvuyt2l6x4wnudcrs6yi1vu7hue.png)
Блок-схема с симметричными криптографическими ключами (источник)
В этом случае приложение ищет не полностью совпадающие элементы, как при хешировании паролей, а наиболее похожие друг на друга сущности. Например, если вы авторизуетесь по отпечатку пальца, то совпадение рисунка на 90% — очень хороший показатель, который фактически подтверждает личность владельца отпечатка.
Однако, при этом на 10% отпечаток состоит из других данных. А значит, мы получаем другой хеш и теряем возможность безопасного хранения данных. Кроме того, хранить данные приходится целиком, ведь хеш-функция с выдачей близких значений для похожих символьных сочетаний недостаточно безопасна.
Рассмотрим, как будет выглядеть процесс регистрации:
- Биометрическое сканирование захватывает изображение.
- Алгоритм извлекает из изображения стабильные и воспроизводимые векторы.
- Происходит генерация открытого и закрытого кода, при этом закрытый код хешируется.
- Симметричные или асимметричные криптографические ключи выдаются для сгенерированного биометрического хеш-кода.
- При использовании асимметричных криптографических ключей происходит сохранение открытого ключа и удаление из системы закрытого ключа. Биометрические данные в этих случаях не сохраняются.
Верификация происходит следующим образом:
- Биометрическое сканирование захватывает изображение.
- Алгоритм извлекает те же стабильные функции, что и при регистрации.
- Публичный код сообщает системе, «где находятся функции» для поиска частного кода.
- Создается один и тот же закрытый код, для аутентификации выдаются одни и те же криптографические ключи и хеш.
![](https://habrastorage.org/webt/dg/vv/-z/dgvv-zpoiyy-oo1ne4cfe1i1_ju.png)
Блок-схема с асимметричными криптографическими ключами (источник)
Чтобы преобразование было повторяемым, перед его началом биометрический сигнал должен быть надлежащим образом зарегистрирован. Эта проблема частично решена с помощью ряда методов, описанных в научной литературе.
Подводя итоги
В этой статье мы разобрали самые популярные способы идентифицировать пользователя и их особенности, которые, по нашему опыту, могут быть полезны не только начинающим разработчикам, но и просто тем, кто интересуется этим вопросом со стороны механики исполнения.