Каталог товаров

Модули сопряжения Домофоны Контроллеры Платы управления Видеоусилители Кнопки выхода Контакторы врезные Контакторы накладные Ключи iButton Ключи PROXIMITY Дверные доводчики

Поиск

Новости

Информация. 12/04/2025 В офисе компании прошли комплексные испытания модулей сопряжения МСК и МСЦ на предмет их совместимости с мониторами Optimus. Протестированы модели Life DM-14B, Life DM-17B, Leader DM-27B, и DMH-17SWJ. Мы благодарим Компанию "Optimus" за предоставленные для теста мониторы. Результаты теста опубликованы в разделах каталога МСК и МСЦ.

Информация. 12/09/2024 В офисе компании прошли комплексные испытания модулей сопряжения МСК и МСЦ на предмет их совместимости с мониторами Tantos. Протестированы модели Tantos Amelie HD X, Tantos Like. Мы благодарим Компанию "Сатро-Паладин" за предоставленные для теста мониторы. Результаты теста опубликованы в разделах каталога МСК и МСЦ.

Информация. 27/08/2024 В офисе компании прошли комплексные испытания модулей сопряжения МСК и МСЦ на предмет их совместимости с мониторами IPTRONIC. Протестированы модели IPT-AVD7 HYDRUS WiFi, IPT-AVD7 LEPUS, IPT-AVD7 TAURUS. Мы благодарим Компанию "Видеоглаз" за предоставленные для теста мониторы. Результаты теста опубликованы в разделах каталога МСК и МСЦ.

Как защитить прошивку и данные во встраиваемых устройствах

Авторы: Скот Джеймс, Кристоф Тремлет и Майкл Джексон, Maxim Integrated Products

 

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

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

  • Извлекать конфиденциальные и секретные данные. Например, внедрение вредоносного кода в медицинское оборудование, такое как носимое устройство мониторинга состояния пациента, может привести к тому, что устройство начнёт передавать закрытую медицинскую информацию. В худшем же случае вредоносное ПО сможет раскрыть ключ шифрования.

  • Вызывать некорректное функционирование устройства. Известный пример такого рода — вирус Stuxnet, который, внедрившись в программируемые логические контроллеры (ПЛК), вызвал вращение центрифуг с такими скоростями, что произошло разрушение оборудования.

  • Вызывать непредсказуемое поведение устройства, в том числе такое, которое может представлять опасность для жизни человека.

 

Аутентификация и подтверждение целостности прошивки

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

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

Асимметричные криптографические алгоритмы, позволяющие реализовать безопасную загрузку и безопасную закачку

       В асимметричной криптографии (с открытым ключом) используется пара ключей (открытый и закрытый), компоненты которой связаны определёнными математическими соотношениями. Как следует из их названия, открытый ключ может быть известен кому угодно — это не представляет никакой угрозы для безопасности. Закрытый ключ, напротив, чрезвычайно конфиденциальная информация, которая ни в коем случае не должна попасть в чужие руки. Основной принцип безопасной закачки, основанной на асимметричной криптографии, заключается в том, что разработчик прошивки подписывает её с использованием закрытого ключа, в то время как встраиваемое устройство хранит открытый ключ, который и использует для верификации ПО. То есть при асимметричной криптографии, в отличие от симметричной, конфиденциальный элемент (в данном случае закрытый ключ, используемый для подписи) никогда не хранится во встраиваемом устройстве. Следовательно, если мы задействуем алгоритм, у злоумышленника не будет никакой возможности узнать закрытый ключ, использованный для подписи прошивки и данных, даже если он разберёт наше устройство по винтикам. Всё, что он сможет узнать — это открытый ключ, а для алгоритма нет никакой возможности получить закрытый ключ из открытого. Это фундаментальное свойство асимметричной криптографии.

       На рисунке 1 показан процесс безопасной загрузки и закачки, основанный на алгоритме, который обеспечивает высокий уровень доверия при достаточной длине ключа (как правило, не менее 256 бит). Как видно из рисунка, существует два аспекта данного решения. В отделе разработки, где собственно разрабатывается прошивка и формируются конфигурационные данные, создаётся пара ключей — закрытый и открытый. Прошивка или данные, которые необходимо защитить, подписываются в доверенном окружении, с использованием закрытого ключа. Как видно из рисунка 2, в процессе вычисления подписи применяется алгоритм - 256: подпись вычисляется для хэша - 256 исходного образа прошивки или файла данных. На практике подпись вычисляется и добавляется к коду или данным в отделе разработки (см. рис. 1). Именно эта подпись хэша - 256 позволяет конечному приложению проверить как подлинность, так и целостность файла прошивки или данных. Очевидно, что процессор конечного устройства должен обладать внутренними или внешними ресурсами, достаточными, во-первых, для вычисления хэша - 256 файла прошивки или данных и, во-вторых, для последующей проверки корректности прикреплённой подписи с использованием вычисленного значения хэша и хранящегося в устройстве открытого ключа (см. рис. 3). В случае успешности такой проверки мы можем гарантировать, что полученный файл прошивки или данных — подлинный и не подвергался никаким изменениям.

