Начиная с версии 6.0, Google выпустил документ в котором предъявил требования к устройствам на базе Android оборудованных датчиком отпечатков пальцев:
Обязательно
- декларировать поддержку
android.hardware.fingerprint
. - полная реализация fingerprint API из документации к Android SDK
- иметь уровень ложноположительных срабатываний менее 0,002%
- ограничивать скорость попыток 30-секундной задержкой после 5 неудачных попыток
- иметь аппаратное безопасное хранилище, а верификацию отпечатков проводить исключительно в доверенной зоне Trusted Execution Environment (TEE) или на выделенном процессоре с безопасным каналом связи с TEE (На этом погорел Samsung S5, в котором с безопасным каналом связи была проблема)
- шифровать данные отпечатков таким образом, чтобы доступ к ним невозможно было получить за пределами Trusted Execution Environment (TEE)
- не разрешать добавлять отпечатки без установления доверенной цепочки (пользователь должен добавить или верифицировать PIN/паттерн/пароль через TEE
- корректно обрабатывать флаг
DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT
Рекомендации
- уровень ложноотрицательных срабатываний менее 10%, задержка срабатывания менее 1 секунды (для 1 сохраненного отпечатка)
- не позволять сторонним приложениям различать отдельные отпечатки
- использовать иконку Android Fingerprint из Android Open Source Project
Общая архитектура
Основным компонентом отвечающим за биометрические сценарии является BiometricEnrollActivity, которую производителям рекомендуется адаптировать под свои нужды.
На текущий момент Android фреймворк поддерживает аутентификацию по отпечатку пальца и по лицу. Производитель конечного устройства может добавить поддержку других методов биометрической аутентификации (например по сетчатке глаза). Однако такая интеграция все равно будет зависеть от параметров биометрической безопасности, а не от типа аутентификации.
Аппаратная реализация
Аппаратная реализация должна гарантировать, что биометрические данные недоступны основной операционной системе и удаляются вместе с удалением пользователя.
Для изоляции необходимо применять TEE или SecureElement1. Все данные должны сохраняться в зашифрованном и подписанном виде с ключами привязанными к конкретному устройству и известными только TEE, коммуникация с которым должны осуществляться по выделенному физическому каналу (SPI, I2C) доступному только в изолированной с помощью правил SELinux среде.
Эти требования относятся только к сенсорам класса 2 и 3.
Архитектура системы аутентификации по отпечатку пальца
Сенсор отпечатков пальцев в основном находится в неактивном состоянии и активируется когда пользователь прикасается к нему. Для работы со сканерами отпечатков пальцев - Android использует специальный язык определения аппаратных интерфейсов (Hardware Interface Definition Language - HIDL). Производителям устройств необходимо реализовать IBiometricsFingerprint.hal
в своей библиотеке отвечающей за сопоставление отпечатков.
Типичный сценарий аутентификации выглядит так:
- Пользователь помещает палец на сенсор
- Библиотека от производителя устройства определяет правильность отпечатка
- Результаты передаются в FingerprintService
Система аутентификации по отпечатку пальца включает в себя следующие компоненты:
BiometricManager
- взаимодействует напрямую с приложением находясь в его процессе. Каждое приложение содержит экземплярIBiometricsFingerprint.hal
FingerprintService
- работает в системном процессе и обеспечивает связь с аппаратной абстракцией над сенсором (Fingerprint HAL)Fingerprint HAL
- реализация интерфейсаIBiometricsFingerprint
на языках C/C++. Содержит библиотеку от производителя устройства, которая общается с сенсором отпечатков пальцевKeystore API
иKeymaster
- компоненты, которые обеспечивают безопасное хранение криптографических ключей в защищенной среде, такой как Trusted Execution Environment (TEE).
FingerprintService
и fingerprintd
должны выполнять все операции c отпечатками через Fingerprint HAL
Архитектура системы аутентификации по лицу
Поддержка безопасной обработки кадров с камеры устройства появилась только в Android 10. Все реализации до этой версии нельзя считать безопасными.
Как и в случае с аутентификацией по отпечатку пальцев, производителям устройств нужно реализовать следующие интерфейсы в своей библиотеке:
Система аутентификации по лицу включает следующие компоненты:
FaceManager
- приватный интерфейс, который поддерживает соединение сFaceService
. Он используется Keyguard-ом для доступа к аутентификации по лицу с нестандартным UI. Обычные приложения не имеют доступа к этому интерфейсу и должны использоватьBiometricPrompt
вместо него.FaceService
- управляет доступом к аппаратным средствам аутентификации по лицу. Содержит базовые сценарии регистрации и аутентификации, а также дополнительные вспомогательные утилиты. Из соображений стабильности и безопасности - никакой код конечных производителей устройств не должен запускаться в этом процессе.faced
- linux демон, который реализует интерфейс Face 1.0 HIDL и используется сервисомFaceService
. Он регистрирует сам себя какIBiometricsFace@1.0
чтобыFaceService
мог его обнаружить.
Ожидается, что faced
работает в соответствии с этой диаграммой состояний:
Оценка биометрической безопасности
Для оценки безопасности биометрических систем, Google вводит такие понятия:
- Архитектурная безопасность - устойчивость биометрической аутентификации к компрометации ядра или платформы. Сценарий считается безопасным, если ни ядро ни платформа, даже будучи скомпрометированными не могут прочитать сырые биометрические данные или внедриться в сценарий биометрической аутентификаци с целью подмены результата.
- Характеристики биометрическая безопасности
- Spoof Acceptance Rate (SAR) - метрика вероятности того, что биометрическая модель пример предварительно записанный ранее, хорошо известный пример. Например, для голосовой разблокировки можно использовать записанный голос пользователя произносящий “Ok, Google”. Такие атаки относятся к спуфингу и также известны как с Impostor Attack Presentation Match Rate (IAPMR)
- Imposter Acceptance Rate (IAR) - определяет вероятность того, что биометрическая модель примет ввод, который мимикрирует под известный модели. Например, в системе Smart Lock может использоваться разблокировка доверенным голосом. В этом случае метрика будет определять шанс того, что smart lock разблокирует устройство услышав голос другого человека, пытающегося подделать голос доверенного пользователя. Такие атаки принято называть Imposter Attacks. Эта характеристика не является универсально полезной для всех биометрических систем.
- False Acceptance Rate (FAR) - определяет как часто биометрическая модель может принять некорректный, сгенерированный случайным образом ввод. В целом это полезная метрика, но она не дает достаточно информации о том, насколько хорошо модель выдерживает целевые атаки.
В своих требованиях к производителям устройств, Google выделяет три класса надежности биометрических систем:
Класс | Характеристики | Ограничения |
---|---|---|
Class 3 (BIOMETRIC_STRONG) | SAR: 0-7% FAR: 1/50k | можно использовать на экране блокировки, в приложениях и для работы с ключами шифрования из Keystore |
Class 2 (BIOMETRIC_WEAK) | SAR: 7-20% FAR: 1/50k | можно использовать на экране блокировки и в приложениях |
Class 1 (BIOMETRIC_CONVENIENCE) | SAR: >20% FAR: 1/50k | можно использовать только на экране блокировки |
Инструменты и материалы для атаки на распознавание отпечатков пальцев
Применяемые для изготовления PAI материалы:
- Для оптических сенсоров
- Копировальная бумага или прозрачная пленка с непроводящими чернилами
- Желатин (Knox Gelatin)
- Латексная краска
- Клей Элмера (как сварить самому)
- Для полупроводниковых (емкостных)
- Желатин (Knox Gelatin)
- Клей Элмера
- Клей Элмера для деревянных поверхностей (Elmer’s E7010 Carpenter’s Wood Glue)
- Латексная краска
- Для ультразвуковых
- Желатин (Knox Gelatin)
- Клей Элмера
- Клей Элмера для деревянных поверхностей (Elmer’s E7010 Carpenter’s Wood Glue)
- Латексная краска
Перед изготовлением поддельного отпечатка, изображение можно ретушировать или редактировать с высоким разрешением, чтобы повысить шансы на обман сенсора.
Качество распознавания отпечатков принадлежащих людям разного пола, возраста и этнической принадлежности порой может быть хуже и это нужно учитывать.
Аутентификация по лицу и радужной оболочке глаза
Процесс аутентификации по лицу и радужной оболочке использует одни и те же подходы. Разница заключается лишь в инструментах атаки (presentation attack instrument - PAI) используемых для тестов. При аутентификации по лицу используются фотографии и маски, а при аутентификации по радужной оболочке - фотографии или глазные протезы.
Инструменты и сценарии атаки на распознавание лиц
Применяемые PAI:
- 2D
- Распечатанные фото
- Фото на мониторе или экране мобильного устройства
- Видео на мониторе или экране мобильного устройства
- 3D
- Маски распечатанные на 3D принтере
- Силиконовые и керамические маски (не используются в тестах Google)
Примеры сценариев тестирования: - Распечатанные фотографии можно слегка изогнуть, чтобы получить изгибы на щеках (имитация глубины). Этот подход может помочь обойти решения работающие только в 2D - Изменение окружающего освещения для имитации окружающей среды - Легкое загрязнение линзы на сканирующем устройстве - Изменение портретной и ландшафтной ориентации сканирующего устройства, чтобы понять влияет ли это как-то на качество распознавания
Отдельным важным пунктом является оценка качества распознавания в зависимости от пола, возраста и/или этнической принадлежности, т.к. алгоритмы машинного обучения могут не учитывать или учитывать неправильно эти особенности.
Инструменты и сценарии атаки на распознавание радужной оболочки
Применяемые PAI:
- Распечатанные фото лиц, на которых четко видна радужная оболочка глаза
- Фото/видео лиц на мониторе или экране мобильного устройства на которых четко видна радужная оболочка глаза
- Глазные протезы
Пример сценария тестирования: на распечатанную фотографию или экран мобильного устройства можно наклеить контактные линзы, что может помочь обойти некоторые алгоритмы распознавания.
Важно понимать, что разные цвета радужной оболочки могут иметь разные спектральные характеристики, что в свою очередь может повлиять на качество распознавания и процент ошибок.