Mały i natywny: C++, bez środowiska JavaScript, od stacji roboczej po Raspberry Pi
Portfel to program bezpieczeństwa. Powinien być na tyle mały, żeby dało się go audytować, na tyle szybki, żeby można było o nim zapomnieć, i wolny od ruchomych części, które nie są jego własne.

Spis treści
C++ i Qt
AirNox Wallet jest napisany w C++ z użyciem frameworku Qt. Kryptografia, kod obsługi blockchainów, budowanie transakcji i kontrola żądań – wszystko to znajduje się w jednym natywnym rdzeniu, kompilowanym dla każdej platformy. Interfejs też jest natywny. Nie ma wbudowanej przeglądarki, która renderowałaby portfel, ani silnika skryptów, który by go uruchamiał.
Ma to trzy odczuwalne konsekwencje. Portfel uruchamia się w mgnieniu oka. W spoczynku pracuje cicho, a jego zużycie zasobów zostawia komputer innym zadaniom. I nie ma pod nim środowiska uruchomieniowego, które samo się aktualizuje, ładuje pakiety albo wykonuje kod pobrany nie wiadomo skąd.
Czego nie ma w środku
Bez środowiska uruchomieniowego JavaScript. Duża część włamań do portfeli przychodzi przez ekosystemy pakietów i wstrzykiwanie skryptów. Portfel bez silnika skryptów nie jest dla nich celem.
Bez web view. Interfejs rysuje biblioteka graficzna, a nie komponent przeglądarki. Nie ma strony, do której można by coś wstrzyknąć.
Bez telemetrii, analityki i trackerów. Portfel komunikuje się z węzłami blockchainów oraz z dostawcami swapów i mostów, z których postanowisz korzystać. Z nami się nie komunikuje. Nic nie wysyła danych do producenta i nie trzeba zakładać konta.

Platformy
Aplikacja desktopowa działa w systemach Windows, Linux i macOS, jako natywna kompilacja dla każdego z nich. Ten sam kod działa na sprzęcie klasy Raspberry Pi, dzięki czemu AirNox sprawdza się w instalacjach wbudowanych: w terminalu kantoru, w kiosku, na stanowisku do podpisywania na zapleczu. Mała płytka z ekranem, czytnik NFC na USB i portfel tworzą kompletny punkt obsługi gotowy do pracy z air gapem, a klucze są na telefonie, który przykłada się do czytnika.
Jeden rdzeń do podpisywania
Aplikacja na telefonie i aplikacja desktopowa mają wspólny rdzeń. Kod, który wyprowadza klucze, buduje transakcję i dekoduje ją do wyświetlenia, jest tym samym kodem na obu urządzeniach, skompilowanym dla każdego z nich. Do audytu jest jedna implementacja każdego blockchainu, a nie dwie, które muszą się ze sobą zgadzać, a poprawka po jednej stronie jest poprawką po obu.
Dlaczego to ma znaczenie
„Mały i natywny” to nie kwestia gustu. Każda zależność to miejsce, w którym cudzy błąd staje się twoim, a każde środowisko uruchomieniowe to powierzchnia ataku. Połączenie sieciowe, które nie jest absolutnie konieczne, zawsze czymś przecieka. Portfel, który jest jednym natywnym programem i rozmawia tylko z węzłami, które mu wskażesz, to portfel, który da się zrozumieć. Tego standardu trzymamy się w całym produkcie, od urządzenia podpisującego (signer) na telefonie po okno na twoim biurku.
Cała seria
- Załóż, że komputer jest przejęty
- Mass Adoption Security: urządzeniem podpisującym jest telefon, który już masz
- Trzy drogi przez air gap: kody QR, Bluetooth LE i NFC
- Niewidzialny w eterze: urządzenie podpisujące, którego nie wykryje żaden skaner
- Transport nigdy nie jest zaufany
- Co pokazuje ci telefon: analiza transakcji na urządzeniu podpisującym
- Telefon prowadzi własny zapis
- Sejf na twoim komputerze: Argon2id i profil odporny na zgadywanie
- dAppy bez portfela w przeglądarce
- Serwer MCP z zasadami: agenci AI w granicach limitów
- Jeden chroniony portfel do wszystkiego
- Mały i natywny: C++, bez środowiska JavaScript, od stacji roboczej po Raspberry Pi