Jak zamienić płytkę za 5 dolarów w sprzętowy klucz bezpieczeństwa
Sprzętowe klucze takie jak YubiKey kosztują od 50 do 100 dolarów, a dla pewności zwykle kupuje się dwa. Jeśli chcesz tylko zabezpieczyć domowy serwer, podpisywać commity Git za pomocą modułu sprzętowego lub wypróbować logowanie bez hasła przez Passkeys, cena boli. Ostatnio natknąłem się na projekt o nazwie RS-Key, który rozwiązuje ten problem w zaskakująco elegancki sposób.
Projekt zamienia każdą dostępną płytkę opartą na mikrokontrolerze Raspberry Pi RP2350 w pełni funkcjonalny token USB. Wszystko, czego potrzebujesz, to pobrać gotowy plik binarny i wrzucić go na płytkę jak na zwykły pendrive. Bez lutowania, programatorów czy kompilowania ze źródeł.
Co jest w środku firmware'u
RS-Key jest napisany w Rust bez biblioteki standardowej (no_std) i emuluje złożone urządzenie USB. Gdy podłączysz płytkę do komputera, system widzi kilka interfejsów naraz: FIDO HID do uwierzytelniania w internecie, kartę inteligentną CCID oraz klawiaturę.

Oto co potrafi ten niewielki firmware:
- FIDO2 i WebAuthn. Obsługuje logowanie przez Passkey w przeglądarkach, uwierzytelnianie dwuskładnikowe oraz sprzętowe klucze SSH jak
ed25519-sk. Potwierdzenie fizycznej obecności działa przez standardowy przycisk BOOT na płytce. - Karta inteligentna OpenPGP 3.4. Przechowuje klucze do podpisywania commitów w
git, szyfrowania i deszyfrowania plików przezgpg. Obsługuje RSA i krzywe eliptyczne. - PIV i OATH. Implementuje standardy kart inteligentnych X.509 i generuje jednorazowe kody TOTP i HOTP. Przy specjalnej kompilacji, która podszywa się pod VID/PID, urządzenie jest rozpoznawane przez standardowe narzędzia Yubico jak
ykman. - Kopia zapasowa seeda. Klucz główny FIDO można wyeksportować jako frazę mnemoniczą BIP-39 lub SLIP-39, aby przywrócić dostęp w razie utraty płytki.
- Eksperymentalna kryptografia postkwantowa. Autor wbudował schematy ML-DSA-44 i ML-DSA-65, optymalizując użycie stosu dla pamięci RP2350.
Jak zacząć w kilka minut
Pierwsze uruchomienie jest proste. Weź dowolną płytkę opartą na RP2350 (np. Waveshare RP2350-One lub Seeed XIAO RP2350) i postępuj zgodnie z czterema krokami:
- Pobierz plik
rs-key-<версия>-default.uf2z zakładki releases w repozytorium. - Przytrzymaj przycisk BOOT na płytce i podłącz ją do portu USB komputera. W systemie pojawi się dysk o nazwie
RP2350. - Skopiuj plik
.uf2na ten dysk. Płytka natychmiast uruchomi się w trybie klucza bezpieczeństwa. - Otwórz stronę testową webauthn.io, spróbuj zarejestrować nowy klucz, ustaw kod PIN i naciśnij przycisk BOOT, aby potwierdzić dotyk.
Dla fanów urządzeń z ekranem jest osobna kompilacja dla płytki Waveshare RP2350-Touch-LCD. W tym przypadku potwierdzenie logowania i wprowadzenie PIN-u odbywają się bezpośrednio na wyświetlaczu urządzenia.

Konfiguracja i oprogramowanie hosta
Do zarządzania kluczem z terminala repozytorium zawiera narzędzie w Pythonie rsk oraz panel rsk-tui. Pozwalają one przeglądać status urządzenia, zmieniać ustawienia LED, generować kopie zapasowe i zarządzać slotami.
Jeśli konsola nie jest dla ciebie, projekt zewnętrzny PicoForge zapewnia pełny interfejs graficzny do konfiguracji wszystkich modułów RS-Key.

Dla programistów, którzy nie mają jeszcze chipa RP2350 pod ręką, w folderze tools/emu znajduje się emulator. Uruchamia logikę firmware'u bezpośrednio na PC przez gniazda lub wirtualny USB w Linuksie (USB/IP), co pomaga testować integracje bez fizycznego sprzętu.
Ograniczenia i model zagrożeń
Autor projektu uczciwie ostrzega w dokumentacji: RP2350 to mikrokontroler ogólnego przeznaczenia, nie certyfikowany chip bezpieczeństwa (Secure Element).
Jeśli twój potencjalny przeciwnik ma laboratorium z sprzętem do delayeringu krzemu, probingu szyny lub injectionu błędów zasilania, chip tego nie wytrzyma. RS-Key nie ochroni przed dekapsulacją chipów na poziomie laboratoryjnym.
To powiedziawszy, chip RP2350 ma OTP (bezpieczniki programowalne jednorazowo) i Secure Boot. Repozytorium dokumentuje szczegółowy proces twardego blokowania firmware'u, gdzie klucz główny jest wypalany w OTP, a boot dozwolony tylko dla binariów podpisanych przez ciebie. To sprawia, że prosty zrzut pamięci flash jest bezużyteczny w przypadku kradzieży klucza, ale operacja wypalenia bezpieczników jest nieodwracalna.
Komu projekt będzie przydatny
RS-Key świetnie sprawdza się w codziennych zadaniach programisty:
- Podpisuj commity i tagi Git bez ryzyka wycieku klucza prywatnego z dysku laptopa.
- Uzyskuj dostęp do serwerów przez SSH z sprzętowym potwierdzeniem przez
ed25519-sk. - Drugi czynnik dla domowych laboratoriów, kont GitHub lub poczty e-mail.
- Poznaj, jak działają CTAP2, WebAuthn i protokoły kart inteligentnych na prawdziwym kodzie Rust.
Jeśli potrzebujesz niedrogiego tokena do pracy lub konfiguracji domowego labu, połączenie taniej płytki RP2350 z firmwarem RS-Key oferuje solidną wartość za każdą wydaną złotówkę. Powierzanie mu korporacyjnych tajemnic w obliczu zagrożeń na poziomie państwowym nie jest zalecane, ale jako praktyczne narzędzie programisty projekt zdecydowanie zasługuje na miejsce na twoim breloku z kluczami.
Powiązane projekty