Биометрия

Биометрия предлагает более удобный, но потенциально менее безопасный способ подтверждения вашей личности с помощью устройства. В многоуровневой модели аутентификации первичная аутентификация (то есть основанные на факторах знания модальности, такие как PIN-код, шаблон и пароль) обеспечивает наивысший уровень безопасности. Биометрия находится на вторичном уровне аутентификации, предлагая баланс удобства и безопасности. CDD Android определяет три класса биометрической надежности: класс 3 (ранее Strong), класс 2 (ранее Weak) и класс 1 (ранее Convenience). Каждый класс имеет набор предварительных условий, привилегий и ограничений — см. CDD выше для получения более подробной информации. Все три класса могут интегрироваться с экраном блокировки, но только Strong и Weak аутентификаторы могут интегрироваться с API android.hardware.biometrics. В этой таблице описаны каждый аутентификатор и поддерживаемые им функции.

Аутентификатор Экран блокировки Интеграция BiometricPrompt Хранилище ключей (ключ с ограниченным сроком действия) Хранилище ключей (ключ на основе операции)
БИОМЕТРИЧЕСКИЙ_СИЛЬНЫЙ (класс 3) Да Да Да Да
БИОМЕТРИЧЕСКИЙ_СЛАБЫЙ (Класс 2) Да Да Нет Нет
БИОМЕТРИЧЕСКОЕ_УДОБСТВО
(Класс 1)
Да Нет Нет Нет
УЧЕБНЫЕ ДАННЫЕ_УСТРОЙСТВА Да Да Да Да

Платформа Android включает поддержку биометрической аутентификации по лицу и отпечаткам пальцев. Android можно настроить для поддержки других биометрических модальностей (например, Iris). Однако биометрическая интеграция будет зависеть от биометрической безопасности, а не от модальности. Более подробную информацию о характеристиках биометрической безопасности см. в разделе Измерение безопасности биометрической разблокировки .

Источник

Андроид 12

  • Вводит API BiometricManager.Strings , который предоставляет локализованные строки для приложений, использующих BiometricPrompt для аутентификации. Эти строки предназначены для поддержки устройств и предоставляют больше конкретики о том, какой тип(ы) аутентификации может использоваться.
  • Включает поддержку сканера отпечатков пальцев под дисплеем (UDFPS).

Андроид 11

  • Представлен интерфейс BiometricManager.Authenticators , предоставляющий константы, которые разработчики могут использовать для указания типов аутентификации, принимаемых их приложениями.
  • Добавляетдействие намерения ACTION_BIOMETRIC_ENROLL , которое разработчики могут использовать, чтобы побудить пользователя зарегистрировать метод аутентификации, отвечающий требованиям их приложений.
  • Добавляет метод AuthenticationResult #getAuthenticationType () , который разработчики могут использовать для проверки того, аутентифицировался ли пользователь с помощью биометрических учетных данных или учетных данных устройства.
  • Предоставляет дополнительную поддержку ключей аутентификации на каждое использование в классе BiometricPrompt.

андроид 10

  • Представлен класс BiometricManager , который разработчики могут использовать для запроса доступности биометрической аутентификации.
  • Включает интеграцию аутентификации по отпечаткам пальцев и лицу для BiometricPrompt

Андроид 9

  • Включает интеграцию отпечатков пальцев только для BiometricPrompt .
  • Устаревание класса FingerprintManager. Если ваши пакетные и системные приложения используют этот класс, обновите их, чтобы использовать вместо него BiometricPrompt и BiometricManager .
  • Обновлены тесты верификатора FingerprintManager CTS для проверки BiometricPrompt с использованием BiometricPromptBoundKeysTest .

Выполнение

Чтобы обеспечить пользователям и разработчикам бесперебойный биометрический опыт, интегрируйте свой биометрический стек с API BiometricPrompt , BiometricManager и ACTION_BIOMETRIC_ENROLL . Устройства с биометрическими датчиками должны соответствовать этим требованиям надежности . Кроме того, все реализации должны пройти модуль CTS CtsBiometricsTestCases.