Рис. 1. Использование алгоритма ECSDA для безопасной загрузки и безопасной закачки

Использование шлейфа для подключения модуля сопряжения МСК

Рис. 2. Формирование подписи ECSDA для файла прошивки/данных

Использование шлейфа для подключения модуля сопряжения МСК

Рис. 3. Верификация подписи ECSDA полученного файла прошивки/данных

Использование шлейфа для подключения модуля сопряжения МСК

Проблемы

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

  • Хэш SHA-256 — в случае программной реализации алгоритма для вычисления хэша большого объёма данных может потребоваться много времени.

  • Верификация подписи ECSDA — верификация подписи по алгоритму ECSDA представляет собой сложную вычислительную задачу; во встраиваемых устройствах данная операция выполняется, как правило, с использованием подходящих ресурсов, ускоряющих математические расчёты.

  • Реализация — крайне важно грамотно реализовать криптографические алгоритмы, чтобы исключить появление дыр в безопасности, которые впоследствии сможет обнаружить и использовать злоумышленник.

Безопасная загрузка и безопасная закачка с использованием DS28C36

       Для встраиваемых систем, не имеющих в своём составе защищённого микроконтроллера, способного выполнять все вычисления, необходимые для проверки подлинности и целостности загруженного программного обеспечения, компания Maxim Integrated предлагает недорогое решение в виде специализированной микросхемы защищённой аутентификации DS28C36 семейства Deepcover. На рисунке 4 показано, как DS28C36 можно подключить к основному процессору устройства и указаны выполняемые ею операции. Более подробно операции, выполняемые DS28C36, описаны после рисунка.

Использование шлейфа для подключения модуля сопряжения МСК

Рис. 4. Взаимодействие основного процессора с DS28C36

  • Как упоминалось, ключевая пара из открытого и закрытого ключей, необходимых для реализации процесса безопасной загрузки или закачки, формируется в отделе разработки. Закрытый ключ пары используется для генерации подписи прошивки или файла данных, которая, в итоге, проверяется микросхемой DS28C36 в конечном устройстве. Ещё раз отметим, что закрытый ключ никогда не выходит за пределы контролируемого окружения отдела разработки. Открытый ключ пары загружается в соответствующий регистр DS28C36 с атрибутом «ключ авторизации» — это конфигурируемая настройка.
  • Закрытый ключ используется для вычисления цифровой подписи прошивки или файла данных. Как уже упоминалось (см. рис. 2), подпись вычисляется для хэша - 256 исходного файла.

  • Микросхема DS28C36 с заранее записанным открытым ключом (значение с атрибутом «ключ авторизации») размещается на системной плате устройства и подключается к основному процессору.

  • Когда процессору необходимо выполнить фрагмент кода прошивки или воспользоваться конфигурационными данными, они сначала считываются из флэш-памяти менеджером загрузки и передаются в DS28C36 в виде последовательности 64-байтных блоков для вычисления хэша - 256.

  • После того, как DS28C36 завершит вычисление хэша, процессор передаёт ей подпись, которая была вычислена на этапе разработки и присоединена к файлу.

  • После того, как DS28C36 получит подпись, процессор передаёт команды проверки подписи с использованием предварительно записанного открытого ключа.

  • В случае успешной проверки на выходе DS28C36 появляется лог. «0», а процессору передаётся результат верификации. Состояние вывода и значение переданного байта служат сигналом для процессора, что он может безопасно исполнять код или использовать конфигурационный файл.

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

Таблица 1. Алгоритм безопасной загрузки с использованием DS28C36

Этап

Основной микроконтроллер

Направление данных

DS28C36

1

Прошивка или файл данных

>

Вычисляет хэш SHA-256, используя функцию вычисления хэша для последовательности блоков

2

Подпись ECSDA прошивки или данных

>

Сравнивает подписи ECSDA для прошивки и для вычисленного значения хэша. Изменяет состояние вывода в случае корректности

3

 

 

Результат проверки может быть получен процессором как аппаратно (чтением состояния вывода), так и программно (чтением бата результата)

4

Случайный запрос

