Разница между дескриптором ключа и идентификатором учетных данных

#webauthn #fido

Вопрос:

В чем разница между a key handle и a credential id для WebAuthn?

Я вижу упоминание об этих двух здесь, в спецификации, в которой говорится, что allowCredentials MAY contain a mixture of both WebAuthn credential IDs and U2F key handles , но я не совсем понимаю разницу.

Ответ №1:

Таким образом, существует практический короткий ответ и глубокий технический длинный ответ.

Итак, короткий ответ: идентификатор удостоверения в U2F называется KeyHandle. Итак, CredID == Ручка с ключом.

Длинный ответ:

Идентификатор CredID идентифицирует уникальную частную/общедоступную пару ключей в аутентификаторе.

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

Обернутая(зашифрованная) пара клавиш называется рукояткой ключа. Для устройств с практически неограниченной памятью, таких как ваш телефон, вы, скорее всего, просто создадите случайно сгенерированный идентификатор учетных данных, который называется KeyID.

Итак. CredID-это стандартизированное имя для уникального идентификатора учетных данных. Это может быть либо ключ(закрытый ключ пользователя), либо идентификатор ключа(случайно сгенерированный идентификатор).

Стоит ли вам беспокоиться об этом? Нет. Мне просто больше нечего делать в 4 утра, потому что у меня бессонница.