Лучшие практики для безопасных обновлений Over The Air [закрыто]

8

Каковы наилучшие методы обеспечения безопасности, которым необходимо следовать при выпуске OTA-обновления для парка устройств IoT? Каковы основные причины для беспокойства?

Например,

  • предотвращение перехвата обновления
  • следуя установленным стандартам
  • платформы для распространения программного обеспечения
  • автоматические обновления и необязательные обновления
Ноам Хакер
источник
5
Этот вопрос слишком широк, чтобы быть подходящим для вопросов и ответов.
Шон Хоулихейн
1
@SeanHoulihane, я сузил фокус на безопасность OTA. Как это выглядит сейчас?
Ноам Хакер
2
Это все еще довольно широко, поскольку каждый пункт пули может быть отдельным вопросом самостоятельно. Даже для последней точки тестирования успехов вы могли бы написать целую книгу об этом.
Дом
1
Я бы согласился с Домом. Лучше взять один аспект ОТА (например, обеспечение надежного результата). Даже тогда есть много ответов. В идеале, для ответа на вопрос требуется только один или два качественных ответа, чтобы вы могли принять его «ответ».
Шон Хоулихейн
1
редактировать заголовок тоже?
Шон Хоулихейн

Ответы:

10

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

Аутентифицировать обновление .

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

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

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

Жиль "ТАК - перестань быть злым"
источник
Это не совсем правильно. Шифрование не очень сложно достичь и не является «редко полезным». Кроме того, это шифрование «не помогает с аутентичностью» является лишь полуправдой. Большинство современных режимов шифрования, таких как GCM, на самом деле представляют собой так называемые схемы «аутентифицированного шифрования», которые сочетают в себе подлинность и конфиденциальность.
мат
@mat Я изменил это предложение, чтобы оно было формально правильным. Шифрование не сложно, но я придерживался конфиденциальности, что сложно. Шифрование не дает вам конфиденциальности, если вы не можете сохранить ключ в секрете. Шифрование вообще не помогает с аутентичностью. Если вы используете аутентифицированное шифрование, оно дает вам и то и другое, но тот факт, что оно включает шифрование, не помогает в получении аутентичности.
Жиль "ТАК - перестань быть злым"
Если ваш ключ утек, каждый криптограф теряет свою полезность, будь то для конфиденциальности или для аутентификации. Если имеет смысл использовать шифрование с незащищенным ключом на устройстве, зависит от вашей модели угроз (доступность устройства, возможности противников)
мат
@mat Нет. Я должен был отреагировать на это замечание GCM в моем предыдущем комментарии, на самом деле. GCM не является приличным способом трансляции обновлений, потому что это означает, что подлинность проверяется с помощью ключа класса. Если вы не создаете сильно защищенную платформу (например, смарт-карту), ключ класса так же хорош, как и открытый. Обновления должны использовать асимметричную криптографию. Таким образом, чтобы развернуть поддельное обновление на устройстве, это конкретное устройство должно быть взломано: чтобы создать поддельное обновление, которое работает везде, злоумышленнику потребуется взломать сервер или протокол, и они обычно лучше защищены, чем устройства в поле.
Жиль "ТАК - перестань быть злым"