Загрузка данных


Полная выжимка по Raspberry Pi Pico / FIDO2 / OpenAI Advanced Account Security / Daybreak
Дата: 7 октября 2026

1. Цель
Нужно пройти OpenAI Advanced Account Security / Daybreak.
На странице auth.openai.com/advanced-account-security/secure-methods OpenAI требует минимум один подходящий аппаратный FIDO2 security key плюс второй способ входа.

Были успешно добавлены программные passkey через:
- Apple Passwords
- 1Password

Но они не закрывали требование hardware key.

2. Попытка с телефоном
QR-сценарий «использовать смартфон или планшет» успешно создавал обычные passkeys.
NFC в iPhone не является заменой физическому NFC FIDO2 key в сценарии «аппаратный ключ».

3. Решение сделать собственный FIDO2 key
Используется обычный Raspberry Pi Pico на RP2040.
Не Pico 2 / RP2350.

4. Резервная копия и PicoSafe
Перед прошивкой была сделана утилита PicoSafe для macOS.

Она умеет через picotool:
- считать полный flash Pico в .uf2;
- сохранить SHA-256 и информацию;
- скачать официальный Pico-FIDO;
- прошить Pico;
- восстановить прежнюю прошивку.

Резервная копия текущей прошивки Pico была сохранена до эксперимента.

5. Установленная прошивка
На Pico установлена официальная прошивка:

Pico FIDO 7.6

Файл:
pico_fido_pico-7.6.uf2

Использовался проект:
polhenarejos/pico-fido

Никакие идентификаторы Yubico на этом этапе не подменялись.

6. Определение устройства в macOS
После прошивки macOS увидел устройство примерно как:

Pol Henarejos / Pico Key

Chrome также показывал уведомление:

«Обнаружено устройство \"Pico Key\"»

macOS запускал «Ассистент настройки клавиатуры».
Это связано с дополнительным HID/OTP-интерфейсом прошивки.
Окно можно просто закрыть через «Завершить».

7. Обычный WebAuthn-тест
На webauthn.io:
- Register прошёл;
- ключ реагировал миганием;
- Pico был выбран именно как USB/security key;
- затем Authenticate прошёл;
- сайт показал: You're logged in!

Вывод:
Pico реально работает как WebAuthn/FIDO2 authenticator.

8. Строгий WebAuthn-тест
На WebAuthn.io были выставлены параметры:

User Verification = Required
Attachment = Cross-Platform
Discoverable Credential = Required
Attestation = Direct

Chrome запросил FIDO2 PIN электронного ключа.

PIN был введён успешно.

Регистрация завершилась Success.

Затем Authenticate тоже завершился успешно:
You're logged in!

Таким образом проверены:

CTAP2 / FIDO2 — OK
PIN / User Verification — OK
Cross-platform authenticator — OK
Resident / discoverable credential — OK
Direct attestation request — OK
Registration — OK
Authentication — OK

9. Проверка в OpenAI
На странице Advanced Account Security выбирался аппаратный USB security key.

Первые попытки иногда заканчивались сообщением:

«Нам не удалось выполнить запрос ключа доступа из-за непредвиденной ошибки»

После чистой попытки через Safari Pico всё-таки зарегистрировался в аккаунте OpenAI.

10. Как OpenAI зарегистрировал Pico
В списке OpenAI он появился отдельной записью примерно как:

Passkey — Привязан к устройству

То есть OpenAI успешно принял WebAuthn credential от Pico.

11. Главный результат
Кнопка «Продолжить» осталась неактивной.

OpenAI продолжал показывать сообщение:

«Чтобы продолжить, добавьте аппаратный ключ»

Следовательно:

OpenAI видит Pico как рабочий device-bound passkey,
но не классифицирует его как qualifying hardware security key,
необходимый для этой конкретной проверки Daybreak / Advanced Security.

12. Что это означает технически
Pico уже прошёл строгий WebAuthn/FIDO2 тест.

Следовательно, проблема практически наверняка:
- не в USB;
- не в PIN;
- не в CTAP2;
- не в User Verification;
- не в resident credentials;
- не в обычной регистрации credential;
- не в обычной WebAuthn-аутентификации.

Проблема, вероятнее всего, в дополнительной политике классификации / доверия OpenAI к конкретному authenticator.

13. Что имеет смысл исследовать дальше
Для лабораторного анализа можно изучить, что именно Pico отдаёт браузеру:

- текущий USB VID/PID;
- AAGUID authenticator;
- формат и содержимое attestation object;
- тип attestation: none / packed / self-attestation и т. п.;
- наличие или отсутствие attestation certificate;
- CTAP2 getInfo;
- список capabilities и options;
- discoverable credentials и UV;
- отличие ответов Pico от ответов коммерческого FIDO2 key.

Также можно безопасно собирать Pico-FIDO с собственным тестовым VID/PID или идентификаторами, которые принадлежат пользователю, для исследования USB enumeration.

14. Важная граница
Не следует маскировать Pico под YubiKey или копировать VID/PID/AAGUID/attestation Yubico ради обхода OpenAI security gate.

Это уже было бы не обычным тестированием собственного FIDO2-ключа, а подменой доверенного аппаратного аутентификатора для прохождения security-проверки сервиса.

Кроме того, одного VID всё равно, скорее всего, недостаточно:
сервис может учитывать AAGUID, attestation certificate chain и metadata конкретного authenticator.

15. Самое полезное следующее направление
Самое интересное техническое направление — не VID.

Нужно сначала сравнить:

- attestation;
- AAGUID;
- CTAP2 getInfo;
- hardware / software classification;
- metadata;
- device-bound / hardware-key classification

между Pico-FIDO и настоящим коммерческим FIDO2 security key.

Это с высокой вероятностью объяснит, почему OpenAI:
- принимает Pico как Passkey — привязан к устройству,
но
- не засчитывает его как hardware-key eligibility для Daybreak.

Итог:
Pico-FIDO на обычном Raspberry Pi Pico RP2040 успешно работает как полноценный WebAuthn/FIDO2 authenticator и проходит строгие тесты с PIN, User Verification Required, Cross-Platform, Discoverable Credential Required и Direct Attestation.
OpenAI также принимает его credential, но классифицирует только как device-bound passkey, а не как qualifying hardware security key для Daybreak.