Невидимый в эфире: устройство подписи, которое не найти сканером
Радиомодуль, который сообщает «здесь кошелёк», свёл бы на нет половину смысла офлайн-устройства подписи (offline signer). Поэтому телефон с AirNox Vault о себе не объявляет.

Содержание
Проблема с радио
Bluetooth делает работу за столом удобной. Но он же заставляет телефон «подавать голос». Устройство, которое транслирует имя вроде «Wallet» и постоянный адрес, можно найти, узнать, отслеживать изо дня в день и выделить как цель, достойную атаки. Чтобы просканировать Bluetooth-устройства вокруг, хватит телефона и бесплатного приложения. Вредоносное ПО (malware) на компьютере тоже на это способно.
Нам нужно было удобство без маяка. Решение состоит из трёх частей: когда телефон вообще выходит в эфир, что он говорит, когда выходит, и кто способен это понять.
В эфире пусто, пока вы не откроете приложение
Телефон вещает, только пока AirNox Vault открыт, разблокирован и находится на переднем плане. Заблокируйте телефон — он замолкает. Переключитесь на другое приложение — замолкает. Положите его экраном вниз в ящик — ничего не передаётся. Нет фоновой службы, которая держала бы канал наготове.

И даже когда телефон вещает, он делает это на низкой мощности передатчика. Его дальность — в пределах стола. Это осознанное решение о том, кто может его услышать, а не замена шифрованию.
Что он говорит, когда выходит в эфир
Три вещи делают этот сигнал бесполезным для постороннего.
В нём нет имени устройства. Ничто в эфире не говорит ни «AirNox», ни «кошелёк», ни что-либо ещё.
Телефон использует случайный Bluetooth-адрес, который система каждый раз генерирует заново. Нет постоянного адреса, который можно записать и завтра поискать снова.
А идентификатор сервиса, который он объявляет, не фиксирован, а вычисляется. Он выводится из сопряжения (pairing) телефона с вашим компьютером и текущего временного окна, поэтому меняется каждые несколько минут, и только компьютер, у которого есть это сопряжение, может вычислить его текущее значение. Для всех остальных это случайное на вид число, которое через короткое время сменится другим случайным на вид числом.

Что видит сканер
Сканер в соседней комнате видит безымянный случайный адрес с идентификатором, похожим на случайный. Через несколько минут — другой адрес с другим идентификатором. Ничто не связывает их между собой. Ничто не выдаёт в устройстве кошелёк среди прочих безымянных устройств с Bluetooth. Запоминать на следующий раз нечего.
Что видит вредоносное ПО на компьютере
Компьютеру, который мы считаем заражённым, видно не больше. У вредоносного ПО на нём нет имени для поиска, нет постоянного адреса, который можно запомнить, и нечего искать, пока вы не выведете приложение на передний план. Кошелёк узнаёт телефон, потому что участвовал в сопряжении. Вредоносному ПО, укравшему конфигурацию кошелька, всё равно придётся ждать, пока вы откроете приложение в пределах досягаемости, а затем оно упрётся в сессию — о ней следующая статья.
Почему найти телефон всё равно ничего не даёт
Допустим, атакующий всё-таки заметил телефон, пока вы им пользуетесь. Само по себе это ему ничего не даёт. Каждый запрос всё равно попадает на экран телефона, декодированный из тех байтов, которые будут подписаны, и там вы его читаете и нажимаете Accept («Принять») — или нет. По радио идёт зашифрованный трафик внутри сессии, аутентифицированной при сопряжении. Быть достаточно близко, чтобы его слышать, не значит суметь к нему подключиться.
Невидимость — первый слой. Её задача — сделать так, чтобы большую часть времени атаковать было просто нечего, а в остальное время цель ничем не выделялась.
Вся серия
- Считайте, что компьютер скомпрометирован
- Mass Adoption Security: подписывает телефон, который у вас уже есть
- Три пути через зазор: QR-коды, Bluetooth LE и NFC
- Невидимый в эфире: устройство подписи, которое не найти сканером
- Никакого доверия транспорту
- Что показывает телефон: анализ транзакций на устройстве подписи
- Телефон ведёт собственный журнал
- Хранилище на вашем компьютере: Argon2id и профиль, устойчивый к подбору пароля
- dApp без кошелька в браузере
- MCP-сервер с правилами: ИИ-агенты в рамках лимитов
- Один защищённый кошелёк для всего
- Компактный и нативный: C++ без среды выполнения JavaScript, от рабочей станции до Raspberry Pi