Биометрия предлагает более удобный, но потенциально менее безопасный способ подтверждения личности с помощью устройства. В рамках многоуровневой модели аутентификации первичная аутентификация (то есть, основанные на факторах знания, таких как PIN-код, графический ключ и пароль) обеспечивает наивысший уровень безопасности. Биометрия находится на вторичном уровне аутентификации, предлагая баланс удобства и безопасности. В документе Android CDD определены три класса надежности биометрических данных: Класс 3 (ранее — Надежный), Класс 2 (ранее — Слабый) и Класс 1 (ранее — Удобный). Каждый класс имеет набор предварительных условий, привилегий и ограничений — подробнее см. в документе CDD выше. Все три класса могут быть интегрированы с экраном блокировки, но только надежные и слабые аутентификаторы могут быть интегрированы с API android.hardware.biometrics. В этой таблице описан каждый аутентификатор и поддерживаемая им функциональность.
| Аутентификатор | Экран блокировки | Интеграция BiometricPrompt | Хранилище ключей (ключ, зависящий от времени) | Хранилище ключей (ключ, основанный на операции) |
|---|---|---|---|---|
| BIOMETRIC_STRONG (Класс 3) | Да | Да | Да | Да |
| БИОМЕТРИЧЕСКИЙ_СЛАБЫЙ (Класс 2) | Да | Да | Нет | Нет |
| БИОМЕТРИЧЕСКОЕ УДОБСТВО (Класс 1) | Да | Нет | Нет | Нет |
| УЧЕТНЫЕ ДАННЫЕ УСТРОЙСТВА | Да | Да | Да | Да |
В архитектуре Android предусмотрена поддержка биометрической аутентификации по лицу и отпечатку пальца. Android можно настроить для поддержки других биометрических методов (например, радужной оболочки глаза). Однако интеграция биометрии будет зависеть от биометрической безопасности, а не от метода аутентификации. Более подробную информацию о спецификациях биометрической безопасности см. в разделе «Измерение безопасности биометрической разблокировки» .
Источник
Android 12
- Вводится API BiometricManager.Strings , предоставляющий локализованные строки для приложений, использующих BiometricPrompt для аутентификации. Эти строки предназначены для учета особенностей устройства и обеспечивают более точную информацию о том, какие типы аутентификации могут быть использованы.
- Включает поддержку встроенного в дисплей датчика отпечатков пальцев (UDFPS).
Android 11
- Вводит интерфейс BiometricManager.Authenticators , который предоставляет константы, позволяющие разработчикам указывать типы аутентификации, принимаемые их приложениями.
- Добавляетдействие намерения
ACTION_BIOMETRIC_ENROLL, которое разработчики могут использовать для того, чтобы направить пользователя на выбор метода аутентификации, соответствующего требованиям их приложений. - Добавляет метод `
AuthenticationResult #getAuthenticationType (), который разработчики могут использовать для проверки того, прошел ли пользователь аутентификацию с помощью биометрических данных или данных устройства. - Обеспечивает дополнительную поддержку ключей с авторизацией за каждое использование в классе BiometricPrompt.
Android 10
- Представляет класс
BiometricManager, который разработчики могут использовать для запроса информации о доступности биометрической аутентификации. - Включает интеграцию аутентификации по отпечатку пальца и лицу для
BiometricPrompt
Android 9
- Интеграция с функцией распознавания отпечатков пальцев включена только для
BiometricPrompt. - Класс FingerprintManager объявлен устаревшим. Если ваши встроенные и системные приложения используют этот класс, обновите их, используя вместо него классы
BiometricPromptиBiometricManager. - Обновлены тесты верификатора
FingerprintManagerCTS для проверкиBiometricPromptс помощьюBiometricPromptBoundKeysTest.
Выполнение
Для обеспечения бесперебойной работы с биометрическими данными как для пользователей, так и для разработчиков, интегрируйте свой биометрический стек с API-интерфейсами BiometricPrompt , BiometricManager и ACTION_BIOMETRIC_ENROLL . Устройства с биометрическими датчиками должны соответствовать этим требованиям к надежности . Кроме того, все реализации должны пройти проверку модуля CTS CtsBiometricsTestCases.
Для интеграции вашей биометрической системы с API ACTION_BIOMETRIC_ENROLL:
- Измените компонент BiometricEnrollActivity , чтобы отобразить ваш процесс регистрации. Обратите внимание, что ваши биометрические данные могут быть представлены только в том случае, если они соответствуют требуемому уровню достоверности. Если ваше устройство поддерживает более одного типа данных, это действие должно отображать список, из которого пользователь может выбрать нужный.

руководящие принципы внедрения HAL
Следуйте этим рекомендациям по использованию биометрического HAL, чтобы гарантировать, что биометрические данные не будут утечены и будут удалены при удалении пользователя с устройства:
- Убедитесь, что необработанные биометрические данные или их производные (например, шаблоны) никогда не доступны извне защищенной изолированной среды (например, TEE или Secure Element). Все хранимые данные должны быть зашифрованы с помощью ключа , специфичного для устройства и известного только доверенной среде выполнения (TEE). Если оборудование это поддерживает, ограничьте доступ оборудования к защищенной изолированной среде и защитите его с помощью политики SELinux. Сделайте канал связи (например, SPI, I2C) доступным только для защищенной изолированной среды с помощью явной политики SELinux для всех файлов устройства.
- Сбор, регистрация и распознавание биометрических данных должны происходить внутри защищенной изолированной среды для предотвращения утечек данных и других атак. Это требование распространяется только на биометрические данные класса 3 (ранее известные как «надежные») и класса 2 (ранее известные как «слабые») .
- Для защиты от атак повторного воспроизведения подписывайте шаблоны биометрических данных закрытым ключом, специфичным для каждого устройства. Для алгоритма расширенного шифрования (AES) подписывайте шаблон как минимум абсолютным путем к файлу в файловой системе, группой и биометрическим идентификатором, чтобы файлы шаблона были неработоспособны на другом устройстве или для кого-либо, кроме пользователя, зарегистрировавшего их на том же устройстве. Например, предотвратите копирование биометрических данных от другого пользователя на том же устройстве или с другого устройства.
- Если вам необходимо хранить данные вне TEE, используйте путь к файловой системе, предоставляемый
setActiveUser() HIDL method, или предоставьте другой способ удаления всех данных шаблона пользователя при удалении пользователя. Причина заключается в предотвращении утечки пользовательских данных. Устройства, которые не используют этот путь , должны выполнить очистку после удаления пользователя. В соответствии с CDD, биометрические данные и производные файлы должны храниться в зашифрованном виде, особенно если они не находятся в TEE. Если это невозможно из-за требований к хранению данных в защищенной изолированной среде, добавьте механизмы для обеспечения удаления данных при удалении пользователя или очистке устройства. См. LockSettingsService.removeBiometricsForUser()
Настройка
Если ваше устройство поддерживает несколько типов биометрии, пользователь должен иметь возможность указать значение по умолчанию в настройках. В вашей реализации BiometricPrompt по умолчанию должен отдаваться предпочтение биометрии класса 3 (ранее известной как «Надежная») , если пользователь явно не изменит это значение; в противном случае необходимо отобразить предупреждающее сообщение, объясняющее риски, связанные с данной биометрией (например, «Ваша фотография может разблокировать ваше устройство »).
Строки аутентификации, специфичные для устройства
Начиная с Android 12, разработчикам стали доступны контекстные строки аутентификации через API BiometricManager.Strings . Вы можете настраивать значения ресурсов, возвращаемые этим API, для реализации строк, специфичных для устройства. В этом случае убедитесь, что все новые строки переведены для всех языковых версий, поддерживаемых устройством. Кроме того, убедитесь, что сохраняются следующие свойства:
Метод | Назначение струны | Тип(ы) аутентификации, которые необходимо включить | Если возможны как биометрическая идентификация, так и блокировка экрана. |
|---|---|---|---|
getButtonLabel() | Метка для кнопки, которая запускает BiometricPrompt | Зарегистрированы только те типы (по возможности), которые соответствуют требованиям аутентификатора. | Используйте строку , содержащую только биометрические данные (например, "Использовать отпечаток пальца") |
getPromptMessage() | Сообщение, отображаемое на экране BiometricPrompt во время аутентификации. | Зарегистрированы только те типы (по возможности), которые соответствуют требованиям аутентификатора. | Используйте комбинированную строку для биометрической идентификации и блокировки экрана (например, «Используйте отпечаток пальца или PIN-код для продолжения»). |
getSettingName() | Название параметра, который включает BiometricPrompt для аутентификации. | Все типы, поддерживаемые устройством (даже если они не зарегистрированы), которые соответствуют требованиям аутентификатора. | Используйте комбинированную строку для биометрической идентификации и блокировки экрана (например, «Использовать отпечаток пальца или блокировку экрана»). |
Например, рассмотрим устройство, имеющее датчик лица класса 2 с зарегистрированным лицом , зарегистрированный PIN-код и датчик отпечатков пальцев класса 3 без зарегистрированных отпечатков пальцев . В следующей таблице приведены примеры строк для каждой комбинации разрешенных аутентификаторов и вызываемого метода BiometricManager.Strings :
Разрешенные аутентификаторы | getButtonLabel() | getPromptMessage() | getSettingName() |
|---|---|---|---|
Биометрическая идентификация 3-го класса ( BIOMETRIC_STRONG ) | "Использовать отпечаток пальца" (Только отпечаток пальца удовлетворяет требованиям аутентификации) | "Для продолжения используйте отпечаток пальца" (Только отпечаток пальца удовлетворяет требованиям аутентификации) | "Использовать отпечаток пальца" (Только отпечаток пальца удовлетворяет требованиям аутентификации) |
Биометрическая идентификация 2-го класса ( BIOMETRIC_WEAK ) | "Используй лицо" (Требованиям соответствуют лицо и отпечатки пальцев; регистрируется только лицо) | "Продолжите, используя лицо." (Требованиям соответствуют лицо и отпечатки пальцев; регистрируется только лицо) | "Используйте лицо или отпечаток пальца" (Фотографии лица и отпечатки пальцев соответствуют требованиям; устройство поддерживает оба метода) |
Блокировка экрана ( Учетные данные устройства ) | "Использовать PIN-код" (Любая блокировка экрана соответствует требованиям; PIN-код зарегистрирован) | "Введите свой PIN-код для продолжения" (Любая блокировка экрана соответствует требованиям; PIN-код зарегистрирован) | "Использовать блокировку экрана" (Любая блокировка экрана удовлетворяет требованиям) |
Биометрическая блокировка 3-го класса ИЛИ блокировка экрана | "Использовать PIN-код" (Требованиям соответствуют отпечаток пальца и любая блокировка экрана; регистрируется только PIN-код) | "Введите свой PIN-код для продолжения" (Требованиям соответствуют отпечаток пальца и любая блокировка экрана; регистрируется только PIN-код) | "Используйте отпечаток пальца или блокировку экрана" (Требования удовлетворяют отпечатку пальца и любой форме блокировки экрана) |
Биометрическая блокировка 2-го класса ИЛИ блокировка экрана | "Используй лицо" (Для этого требуются распознавание лица, отпечатка пальца и любой тип блокировки экрана; распознавание лица регистрируется и заменяет PIN-код) | "Для продолжения используйте свое лицо или PIN-код." (Для этого достаточно распознавания лица, отпечатка пальца и любой блокировки экрана; распознавание лица и PIN-код зарегистрированы) | "Использовать биометрию или блокировку экрана" (Требования удовлетворяют распознаванию лица, отпечатку пальца и любой форме блокировки экрана) |
Проверка
Ваша система биометрической идентификации должна пройти следующие тесты:
- CTS BiometricManager
- CTS BiometricPrompt (для проверки адекватности результатов, углублённое тестирование зависит от проверяющего).
- Раздел биометрического теста CtsVerifier: необходимо пройти отдельно для каждого поддерживаемого устройством режима.
Кроме того, если ваше устройство поддерживает биометрию с использованием AOSP HIDL ( fingerprint@2.1 , fingerprint@2.2 , face1.0 ), оно должно пройти соответствующий тест VTS ( fingerprint , face ).