Обнаружена критическая уязвимость в аппаратных генераторах случайных чисел, используемых в миллиардах устройств Интернета вещей (IoT), которые не могут правильно генерировать случайные числа, что подрывает их безопасность и подвергает риску атак.
«Оказывается, что эти «случайно» выбранные числа не всегда так случайны, как хотелось бы, когда речь идет об устройствах IoT» - заявили исследователи Bishop Fox Дэн Петро и Аллан Сесил в отчете, опубликованном на прошлой неделе. «На самом деле, во многих случаях устройства выбирают ключи шифрования, равные 0 или хуже. Это может привести к катастрофе для безопасности при любом последующем использовании этих ключей».
Генерация случайных чисел - это важнейший процесс, который лежит в основе нескольких криптографических приложений, включая генерацию ключей, однократно используемых чисел и генерацию соли. В традиционных операционных системах он формируется на основе криптографически защищенного генератора псевдослучайных чисел, который использует энтропию, полученную из высококачественного источника сидов.
Когда речь идет об устройствах IoT, его источником является система-на-чипе, содержащая специальное аппаратное периферийное устройство генерации случайных чисел, называемое истинным генератором случайных чисел (TRNG), которое используется для получения случайности из физических процессов или феноменов.
Утверждая, что способ текущего вызова периферийного устройства был некорректным, исследователи отметили отсутствие проверок на коды ошибок по всему периметру, что привело к сценарию, когда генерируемое случайное число не просто не случайно, а хуже того, предсказуемо, что привело к неполной энтропии, неинициализированной памяти и даже криптографическим ключам, содержащим простые нули.
***Тут встроенное видео https://www.youtube.com/watch?v=Zuqw0-jZh9Y
«Функция HAL периферийного устройства генерации может выйти из строя по разным причинам, но наиболее распространенной (и эксплуатируемой) является то, что в устройстве закончилась энтропия» - отмечают исследователи. «Аппаратные периферийные устройства RNG извлекают энтропию из вселенной с помощью различных средств (таких как аналоговые датчики или показания электромагнитного поля), но не имеют ее в бесконечном запасе».
«Они способны производить только некоторое количество случайных битов в секунду. Если вы попытаетесь вызвать функцию генерации случайных чисел HAL, когда у нее нет случайных чисел для выдачи, она потерпит неудачу и вернет код ошибки. Таким образом, если устройство попытается получить слишком много случайных чисел слишком быстро, вызовы начнут давать сбои».
Проблема уникальна для IoT, поскольку в них нет операционной системы, которая обычно поставляется с API случайных чисел (например, "/dev/random" в Unix-подобных ОС или BCryptGenRandom в Windows). Исследователи подчеркивают преимущества большего пула энтропии, связанного с подсистемой CSPRNG, что устраняет «любые единые точки отказа среди источников энтропии.
Хотя проблемы можно устранить с помощью обновлений программного обеспечения, идеальным решением было бы включение производителями и разработчиками IoT-устройств API CSPRNG, который засеивается из набора различных источников энтропии, и обеспечение того, чтобы код не игнорировал условия ошибки или не блокировал вызовы генератора, когда энтропия больше не доступна.
«Одна из сложностей этой уязвимости заключается в том, что она не является простым случаем «ты сделал а там, где должен был сделать б», который можно легко исправить» - говорят исследователи, подчеркивая необходимость внедрения CSPRNG в операционную систему IoT. «Чтобы устранить эту проблему, в IoT-устройство должна быть добавлен существенный и сложный функционал».
Источник: https://thehackernews.com