Как превратить Raspberry Pi Pico в аппаратный ключ безопасности
Вы когда-нибудь задумывались, сколько стоит ваша цифровая безопасность? Брендовые USB-ключи вроде YubiKey — штука крутая, но цена в 50–70 долларов за кусок пластика с чипом часто заставляет жабу негодовать. Особенно если хочется иметь запасной ключ или просто поэкспериментировать с технологией Passkeys. Недавно я наткнулся на репозиторий pico-fido, который позволяет собрать полноценный аналог такого ключа буквально «на коленке» из обычной Raspberry Pi Pico или ESP32.
Что это за проект
Автор проекта, Пол Энарехос, написал прошивку, которая превращает копеечный микроконтроллер в устройство, совместимое со стандартами FIDO2 и U2F. Если говорить проще: вы втыкаете плату в USB, нажимаете кнопку, и она логинит вас в Google, GitHub или Microsoft без всяких паролей и SMS.
Проект поддерживает современные фишки вроде WebAuthn и Resident Keys (те самые Passkeys), когда логин и секретный ключ хранятся прямо в памяти устройства. Это не просто студенческая поделка — здесь реализована поддержка PIN-кодов, защита от дампа памяти (на подходящем железе) и даже эмуляция OTP-токенов.
Что умеет этот самодельный ключ
Список возможностей в README выглядит солидно. Вот что показалось мне наиболее интересным:
- Полная поддержка CTAP 2.1 и 1.0. Это значит, что ключ будет работать практически с любым сервисом, который поддерживает аппаратную аутентификацию.
- Алгоритмы на любой вкус. Поддерживаются кривые ECDSA и EDDSA (SECP256R1, SECP384R1, SECP521R1, SECP256K1 и Ed25519). Для криптографии используется проверенная библиотека MbedTLS.
- Совместимость с софтом Yubico. Прошивка умеет прикидываться устройствами Yubikey, так что вы сможете использовать официальные приложения вроде Yubico Authenticator для генерации одноразовых кодов (TOTP/HOTP).
- Резервное копирование. Есть поддержка бэкапа через фразу из 24 слов. Если вы потеряете железку, доступ можно будет восстановить, что для самодельных решений — огромный плюс.
Вопрос безопасности: RP2040 против RP2350
Тут стоит сделать важную оговорку. Если вы возьмете самую обычную Raspberry Pi Pico на чипе RP2040, вы получите рабочий ключ, но с нюансом. У этого чипа нет аппаратного защищенного хранилища. Если кто-то украдет ваш ключ и решит его «расковырять», он сможет выгрузить содержимое флеш-памяти и достать секретные ключи.
Для серьезных задач автор рекомендует использовать новые RP2350 или ESP32-S3. У них есть Secure Boot и OTP-память (One Time Programming), куда записывается мастер-ключ. После этого прошивка шифрует все данные, и просто так их уже не вытащить.
Как это завести
Процесс сборки стандартный для экосистемы Pico. Вам понадобится установленный Pico SDK и тулчейн для C.
git clone https://github.com/polhenarejos/pico-fido
git submodule update --init --recursive
cd pico-fido
mkdir build
cd build
cmake .. -DPICO_BOARD=pico
make
После компиляции вы получите файл pico_fido.uf2. Дальше всё просто: зажимаете кнопку BOOTSEL на плате, подключаете её к компьютеру и закидываете файл на появившийся диск.
Интересная деталь: автор предусмотрел индикацию состояний через встроенный светодиод. По тому, как мигает плата, можно понять, ждет ли она нажатия кнопки для подтверждения входа или сейчас занята вычислениями.
Так выглядит запрос на физическое подтверждение действия.
Практическая польза
Зачем это нужно, если можно купить готовое?
Во-первых, это отличный способ разобраться, как работают протоколы аутентификации изнутри. Во-вторых, это дешево. Вы можете накупить пачку ESP32-S3 и раздать их коллегам в отделе как дополнительный фактор защиты для внутренних сервисов.
Кстати, проект поддерживает кастомизацию LED и даже позволяет менять VID/PID устройства, чтобы оно определялось системой как NitroKey или YubiKey. Это полезно, если какой-то специфичный софт отказывается работать с «неизвестным» USB-устройством.
Pico-fido — это крепкий Open Source проект для тех, кто любит контролировать свои ключи безопасности. Он активно развивается, поддерживает свежие стандарты и дает гибкость, которой нет у закрытых коммерческих решений.
Если у вас в столе валяется без дела Raspberry Pi Pico, попробуйте прошить её ради интереса. Возможно, именно этот проект станет вашим первым шагом к отказу от небезопасных паролей в пользу Passkeys. Только помните: для реальной защиты критически важных аккаунтов лучше все-таки раздобыть плату с поддержкой Secure Boot.
