Связь с незащищенным устройством: безопасность с помощью абстракции против обратного вызова HTTP HTTPS - PullRequest
0 голосов
/ 31 августа 2018

У меня есть веб-сервер с сертификатом SSL и незащищенное устройство в сети GSM / GPRS (arduino MKR GSM 1400). Библиотека MKR GSM 1400 не имеет сервера SSL, только клиент SSL. Я бы предпочел использовать библиотеку, если это возможно, но я не хочу писать класс сервера SSL. Я планирую написать свой собственный протокол, но я знаком с HTTPS и сделаю написание интерфейса на стороне веб-сервера проще.

  • Сервер GSM имеет только клиент SSL
  • Я управляю обоими устройствами
  • Команды доставляются текстовой строкой
  • Только веб-сервер имеет SSL
  • Мои навыки C в лучшем случае достойны

Мне нужен сервер SSL, чтобы иметь возможность отправлять команды на устройство Arduino, но я хочу, чтобы эти команды были защищены (устройство arduino открывает и закрывает клапаны в здании).

enter image description here

Другой вариант может иметь какой-то PSK, но я не знаю, с чего начать. Есть ли простая функция для шифрования и дешифрования «командной строки». Я также не хочу, чтобы «злоумышленники» отправляли команды, которые я отправлял раньше.

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

1 Ответ

0 голосов
/ 31 августа 2018

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

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

Поскольку триггерное сообщение с сервера не содержит фактической полезной нагрузки (прибытие самого сообщения является достаточной полезной нагрузкой), злоумышленник не может изменить или подделать сообщение, чтобы создать небезопасное поведение на клиенте. Худшее, что может случиться, - это то, что какой-то злоумышленник либо заблокирует клиенту получение триггерных сообщений, либо злоумышленник подделает триггерные сообщения, даже если от сервера не поступает действительная команда.

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

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