Artykuł 9 z 124 min czytania

dAppy bez portfela w przeglądarce

Strony oczekują portfela w przeglądarce. Przeglądarka to najbardziej narażony program na komputerze. AirNox rozwiązuje ten problem rozszerzeniem, które dla strony wygląda jak portfel, a nie przechowuje absolutnie nic.

Strona do swapów w przeglądarce z odznaką rozszerzenia bez kluczy w rogu, lokalne połączenie z portfelem na komputerze, air gap i telefon
Rozszerzenie przekazuje. Komputer decyduje. Telefon podpisuje.
Spis treści

Rozszerzenie, które nie jest portfelem

Rozszerzenie AirNox do przeglądarki (browser extension) wstrzykuje standardowe interfejsy, których szukają zdecentralizowane aplikacje: EIP-1193 i EIP-6963 dla sieci EVM, TON Connect oraz Solana wallet standard i Sui wallet standard. Dla strony to portfel. Odpowiada na „jakie konta”, „jaka sieć”, „podpisz to, proszę” w zwykły sposób.

W środku to kurier. Nie ma kluczy, nie przechowuje frazy seed i nie może niczego podpisać. Każde żądanie strony jest przekazywane wyłącznie lokalnym kanałem do AirNox Wallet na komputerze, a odpowiedź wraca tą samą drogą. Gdyby jutro ktoś podmienił rozszerzenie na złośliwą kopię, ta nie miałaby czego ukraść ani czym podpisać.

Co jest nie tak z klasycznym portfelem w rozszerzeniu

Klasyczny portfel web3 żyje w całości w przeglądarce, razem z kluczami. To oznacza, że klucze są w najbardziej narażonym programie na komputerze. Kod wstrzyknięty do strony może dotrzeć do interfejsu rozszerzenia. Zapisane sekrety chroni szyfrowanie, które nowoczesne karty graficzne łamią masowo metodą brute force. Wiele takich portfeli ma trackery i reklamy. Niewiele w jakikolwiek sposób chroni przed podmienionym adresem odbiorcy. A za ten przywilej przez cały dzień zużywają pamięć i czas procesora. AirNox ogranicza część przeglądarkową do kuriera i wynosi wszystko, co ważne, poza przeglądarkę – do natywnego programu na komputerze, a w trybie AirGap na telefon, który nigdy nie jest online.

Tylko lokalnie

Kanał między rozszerzeniem a portfelem na komputerze nigdy nie wychodzi poza twój komputer. Nie ma serwera pośredniczącego, sesji w chmurze ani konta. Oba końce uwierzytelniają się nawzajem, więc nic nie wskóra ani program udający portfel, ani strona udająca rozszerzenie.

Uprawnieniami zarządza komputer

Uprawnienia są przechowywane w AirNox Wallet, a nie w przeglądarce. Nadaje się je osobno dla każdej witryny (origin) i każdej sieci, pojedynczo, i jedno uprawnienie nie pociąga za sobą żadnego innego. Witryna, która dostała dostęp do twojego konta w sieci Ethereum, nie ma przez to dostępu do konta w sieci Polygon. Witryna dopuszczona do jednego portfela nie jest przez to dopuszczona do innego.

Siatka witryn i sieci ze znacznikami przyznanych i nieprzyznanych uprawnień oraz wiersz zablokowanego portfela, w którym wszystko jest odrzucane
Osobno dla każdej witryny i sieci, w trybie fail-closed.

Liczy się origin potwierdzony przez przeglądarkę, a nie ciąg znaków dołączony przez stronę. Strona nie może podać się za inną witrynę. Cały system działa w trybie fail-closed: wszystko, na co wyraźnie nie zezwolono, jest odrzucane, a żądanie, którego portfel nie rozumie, również zostaje odrzucone.

Zablokowany znaczy nie

Gdy portfel jest zablokowany, rozszerzenie nie odpowiada na nic, niezależnie od tego, jak sformułowano żądanie. Strona nie może wybudzić portfela, wyliczyć kont ani ustawić w kolejce podpisu do złożenia po odblokowaniu. Portfel odblokowujesz ty, w samym portfelu, i dopiero wtedy przeglądarka dostaje odpowiedzi.

Podpisywanie

Transakcje, wiadomości i dane typowane (typed data) przechodzą tę samą drogę. Najpierw komputer dekoduje i sprawdza żądanie: rozpoznaje standardowe operacje i oznacza sobowtóry, nielimitowane zgody na wydatkowanie (allowances) i nieznanych spenderów. W trybie AirGap niepodpisane żądanie trafia następnie na telefon, gdzie jest ponownie dekodowane z bajtów, pokazywane tobie i podpisywane dopiero wtedy, gdy naciśniesz Accept (Akceptuj). Podpis wraca, komputer wysyła transakcję do sieci, a strona otrzymuje hash transakcji. Przełączanie sieci działa tak samo: to portfel decyduje, czy zmiana jest dozwolona.

W przypadku portfela, którego fraza seed jest na komputerze, podpisuje komputer – po tej samej kontroli, w oknie portfela, a nie na telefonie.

Co może, a czego nie może przejęta strona

Przejęta strona albo zatruty skrypt w przeglądarce może cię okłamać. Może pokazać jedną transakcję, a poprosić o inną. Może podać claim za weryfikację. Nie może natomiast podpisać. Decyzja zapada tam, gdzie są klucze, po tym, jak przeczytasz żądanie w postaci zdekodowanej przez telefon. Approve od drainera – taki, który gładko przechodzi przez wyskakujące okienko w przeglądarce – trafia na telefon jako to, czym jest: zgoda na wydatkowanie, dla tego spendera, na tę kwotę. Jeśli jest nielimitowana, telefon to mówi.

Właśnie o taki układ nam chodziło: wygoda portfela w przeglądarce dla strony i żadnego z jego ryzyk dla ciebie.

Cała seria

  1. Załóż, że komputer jest przejęty
  2. Mass Adoption Security: urządzeniem podpisującym jest telefon, który już masz
  3. Trzy drogi przez air gap: kody QR, Bluetooth LE i NFC
  4. Niewidzialny w eterze: urządzenie podpisujące, którego nie wykryje żaden skaner
  5. Transport nigdy nie jest zaufany
  6. Co pokazuje ci telefon: analiza transakcji na urządzeniu podpisującym
  7. Telefon prowadzi własny zapis
  8. Sejf na twoim komputerze: Argon2id i profil odporny na zgadywanie
  9. dAppy bez portfela w przeglądarce
  10. Serwer MCP z zasadami: agenci AI w granicach limitów
  11. Jeden chroniony portfel do wszystkiego
  12. Mały i natywny: C++, bez środowiska JavaScript, od stacji roboczej po Raspberry Pi

Dołącz do listy oczekujących

Zostaw adres e-mail, a wyślemy ci informacje o premierze. Nic więcej.