Kryptocenter – miejsce, gdzie znajdziesz wszystko, czego potrzebujesz, by zrozumieć kryptowaluty

Krypto Center
Portfele (Wallets)

Air‑gapped portfel z animowanymi QR (BC‑UR) i PSBT/EIP‑712: budowa odpornego cold storage multi‑chain krok po kroku

Air‑gapped portfel z animowanymi QR (BC‑UR) i PSBT/EIP‑712: budowa odpornego cold storage multi‑chain krok po kroku

Czy da się bezpiecznie podpisywać transakcje Bitcoin (PSBT) i Ethereum (EIP‑712) bez USB, Bluetooth i NFC – wyłącznie kamerą? Tak. Architektura air‑gapped z animowanymi kodami QR (BC‑UR) minimalizuje wektory ataku, a jednocześnie pozwala działać w DeFi, NFT oraz z portfelami kontraktowymi (ERC‑4337). Ten przewodnik pokazuje praktyczną, mało opisywaną w polskim internecie metodę budowy wielosieciowego cold storage na bazie zwykłego, odizolowanego telefonu.

Dlaczego QR zamiast USB/NFC?

Odcięcie kanałów radiowych i przewodowych dramatycznie ogranicza powierzchnię ataku. Kamera→QR→kamera to kontrolowany, jednokierunkowy nośnik danych: żadnych sterowników, żadnych stosów protokołów, żadnego zasilania z obcego hosta. To podejście unikalnie łączy użyteczność (działa z giełdami, DeFi, NFT) z modelem zagrożeń dla długoterminowego przechowywania.

  • Brak podłączania: zero USB, zero Bluetooth, zero NFC.
  • Kontrolowany przepływ: tylko to, co zmieści się w ramkach UR/QR.
  • Interoperacyjność: PSBT dla Bitcoina, EIP‑1559/EIP‑712 dla EVM, a nawet UserOperation (ERC‑4337) w formacie QR.

Standardy, które musisz znać (i zrozumieć)

PSBT v2 (BIP‑174/BIP‑370) – podpisy dla UTXO on‑air

PSBT to przenośny format transakcji do podpisu. W modelu air‑gapped PSBT jest kodowany jako UR:BYTES i wyświetlany jako QR. Offline’owy signer skanuje, podpisuje i zwraca finalized PSBT albo surowy tx do broadcastu.

BC‑UR (Uniform Resources) i Bytewords – kody odporne na błędy

UR to kontener binarny zaprojektowany dla urządzeń z kamerą. Wersja animated QR dzieli duże obiekty na sekwencje ramek z korekcją błędów typu fountain. Działa szybko nawet przy słabym świetle i ekranach 60 Hz.

EIP‑712 i EIP‑1559 dla EVM

EIP‑712 standaryzuje typed data – krytyczne dla podpisów w DeFi (permit2, off‑chain orders, DAO). EIP‑1559 to parametry transakcji (maxFee, maxPriorityFee). Oba formatuje się do UR i przesyła QR‑ami podobnie jak PSBT.

ERC‑4337 (Account Abstraction) – podpisy dla UserOperation

Portfele kontraktowe (4337) używają UserOperation, które też można podpisać offline i przekazać do bundlera kodem QR. To rzadko opisywany, ale rosnący przypadek użycia dla air‑gap.

BIP‑39/BIP‑85, SLIP‑39 i Miniscript/Taproot (BIP‑86)

  • BIP‑39: mnemonik i passphrase (25. „słowo”).
  • BIP‑85: deterministyczne, niezależne pochodne seedy do apletów (np. oddzielne seedy dla BTC i EVM z jednego „roota”).
  • SLIP‑39/SSKR: dzielone sekrety (Shamir) dla recovery z wieloosobowym progiem.
  • BIP‑86: standardowy Taproot single‑sig; z Miniscript można dołożyć ścieżki recovery (np. time‑lock + 2‑z‑3).

Architektura referencyjna: co dokładnie budujemy

  • Sejf offline: stary smartfon z czystym systemem, tryb samolotowy, wyłączone moduły (Wi‑Fi/Bluetooth/NFC), bez kont Google/Apple.
  • Oprogramowanie offline: aplikacja podpisująca open‑source obsługująca PSBT, EVM (EIP‑712/EIP‑1559) i QR/UR. Instalacja z USB‑OTG/SD po weryfikacji sum SHA‑256 i podpisu PGP.
  • Urządzenie online: komputer/telefon z portfelami watch‑only, DEX‑ami, dApp‑ami i bundlerem 4337. Brak kluczy prywatnych.
  • Most danych: wyłącznie kamera i animowane QR (UR). Żadnych kabli.

