Javascript-форум (https://javascript.ru/forum/)
-   Гаджеты (https://javascript.ru/forum/gadgets/)
-   -   SSL на Embedded (https://javascript.ru/forum/gadgets/82890-ssl-na-embedded.html)

Was-Ja 28.07.2021 12:39

SSL на Embedded
 
Добрый день,

запутался, читал много гугла, но так и не понял как правильно.

Хочу делать такую конструкцию:

компьютер-сервер - обычная PC под линуксом (PC),
к компьютеру подсоединены через етернет или интернет несколько датчиков-сенсоров (S), через ембеддед линукс. Датчики могут стоять в одной комнате с сервером, а могут находиться на другом континенте.

Управление всех сенсоров и компьютера происходит через веб интерфейс на JS (WEB).

И датчики, и сервер, и веб интерфейс разрабатываю я сам, и могу в разумных пределах там что-то добавлять-модифицировать.

Сейчас S-PC соединение реализовано через линукс-сокеты. Датчики с сервером общаются примерно раз в секунду, посылая друг другу сообщения, формат которых я сам придумал. Датчики-сенсоры общаются только с сервером. То есть трафик до безобразия простой, я его сам писал, и могу подстроиться, если надо.

Веб интерфейс на JS общается только с сервером, формат тоже самопальный - с JS я делаю POST или GET на какой-то заданный порт, а с этого порта на сервере по сокету я беру или отправляю данные на веб интерфейс.

Все бы хорошо, но мне надо как-то поддержать SSL соединение между любой из таких коммуникаций, причем и сервер (PC) и датчики-сенсоры (S) могут иметь как статические IP, так и DHCP.

Мне это нужно, так как есть юзеры этой системы, и в каждому юзеру разрешено или запрещено пользоваться какими-либо датчиками.

Я поставил летц-енкрипт на сервер. Если IP сервера статический, то он по крайней мере с веб-интерфейсом общается по SSL протоколу.

Если у него DHCL - то летценкрипт отказывается работать.
В датчиках ембеддед линукс, причем очень дебильный arm-angstrom-linux-gnueabi - поменять - нет возможности. Поставить летценкрипт туда не удалось. То есть пока голые сокеты.

Скажите, пожалуйста, как с минимальными танцами с бубном прикрутить SSL на все это, и, чтобы оно на любом даже DHCP соединении работало?

Спасибо!

Aetae 28.07.2021 20:38

Выпустить свой сертификат?

Was-Ja 09.08.2021 15:43

Спасибо большое, Aetae,
по видимому это единственно возможный метод, пока только читаю, и, пока сам не прошел, но, надеюсь, разберусь.

Vlasenko Fedor 09.08.2021 16:12

Was-Ja,
из вашего поста я понял, что вам нужно какимто образом различать датчики. Свой чужой. К примеру в вашу схему подключается фейковый датчик.
Тогда предлагаю рассмотреть RSA шифрование, на основе публичных и приватных ключей

Was-Ja 09.08.2021 16:28

Спасибо большое, Vlasenko Fedor, за ответ.

Не, в этой теме я про довольно сложный датчик говорил. Мне пробно предлагают поставить эти датчики в студенческий практикум, если датчики будут удовлетворять условию сложной взламываемости, а у меня всейчас все по обычным сокетам идет без кодирования.

Так как те, кто хотят это пробно поэксплуатировать не говорят готовы ли они выделить статический IP или нет, я не могу себе гарантировать будет ли работать LetsEncript.

Vlasenko Fedor 09.08.2021 16:36

RSA решит вашу проблему
генерьте ключи на датчиках и шифруйте ими сообщенияб
сервер отправляет на устройство свой публичный ключ
устройство отправляет на сервер публичный ключ
таким образом у вас всегда будет идентификатор устройства - его публичный ключ
Только сервер сможет прочитать данные датчика так как они будут зашифрованы его публичным ключом.
Посмотрите
Механизмы образования ключа для текущей сессии в SSL/TLS
Я предложил аналог, но для устройств

Was-Ja 09.08.2021 16:48

Спасибо большое, Vlasenko Fedor,

Цитата:

Сообщение от Vlasenko Fedor (Сообщение 539279)
RSA решит вашу проблему
генерьте ключи на датчиках и шифруйте ими сообщения

да, похоже это единственно разумный случай, более того, приватный и публичный ключи можно сгенерить еще на стадии производства и публичный ключ каждого датчика засунуть в сервер, чтоб было.

А вот как быть с веб интерфейсом - я так понял, надо будет говорить пользователю, чтобы он эксепшн ставил на самоподписанный сертификат, или заставлять его ставить сервер на статический IP, подцепляя туда LetsEncript. Скажите, пожалуйста, есть ли еще какой-то вариант для поддержки адекватного енкрипшна если сервер имеет свой адрес по DHCP?

Спасибо!

Vlasenko Fedor 09.08.2021 16:54

смотрите устройства по rsa
web морду по LetsEncript (не забываем что есть и платные сертификакты на год -2) если взлетит, чего не потратиться

Was-Ja 09.08.2021 16:57

Цитата:

Сообщение от Vlasenko Fedor (Сообщение 539282)
смотрите устройства по rsa
web морду по LetsEncript (не забываем что есть и платные сертификакты на год -2) если взлетит, чего не потратиться

а разве хоть один даже платный сертификат по DHCP работает? Если да, то, конечно это сильно меняет дело и будет самым простым вариантом.

Vlasenko Fedor 09.08.2021 17:07

Was-Ja,
статческий ip адрес это копейки веб разработки
любой хостинг или облако
почему вас так затрагивает постоянный ip
есть и такие варианты
никогда не делал за ненадобностью

Was-Ja 09.08.2021 17:42

Спасибо большое за ответ!

Цитата:

Сообщение от Vlasenko Fedor (Сообщение 539285)
Was-Ja,
статческий ip адрес это копейки веб разработки

Наверное я что-то не понимаю.

Вот смотрите, юзер покупает сервер (это просто компьютер со встроенным мной бекентом), который обслуживает датчики и ставит себе этот сервер и датчики в свою сетку.

Это и простая сетка на одном роутере может быть, и статический IP. А юзер может сидеть в каком-нибудь ЛосАламосе или еще в какой голимой военке, что там все физически от интернета отключено. У меня на сервере не веб старница, а веб интерфейс аппаратуры. И юзеров реально много разных. А кто-то хочет в практикум студентам поставить, но в их университете есть свои правила игры как и что делать и IP раздаются в своей локальной сетке, но у каждого компьютера и датчика есть только текстовое имя.

Я хочу понять как мне сделать в сервере, датчиках и веб интерфейсе все так, чтобы оно везде работало, и браузер не горовил про истекщий или отсутсвующий сертификат, ибо юзер пугается и может вызвать веня налаживать за мой счет и лететь в какой-нибудь ЛосАламос мне реально не сильно охота, особенно при современных карантинах.

Vlasenko Fedor 09.08.2021 18:06

У вас есть сервер с вебмордой
Пользователь авторизуется на нем
Создает конфигурацию оборудования и работает с своим окружением
Сервер один ваш, пользователей много, работающих на вебсайте вашего сервера
Юзеру не нужно покупать ничего на стороне
Ему нужно только авторизоваться у вас, (купить доступ у вас если он платный)

Was-Ja 09.08.2021 18:54

Цитата:

Сообщение от Vlasenko Fedor (Сообщение 539288)
У вас есть сервер с вебмордой
Пользователь авторизуется на нем
Создает конфигурацию оборудования и работает с своим окружением
Сервер один ваш, пользователей много, работающих на вебсайте вашего сервера

Вы прочитайте, пожалуйста, что я пишу, то что Вы только что написали - в корне не верно.

В моем случае, сервер (вычислительный сервер) - это компьютер, который юзер покупает у меня с предустановленным софтвером, или собирает-покупает где-то на стороне, но после этого туда ставит мой бекенд.

Бекенд тяжелый, требует минимум терафлопc на двойной точности. Проверить сколько на сильно оптимизированном вебассембли Вы можете получить с вашего компьютера, можно на моем тестировщике: https://www.elegant-nmr.com/perf_test.html

Юзер ставит этот сервер где-то у себя, и, в зависимости от того, что это за организация, этот сервер может физически быть отключен от интернета, но быть в какой-то своей локальной сети.

В той же сети он втыкает мои датчики. Обычно на самом деле один датчик - один сервер. Иногда, чтобы съэкономить, юзер покупает на несколько датчиков один сервер.

Сильно жмотливые юзеры не покупают сервер и просят, чтобы мой хостинг послужил им сервером. По первости я планировал давать бесплатно им такую возможность.

У некоторых просто есть простаивающий компьютер, и они не против из него сделать сервер.

Надеюсь, понятно объяснил.

SuperZen 10.08.2021 13:48

https://stackoverflow.com/questions/...n-https-client

https://github.com/openssl/openssl/issues/9641

---

https://www.embedded.com/efficient-w...rocontrollers/

https://www.embedded.com/how-to-inst...3-wifi-device/

https://github.com/RealTimeLogic/MinnowServer

---
https://realtimelogic.com/products/sharkssl/
https://realtimelogic.com/products/

---
https://security.stackexchange.com/q...ith-dynamic-ip

--
че за девайсы? )

https://www.youtube.com/watch?v=92Zh8b4W570

https://stackoverflow.com/questions/...embedded-linux

а то вдруг туда nodejs получится поставить )...

Was-Ja 10.08.2021 16:59

Спасибо большое, за интересные ссылки.

Сижу изучаю.

В этой теме и в соседней теме https://javascript.ru/forum/gadgets/...ntrollere.html

это совершенно разные девайсы.

Если здесь в девайсе гарантированно есть линукс борда внутри и девайс не маленький - это десктопное оборудование с 220В питанием, весом под 20 кг и есть хотя бы небольшой бюджет что-то туда докупить, то в соседней теме девайс переносной, с копеечной электроникой и питанием по USB.


Часовой пояс GMT +3, время: 16:23.