Суть вопроса коротко: почему нет в широкой продаже нормального защищенного радиоканала (пульт-приемник) ближнего радиуса действия?
Подробнее:
Задача: У меня есть гаражные ворота (или свет перед домом и т.п.) и я хочу, чтобы они открывались автоматически по команде с пульта. Очевидно, что несанкционированное открытие этих ворот посторонним лицом с помощью взлома радиоканала - абсолютно неприемлемо. Лучшее, что предлагается в настоящий момент на рынке - это пульт с Keeloq, который легко взламывается, уже не говоря о статическом коде.
Вопрос: почему же, при давно известной дырявости Keeloq, ничего лучше массово не делается?
Как это вижу я: Берем какой-нибудь готовый модуль ESP32 c Wifi или Zigbee, помещаем его с батарейкой в распечатанный корпус и готов брелок. Ответный модуль ESP32 вместе с реле ставится в стационарный блок. В оба ESP заливается прошивка, в которой заранее зашит уникальный длинный ключ шифрования. Я подхожу к объекту, нажимаю кнопку на брелке. Пульт передает стационарному блоку запрос на сработку. Стационар генерирует внутри себя случайный код, шифрует его односторонним шифрованием заданным ключом (вычисляет хеш, который запоминает) и на пульт посылает этот же случайный код. Брелок получает код, таким же ключом его шифрует, получает такой же хэш и этот хэш посылает стационару. Стационар сравнивает оба хэша и при их совпадении делает сработку реле. При несовпадении - тайм-аут на 5 секунд и снова готовность к приему запроса от брелка.
Таким образом, протокол обмена защищен от стандартных методов взлома вроде перехвата статического кода и подмены динамического. Остается только перебор на стационарном компе перехваченного случайного кода и хэша с целью получить такой же хэш и так вычислить ключ. Что решается длиной ключа и сложностью алгоритма. Кроме того, модифицированный алгоритм (длина ключа и т.п.) создаст доп. трудности для непрофессиональных хакеров в связи с необходимостью писать нестандартный софт для взлома.
Кмк, получился надежный алгоритм, аппаратно-программная реализация несложная. Почему по этому пути нет реализаций? Может вычислительных мощностей ESP32 мало, чтобы за 1-2 секунды произвести все операции?
П.С.
1. Вариант с ИК-пультом - не годится. т.к. неудобно по расстоянию и на солнце.
2. Вариант с звонком по телефону - не годится, т.к. нужна еще одна симка, может временно пропасть связь, задержки.
3. Вариант с wifi-реле и системой умного дома на смартфоне - чуть лучше, но все же тоже неудобно и тормознуто.
sha256 на esp32 занимает <1 мс даже без аппаратного ускорителя, с вычислениями вопросов нет.
Алгоритм нормальный — HMAC challenge-response, от replay защищает. Кстати, уже есть реализация: github.com/tommie/openepo, именно замена KeeLoq на 433 МГц с похожей схемой.
Почему не в продаже: WiFi-модуль потребляет несравнимо больше 433 МГц-чипа, батарейки на пульт не хватит. Если хочется esp32, BLE практичнее WiFi по питанию. Но для dedicated remote всё равно логичнее субгигагерц + нормальная крипто, тот же openepo.
Даа, питалово тут -проблема. Но есть еще нюансы на мой взгляд:
1. Если брать вайфай - то это вообще кнчн как из пушки по воробьям. Если на каждое устройство своя точка - капец эфиру (ему и так капец, но тут ускоримся). А если использовать центральную точку - это уже неслабая инфраструктура и экосистема.
2. Для меня была бы критична скорость появления девайса в сети. Если я подъехал к воротам - мне бы не хотелось ждать пейринга вайфая или блютуса. Перед шлагбаумами сейчас можно просто сбрасывать скорость, даже останавливаться не надо.
3. Дикое удорожание самого пульта. Индивидуальные решения - это не целевая ниша ИМХО, поэтому в эту нишу никто и не заходит. А в случае условных юрлиц - там важна цена пульта - потому что их нужны сотни. А объект и так под охраной будет
На вскидку - то, что ты хочешь не реализуемо чисто на аппаратном уровне, ибо алгоритм для этого довольно сложен. Нужно реализовать софтово, т.е. нужна какая то ос, какой то либо интерпретатор языка, либо ядро системы, которое будет работать с компилированным кодом. Иными словами, что будет иметь на борту какой то минимальный Linux. А это по минимуму 100 баксов, загрузка кода, работа от аккумулятора и пр. В общем сделать можно, но на уровне пульта в виде брелока.