Krok po kroku: od zera do transakcji

1. Twardy reset i higiena urządzenia

  1. Przywróć ustawienia fabryczne, zaktualizuj system (ostatni raz online), wyłącz wszystkie radios, usuń konta, brak karty SIM.
  2. Zablokuj instalacje z nieznanych źródeł po wgraniu aplikacji (po etapie 2). Ustaw PIN + długi hasło‑boot dla pełnego szyfrowania.

2. Instalacja signera offline

  1. Pobierz APK/zip na komputerze, zweryfikuj PGP i SHA‑256.
  2. Przenieś plik na kartę SD/OTG, zainstaluj na offline telefonie, wyłącz debugowanie USB.

3. Generacja i podział sekretów

  1. Wygeneruj seed BIP‑39 (opcjonalnie z „diceware” dla pewności entropy). Dodaj passphrase.
  2. Utwórz odrębne seedy BIP‑85 dla: BTC Taproot, EVM, ew. PoS (Cosmos/Polkadot).
  3. Wykonaj SLIP‑39/SSKR: np. 2‑z‑3 dla dom/rekwizytorium/sejf bankowy. Testuj rekombinację zanim schowasz.

4. Polityka kluczy i adresów

  • Bitcoin: BIP‑86 (Taproot single‑sig) do codziennych wypłat + Miniscript recovery (np. 2‑z‑3 po 90 dniach) dla skarbca.
  • Ethereum/EVM: EOA jako signer dla portfela kontraktowego (ERC‑4337) z social recovery i session keys na małe limity.

5. Konfiguracja watch‑only

  1. Wyeksportuj xpub/zpub tr(…) do portfela online przez QR (UR:CRYPTO‑ACCOUNT).
  2. Dla EVM: wyświetl i zeskanuj adresy, dodaj je do portfela online (np. wtyczka przeglądarkowa) i do dashboardu DeFi.

6. Podpis Bitcoin: PSBT → UR → podpis → broadcast

  1. Utwórz PSBT online (coin control, fee rate, change policy). Zakoduj jako UR i pokazuj animowany QR.
  2. Offline telefon skanuje, weryfikuje sumy wejść/wyjść i adresy (whitelist), podpisuje i wyświetla z powrotem UR z podpisem.
  3. Online urządzenie skanuje podpisany UR, finalizuje i rozgłasza tx.

7. Podpis EVM: EIP‑1559/EIP‑712 i 4337

  • Transakcja: dApp generuje payload (to, value, data, chainId, maxFee). Koder UR → animowany QR → podpis offline → UR z podpisem → wysyłka on‑chain.
  • Typed data (DeFi/NFT): wyświetl offline pełne domain/primaryType/message, potwierdź enumerację pól (np. permit2: spender, value, deadline), podpisz.
  • ERC‑4337: bundler przyjmuje UserOperation + podpis EOA. Ten sam rytuał QR.

Kontrole bezpieczeństwa, które rzadko trafiają do tutoriali

  • Weryfikacja obrazu APK: sprawdzaj klucze PGP developera, nie tylko hash na stronie.
  • Lista dozwolonych adresów w signerze: offline ekran powinien pokazywać czytelne ENS/CAIP‑10 lub pełne checksumy.
  • Tryb „duress”: zaszyfrowane konto przymusowe z niskim saldem i inną passphrase.
  • Faraday pouch dla telefonu‑sejfu, by wykluczyć przypadkowe emisje.
  • Oddzielne BIP‑85 dla środowisk testowych, by nie „wypalić” produkcyjnego xpub w analityce dApp.

Tabela decyzyjna: co wybrać i dlaczego

Element Rekomendacja Powód Ryzyko/Trade‑off
Format wymiany BC‑UR (animated QR) Szybki, odporny, szeroko wspierany Wymaga dobrej kamery/ekranu
BTC skarbiec Taproot + Miniscript Elastyczne recovery, niższe fee Większa złożoność konfiguracji
EVM codzienne 4337 + session keys Limity i autoryzacje granularne Zależność od bundlera/paymastera
Backup SLIP‑39/SSKR 2‑z‑3 Tolerancja utraty jednego udziału Ryzyko kompr. przy złym podziale
Dystrybucja seedów BIP‑85 sub‑seedy Izolacja szkód, porządek Utrata „root” = utrata wszystkiego

