Как проверить пользователей веб-сайта с помощью аутентификации по отпечаткам пальцев смартфона или распознавания лиц?

#android #authentication #fingerprint #two-factor-authentication #android-fingerprint-api

#Android #аутентификация #отпечаток пальца #двухфакторная аутентификация #android-fingerprint-api

Вопрос:

Я хочу предоставить альтернативный вход на веб-сайт с использованием распознавания отпечатков пальцев или лиц для мобильных пользователей (предпочтительно Android). Возможно ли это? Если да, каковы шаги?

Большая часть информации, которую я нашел, касается мобильных приложений — даже у них есть ограничения безопасности. Я немного смущен подходом. Изначально я думал, что смогу хранить данные отпечатков пальцев в какой-то базе данных и сопоставлять их с данными отпечатков пальцев, предоставленными устройством Android, точно так же, как аутентификация по паролю. В ходе дальнейших исследований я обнаружил, что это запрещено по соображениям безопасности.

Предоставляет ли Google какую-либо форму аутентификации, подобную этой? Я новичок в создании приложений для Android, но я буду признателен за вашу помощь, даже если это связано с созданием какого-либо мобильного приложения только для этого конкретного веб-сайта (в крайнем случае).). В частности, я хотел бы знать, как проверить пользователя на стороне сервера? Предполагая, что я получаю какой-то ответ с телефона, например:

 PhoneUser={verified: true, ...}
  

Если только я могу передать / сохранить ключ (сгенерированный во время регистрации), который будет уникальным для биометрических данных пользователя. Тогда я мог бы сопоставить это с ответом с телефона для проверки пользователя. Я немного слышал о cryptoobjects было бы хорошим решением?
Как мне проверить, что совпадение отпечатков пальцев принадлежит пользователю в моем веб-приложении?
Должен ли я отслеживать устройство, чтобы убедиться, что оно принадлежит пользователю (IMEI), или это слишком много для простого веб-сайта?

Комментарии:

1. Биометрический API Android предназначен для использования следующим образом: вы просите его инициировать биометрическую аутентификацию, и в конечном итоге он отвечает обратным вызовом, сообщающим, прошла ли аутентификация успешно (т. Е. отпечаток пальца / лицо / что угодно соответствует любому из зарегистрированных на устройстве) или сбой. При желании вы также можете запросить CryptoObject разблокировку с помощью аутентификации, которая сделает ранее сгенерированный ключ доступным для выполнения некоторой криптографической операции, если аутентификация прошла успешно.

2. Может ли криптообъект храниться в базе данных или генерировать ключ для проверки пользователя?

3. Обратите внимание, что вы не можете привязать аутентификацию к определенному отпечатку пальца или конкретному пользователю. Все, что вы действительно можете сказать, соответствует ли отпечаток пальца / лицо / что угодно, представленное пользователем, любому из тех, которые были зарегистрированы на устройстве. Что касается части базы данных, я не совсем уверен, что вы пытаетесь сделать. Вы можете создать защищенную от отпечатков пальцев пару ключей на устройстве и отправить открытый ключ на свой сервер. Когда сервер хочет получить доказательства того, что пользователь что-то аутентифицировал, он отправляет некоторые случайные данные в приложение. Приложение просит пользователя выполнить биометрическую аутентификацию.

4. (продолжение) который временно разблокирует закрытый ключ из пары ключей и позволяет вам подписывать данные, полученные с сервера. Затем сервер может использовать соответствующий открытый ключ для проверки подписи.

5. Спасибо. Это выглядит многообещающе. Есть ли какие-либо ссылки или документы, которые помогут мне создать «защищенную от отпечатков пальцев пару ключей»?