Чтобы интегрировать ваш биометрический стек с API ACTION_BIOMETRIC_ENROLL:

  1. Измените BiometricEnrollActivity , чтобы представить ваш процесс регистрации. Обратите внимание, что ваша биометрия может быть представлена ​​только в том случае, если она соответствует требуемой силе. Если ваше устройство поддерживает более одного, это действие должно представить список, из которого пользователь может выбрать.
Архитектура BiometricPrompt
Рисунок 1. Архитектура BiometricPrompt

Руководство по внедрению HAL

Соблюдайте следующие биометрические рекомендации HAL, чтобы гарантировать отсутствие утечки биометрических данных и их удаление при удалении пользователя с устройства:

  • Убедитесь, что необработанные биометрические данные или производные (например, шаблоны) никогда не будут доступны извне безопасной изолированной среды (например, TEE или Secure Element). Все сохраненные данные должны быть зашифрованы с помощью ключа , специфичного для устройства, известного только Trusted Execution Environment (TEE). Если оборудование поддерживает это, ограничьте доступ оборудования к безопасной изолированной среде и защитите его с помощью политики SELinux. Сделайте канал связи (например, SPI, I2C) доступным только для безопасной изолированной среды с явной политикой SELinux для всех файлов устройства.
  • Биометрическое получение, регистрация и распознавание должны происходить в безопасной изолированной среде для предотвращения утечек данных и других атак. Это требование применимо только к биометрическим данным Класса 3 (ранее Strong) и Класса 2 (ранее Weak) .
  • Для защиты от атак с повторным воспроизведением подписывайте биометрические шаблоны закрытым ключом, привязанным к устройству. Для Advanced Encryption Standard (AES) как минимум подписывайте шаблон с абсолютным путем файловой системы, группой и биометрическим идентификатором, чтобы файлы шаблонов были неработоспособны на другом устройстве или для кого-либо, кроме пользователя, который зарегистрировал их на том же устройстве. Например, предотвращайте копирование биометрических данных от другого пользователя на том же устройстве или с другого устройства.
  • Если вам нужно хранить данные вне TEE, используйте путь файловой системы, предоставленный setActiveUser() HIDL method , или предоставьте другой способ стирания всех данных шаблона пользователя при удалении пользователя. Причина в том, чтобы защитить утечку пользовательских данных. Устройства, которые не используют этот путь , должны очищаться после удаления пользователя. CDD требует, чтобы биометрические данные и производные файлы хранились в зашифрованном виде, особенно если они не находятся в TEE. Если это невозможно из-за требований к хранению в безопасной изолированной среде, добавьте хуки, чтобы гарантировать удаление данных при удалении пользователя или очистке устройства. См. LockSettingsService.removeBiometricsForUser()

Настройка

Если ваше устройство поддерживает несколько биометрических данных, пользователь должен иметь возможность указать значение по умолчанию в настройках. Ваша реализация BiometricPrompt должна предпочесть биометрию класса 3 (ранее Strong) в качестве значения по умолчанию, если только пользователь явно не переопределит его, в таком случае должно отображаться предупреждающее сообщение, объясняющее риски, связанные с биометрическими данными (например, Ваша фотография может разблокировать ваше устройство ).

Строки аутентификации, специфичные для устройства

Начиная с Android 12, строки контекстной аутентификации стали доступны разработчикам через API BiometricManager.Strings . Вы можете настроить значения ресурсов, возвращаемые этим API, для реализации строк, специфичных для устройства. Если вы это сделаете, убедитесь, что все новые строки переведены для всех локалей, поддерживаемых устройством. Кроме того, убедитесь, что сохранены следующие свойства:


Метод

Цель строки

Тип(ы) аутентификации, которые следует включить

Если биометрические данные и блокировка экрана возможны

получитьButtonLabel()

Метка для кнопки, которая активирует BiometricPrompt

Только зарегистрированные типы (если возможно), которые удовлетворяют требованиям аутентификатора

Используйте строку , содержащую только биометрические данные (например, «Использовать отпечаток пальца»)

получитьПромптСообщение()

Сообщение, отображаемое на BiometricPrompt во время аутентификации