Checklist: test pożarowy w 30 minut

  1. Adresy: wygeneruj 3 adresy BTC i EVM, zapisz checksummy.
  2. Mikro‑przelewy: wyślij 20 000 sat i 0,001 ETH, odbiór + change zgodne z planem.
  3. EIP‑712: podpisz permit2 z małym limitem i krótkim deadline.
  4. Recovery: odtwórz z 2‑z‑3 udziałów na innym urządzeniu offline, porównaj xpub/adresy.
  5. Duress: przetestuj konto przymusowe – ma działać, ale nie „widzieć” głównego skarbca.

Integracja z DeFi, NFT i DAO bez utraty modelu air‑gap

  • Allowance hygiene: używaj permit2, krótkich limitów i auto‑revoków po wykonaniu zadań.
  • Session keys: kontrakt 4337 z kluczami jednorazowymi dla bota/arbitrażu, ograniczonymi do wybranych metod i kwot.
  • Głosowania DAO: podpisuj off‑chain (EIP‑712) i publikuj z urządzenia online.

Studium przypadku: rodzinny „mini‑fundusz” w Polsce

  • Profil: 3 osoby, horyzont 5+ lat, ekspozycja BTC/ETH/USDC, sporadyczne DeFi.
  • Setup: 1 telefon air‑gapped (seed root), BIP‑85 dla BTC/EVM, SLIP‑39 2‑z‑3 (dom, kancelaria, skrytka), Taproot skarbiec + 4337 z session keys.
  • Operacje: 2 podpisy BTC/mies., 4 podpisy EIP‑712/kwartał. Czas podpisu QR: 10–25 s/operację.
  • Incydenty: utrata jednego udziału – bez wpływu; odtworzenie trwało 14 min.

Najczęstsze błędy (i jak ich uniknąć)

  • Seed na zdjęciu: nigdy. Używaj metalowego backupu i ołówka grafitowego na papierze technicznym.
  • Jedna passphrase do wszystkiego: separuj trezory (BIP‑85) i środowiska.
  • Brak weryfikacji pól EIP‑712: offline ekran musi pokazać każde pole; odrzuć „dziurawe” komunikaty.
  • Stałe allowances: ograniczaj i cofaj po użyciu.

FAQ techniczne

  • Czy QR „zaraża” offline urządzenie? Nie. To pasywne piksele – ryzyko dotyczy tylko socjotechniki (np. mylne pola EIP‑712), nie zdalnego kodu.
  • Co z dużymi PSBT? UR je strumieniuje. Jeśli ramki gubią się, zmniejsz gęstość QR lub jasność ekranu.
  • Jak sprawdzić integralność offline APK? Porównaj hash z repo, zweryfikuj podpis PGP developera, zachowaj logi w notatniku papierowym.

Pro / Contra w skrócie

Aspekt Pro Contra
Bezpieczeństwo Brak interfejsów I/O, mniejsza powierzchnia ataku Ryzyko błędu operacyjnego użytkownika
Kompatybilność PSBT, EIP‑712, 4337 przez QR Zależność od wsparcia UR po obu stronach
Szybkość Podpis w kilkanaście sekund Wielkie payloady wolniejsze niż USB
Koszt Wykorzystanie starego telefonu Potrzebny czas na procedury i testy

Wnioski i następne kroki

Air‑gapped podpisy QR/UR to rzadko omawiana w polskich mediach krypto technika, która łączy praktyczność DeFi/NFT z bezpieczeństwem cold storage. Klucz leży w procedurach: weryfikacja payloadu na offline ekranie, separacja seedów (BIP‑85), testy recovery i krótkie uprawnienia w DeFi.

  • Zbuduj środowisko testowe na małych kwotach.
  • Przeprowadź „fire drill” recovery raz na kwartał.
  • Wdróż 4337 z session keys do operacji dziennych.

CTA: Jeśli prowadzisz fundusz rodzinny lub zarządzasz trezorem firmowym, zaplanuj 2‑godzinną sesję wdrożeniową: instalacja signera, konfiguracja UR/PSBT/EIP‑712, testy odtworzeniowe i symulacja ataku socjotechnicznego.