Открытая архитектура
Протокол, прошивки и серверная часть — открытые. Вы не привязаны к одному поставщику: система работает офлайн, поддаётся проверке и при необходимости разворачивается на вашей стороне.
Что уже сделано
- »Открытый протокол готово
Полные спеки BLE и socket — побайтная раскладка, крипто и тест-векторы для проверки своей реализации. Реализуете на своей плате по документации, ничего не вскрывая. - »Референс-прошивки, MIT готово
ESP32 / ESP8266 / Raspberry Pi / Node.js — рабочий код обеих сторон, берите и портируйте. - »BLE работает без сервера вообще готово
Открытие идёт напрямую телефон↔контроллер по Bluetooth — без интернета и без обращения к нашему серверу. Контроллеры отгружаются "пустыми", привязка локальная. - »Сервер не видит ваших ключей и не может подделать подписанное открытие готово
Команды подписываются на телефоне, сервер их только передаёт. Гостевой ключ шифруется "конвертом", ключ от которого проходит мимо сервера. Подпись проверяют Bluetooth-замок, сетевой контроллер на ESP32, привязанный к телефону владельца, и сам телефон владельца, прежде чем позвонить или отправить вебхук, поэтому сам открыть их сервер не может (см. ниже). - »Провизионинг устройств для производства готово
Устройства выпускаются партией "ничьими", покупатель привязывает по коду с корпуса.
Модель доверия — что сервер может и не может
Открытие подписывается на клиенте (E2EE), а секреты зашифрованы "вокруг" сервера. Отсюда:
| Сервер НЕ может | Сервер может |
|---|---|
| прочитать ваши ключи (guest key, owner secret) | отказать в обслуживании (недоступность) |
| подделать открытие там, где подпись проверяет замок, контроллер или телефон владельца | видеть метаданные: кто/что/когда, IP |
| повысить себе привилегии | открыть то, что ему доверяет: вебхук, отправляемый с сервера, контроллеры на ESP8266, Raspberry Pi или Node.js |
Поэтому там, где подпись проверяет замок, контроллер или телефон владельца, от сервера — хоть чужого, хоть своего — зависит только доступность. Так устроены Bluetooth-замки, сетевой контроллер на ESP32, привязанный к телефону владельца, а также звонки и вебхуки, которые отправляет телефон владельца. Вебхук, отправляемый с сервера, и простые контроллеры на ESP8266, Raspberry Pi и Node.js доверяют серверу: у него есть адрес или соединение, и он может отправить открытие сам. А развернув сервер у себя, вы прячете и метаданные.
A controller that works over the internet holds its own connection to the server, so the server sees the controller’s IP address and the time of each command sent to it. Only the ESP32 network controller bound to the owner’s phone checks the signature of every command; the others act on what the server sends.
Эталонная прошивка проверяет сертификат сервера, поэтому никто в той же сети не может выдать себя за сервер.
Дорожная карта
- ●Этап 1 — любой хост в приложении готово
Приложение можно направить на свой сервер Entrixy — подключения и генерируемые гостевые ссылки идут на него. Гость, открывший ссылку с другого сервера, автоматически подключается именно к нему. - ●Этап 2 — сервер как дистрибутив готово
Docker-образ серверной части: WebSocket-сервер, схема БД, инструкция. Доступность — в ваших руках: наши сбои вас не затрагивают. - ○Этап 3 — открытый исходник приложения планируется
Чтобы клиента можно было проверить и пересобрать самостоятельно — полная независимость от чужой инфраструктуры и магазинов приложений.
Кому это адресовано
Производителям шлагбаумов, замков, домофонов и контроллеров, которым важно, чтобы их продукт продолжал работать независимо от нас — а не был завязан на одну компанию. И тем, кто собирает контроллер самостоятельно и хочет оставаться независимым от единственного поставщика. Обсудить встраивание и OEM — hello@entrixy.com. Протоколы: BLE, socket. Референс и конфигуратор: контроллеры.