Только зарегистрированные типы (если возможно), которые удовлетворяют требованиям аутентификатора

Используйте комбинированную строку биометрических данных и блокировки экрана (например, «Используйте отпечаток пальца или PIN-код для продолжения»)

получитьНазваниеНастройки()

Имя параметра, включающего BiometricPrompt для аутентификации

Все типы, поддерживаемые устройством (даже если оно не зарегистрировано), которые удовлетворяют требованиям аутентификатора

Использовать комбинированную биометрическую строку и строку блокировки экрана (например, «Использовать отпечаток пальца или блокировку экрана»)

Например, рассмотрим устройство, которое имеет датчик лица класса 2 с зарегистрированным лицом , зарегистрированным PIN-кодом и датчик отпечатков пальцев класса 3 без зарегистрированных отпечатков пальцев . В следующей таблице приведены примеры строк для каждой комбинации разрешенных аутентификаторов и вызванного метода BiometricManager.Strings :


Разрешенные аутентификаторы

получитьButtonLabel()

получитьПромптСообщение()

получитьНазваниеНастройки()

Биометрический класс 3 ( BIOMETRIC_STRONG )

«Использовать отпечаток пальца»
(Только отпечаток пальца удовлетворяет требованиям аутентификатора)

«Используйте отпечаток пальца, чтобы продолжить»
(Только отпечаток пальца удовлетворяет требованиям аутентификатора)

«Использовать отпечаток пальца»
(Только отпечаток пальца удовлетворяет требованиям аутентификатора)

Биометрический класс 2 ( BIOMETRIC_WEAK )

«Использовать лицо»
(Лицо и отпечатки пальцев соответствуют требованиям; зарегистрировано только лицо)

«Используйте свое лицо, чтобы продолжить»
(Лицо и отпечатки пальцев соответствуют требованиям; зарегистрировано только лицо)

«Использовать лицо или отпечаток пальца»
(Лицо и отпечатки пальцев удовлетворяют требованиям; устройство поддерживает оба варианта)

Блокировка экрана ( DEVICE_CREDENTIAL )

«Использовать ПИН-код»
(Любая блокировка экрана удовлетворяет требованиям; PIN-код зарегистрирован)

«Введите свой PIN-код, чтобы продолжить»
(Любая блокировка экрана удовлетворяет требованиям; PIN-код зарегистрирован)

«Использовать блокировку экрана»
(Любая блокировка экрана удовлетворяет требованиям)

Биометрическая блокировка экрана ИЛИ класса 3

«Использовать ПИН-код»
(Отпечаток пальца и любая блокировка экрана удовлетворяют требованиям; зарегистрирован только PIN-код)

«Введите свой PIN-код, чтобы продолжить»
(Отпечаток пальца и любая блокировка экрана удовлетворяют требованиям; зарегистрирован только PIN-код)

«Использовать отпечаток пальца или блокировку экрана»
(Отпечаток пальца и любая блокировка экрана удовлетворяют требованиям)

Биометрическая блокировка экрана ИЛИ класса 2

«Использовать лицо»
(Лицо, отпечаток пальца и любая блокировка экрана удовлетворяют требованиям; лицо зарегистрировано и заменяет ПИН-код)

«Используйте свое лицо или PIN-код для продолжения»
(Лицо, отпечаток пальца и любая блокировка экрана соответствуют требованиям; лицо и PIN-код зарегистрированы)

«Используйте биометрию или блокировку экрана»
(Лицо, отпечаток пальца и любая блокировка экрана удовлетворяют требованиям)

Проверка

Ваша биометрическая реализация должна пройти следующие тесты:

  • Биометрический менеджер CTS
  • CTS BiometricPrompt (исправность, углубленное тестирование зависит от верификатора)
  • Раздел биометрического теста CtsVerifier: необходимо пройти индивидуально для каждой модальности, поддерживаемой устройством.

Кроме того, если ваше устройство поддерживает биометрические данные с AOSP HIDL ( fingerprint@2.1 , finger@2.2 , face1.0 ), оно должно пройти соответствующий тест VTS ( fingerprint , face ).