Стаття 9 з 124 хв читання

dApp без браузерного гаманця

Сайти очікують гаманця в браузері. Браузер — найвразливіша програма на комп’ютері. AirNox розв’язує це розширенням, яке для сторінки виглядає як гаманець, а всередині не тримає нічого.

Сторінка обміну в браузері зі значком розширення без ключів у кутку, локальний зв’язок із десктопним гаманцем, повітряний проміжок (air gap) і телефон
Розширення пересилає. Комп’ютер вирішує. Телефон підписує.
Зміст

Розширення, яке не є гаманцем

Розширення браузера (browser extension) AirNox вбудовує в сторінку стандартні інтерфейси, які шукають децентралізовані застосунки: EIP-1193 і EIP-6963 для EVM-мереж, TON Connect, а також Solana Wallet Standard і Sui Wallet Standard. Для сторінки це гаманець. Воно звично відповідає на «які акаунти», «яка мережа», «підпиши, будь ласка, оце».

Всередині воно — кур’єр. Воно не тримає ключів, не зберігає сид-фрази (seed) і нічого не може підписати. Кожен запит сторінки пересилається лише локальним каналом до AirNox Wallet на комп’ютері, і відповідь повертається тим самим шляхом. Якби завтра розширення підмінили шкідливою копією, у ній не було б чого красти і нічим підписувати.

Що не так із класичним гаманцем-розширенням

Класичний web3-гаманець повністю живе в браузері, разом із ключами. Тобто ключі опиняються в найвразливішій програмі на комп’ютері. Код, впроваджений у сторінку, може дістатися до інтерфейсу розширення. Збережені секрети захищені шифруванням, яке сучасні відеокарти масово ламають перебором (brute force). Багато таких гаманців містять трекери й рекламу. Мало хто з них хоч якось захищає від підміни адреси отримувача. І за таке «задоволення» вони цілий день споживають пам’ять і процесорний час. AirNox залишає в браузері лише кур’єра й переносить усе важливе з браузера в нативну десктопну програму, а в режимі AirGap — на телефон, який ніколи не буває онлайн.

Лише локально

Канал між розширенням і десктопним гаманцем ніколи не виходить за межі вашого комп’ютера. Немає сервера-ретранслятора, хмарної сесії, облікового запису. Обидва кінці автентифікують одне одного, тож програма, що прикидається гаманцем, нічого не отримає, як і сторінка, що прикидається розширенням.

Дозволами керує комп’ютер

Дозволи живуть в AirNox Wallet, а не в браузері. Їх надають окремо для кожного джерела (origin) і кожної мережі, по одному, і жоден дозвіл не випливає з іншого. Сайт, якому дозволили бачити ваш акаунт в Ethereum, не отримує доступу до вашого акаунта в Polygon. Сайт, якому дозволили один гаманець, не отримує доступу до іншого.

Таблиця джерел і мереж із позначками «надано» і «не надано» та рядок «гаманець заблоковано», де все відхилено
Окремо для кожного джерела і кожної мережі; за замовчуванням — відмова.

Джерело — це те, яке підтвердив браузер, а не рядок, який надіслала сторінка. Сторінка не може видати себе за інший сайт. І вся система працює за принципом «за замовчуванням — відмова»: усе, що не дозволено явно, відхиляється, і запит, якого гаманець не розуміє, теж відхиляється.

Заблоковано — отже, ні

Поки гаманець заблоковано, розширення не відповідає ні на що, хоч як сформульовано запит. Сторінка не може розбудити гаманець, не може перелічити акаунти, не може поставити підпис у чергу до розблокування. Ви розблоковуєте гаманець самі, у самому гаманці, і тільки тоді браузер отримує відповіді.

Підпис

Транзакції, повідомлення й типізовані дані йдуть тим самим шляхом. Комп’ютер спершу декодує і перевіряє запит: розпізнає стандартні операції і позначає двійників, безлімітні дозволи на списання (allowance) і невідомих розпорядників (spender). У режимі AirGap непідписаний запит потім переходить на телефон, де його знову декодують із байтів, показують вам і підписують лише після того, як ви натиснете Accept (Прийняти). Підпис повертається, комп’ютер відправляє його в мережу, а сторінка отримує хеш транзакції. Перемикання мережі обробляється так само: гаманець вирішує, чи дозволено перемикання.

Для гаманця, сид-фраза якого живе на комп’ютері, підписує комп’ютер — після тієї самої перевірки, у вікні гаманця, а не на телефоні.

Що може і чого не може скомпрометована сторінка

Скомпрометована сторінка чи заражений скрипт у браузері можуть вам брехати. Вони можуть показати одну транзакцію, а запросити іншу. Можуть видати клейм за верифікацію. Чого вони не можуть — це підписати. Рішення ухвалюється там, де ключі, після того як ви прочитали запит у тому вигляді, в якому його декодував телефон. Approve від дрейнера (drainer), що легко проскакує через спливне вікно браузера, приходить на телефон тим, чим він є: дозволом на списання цьому розпоряднику на цю суму. Якщо він безлімітний, телефон так і скаже.

Це той компроміс, якого ми хотіли: зручність браузерного гаманця для сторінки і жодного ризику для вас.

Уся серія

  1. Вважайте комп’ютер скомпрометованим
  2. Mass Adoption Security: підписувач — це телефон, який у вас уже є
  3. Три способи перетнути повітряний проміжок: QR-коди, Bluetooth LE і NFC
  4. Невидимий в ефірі: підписувач, якого не знайти скануванням
  5. Каналу передачі не довіряють ніколи
  6. Що показує вам телефон: аналіз транзакцій на підписувачі
  7. Телефон веде власний журнал
  8. Сховище на вашому комп’ютері: Argon2id і профіль, стійкий до підбору
  9. dApp без браузерного гаманця
  10. MCP-сервер із правилами: ШІ-агенти в межах лімітів
  11. Один захищений гаманець для всього
  12. Компактний і нативний: C++, без JavaScript-рантайму, від робочої станції до Raspberry Pi

Запишіться до списку очікування

Залиште електронну адресу, і ми надішлемо новини про реліз. Більше нічого.