>

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

5

 

<

Результат вычисления ECSDA

6

Проверяет результат вычисления ECSDA для запроса. На этом этапе проверяется соответствие логического уровня на выходе DS28C36 переданному значению для обратной связи

 

 

7

Выполняет код прошивки после успешного завершения безопасной загрузки

 

 

 

Безопасная загрузка и безопасная закачка с использованием MAXQ1061

      Микросхема MAXQ1061 была разработана для использования в качестве ядра доверия встраиваемых систем. Она отвечает всем требованиям, перечисленным выше. Её аппаратные блоки ускорения обеспечивают быстрые вычисления алгоритмов SHA и ECSDA, разгружая тем самым основной процессор. Кроме того, MAXQ1061 предоставляет надёжную инфраструктуру для автономного хранения открытых ключей, при этом сертификаты открытых ключей могут быть либо неизменяемыми, либо допускать обновление только уполномоченными лицами. Контроллер MAXQ1061 гарантирует невозможность замены открытого ключа поддельным, что позволяет защитить конечное устройство от атак, заключающихся во внедрении открытого ключа злоумышленника, который обеспечил бы успешную проверку недоверенного программного обеспечения.

Использование шлейфа для подключения модуля сопряжения МСК

Рис. 5. Взаимодействие основного процессора с MAXQ1061

       Последовательность операций для MAXQ1061 во многом аналогична приведённой ранее для DS28C36. На рисунке 5 показано взаимодействие основного процессора с MAXQ1061.

  • Как уже неоднократно упоминалось, пара ключей для обеспечения безопасной загрузки или закачки формируется в отделе разработки. В случае использования MAXQ1061 длина ключей ECSDA может составлять 256, 384 или 512 бит. Закрытый ключ пары используется для подписи прошивки или файла данных, проверкой которых в конечном устройстве будет заниматься MAXQ1061. Этот закрытый ключ никогда не покидает пределов контролируемого окружения отдела разработки. Открытый ключ пары загружается в MAXQ1061.

  • Как видно из рисунка 2, закрытый ключ используется при вычислении цифровой подписи. Она вычисляется для хэша SHA-x файла прошивки или данных и добавляется к нему.

  • Основной процессор передаёт MAXQ1061 команду «VERIFY BOOT» вместе с проверяемыми данными и их цифровой подписью.

  • MAXQ1061 возвращает результат проверки в виде флага успеха или кода ошибки. Опционально может формироваться сигнал на выходе RESET OUT. Этот сигнал можно использовать для генерации прерывания основного процессора или для его сброса.

  • В случае успешной проверки микросхема переходит в состояние «SECURE BOOT». Благодаря наличию защищённой файловой системы, пользователь MAXQ1061 может конфигурировать доступ к определённым объектам в случае успешной проверки программного обеспечения. Доступ к таким объектам, если он не заблокирован, предоставляется только в указанном состоянии. Данная функция может использоваться, в частности, для хранения в MAXQ1061 ключа шифрования прошивки — этот ключ потребуется для расшифровки прошивки только в случае успешной проверки её подписи.

  • Опционально прошивка передаётся для расшифровки в аппаратный модуль AES SPI.

В таблице 2 представлены основные этапы реализации алгоритма безопасной загрузки с использованием MAXQ1061.

Таблица 2. Алгоритм безопасной загрузки с использованием MAXQ1061

Этап

Основной микроконтроллер

Направление данных

MAXQ1061

1

Прошивка или файл данных, снабжённые подписью ECSDA

>

Вычисляет хэш полученных данных и проверяет подпись ECSDA

2

Подпись ECSDA прошивки или файла данных

<

Возвращает статус команды «VERIFY BOOT»: успех или неудача

3

Сбрасывается или принимает сигнал прерывания

<

Опционально активируется выход RESET_OUT

4

 

>

В состоянии «SECURE BOOT» предоставляется доступ к определённым объектам. Например, к ключу шифрования прошивки

5

Опционально передаёт прошивку в MAXQ1061 для расшифровки

>

 

6

 

<

Расшифровывает прошивку и передаёт результат обратно в основной микроконтроллер

7

Выполняет код прошивки после успешного завершения безопасной загрузки

 

 

 

