Операция регистрации FIDO UAF Android

#fingerprint #galaxy #fido #uaf

#отпечаток пальца #галактика #fido #uaf

Вопрос:

Я пытаюсь протестировать FIDO (https://fidoalliance.org ) возможности моего устройства Galaxy S6 с использованием приложения PoC для Android. До сих пор мне удалось получить доступные аутентификаторы FIDO, используя намерение ОБНАРУЖЕНИЯ, и он успешно вернул аутентификатор отпечатков пальцев.

Однако, когда я пытаюсь зарегистрировать аутентификатор с помощью операции REGISTER FIDO, я всегда получаю неизвестный код ошибки (0xFF), и я понятия не имею, в чем причина. В документации FIDO указано, что этот код будет возвращен, если он не описан другими кодами ошибок 1-7. Я получил код ошибки 5 (нет подходящего аутентификатора), 6 (ошибка протокола) и 7 (ненадежный идентификатор фасета), выполняя метод проб и ошибок, но в итоге, после устранения причины, у меня осталась только НЕИЗВЕСТНАЯ ошибка.

Я проверял несколько раз, но синтаксис соответствует документам FIDO; оставляя его здесь:

 Intent intent = new Intent();
intent.setAction("org.fidoalliance.intent.FIDO_OPERATION");
intent.setType("application/fido.uaf_client json");
intent.putExtra("UAFIntentType", "UAF_OPERATION");
intent.putExtra("message", "{"additionalData":"Registration","uafProtocolMessage":"[{"header":{"upv":{"major":1,"minor":0},"op":"Reg","appID":"android:apk-key-hash:AcX 251ZfGFOzVVk1uQzgP16e2I","serverData":"063de11c-153c-4cbe-ac74-fbe282feffac"},"challenge":"H9iW9yA9aAXF_lelQoi_DhUk514Ad8Tqv0zCnCqKDpo","username":"joe","policy":{"accepted": [[{"userVerification": 2,"keyProtection": 6,"tcDisplay": 2,"authenticationAlgorithms":[1],"assertionSchemes":["UAFV1TLV"]}]]}}]"}");
intent.putExtra("channelBindings", "{"serverEndPoint":null,"tlsServerCertificate":null,"tlsUnique":null,"cid_pubkey":null}");
  

Компонент пытался разрешить намерение: ComponentInfo{com.sec.android.fido.uaf.client/com.sec.android.fido.uaf.client .OxygenActivity}, который, как представляется, экспортируется в его манифесте:

 <activity android:exported="true" android:label="@string/title_activity_oxygen" android:name="com.sec.android.fido.uaf.client.OxygenActivity" android:permission="org.fidoalliance.uaf.permissions.FIDO_CLIENT" android:screenOrientation="portrait" android:theme="@style/AppTheme">
<intent-filter>
<action android:name="org.fidoalliance.intent.FIDO_OPERATION"/>
<data android:mimeType="application/fido.uaf_client json"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
  

Кто-нибудь еще сталкивался и нашел решение для этого?

Примечание: протестировано то же самое на Xperia Z5, и компонент попытался разрешить намерение «com.noknok.android.mfac.service». Однако на Z5 я всегда получаю код ошибки 6 (ошибка протокола) вместо Unknown.

Ответ №1:

Вы можете найти полезную информацию о FIDO и паролях доступа на passkeys.com .Я использовал его, и мне не потребовалось времени, чтобы внедрить FIDO на свой веб-сайт. Я думаю, что их метод, описанный там, является самым простым и подробным. Я предполагаю, что на большинство ваших вопросов есть ответы.

Вот примеры, которые я нашел для реализации FIDO с Android https://github.com/OwnID/ownid-android-sdk

Ответ №2:

Я полагаю, что ваше приложение является клиентом Fido в соответствии со спецификациями.

Действительно, в galaxy S6 уже существует аутентификатор ASM , но его нельзя вызвать из вашего приложения. При создании аутентификатора ASM вы можете решить отвечать только конкретному клиенту Fido. Именно так samsung внедрила свой аутентификатор Galaxy s6. (вероятно, это то же самое для Xperia).