Ключ 0 — открытый ключ партнёра
Несжатые байты открытого ключа по стандарту X9.62 (33 байта для P-256). Телефон использует их для установки зашифрованного туннеля.
Стандарты · FIDO CTAP 2.2 hybrid (passkey QR)
Только если ВЫ только что инициировали вход с ключом доступа на устройстве, отображающем QR-код. Если кто-то другой показывает вам этот QR или просит его отсканировать — не делайте этого.
Пароль-ключ (passkey) — это учётные данные, пара открытого и закрытого ключей, привязанная к одному из ваших устройств. Если вы зарегистрировали пароль-ключ для example.com на телефоне, только телефон сможет подписать запрос на вход для example.com.
Это работает нормально, когда вы входите непосредственно с телефона. Но что происходит, когда вам нужно войти с ноутбука, а ключ доступа находится на телефоне? У вас три варианта.
Вариант 3 определён стандартом FIDO CTAP 2.2 «hybrid». QR-код — это начальная точка: он передаёт данные для установки зашифрованного туннеля между ноутбуком и телефоном через Bluetooth и HTTPS-прокси.
URI выглядит так:
FIDO:/0123456789012345678901234567890123456789...
Десятичные цифры — это base10-кодирование CBOR-карты. После декодирования base10 + CBOR вы получаете структуру с ключами 0–5.
Несжатые байты открытого ключа по стандарту X9.62 (33 байта для P-256). Телефон использует их для установки зашифрованного туннеля.
10 байт случайных данных. Идентифицирует конкретный QR-код; BLE-реклама транслирует хэш этих байт для обнаружения устройства.
0 = make-credential (регистрация нового пароля-ключа), 1 = get-assertion (вход в систему), 2 = discoverable-credential.
HTTPS-хост, который проксирует туннель между двумя устройствами, когда прямое соединение по BLE недоступно (например, через NAT). Как правило, это сервер, управляемый производителем, например cable.ua5v.com (Google) или cable.auth.com (Apple/MS).
Секунды с начала эпохи Unix в момент генерации QR-кода. Используется для защиты от повторных атак; просроченный QR-код отклоняется телефоном.
Булево значение. Указывает, хочет ли ноутбук, чтобы телефон участвовал в пассивной доступности через Bluetooth-рекламу (state-assisted mode).
Протокол криптографически надёжен. Bluetooth-проверка близости реальна и является частью спецификации. Ни одно из этих свойств не защищает от атак на основе социальной инженерии.
Через социальную инженерию на этапе инициации. Злоумышленник начинает вход с ключом доступа на вашем аккаунте, QR-код появляется на его экране, и он убеждает вас его отсканировать.
Если вы сканируете, ваш телефон проксирует подпись вашим ключом доступа обратно на устройство злоумышленника, который завершает вход в ваш аккаунт.
Обратите внимание: проверка близости не помогает — злоумышленник находится рядом физически. Содержимое QR-кода не помогает — оно криптографически корректно. Адрес назначения для входа не помогает — это именно тот сайт, для которого у вас есть пароль-ключ. Помогает лишь одно — осознание ситуации: вы никогда не должны сканировать FIDO QR-код, который не сгенерировали сами, нажав «Войти» на своём устройстве.
Когда вы загружаете FIDO QR-код в наш сканер, результат проверки показывает:
cable.ua5v.com от Google, туннельный сервер Apple и т. д.)?Класс угрозы всегда подозрительный — не потому что протокол сломан, а потому что сам факт получения QR-кода от третьего лица (а не созданного только что вашим собственным устройством) является красным флагом.
Безопасно: вы сели за ноутбук, открыли свой банк или почту, нажали «Войти», ноутбук показал QR-код — и вы тут же сканируете его своим телефоном.
Небезопасно: вход инициировал кто угодно, кроме вас. Это включает техподдержку, сотрудников службы безопасности, незнакомых людей, публичные QR-коды на экранах и QR-коды в письмах.
Если вы не уверены, был ли QR-код создан для входа, который инициировали именно вы, — отмените вход на ноутбуке и начните заново самостоятельно.
Загрузите изображение или вставьте FIDO: URI. Результат проверки покажет операцию, туннельный сервер, временну́ю метку и флаги состояния.