Биометрия

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

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

Платформа 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 .
  • Обновлены тесты проверки CTS FingerprintManager для проверки BiometricPrompt с помощью BiometricPromptBoundKeysTest .

Выполнение

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

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

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

Рекомендации по внедрению HAL

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

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

Кастомизация

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

Строки аутентификации для конкретного устройства

Начиная с 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 )

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Проверка

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

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

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