Локальный мост между браузером и подписывающим приложением Nostr
Ключ идентичности остаётся в подписывающем приложении, а браузер рядом запрашивает подписи через Wi-Fi или Bluetooth.
Nostr WoT Team
Браузер и телефон могут находиться рядом, но запросы на подпись всё равно проходят через реле в интернете. Nostr Connect позволяет подписывать удалённо, однако к устройству рядом можно подключиться и напрямую.
Мы разрабатываем экспериментальный локальный мост для Nostr WoT. Расширение браузера на компьютере подключается к подписывающему приложению через Wi-Fi или Bluetooth Low Energy (BLE), а ключ идентичности остаётся у подписывающей стороны. Для этой связи не нужно публичное реле. Публикация полученного события в Nostr остаётся задачей клиентского приложения и может требовать интернета.
Один протокол, два способа подключения
Wi-Fi использует локальное соединение WebSocket. Bluetooth использует соединение GATT с телефоном. Оба варианта передают один формат аутентифицированной сессии и зашифрованных запросов, называемый nwlan/2.
Подписывающее приложение показывает код сопряжения. Браузер считывает его или получает как текст, проверяет транспортный ключ и запрашивает сопряжение. Вы подтверждаете подключение на подписывающем устройстве. Сопряжение не разрешает автоматически все операции: продолжают действовать разрешения подписывающего приложения и разрешения расширения для сайтов.
Транспортные ключи отделены от вашей идентичности Nostr. Каждая сессия получает собственные ключи шифрования и аутентификации. Закрытие соединения, смена аккаунта или отзыв доступа отменяет незавершённые операции. При отключении телефона расширение не переходит незаметно на другой ключ подписи.
Предложение для других приложений
Мы подготовили экспериментальный проект протокола: форматы сопряжения, аутентификацию, транспортные схемы, защиту от повторов и открытые тестовые векторы. Это предложение без присвоенного номера, а не принятая NIP.
Проект повторно использует объекты запросов из NIP-46, но в другой транспортной оболочке для локальной связи. Приложениям не нужно копировать интерфейс Nostr WoT. Совместимым клиентом может стать настольное приложение, расширение или другое нативное приложение.
Существующая NIP-BE описывает BLE-связь между клиентами и реле Nostr. Наше предложение относится к подписывающему устройству и использует другую аутентификацию и другой формат сообщений. Это разные протоколы.
Что готово и что ещё нужно проверить
Клиент браузера и сессия кошелька имеют автоматизированные тесты совместимости для подписи, шифрования, подтверждения и отзыва доступа. Они не заменяют проверки Bluetooth на реальных телефонах и независимую реализацию протокола. На доступность влияют поддержка браузера и ограничения мобильной системы в фоне. Текущее соединение работает в открытой вкладке расширения; её транспортный ключ хранится только в памяти.
В проекте указан пограничный случай срока хранения записей в кэше защиты от повторов. Его нужно исправить до заявления о полном соответствии. Также описаны ограничения безопасности: локальное соединение не доказывает физическую близость, наблюдатели могут видеть время и объём трафика, а эта версия не обеспечивает прямую секретность при последующей компрометации транспортных ключей. Разделение сессий предотвращает повторы между ними, но не является механизмом ratchet.
Это работа в процессе разработки. Функция включается явно, а доступность зависит от конкретной сборки расширения и кошелька. Статья не объявляет о её наличии во всех магазинах браузеров.
Следующий шаг: общий SDK
Небольшой пакет @nostr-wot/local-bridge позволил бы повторно использовать проверку кодов сопряжения, построение аутентифицируемых транскриптов, состояние сессии и формат BLE. Рядом могут находиться адаптеры WebSocket и Web Bluetooth, а нативные приложения предоставят собственные обработчики соединений и разрешения платформы.
Пакет должен использовать существующую криптографию и интерфейсы подписи. Ему не нужны второй кошелёк, база разрешений или копия интерфейса. Перевод расширения и кошелька на одно проверенное ядро уменьшит дублирование протокола и даст другим разработчикам практическую основу.
Этот пакет является предложенным следующим шагом, а не объявлением о публикации в npm. Отзывы о проекте, независимые реализации и проверки на реальных устройствах помогут определить, что можно считать стабильным.
Автор
Nostr WoT Team


