Как безопасно подготовить настольное приложение windows к AWS IoT? - PullRequest
0 голосов
/ 25 мая 2020

О проекте

Я создаю настольное приложение для windows с использованием электронного фреймворка. Приложение извлекает данные и отображает их на устройстве (содержит windows -p c unit). Полученные данные могут быть подготовлены конечным пользователем на веб-сайте.

Текущее решение

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

Лямбда-функция создаст случайный идентификатор, а затем создаст ключи и сертификат, вызвав iot.createKeysAndCertificate. Затем он присоединит политику к сертификату, вызвав iot.attachPrincipalPolicy, создаст новый объект (iot.createThing) и, наконец, прикрепит его к сертификату. (iot.attachThingPrincipal).

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

Требования

  • Количество вещей, которые может создать покупатель, ограничено и установлено компанией.
  • Объект должен иметь возможность слушать / получать только те данные, которые предназначены для этого объекта.
  • У кого-то не должно быть возможности манипулировать этим предметом.
  • В будущем он также должен иметь возможность поставлять программное обеспечение отдельно, без содержащегося в нем модуля windows -p c.

Проблемы

  • Сертификат и ключ сохраняются на жестком диске. Так теоретически их можно закалить / украсть?
  • Можно создать политику для ограничения тем, на которые можно подписаться / publi sh. Но, изменив / иным образом манипулируя именем объекта, мы можем подписаться / publi sh на другие темы? Таким образом, имя объекта не должно создаваться и сохраняться / считываться из файла конфигурации на P C. Какие еще есть варианты?
  • Каждый может присоединиться к сети. Должен ли я вносить вещи в белый список?

Есть ли в этом потоке какой-либо серьезный недостаток, которого я не вижу? Должен ли процесс подготовки начинаться на веб-сайте, где пользователь сначала должен войти в систему через когнито, создать новое устройство, позволить лямбда-функции создать сертификат / ключ, а затем как-то связать с ним устройство? Но как же тогда выполняется занесение в белый список / хранение сертификатов?

Мне трудно осмыслить AWS IoT Provisioning. Буду признателен, если кто-нибудь сможет указать мне правильное направление.

...