Выводы

       Способность контролировать целостность и оригинальность прошивки или файла с конфигурационными данными, которые установлены во встраиваемое устройство или загружены в него при эксплуатации, обозначается термином «безопасная загрузка» или «безопасная закачка». Это проверенное решение для защиты IoT-устройств от различного рода атак. Успешно реализованные в вашем устройстве безопасная загрузка и безопасная закачка позволяют:

  • Гарантировать подлинность и неизменность загруженного файла данных или прошивки

  • Предотвращать внедрение в устройство модифицированных данных или кода

  • Повысить безопасность промышленного и медицинского оборудования

  • Контролировать разблокирование функциональных возможностей устройства

       Микросхемы DSC28C36 и MAXQ1061 производства компании Maxim Integrated представляют собой простые аппаратные решения, которые позволяют разработчикам добавлять в свои встраиваемые системы функции безопасной загрузки прошивки или безопасной закачки данных для использования их как на этапе производства, так и во время эксплуатации.

 

Комментарий специалиста

Николай Федотов, руководитель направления Maxim Integrated, «Симметрон»

       На сегодняшний день вопрос информационной безопасности можно назвать самым «горячим» на нашем рынке. Столь массовому вниманию данная тема обязана проблемам последнего времени в сфере информационной безопасности — общая история массовых атак пополняется новыми успешными примерами, которые активно обсуждаются всеми мировыми СМИ. Такое внимание, в конечном счёте, отражается и на инженерах различных групп разработчиков, поскольку обеспокоенные заказчики всё чаще начинают интересоваться уровнем безопасности предлагаемых/разрабатываемых систем. Например, это особенно актуально для сферы промышленной автоматизации, поскольку целостность и проверка корректности данных, получаемых от промышленного логического контроллера или от конечных измерительных узлов, являются залогом правильного выбора алгоритма для контроля и настройки того или иного процесса. Иными словами, без корректных данных об актуальном состоянии системы ею просто-напросто невозможно управлять/анализировать. А мы с вами прекрасно понимаем, что есть критически важные элементы инфраструктуры, которые недостаточно просто перевести на автономное управление без доступа в сеть. Автономность уже давно не является 100-процентной гарантией защиты от кибер-угроз. Всё это вынуждает разработчика посвящать больше времени вопросу безопасности разрабатываемых систем, подыскивать подходящие его проекту способы защиты данных и выстраивать комплексную защиту, используя разные технологии (аутентификация и потоковое шифрование данных), но только там, где это действительно необходимо.

       Для задач аутентификации MaximIntegrated предлагает обширную линейку аутентификаторов и сопроцессоров к ним, реализующих алгоритмы SHA-1, SHA-256 и ECDSA. Для задач шифрования разработана серия защищённых микроконтроллеров с безопасной загрузкой и с аппаратными ускорителями SHA, RSA, ECDSA и AES. Обе группы продукции максимально адаптированы для сокращения времени разработки на стороне заказчика. На сегодняшний день все эти решения обеспечивают самый лёгкий, быстрый и в то же время надёжный вариант для перехода на принципиально новый уровень информационной безопасности.

       Если говорить несколько подробнее про аппаратную аутентификацию в России и СНГ, то можно отметить, что рынок в большей степени знаком с решениями от MaximIntegrated старого поколения на основе алгоритма криптографического хеширования SHA-1 (ключ DS1961S и сопроцессор DS2460 к нему). Эти решения начали активно применяться на нашем рынке только последние пару лет. Ранее применение ограничивалось только небольшой серией точечных проектов. Сейчас же ключ DS1961S стал основой для многих крупных проектов систем домофонии и СКУД. Но и с этим отработанным/проверенным решением могут возникать некоторые недоразумения, причиной которых служит недостаточной уровень компетенции конечного заказчика и, как следствие, составление непродуманных технических заданий. Поскольку при аутентификации на основе симметричной криптографии используется один и тот же секретный ключ как со стороны аутентификатора, так и стороны хоста, то для корректного управления такой системой безопасности необходимо сохранять право на создание/изменение секретного ключа только конечному потребителю. В противном случае, конечный потребитель попадает в ситуацию, когда сторонний разработчик записывает в память аутентификатора и в хост секретный ключ, который знает только сам разработчик. При этом оценить вероятность утечки секретного ключа со стороны разработчика зачастую невозможно, что неприемлемо, например, для банковского сегмента. Такой подход с поставкой уже запрограммированных ключей объясняется достаточно просто — в основном это вызвано желанием компании разработчика системы сохранить за собой монопольное право на все последующие поставки аутентификаторов. При этом заказчик не обязательно уведомляется о такой специфике работы, и он даже не подозревает, что в дальнейшем купить дополнительное количество аутентификаторов для своей существующей системы через другую компанию он просто не сможет. Кроме того, конечный заказчик может размещать запросы на тендерных площадках и пребывать в полной уверенности, что ему достаточно просто найти оригинальный ключ DS1961S производства MaximIntegrated, но это совершенно не так.

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

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