Приглашение по радужке и лицу BiometricPrompt не работает с аутентификацией объекта Crypto. #AndroidX

Проблема

  • Биометрическая аутентификация по радужной оболочке глаза и распознаванию лиц не запрашивается biometricPrompt.authenticate(**crypto**, promptInfo) вызовом.

Ссылка на источник:

Устройство, использованное для тестирования:

  • Samsung S8 (ОС Android 9)

Я следую этапам аутентификации:

  • val biometricPrompt = BiometricPrompt (...)
  • val promptInfo = BiometricPrompt.PromptInfo.Builder () ...
  • biometricPrompt. Authenticate (promptInfo) (PFA: вариант A, B)

и есть еще один метод аутентификации, который берет зашифрованный объект, чтобы убедиться, что

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

Если я подпишусь

  • biometricPrompt. Authenticate (promptInfo), тогда приложение просто отображает параметр аутентификации в зависимости от предпочтений пользователя, которые он должен выбрать из «Настройки устройства» -> «Биометрические предпочтения». И выполнить аутентификацию самостоятельно. (PFA: вариант A, B)

  • Но при использовании biometricPrompt.**authenticate**(crypto, promptInfo) отображается ТОЛЬКО вариант аутентификации по отпечатку пальца. Для других параметров предпочтения ирисовой диафрагмы и распознавания лиц она ничего не отображает при вызове authenticate(..) метода. (PFA: вариант C)

Вопрос

  • Почему другая биометрическая аутентификация не запрашивает аутентификацию крипто-объекта.

введите описание изображения здесь


person CoDe    schedule 28.11.2019    source источник
comment
В документе определения совместимости Android говорится, что разрешить доступ к ключи хранилища ключей для сторонних приложений, реализации устройств: [C-0-2] ДОЛЖНЫ соответствовать требованиям для Strong, как определено в этом документе. Затем он определяет, что означает сильный биометрический датчик. Вполне возможно, что сканеры радужной оболочки глаза и лица в Galaxy S8 не соответствуют этим требованиям.   -  person Michael    schedule 29.11.2019
comment
Спасибо @Michael, чтобы указать на это. Я проверял образец, указанный здесь, и это работает с iris в наименее. Для распознавания лиц бросает BIOMETRIC_ERROR_NONE_ENROLLED. Любые предложения по поводу этой путаницы!   -  person CoDe    schedule 29.11.2019
comment
@Michael пара вопросов, если вы можете помочь, Android пообещал выпустить обновление Android-X для всех своих потребностей в аутентификации пользователей на устройстве. Я уже вижу, что Samsung S-8 с обновлением с OS-9 уже имеет эту возможность. 1) Означает ли это, что у Samsung была собственная разработка на уровне SDK / фреймворка? 2) Как проверить, поддерживает ли OEM-устройство C-0-2 или C-0-3? Есть какие-нибудь предложения по этому поводу?   -  person CoDe    schedule 29.11.2019
comment
Я считаю, что в биометрической библиотеке androidX есть список устройств, для которых он будет использовать отпечатки пальцев, если другие биометрические датчики устройства будут признаны слабыми. Я не знаю, в какой версии библиотеки была добавлена ​​эта проверка. См. android-review.googlesource.com/c/platform/ frameworks / support / + /   -  person Michael    schedule 29.11.2019
comment
да, должно быть, но вести список - не лучшая идея. Хотя мне все еще нужно проверить поведение функции на другом OEM-устройстве.   -  person CoDe    schedule 01.12.2019
comment
это должна быть некоторая проверка уровня прошивки, которая определяет, достаточно ли надежна данная биометрическая опция для выполнения аутентификации для / использования криптообъекта. Если это не удается, он перенаправляет управление на классическую реализацию (FingerPrintManager или аналогичную из биометрического API). @Майкл   -  person CoDe    schedule 02.12.2019
comment
Поскольку Google сами полагаются на черный список, не похоже, что сейчас у них есть лучшее решение проблемы. Но вам не нужно вести собственный список. Идея состоит в том, что API проверяет вас и автоматически возвращается к отпечатку пальца, если предпочтительные биометрические данные недостаточно безопасны на этом устройстве.   -  person Michael    schedule 02.12.2019
comment
это то, что я понял до сих пор, но трудно убедить пользователя, когда он выбирает радужную оболочку / обнаружение лица в качестве предпочтительного параметра из настроек, но возвращается к Fingerprint для вашего приложения. Есть ли какие-нибудь находки для программной идентификации этого, если датчик достаточно силен для поддержки аутентификации на основе криптографии?   -  person CoDe    schedule 02.12.2019
comment
Ничего из того, о чем я знаю, кроме ведения собственного черного списка и обновления его при выпуске новых устройств.   -  person Michael    schedule 02.12.2019
comment
Кстати, при проверке на нескольких устройствах было обнаружено, что устройства samsung-10 и plus удалили iris в качестве опции аутентификации (доступны отпечатки пальцев и распознавание лиц). Хотя iris все еще доступен для устройств s8. Все они работают на Android-9 (в то время как Google выпускает Android-10), что является еще одним неожиданным фактором.   -  person CoDe    schedule 02.12.2019
comment
Устройства samsung-10 и plus удалили радужную оболочку в качестве опции аутентификации Я считаю, что упоминалось здесь (см. комментарий №7).   -  person Michael    schedule 02.12.2019


Ответы (1)


Некоторые устройства имеют только один форм-фактор, некоторые - несколько. Какой форм-фактор будет использовать ваше приложение, на самом деле не зависит от вас; это зависит от реализации OEM. Как объясняется в этом сообщении в блоге, независимо от того, является ли форм-фактор Сильный или Слабый не зависит от вашего кода - решает OEM. Однако вы можете запросить, чтобы устройство использовало строгую аутентификацию для вашего приложения, указав CryptoObject при вызове authenticate().

Что вы испытываете, так это то, что OEM-производители ваших устройств решили сделать отпечаток пальца по умолчанию для сильной биометрии. Следовательно, когда вы передаете CryptoObject в authenticate(), эти устройства показывают пользователю пользовательский интерфейс для отпечатка пальца.

person Isai Damier    schedule 18.12.2019
comment
Может ли распознавание лиц быть надежным биометрическим параметром на определенных устройствах или всегда считается слабым? - person Florian Walther; 05.01.2020
comment
Пока это рассматривалось как недельный вариант, но в дальнейшем его можно улучшить. - person CoDe; 05.01.2020
comment
К вашему сведению (хотя и довольно поздно) Разблокировка по лицу считается сильной на некоторых устройствах. Например, Pixel 4 силен, потому что у него есть радарный датчик, и он не является чисто оптическим совпадением. - person Gapp; 19.02.2021