Air‑gap 2.0: Portfel z „optyczną diodą QR” do DeFi i NFT — podpisy jednokierunkowe bez kabli, BT i USB
Air‑gap 2.0: Portfel z „optyczną diodą QR” do DeFi i NFT — podpisy jednokierunkowe bez kabli, BT i USB
Kategorie: Bezpieczeństwo • Portfele (Wallets) • DeFi • Web3 & DAO
Wprowadzenie: Jak ograniczyć ryzyko drenażu portfela, nie rezygnując z DeFi?
Fale ataków wallet drainer, fałszywe podpisy EIP‑712 i złośliwe rozszerzenia przeglądarek pokazują, że „gorące” portfele to ryzyko systemowe. Coraz więcej traderów i DAO pyta: czy da się podpisywać transakcje bez fizycznego podłączania czegokolwiek do komputera, a jednocześnie widzieć dokładnie to, co podpisujemy? Odpowiedzią jest niszowy, ale wysoce skuteczny wzorzec optycznej diody QR — architektura, w której dane tylko wychodzą z urządzenia podpisującego, a kanał powrotny jest fizycznie niemożliwy.
Na czym polega „optyczna dioda QR”?
Optyczna dioda to mechanizm jednokierunkowego przepływu danych: urządzenie podpisujące jest odizolowane od sieci i komputerów, a podpisy (np. PSBT, raw tx, EIP‑191/EIP‑712) są przekazywane do świata online wyłącznie w formie kodów QR wyświetlanych na ekranie (np. e‑paper) lub matrycy LED. Urządzenie nigdy nie przyjmuje sygnału zwrotnego przewodowo lub radiowo. Wejście transakcji odbywa się przez odczyt QR kamerą lub skanerem, ale wyjście pozostaje jednokierunkowe.
- Wejście (IN): Transakcja/wiadomość do podpisu w QR (z komputera/telefonu) — odczytana przez kamerę w urządzeniu offline.
- Wyjście (OUT): Podpis/PSBT/SignedBlob wyświetlony jako QR na urządzeniu offline — zeskanowany przez komputer online.
- Brak kanału zwrotnego: Zero USB, zero BT, zero Wi‑Fi, zero NFC. Tylko światło → minimalizacja powierzchni ataku.
Czym to się różni od „zwykłego” hardware walleta?
Wiele portfeli sprzętowych obsługuje QR, ale często mają dodatkowe interfejsy (USB/BLE), firmware o szerokim zakresie funkcji, a czasem złożone stosy sieciowe. Dioda optyczna wymusza prostotę: zero sterowników, zero stosów sieciowych, minimalny parser QR, jasna ścieżka audytu wyświetlanego payloadu.
Architektura referencyjna Air‑gap 2.0
- Signer offline: Niewielka płytka (np. MCU/SoC z TrustZone lub RISC‑V), bez radia, z wlutowaną pamięcią na klucze (SE/Secure Element opcjonalnie), kamera 2D do QR, ekran e‑ink 2.9–4.2”.
- Parser: Minimalistyczna biblioteka QR + dekoder formatów (PSBT, UR/BC‑UR, SLIP‑39 dla recovery, EIP‑712/EIP‑191).
- UI bezpieczeństwa: Fizyczne przyciski potwierdzenia, weryfikacja pól (adres, chainId, nonce, maxFeePerGas, token, Permit2, spender, deadline), tryb „Sign Only”.
- Wyjście jednokierunkowe: Generowanie animowanych QR (UR multipart) na e‑ink/LED. Brak jakichkolwiek sterowników wejścia od komputera.
- Tryby: Bitcoin (PSBT), Ethereum (EIP‑1559, EIP‑712), EVM‑L2, Cosmos (ADR‑36), Solana (Message), z szablonami walidacji.
Dlaczego to działa: trzy filary bezpieczeństwa
- Separacja fizyczna (air‑gap) — brak połączeń przewodowych i radiowych usuwa całe klasy ataków (HID/USB, sterowniki, BLE, Wi‑Fi, DMA).
- Jednokierunkowy kanał wyjścia — komputer nie ma możliwości wysłania „odpowiedzi” do signera poza obrazem QR, dlatego exfiltracja kluczy nie ma vektora elektronicznego.
- Minimalny TCB — prosty firmware, małe biblioteki, czytelne ekrany pól ograniczają błędy implementacyjne i social engineering.
Case: DeFi bez strachu przed „podpisem na ślepo”
Najwięcej strat w DeFi pochodzi z nieprzejrzystych podpisów (np. nieograniczone approve/permit dla złośliwego kontraktu). W wariancie „optycznej diody” signer wymusza podgląd kluczowych pól na e‑ink:
- Spender: pełny adres i ENS, ostrzeżenia dla nieznanych kontraktów, checksum.
- Scope: token symbol, amount/allowance, deadline, chainId.
- Fee policy: limity maxFeePerGas, gasLimit; dla L2 — parametry rollupu.
Użytkownik widzi to na osobnym, odizolowanym ekranie — nie w przeglądarce, której nie ufa.
DIY: prototyp portfela z optyczną diodą QR
Lista elementów (orientacyjnie)
| Element | Przykład | Szac. koszt |
|---|---|---|
| Mikrokontroler/SoC | STM32/ESP32‑S3 (BT wyłączony sprzętowo), RISC‑V MCU | 10–20 € |
| Ekran | E‑ink 2.9–4.2” z kontrolerem SPI | 15–35 € |
| Kamera QR | Moduł 2D QR (np. OV2640) lub gotowy skaner UART | 10–30 € |
| Secure Element | ATECC608B/SE050 (opcjonalnie) | 3–8 € |
| Przyciski/obudowa | 2× tact switch, obudowa ABS | 5–15 € |
| Zasilanie | Li‑Po 500–1000 mAh + ładowarka | 8–12 € |
Kroki montażu
- Hardware hardening: usuń/nie montuj modułów radiowych, zablokuj piny UART/USB w trybie produkcyjnym (RDP/secure boot), ekranuj kamerę i taśmy.
- Firmware minimalny: wgraj tylko stos kryptograficzny (BIP32/BIP39/BIP44, SLIP‑0010, Ed25519/secp256k1), prosty parser QR i UI transakcji.
- Seed setup: generuj seed offline, potwierdź 24 słowa na ekranie, opcjonalnie Shamir (SLIP‑39).
- Test PSBT/EIP‑712: podpisz mikropłatność na testnecie (Goerli/Sepolia, Signet), zweryfikuj dekod w niezależnym narzędziu.
- Procedury operacyjne: trzymaj urządzenie w torbie Faradaya, zasilaj z powerbanku bezprzewodowego lub izolowanej ładowarki, okresowo weryfikuj firmware checksum.
Zagrożenia i jak je ograniczyć
| Ryzyko | Opis | Mitigacja |
|---|---|---|
| Złośliwy QR (parser) | Eksploity w dekoderze QR lub formacie UR | Biblioteki audytowane, limity bufora, fuzzing, W^X |
| Supply chain | Skażony MCU/SE, fabryczny implant | Zakup z dystrybucji oficjalnej, reprodukowalne buildy, atesty |
| Ataki optyczne | Wstrzyknięcie danych laserem, glitch kamera | Filtr IR, ograniczenie ekspozycji, walidacja ramek QR |
| Shoulder surfing | Podgląd e‑ink w przestrzeni publicznej | Filtr prywatyzujący, ostrzeżenia UI, praca w strefie prywatnej |
| Social engineering | Użytkownik nie czyta pól | Wymuszone ekrany krytycznych pól, checklista „STOP/READ/SIGN” |
Jak to się ma do popularnych standardów?
- Bitcoin/PSBT: Naturalne dopasowanie — PSBT mieści się w serii QR (UR multipart). Ekran pokazuje adresy, kwoty, fee rate.
- Ethereum/EVM: Obsługa EIP‑1559, EIP‑191, EIP‑712 (Typed Data). Krytyczne: spender, permit/approve, chainId, salt/nonce.
- Cosmos/Solana: Serializacja wiadomości + hash/podpis; wyświetlanie memo, konto odbiorcy, fee.
Operacje dnia codziennego: workflow
- Tworzysz transakcję w portfelu „gorącym”/dApp → generujesz QR z payloadem.
- Air‑gap odczytuje QR kamerą, parsuje i wyświetla wszystkie kluczowe pola na e‑ink.
- Potwierdzasz fizycznym przyciskiem; urządzenie generuje podpis i pokazuje go jako animowany QR.
- Składasz podpis w dApp/kliencie i wysyłasz on‑chain.
DAO i zespoły: polityki wielopodpisowe
Dla skarbca DAO najlepszą praktyką jest multi‑sig (np. Safe) + co najmniej jeden signer w modelu „optycznej diody”.
- Redundancja: 2–3 signery hot, 1–2 air‑gap optical.
- Role: osobny signer do approvals, inny do transferów, jeszcze inny do upgradów.
- Procedury: „cztery oczy” dla zmian uprawnień i bridge’y, okresowe simulacje transakcji (Tenderly/Foundry)
Metryki i limity: czy to jest praktyczne?
- Pojemność QR: UR multipart pozwala na komfortowy transfer 1–10 KB w kilku/nastukilku klatkach.
- Czas operacji: typowy podpis EIP‑712 — 10–25 s (zależnie od rozmiaru i odświeżania e‑ink).
- Bateria: e‑ink zużywa energię tylko podczas odświeżania; 500 mAh wystarcza na tygodnie sporadycznych podpisów.
Checklist: minimalny standard bezpieczeństwa
- Brak USB/BLE/Wi‑Fi/NFC w produkcji (fizycznie usunięte lub wyłączone bez możliwości przywrócenia).
- Secure boot + podpisany firmware + publiczny hash wydania.
- Wymuszone UI krytycznych pól (spender, kwoty, chainId, deadline, fee).
- Backup seed (papier/metal), opcjonalnie Shamir, test przywracania na testnecie.
- Tryb awaryjny: tylko PSBT i proste transfery, bez kontraktów.
Porównanie: pro/contra w skrócie
| Aspekt | Plusy | Minusy |
|---|---|---|
| Bezpieczeństwo | Brak kanału zwrotnego, mały TCB | Ryzyko błędów w parserze QR |
| Użyteczność | Przejrzyste podpisy na e‑ink | Wolniejsze niż USB/BLE |
| Kompatybilność | PSBT, UR, EIP‑712/EIP‑191 | DAppy bez QR wymagają mostka |
| Koszt | Tanie komponenty, długie życie baterii | Wkład w R&D i testy |
Najczęstsze błędy wdrożeniowe
- „Tylko raz użyję USB”. Jedno podłączenie niszczy model zaufania.
- Brak walidacji pól EIP‑712. Podpisy „na ślepo” niweczą sens air‑gapa.
- Słabe zasilanie. Glitche przy niskim napięciu mogą powodować błąd podpisu.
- Nieaktualne ostrzeżenia UI. Listy znanych kontraktów/spenderów warto aktualizować offline (np. przez QR z listą SHA‑256).
Scenariusz wdrożenia w małym funduszu krypto (mini‑case)
- Setup: Safe 3/5. Dwóch sygnatariuszy hot (monitoring/tempo), jeden air‑gap optical (vetting transakcji), dwóch cold‑backup.
- Procedura: Każda zmiana approvals wymaga podpisu air‑gap. Wypłaty tygodniowe: min. 1 air‑gap + 2 hot.
- Efekt: 0 incydentów w 12 mies., niewielki wzrost czasu akceptacji (mediana +32 s), istotny spadek fałszywych approvals.
Wnioski i następne kroki
Architektura optycznej diody QR to prosty sposób na radykalne ograniczenie ryzyka w DeFi, NFT i DAO, bez rezygnacji z wygody podpisów. Jeśli zarządzasz środkami zespołu lub własnym portfelem o wyższej wartości, zacznij od pilotażu na testnecie: zbuduj lub kup urządzenie z jednokierunkowym wyjściem, ustaw polityki podpisów i przetestuj EIP‑712 w dAppach, z którymi pracujesz najczęściej.
CTA: Chcesz checklistę wdrożenia i listę kompatybilnych narzędzi (PSBT/UR/EIP‑712)? Daj znać w komentarzu — przygotujemy repo z szablonami i scenariuszami testów.

