Каналу передачі не довіряють ніколи
Радіоканали мають погану історію з безпекою. Замість сперечатися, який із них достатньо безпечний, AirNox виходить з того, що жоден, і будує безпеку на рівень вище.

Зміст
Канал — не доказ особи
Сполучення (pairing) Bluetooth доводить, що два пристрої пройшли ритуал сполучення. Близькість NFC доводить, що щось було за кілька сантиметрів від зчитувача. QR-код доводить, що камера побачила візерунок. Ніщо з цього не доводить, хто на тому боці, і кожен із цих каналів атакували публічно: підслуховування, примусове зниження стійкості ключа, ретрансляція дотику через усе місто за допомогою двох звичайних телефонів.
Тому ми вважаємо всі три ворожими. Будь-хто може слухати. Будь-хто може вставляти свої повідомлення. Будь-хто може ретранслювати. Те, що канал стверджує про себе, за доказ не приймається.

Сполучіть один раз
Довіра встановлюється один раз, коли ви сполучаєте комп’ютер і телефон. Комп’ютер показує QR-код, телефон його сканує. Потім обидва екрани показують короткий код, і ви їх звіряєте. Якщо вони збігаються, пристрої домовилися про ключі, яких не бачив жоден канал, і відтепер кожен знає, хто з ним на зв’язку. Якщо не збігаються — хтось устряв посередині, і ви зупиняєтеся.
Це звіряння — єдиний момент, коли людина перевіряє канал, і саме він важить. Усе, що відбувається потім, успадковує довіру, яку ви встановили на власні очі.

Сесія
Після сполучення кожне повідомлення між комп’ютером і телефоном передається всередині сесії, якою керує гаманець. Вона наскрізно зашифрована (end-to-end), тож канал, який прослуховують, не видає нічого, крім шуму. Вона має взаємну автентифікацію (mutual authentication), тож кожна сторона знає, що повідомлення надійшло від того пристрою, з яким її сполучено, а не від чогось, що ним прикидається. Вона прив’язана до каналу, яким передається, тож повідомлення, перехоплене на одному шляху, не можна повторно відтворити на іншому.
Сесію побудовано на добре вивченій сучасній схемі встановлення з’єднання — такій, як у широко поширених захищених тунелях. Криптографію ми не вигадуємо самі.
Що відкидається
Повідомлення, змінене дорогою, не проходить автентифікацію і відкидається. Повторно відправлене повідомлення приходить поза послідовністю і відкидається. Повідомлення, що прийшло не в тому порядку, відкидається. Повідомлення від пристрою, який не є сполученим, не проходить далі встановлення з’єднання. У кожному з цих випадків телефон не показує нічого для підпису, бо нічого чинного не надійшло.
Саме тому зручність Bluetooth LE і NFC нічого не коштує безпеці. Канал може бути яким завгодно слабким. Чи безпечне радіо під сесією — питання, на яке нам ніколи не треба відповідати.
Через будь-який канал — та сама сесія
Сесія не знає, чим вона передається: світлом, радіо чи дотиком. Можна сполучитися через QR, а потім використовувати Bluetooth LE для щоденної роботи і NFC на терміналі, без повторного сполучення. Зміна каналу не змінює того, чому ми довіряємо, бо каналу ніколи й не довіряли.
Чи це досі повітряний проміжок?
Пуристи кажуть, що повітряний проміжок (air gap) означає тільки світло. Сперечатися про слово ми не будемо. Якщо вам потрібна сувора версія, використовуйте QR-коди й нічого більше; цей варіант доступний завжди. Властивість, яка для нас важлива, лежить глибше за слово: пристрій із ключами не має шляху в інтернет, і єдине, що будь-коли переходить через проміжок, — це запит, який телефон декодує сам, і підпис, який він вирішив створити. Сесія через Bluetooth LE цю властивість зберігає. А додає вона одне: ви й далі нею користуєтеся.
Уся серія
- Вважайте комп’ютер скомпрометованим
- Mass Adoption Security: підписувач — це телефон, який у вас уже є
- Три способи перетнути повітряний проміжок: QR-коди, Bluetooth LE і NFC
- Невидимий в ефірі: підписувач, якого не знайти скануванням
- Каналу передачі не довіряють ніколи
- Що показує вам телефон: аналіз транзакцій на підписувачі
- Телефон веде власний журнал
- Сховище на вашому комп’ютері: Argon2id і профіль, стійкий до підбору
- dApp без браузерного гаманця
- MCP-сервер із правилами: ШІ-агенти в межах лімітів
- Один захищений гаманець для всього
- Компактний і нативний: C++, без JavaScript-рантайму, від робочої станції до Raspberry Pi