>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
Rust

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.

RS-Key operation diagram

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ę.

Board options for RS-Key

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 przez gpg. 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:

  1. Pobierz plik rs-key-<версия>-default.uf2 z zakładki releases w repozytorium.
  2. Przytrzymaj przycisk BOOT na płytce i podłącz ją do portu USB komputera. W systemie pojawi się dysk o nazwie RP2350.
  3. Skopiuj plik .uf2 na ten dysk. Płytka natychmiast uruchomi się w trybie klucza bezpieczeństwa.
  4. 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.

Screen operation demo

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.

PicoForge interface

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