Биометрия

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

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

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

Источник

Android 11

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

Android 10

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

Android 9

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

Реализация

Для того , чтобы пользователи и разработчики имеют цельный биометрический опыт, интегрировать биометрические стеки с BiometricPrompt , BiometricManager и ACTION_BIOMETRIC_ENROLL API. Устройства с биометрическими датчиками должны придерживаться этих требований к прочности .
Для того, чтобы интегрировать биометрические стеки с BiometricPrompt и BiometricManager APIs , BiometricManager APIs :

  1. Убедитесь , что <Modality>Service правильно зарегистрирован BiometricService с помощью метода IBiometricService # registerAuthenticator и реализует IBiometricAuthenticator интерфейс. Общие условия (отпечатки пальцев, лицо) простираются от общего суперкласса . Если вам нужно интегрировать неподдерживаемую модальность, следовать по отпечаткам пальцев / лицам примеру и принципам CDD для биометрии.
  2. Убедитесь , что ваша новая модальность должным образом поддерживается в SystemUI . Есть стандартные BiometricPrompt пользовательских интерфейсов для отпечатков пальцев и лица. Это должно включать любые изменения макета или темы, необходимые для вашего устройства. Т.е. соответствующие изменения в компоновке встроенного в дисплей датчика отпечатков пальцев.

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

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

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

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

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

Настройка

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

Проверка

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

  • CTS BiometricManager
  • CTS BiometricPrompt (вменяемость, углубленное тестирование основывается на проверяющего)
  • CtsVerifier биометрический тест раздел : Должно пройти индивидуально с каждой модальности , что поддерживает устройство

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