Средства противодействия угрозам безопасности в микроконтроллерах STM32G0

27 сентября

учёт ресурсовмедицинаавтоматизацияинтернет вещейуниверсальное применениеST Microelectronicsстатьяинтегральные микросхемы

Михаил Емельянов (г. Уфа)

Обладая мощным набором инструментов информационной безопасности, микроконтроллеры STM32G0 производства STMicroelectronics способны обеспечить полную безопасность разрабатываемого устройства.

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

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

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

Семейство STM32G0 стало ответом фирмы STMicroelectronics на зачастую противоречивые требования к микроконтроллерам для рынка IoT. Удачно объединив невысокую цену, энергоэффективность и расширенный арсенал встроенных аппаратных инструментов, отвечающих за безопасность, STM32G0 на базе ядра ARM Cortex-M0+ может стать основой системы, которая не только удовлетворит растущие запросы к производительности и экономии энергии, но и будет максимально защищенной без чрезмерных сложностей в разработке и сопровождении.

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

Атаки

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

Во-первых, какие бы меры не предпринимались для комплексной защиты системы, вполне вероятно, что новая, ранее неизвестная, брешь в безопасности будет обнаружена и использована в течение срока службы устройства. Существует целая экосистема, объединяющая программистов, хакеров и специалистов по реверс-инжинирингу, где свеженайденная «Уязвимость нулевого дня» (англ. «0day»), т. е. неустраненная ошибка или вредоносная программа, против которой еще не разработан защитный механизм, служит не только предметом гордости, но и прибыльным товаром. Из этого следует простой вывод – в течении всего срока эксплуатации прибора необходимо предпринимать определенные усилия для исследования новых типов атак и для периодического обновления ПО.

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

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

Типы атак

Рассмотрим возможные виды атак на микроконтроллер, начиная с базовых, и вплоть до профессионально спланированных атак с применением специализированного инженерного оборудования. Существуют следующие типы атак: атака программного обеспечения (ПО), неинвазивная атака аппаратного обеспечения и инвазивная атака аппаратного обеспечения; также следует отдельно рассмотреть специфику атаки IoT-системы.

В таблице 1 приведен краткий обзор рассмотренных атакующих техник.

Таблица 1. Типы атак

Тип атаки Атака ПО Аппаратная неинвазивная Аппаратная инвазивная
Условия Местно или удаленно Требуется доступ к собранному устройству или к печатной плате Требуется доступ к печатной плате
Методики Ошибки в ПО
Уязвимости интерфейсов
Сканирование интерфейсов
Фаззинг
Отладочный порт
Коммуникационные порты
Внедренный код (code injection)
Помехи по цепям питания (power glitches)
Нештатное тактирование (clock glitches)
Анализ побочных эффектов (side-channel attack)
Зондирование кристалла
Лазерная резка
Травление
Ионное травление (FIB)
Оптическая и электронная микроскопия
Инжекция помех (fault injection)
Стоимость От очень низкой до высокой, в зависимости от уровня безопасности, намеченного при разработке встроенного ПО От средней до высокой. Требуется ограниченный набор относительно несложного оборудования и персонал, обладающий средней квалификацией Очень высокая. Необходимо дорогое специализированное оборудование и персонал, обладающий экспертной квалификацией
Цели Доступ к конфиденциальной информации (код и данные), перехват данных, отказ оборудования Доступ к конфиденциальной информации и определение алгоритмов работы устройства Реверс-инжиниринг (получение полного пакета документации для воспроизведения устройства)

Атака программного обеспечения

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

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

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

Одним из специализированных видов атаки ПО является фаззинг (fuzzing), когда на интерфейсы и каналы ввода информации прибора подаются заведомо неправильные, случайные данные или данные в объеме, сильно превышающем штатные объемы. Злоумышленники заинтересованы как в выявлении закономерности зависаний и ошибочной работы, способных прояснить особенности внутренней логики устройства, так и в инициации процесса утечки памяти, способного в результате дать доступ к защищаемому коду.

Неинвазивные методы атак аппаратного обеспечения

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

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

Доступ к коммуникационным портам позволяет применить специализированные сканеры интерфейсов или записать процедуры обмена информацией для их дальнейшего анализа. Этот вид атаки в целом похож на сканирование интерфейсов из раздела программных атак, но более действенен, т. к. у атакующей стороны появляется доступ к внутренним коммуникационным ресурсам анализируемого устройства – к I2C, SPI, 1-Wire, параллельным шинам внешней памяти и другим.

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

Помехи по цепям питания (power glitches) и нештатное тактирование (clock glitches) могут перевести микроконтроллер в некорректный режим работы, способный дать атакующей стороне дополнительную информацию о режимах работы устройства. Анализ побочных эффектов (side-channel attack) предполагает сканирование и анализ дополнительных параметров, характеризующих работу микроконтроллера, таких, как потребляемый ток, температура корпуса, электромагнитная эмиссия. Эта информация, сама по себе достаточно незначительная, вкупе с другими добытыми данными может дать ключ к понимаю внутренней структуры программы.

Инвазивные методы атак аппаратного обеспечения

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

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

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

Рис. 1. Фотография кристалла микроконтроллера STM32F100C4T6B после растворения корпуса концентрированной серной кислотой при температуре 300⁰C* *Автор — Михаил Сваричевский, лицензия Creative Commons Attribution 3.0 Unported License.

Рис. 1. Фотография кристалла микроконтроллера STM32F100C4T6B после растворения корпуса концентрированной серной кислотой при температуре 300°C (Автор — Михаил Сваричевский, лицензия Creative Commons Attribution 3.0 Unported License)

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

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

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

Методы атак IoT-систем

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

С точки зрения безопасности можно выделить следующие актуальные векторы атак на IoT-устройство (рисунок 2):

Рис. 2. Векторы атак на IoT-устройство

Рис. 2. Векторы атак на IoT-устройство

  • широкая номенклатура (Ethernet, Wi-Fi, Bluetooth, LoRa и т. д.) и достаточно большое количество уязвимостей каналов связи. Имеется выраженная тенденция к увеличению количества устройств, подключенных через беспроводные интерфейсы и разновидности PLC (Power line communication, использование линий электропередачи для обмена данными), не требующими для подключения и атаки физического контакта с устройством;
  • тесная взаимосвязь IoT-устройства и сервера определяет возможность взлома не устройства, а именно сервера, с последующим доступом к каналу связи и устройству. Задача эта, с одной стороны, достаточно сложна, так как серверная часть распределенных IoT-систем часто базируется на облачных технологиях (Amazon Web Services, Google Cloud, Microsoft Azure), защита которых со стороны провайдера находится на очень высоком уровне. С другой стороны, надо иметь в виду возможность использования собственных серверов, не всегда должным образом защищенных, распространенность методов взлома серверного оборудования и скоординированность сообщества хакеров.
  • IoT-устройство, работающее, как правило, в сети себе подобных, должно стоить недорого, иначе суммарная стоимость решения может оказаться неподъемной. Учитывая эффект масштаба, разработчик в процессе проектирования должен экономить буквально каждый цент, в том числе взвешивая рациональность примененных мер, направленных на обеспечение безопасности, и иногда невольно принимая решения, тяготеющие к экономии, а не к безопасности. И тут весьма кстати будет вспомнить о главных героях нашей статьи, микроконтроллерах серии STM32G0. Как будет показано ниже, STMicroelectronics при разработке этой серии сделало упор именно на экономии и безопасности, так что теперь есть возможность сконструировать максимально защищенное, но при этом бюджетное устройство.

Авторы исследований, связанных с безопасностью IoT (например, «Privacy and the Internet of Things» Гилада Роснера), также отмечают появление таких системных эффектов, как сосредоточение на серверах огромных объемов разнохарактерной информации, несанкционированное использование которой способно привести к большому ущербу, и вынужденный допуск к работе персонала, зачастую не обладающего должной квалификацией и недостаточно обеспокоенного информационной безопасностью.

Методы противодействия

После разбора видов возможных атак мы достаточно обоснованно можем спрогнозировать и подвергнуть анализу методы защиты (рисунок 3).

Рис. 3. Методы защиты

Рис. 3. Методы защиты

Защита Flash-памяти

Без сомнения, самый важный и самый действенный метод защиты – блокировка доступа к памяти устройства. Содержащая проприетарный код и чувствительные данные, Flash-память микроконтроллера в обязательном порядке должна быть закрыта как для внешних интерфейсов (таких как отладочные порты), так и от внутренних неавторизованных процессов.

В целом, при планировании атаки на микроконтроллер именно содержимое Flash является целью номер один. Загрузчик, основная программа и требуемые для работы данные во Flash-памяти, вместе со схемой прибора, полученной при анализе аппаратного обеспечения, совокупно способны составить полный пакет документации, необходимый для клонирования устройства.

При работе с линейкой STM32G0 для комплексной защиты памяти от внешней атаки необходимо в первую очередь активировать RDP (здесь и далее курсивом выделены конкретные защитные механизмы, имеющиеся в арсенале STM32G0 и детально разобранные в следующей главе). Именно RDP отключает возможность считывать Flash-память через отладочный интерфейс JTAG или SWD. Это первый рубеж обороны и своего рода водораздел, заставляющий злоумышленника переходить от простого копирования информации к осмысленным атакующим мероприятиям.

При осуществлении внутренней атаки на Flash-память злоумышленник пытается запустить сторонний код, инжектированный в ОЗУ или предварительно внедренный в стороннюю библиотеку, с тем, чтобы получить доступ к основным коду и данным. Метод непрост, но очень продуктивен, защититься от внешнего кода, считывающего содержимое внутренней памяти, достаточно тяжело, но, к счастью, в серии STM32G0 предусмотрен целый арсенал от такого вида атак: PCROP, запрещающий доступ на чтение, запись и даже на стирание к определенному блоку Flash-памяти; Securable memory area, блокирующая доступ к загрузчику после его однократного исполнения; MPU, позволяющий гибко настраивать права доступа к Flash-памяти, ОЗУ и регистрам.

Защита от записи неиспользуемой памяти поможет предотвратить инжекцию кода или модификацию основной программы. STMicroelectronics рекомендует не оставлять неиспользованную память в исходном состоянии (virgin value), а заполнять ее каким-нибудь предсказуемым паттерном, например, командой NOP, а лучше кодом вызова прерывания или заведомо некорректными значениями (illegal op-codes), при попытке исполнения которых будет также вызвано прерывание; в таком случае микроконтроллер получит информацию о том, что в результате сбоя или преднамеренного вмешательства началось исполнение кода из неиспользуемой области памяти и нужно предпринять соответствующие меры. Для защиты от записи, кроме упомянутого выше MPU, следует использовать специализированный инструмент – WRP, при помощи которого можно заблокировать на запись два несвязанных блока Flash-памяти разного размера.

Документация от STMicroelectronics отмечает, что в список защитных мероприятий следует обязательно включить активацию механизма ECC, позволяющего автоматически детектировать и исправлять ошибки памяти. ECC не является чистым средством защиты от атак, будучи, в соответствии с «AN4750, Handling of soft errors in STM32 applications», в первую очередь методом обнаружения случайных ошибок (random failures control techniques), но при этом входит в обязательный чек-лист активируемых защит.

Защита ОЗУ

Стек, массивы данных, буферы коммуникационных интерфейсов и переменные — все это расположено в ОЗУ и является желанной целью для хакера.

Весьма распространено исполнение кода из ОЗУ, т. к. именно ОЗУ – самая быстрая память, имеющаяся в распоряжении микроконтроллера, и зачастую участок кода, при выполнении которого требуется максимальная скорость, переносят перед выполнением в ОЗУ. Другой причиной для выполнения кода из ОЗУ является наличие внешней Flash-памяти, содержащей зашифрованный код, который переносится в оперативную память, где впоследствии расшифровывается и исполняется. Разумеется, в таком случае нужно защитить ОЗУ (или его часть) от внешнего доступа. В этом нам поможет MPU, который способен гибко настроить права доступа к памяти или даже включить режим, в котором исполнение кода из оперативной памяти полностью запрещено (execute never).

После выполнения некоторых участков кода ОЗУ может содержать временные значения секретных переменных. Например, при отправке или приеме зашифрованного сообщения пароль, находящийся в защищенном секторе Flash-памяти, может быть считан в ОЗУ. Нужно в обязательном порядке очищать ОЗУ сразу после выполнения операций, способных оставить в свободном доступе секретные данные. Все временные переменные должны быть удалены, буферы коммуникационных протоколов обнулены, стек и куча должны быть зачищены. В дополнение к этому рекомендуется использовать RDP для запрета загрузки из ОЗУ и запрета загрузки из внешних источников (bootload).

Совместно с ECC, детектирующим ошибки Flash-памяти, работает контроль четности ОЗУ, автоматически обнаруживающий ошибки в ОЗУ. Контроль четности рекомендуется к обязательной активации, даже несмотря на то, что без него объем оперативной памяти вырастает на 12.5 % (1/8, добавляется по одному биту на каждый байт).

Изоляция программного обеспечения

Изоляция кода относится к высокоуровневым техникам защиты от взлома, и предполагает совместное скоординированное взаимодействие аппаратных возможностей, предусмотренных изготовителем микроконтроллера, разработчиками операционных систем и программистами, пишущими прикладной код. Тут стоит в очередной раз помянуть добрым словом инженеров STMicroelectronics, включивших Memory protection unit в состав даже самых недорогих линеек STM32G0 Value Line, и тем самым заложивших мощный фундамент безопасности для всего семейства.

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

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

Для корректной изоляции ПО совместно с MPU рекомендуется использовать Securable memory area, при помощи которой можно определить некоторые параметры процессов еще на уровне немодифицируемого загрузчика.

Отладочные порты и интерфейсы загрузки

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

Кроме этого, нужно в обязательном порядке отключать неиспользуемые возможности по загрузке извне. Например, даже самый простой микроконтроллер серии STM32G0, STM32G070, может загрузить внешний код с USART1, USART2, USART3, I2C1, I2C2, SPI1, SPI2 (глава «STM32G07xxx/08xxx device bootloader» в «AN2606. STM32 microcontroller system memory boot mode»). Это огромная прореха в безопасности, и, если загрузка с внешнего источника не предусмотрена конструкцией прибора, ее нужно обязательно отключить при помощи RDP.

Мониторинг состояния системы

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

Механизм обеспечения безопасности тактирования CSS обеспечивает безопасное отключение внешних тактовых частот HSE и LSE в случае их отказа или ненормального поведения и переход на работу от встроенных генераторов.

Мониторинг напряжения питания при помощи встроенного АЦП (для микроконтроллеров линейки Value Line) и программируемый детектор напряжения PVD (для линеек Access Line и Access Line & Encryption) могут сигнализировать о выходе напряжения питания за границы нормы и о необходимости перехода в безопасный режим.

Измерение температуры кристалла при помощи встроенного сенсора позволит определить перегрев или слишком сильное охлаждение прибора.

Обнаружение физического доступа (Tamper detection) – функция, ответственная исключительно за безопасность. С ее помощью можно определить вскрытие корпуса прибора и предпринять меры для смены режима работа или уничтожения чувствительной информации.

Безопасная загрузка и обновление ПО

После сброса микроконтроллера загрузка различных компонентов программы происходит поэтапно: в самом начале микроконтроллер настраивает опции обеспечения безопасности системы (MPU, IWDG и т. д.), потом загружается пользовательский код, и в конце – сторонние библиотеки. Обеспечение безопасности системы в течение этого пошагового процесса, когда более доверенный элемент перед загрузкой проверяет безопасность менее доверенного, называется «цепочкой доверия» (chain of trust, рисунок 4) и обеспечивается следующими процедурами:

Рис. 4. Цепочка доверия

Рис. 4. Цепочка доверия

  • обеспечением максимальной защищенности корневого компонента (root). Если корневой компонент будет скомпрометирован, то будет скомпрометирована вся цепочка безопасности, и все остальные загружаемые компоненты будут под угрозой.
  • проверкой контрольных сумм устанавливаемых компонентов (при помощи MD5 или SHA256);
  • максимальным использованием в процессе загрузки криптографических схем.

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

Исходя из таких предпосылок, видно, что обновление ПО микроконтроллера всегда должно быть криптографически защищено, и, следовательно, микроконтроллер всегда должен быть способен аутентифицировать, проверить целостность и установить такое криптографически защищенное обновление (рисунок 5).

Рис. 5. Защищенное обновление ПО

Рис. 5. Защищенное обновление ПО

Для использования обозначенных концепций STMicroelectronics рекомендует ознакомиться с «UM2262. Getting started with the X-CUBE-SBSFU STM32Cube Expansion Package», в котором рассматриваются практические аспекты использования безопасной загрузки и обновления ПО, в том числе применительно конкретно к STM32G0.

В таблице 2 сведены вместе рассмотренные типы атак и методы противодействия.

Таблица 2. Соответствие типа атаки и метода противодействия

Тип атаки Метод противодействия
Атаки программного обеспечения
Ошибки в ПО Запуск сторонних библиотек в изолированном процессе
Активация сторожевого таймера перед запуском сторонних библиотек, ответственных или длительных операций
Использование тестирования при разработке ПО
Уязвимости интерфейсов Запуск интерфейсного ПО в изолированном процессе
Сканирование интерфейсов Криптографическая защита чувствительных данных, передаваемых через внешние интерфейсы
Фаззинг Использование тестирования при разработке ПО для нахождения возможных ошибок, в том числе связанных с обработкой некорректных данных
Использование стандарта MISRA C «Guidelines for the use of the C language in critical systems» в паре с совместимым статическим анализатором кода
Аппаратные атаки
Доступ к незаблокированному отладочному порту Отключение отладочных портов без возможности разблокировки
Доступ к коммуникационным портам Криптографическая защита данных
Внедренный код Запрет запуска кода из ОЗУ

Защита от записи неиспользуемой Flash-памяти

Помехи по цепям питания, инжекция помех Мониторинг напряжения питания, в случае ухода напряжения из безопасного коридора – переход в безопасный режим
Активация механизмов контроля четности ОЗУ и детектирования битовых ошибок во Flash-памяти
Нештатное тактирование Мониторинг внешних тактовых частот, в случае нарушения кондиций – переход на внутренние тактовые генераторы
Атаки IoT-систем
Беспроводные интерфейсы Криптографическая защита данных и обновлений ПО микроконтроллера
Атака сервера Своевременное обновление серверного ПО
Использование специализированного защитного ПО (SSH-аутентификация, брандмауэры, шифрование)
Периодический аудит

Обеспечение безопасности микроконтроллеров линейки STM32G0

Давайте более предметно рассмотрим методики противодействия программным и аппаратным атакам, задействованные в новых микроконтроллерах STM32G0. Линейка STM32G0 на ядре ARM Cortex-M0+ была относительно недавно запущена STMicroelectronics как глубоко модернизированная альтернатива бюджетной серии STM32F0. Благодаря использованию улучшенных топологических норм и двухуровневого конвейера удалось уменьшить потребляемую мощность до уровня 11,2 мкВт/МГц, параллельно расширив линейку как в сторону эконом-сегмента (за счет появления 8-выводных корпусов), так и в сторону ресурсоемких решений (за счет появления вариантов с 128 кбайт ОЗУ и 521 кбайт Flash). Более подробно новая линейка описана в другой статье на сайте «Компэла» — «Новое семейство микроконтроллеров STM32G0».

При разработке STM32G0 инженеры ST уделили особое внимание вопросам обеспечения безопасности, ликвидировав сразу несколько возможных векторов атак на микроконтроллер. Теперь более подробно рассмотрим механизмы защиты внутренних ресурсов от несанкционированного доступа.

Защита от чтения (RDP)

RDP обеспечивает базовый уровень защиты, закрывая доступ через отладочные порты JTAG и SWD к содержимому Flash-памяти, служебным регистрам и бэкап-регистрам. RDP предусматривает три уровня защиты (рисунок 6):

Рис. 6. Уровни защиты от чтения RDP

Рис. 6. Уровни защиты от чтения RDP

уровень 0 – Flash-память программ, служебные регистры и бэкап-регистры полностью доступны для записи, чтения и стирания;

уровень 1 – код, исполняемый из внутренней Flash-памяти, имеет полноценный доступ к Flash, служебным регистрам и бэкап-регистрам. Код, исполняемый в режиме отладки или из ОЗУ, не имеет доступа к Flash-памяти и бэкап-регистрам. Попытка программы получить доступ к Flash на чтение или запись сгенерирует прерывание Hard Fault и приведет к остановке работы. Уровень 1 включен по умолчанию, например, у нового микроконтроллера или после стирания регистров настройки RDP;

уровень 2 – к защитным функциям, доступным на уровне 1, добавляется полное отключение отладочных портов, запрет загрузки из ОЗУ и запрет загрузки из внешних источников. Возврат микроконтроллера с уровня 2 на более низкие уровни исключен; STMicroelectronics в документации отдельно оговаривает не только блокировку отладочных портов, но и невозможность вернуть микроконтроллер, переведенный на уровень 2 RDP, на дефектацию производителю, т. к. анализ такого чипа становится совершенно невозможен.

Гибкость механизма RDP показана в таблице 3.

Таблица 3. Влияние RDP на защиту Flash-памяти и ОЗУ

Область Уровень RDP Код пользователя
(загрузка из Flash)
Отладка, загрузка из ОЗУ или посредством bootload
Чтение Запись Стирание Чтение Запись Стирание
Память пользователя 1 Да Да Да Нет Нет Нет
2 Да Да Да
Системная память 1 Да Нет Нет Да Нет Нет
2 Да Нет Нет
Служебные регистры 1 Да Да Да Да Да Да
2 Да Нет Нет
Бэкап-регистры 1 Да Да Нет Нет
2 Да Да

Защита от записи (WRP)

WRP защищает Flash-память от нежелательных операций записи. Можно защитить два несвязанных блока памяти разного размера (Area A и Area B).

Начальный и конечный адреса относительно начала Flash-памяти определяются в страницах, которые в STM32G0 имеют размер 2 кбайта. Например, если вы хотите защитить 5 страниц памяти, перекрывающих адреса с 0x08001000 до 0x08003FFF при помощи регистров Area A, то нужно записать следующие значения:

WRP1A_STRT = 0x02;

WRP1A_END = 0x07.

При установке области WRP ее больше нельзя сделать доступной для записи.

Защита от чтения проприетарного кода (PCROP)

PCROP (Proprietary code readout protection) – механизм, запрещающий доступ на чтение, запись и стирание к блоку Flash-памяти. Доступ к выбранному фрагменту возможен только на исполнение, то есть записанный там код будет нормально исполняться, но прочитать или изменить записанное будет невозможно. Все каналы доступа к выбранному фрагменту памяти, такие, как отладка или операции c DMA, будут запрещены. Так же, как и WRP, PCROP может работать с двумя несвязанными блоками памяти разного размера (Area A и Area B)

В отличие от механизма WRP, имеющего дискрет в 2 кбайта, PCROP работает с меньшим шагом в 512 байт. Так, например, при записи значений

PCROP1A_STRT = 0x04,

PCROP1B_END = 0x09,

механизм PCROP закроет от чтения проприетарного кода диапазон памяти от 0x08000800 до 0x080013FF.

В составе служебных регистров есть отдельный бит, PCROP_RDP, отвечающий за то, будет ли стерто содержимое области PCROP при переключении RDP с уровня 1 на уровень 0.

Защищенная область памяти (Securable memory area)

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

Защищенная область памяти располагается в самом начале Flash-памяти по адресу 0x08000000, активируется битом SEC_PROT регистра FLASH_CR, размер области регулируется при помощи флагов SEC_SIZE[6:0] в регистре FLASH_SECR. При переключении RDP с уровня 1 на уровень 0 содержимое защищенной области будет стерто.

Блок защиты памяти (Memory protection unit, MPU)

MPU – механизм, позволяющий гибко настраивать права доступа ко всем ресурсам микроконтроллера, отображаемым на общее адресное пространство – Flash-памяти, ОЗУ и регистрам. MPU контролирует доступ только со стороны центрального процессора, доступ со стороны других источников запросов (например, DMA) не фильтруется.

При помощи MPU можно запретить определенным областям кода доступ к некоторым областям данных, например, при работе под управлением операционной системы (ОС) пользовательские приложения не смогут изменять критические данные, используемые ядром ОС. MPU также может пометить область ОЗУ как неисполняемую для предотвращения атак типа code injection.

MPU позволяет разделить доступную память на 8 разных регионов и не только ранжировать права доступа (полный доступ, доступ только на чтение, запрет доступа, запрет на исполнение кода) и разграничивать привилегии, но и вводить дополнительные категории, такие как возможность совместного использования (shareable), возможность кэширования (cacheable) и возможность буферизации (bufferable). Документация STMicroelectronics рекомендует очень аккуратно использовать MPU (дословно, «It requires good programming skills»), предварительно тщательно изучив документы AN4838 «Managing memory protection unit (MPU) in STM32 MCUs» и PM0223 «STM32L0 Series and STM32G0 Series Cortex-M0+ programming manual».

Возможность использовать MPU при работе с линейкой STM32G0 – еще один повод отказаться от STM32F0, так как семейство STM32F0 – единственное среди всех контроллеров STM32, не поддерживающее MPU.

Для лучшего понимания общей картины все вышеописанные механизмы защиты памяти сведены в объединенную таблицу 4.

Таблица 4. Методы защиты памяти

Метод Защита
от внешних атак
Защита
от внутренних атак
Flash ОЗУ
RDP Да Нет Да Да
MPU Нет Да Да Да
PCPOR Да Да Да Нет
WRP Да Да Да Нет
Securable memory area Да Да Да Да

Обнаружение физического доступа (Tamper detection)

У микроконтроллеров серии STM32G0 два вывода могут быть настроены как входы обнаружения несанкционированного физического доступа к устройству (anti-tamper detection pins). На конструктивном уровне это могут быть микропереключатели, герконы, датчики освещения или другие сенсоры, детектирующие физическое вскрытие корпуса прибора или проникновение в область ограниченного доступа. В зависимости от конструкции датчика входы микроконтроллера могут быть сконфигурированы на детектирование уровня или фронта сигнала.

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

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

Программируемый детектор напряжения (Рrogrammable voltage detector, PVD)

PVD непрерывно измеряет напряжение питания, отслеживая не только его падение ниже минимально допустимого порога, но и превышение максимально допустимого напряжения (рисунок 7).

Рис. 7. Программируемые уровни срабатывания детектора напряжения PVD

Рис. 7. Программируемые уровни срабатывания детектора напряжения PVD

При выходе питающего напряжения за рамки допустимого PVD генерирует прерывание, которое позволяет предпринять действенные меры не только при непреднамеренных сбоях питания, но и при атаках типа power glitch; как вариант, можно успеть уничтожить чувствительные данные, находящиеся в ОЗУ.

Коррекция ошибок Flash-памяти (Flash error code correction, ECC)

Мощный аппаратный механизм, позволяющий найти и исправить одну битовую ошибку (ECC correction, ECCC) или продетектировать без возможности исправления две ошибки (ECC detection, ECCD) в 64-битном слове. На физическом уровне ECC реализован добавлением 8 служебных бит к каждому 8-байтному блоку, так что фактически память разбита на слова длиной 72, а не 64 бит.

Из-за особенностей работы ECC при работе с блоком, содержащим одни единицы (0xFFFFFFFFFFFFFFFF), одиночная ошибка детектируется и исправляется, но двойная ошибка не детектируется. Возможно, для корректной работы ECC на свободной памяти, не занятой кодом и данными, стоит воспользоваться возможностью, предоставляемой некоторыми компиляторами и залить неиспользованную память паттерном, отличным от 0xFF.

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

Контроль четности ОЗУ (SRAM parity check)

В паре с ECC, контролирующим Flash-память, работает механизм контроля четности, позволяющий отслеживать ошибки ОЗУ. Контроль четности предполагает наличие одного служебного бита на каждый байт ОЗУ, соответственно, четырех бит на 32 разрядное слово и четырех дополнительных килобайт на всю память в 32 кбайта (у микроконтроллеров STM32G071XX и STM32G081XX). Контроль четности может быть отключен при помощи флага RAM_PARITY_CHECK, в таком случае дополнительный объем в 4 кбайта прибавится к основной ОЗУ, нарастив суммарную доступную память до 36 кбайт.

Бит контроля четности прозрачно для основного кода вычисляется и записывается во время записи байта в ОЗУ. Контрольный бит автоматически считывается и проверяется при чтении байта, в случае ошибки генерируется немаскируемое прерывание.

Независимый сторожевой таймер (Independent watchdog, IWDG)

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

IWDG тактируется от встроенного низкочастотного RC-генератора частотой 32 кГц, что дает ему независимость от сбоев основного высокочастотного генератора или системы ФАПЧ. Основной код микроконтроллера способен программно включать и выключать IWDG, что позволяет активировать таймер в начале отдельных, особо ответственных операций, например, перед перезаписью Flash-памяти, загрузкой большого пакета данных через коммуникационный порт или перед выполнением большого объема математических вычислений (таких, как шифрование и дешифрование) над большими объемами данных.

В STM32G0 счетчик IWDG имеет длину 12 бит и снабжен входным 8-битным предделителем, что позволяет гибко настраивать требуемый временной интервал срабатывания таймера.

Уникальный номер микроконтроллера (Device ID)

Микроконтроллеры STM32G0 имеют встроенный уникальный 96-битный идентификатор, однократно программируемый на производственной линии и недоступный для изменения ни через отладочный порт, ни пользовательским кодом.

Это чрезвычайно удобная опция позволяет экономить значительные средства при производстве электроники, т. к. раньше разработчику зачастую приходилось для однозначной идентификации устройства закладывать в схему специализированную микросхему с уникальным 64-битным идентификационным номером (т. н. Silicon serial number, например, DS2401 производства Dallas/Maxim) ценой около $0.80 при партии в 1000 штук, которая, к тому же, требовала отдельных выводов микроконтроллера и написания дополнительного кода для обмена по протоколу 1-Wire. Теперь же разработчику достаточно просто прочитать 96-битное значение UID, находящееся у STM32G0 в общем пространстве памяти по адресу 0x1FFF7590.

Аппаратный генератор случайных чисел (True random number generator, TRNG)

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

TRNG, встроенный в STM32G0, имеет два аналоговых источника шума (рисунок 8), информация с которых после оцифровки и нормализации добавляется в 128-битное FIFO, доступное программисту в виде четырех 32-битных слов.

Рис. 8. Структурная схема генератора случайных чисел TRNG

Рис. 8. Структурная схема генератора случайных чисел TRNG

TRNG STM32G0 был протестирован в соответствии с методикой AIS31, успешно пройдя набор тестов от T0 до T8.

Аппаратный ускоритель AES (AES hardware accelerator)

AES, или Advanced Encryption Standard, также известный как Rijndael (Рэндал) – симметричный алгоритм блочного шифрования, принятый в качестве стандарта шифрования правительством США по результатам конкурса, проходившего с 1997 по 2000 год и нацеленного на поиск устаревающего алгоритма шифрования DES.

Тут, на случай, если читателю раньше не приходилось работать с шифрующими алгоритмами, нужно сделать небольшую ремарку: максимальной подтвержденной стойкостью обладают именно многократно проверенные, всем известные алгоритмы; нельзя поддаваться соблазну использовать собственный, никому не известный алгоритм (т. н. принцип «security through obscurity», безопасность через неясность, желание скрыть внутреннее устройство системы или реализацию для обеспечения безопасности), необходимо применять алгоритмы шифрования, криптостойкость которых была буквально тысячекратно проверена коллективами математиков со всего мира.

Аппаратный ускоритель AES работает с блоками данных 128 бит, позволяя использовать ключи длиной 128 и 256 бит. По сравнению с чисто программной реализацией аппаратный ускоритель дает 8…10-кратный прирост в скорости шифрования. Кроме того, наличие аппаратного ускорителя дает возможность работать со свободно распространяемой программной библиотекой STM32 X-CUBE-CryptoLib, содержащей готовую реализацию многих популярных алгоритмов шифрования и дополнительного функционала, вроде криптографического протокола Диффи-Хеллмана, или схему цифровой подписи Ed25519 для криптографических систем с открытым ключом.

Обеспечение безопасности тактирования (CSS и LSECSS)

CSS (Clock security system) обеспечивает безопасное переключение тактовых частот, затрудняя проведение атак типа clock glitch. При пропадании или ненормальном поведении внешнего тактирующего генератора HSE система не только автоматически переключится на встроенный тактовый сигнал HSI, но и предупредит об этом защищаемую систему путем генерации немаскируемого прерывания CSSI (clock security system interrupt). Если ФАПЧ был затактирован от HSE, то он будет отключен.

Аналогичным образом при помощи механизма LSECSS (Clock security system for LSE clock) защищается низкочастотная тактовая частота LSE. Если LSE использовался как системный тактовый сигнал, то системная тактовая частота будет переключена на встроенный генератор LSI. В случае, если микроконтроллер находился в спящем режиме, будет инициирован переход в активный режим, с тем, чтобы программное обеспечение микроконтроллера смогло принять решение о дальнейшей обработке этого сбоя.

В таблице 5 сведены вместе общие методики защиты от несанкционированного доступа и конкретные технические меры, предлагаемые микроконтроллерами STM32G0.

Таблица 5. Защитные возможности STM32G0

Защита устройства от внешних угроз
Конфигурация устройства (немодифицируемая информация) RDP уровня 2 для предотвращения любого постороннего доступа к содержимому микроконтроллера
Отключение отладки RDP уровня 2 для отключения отладки
Защита устройства от сбоев, связанных с потерей внешней тактовой частоты CSS и LSECSS
Обнаружение несанкционированного физического доступа к устройству Tamper detection
Внедрение кода вредоносного кода (code injection) RDP
Изоляция коммуникационного протокола при помощи MPU и защищенной области памяти
Ограничение прав кода, отвечающего за коммуникационные возможности
Использование защиты от записи (WRP) для изначально незанятых областей Flash и SRAM
Защита кода от внешних угроз
Защита кода от клонирования RDP уровня 1 или 2 для предотвращения внешнего доступа
PCROP для самых важных областей кода
Защита секретных данных MPU для защиты секретной области данных от чтения
Защищенная область памяти для защиты данных, используемых только при загрузке
Защита кода и данных в случае использования сторонних библиотек, не вызывающих доверия PCROP для самых важных областей пользовательского кода
MPU для снижения привилегий стороннего кода
IWDG для предотвращения зависаний
Безопасный контроль и обслуживание устройства
Контроль целостности кода Подсчет контрольной суммы кода после запуска и сравнение с эталонным значением. Готовые процедуры определения контрольной суммы, такие как MD5 или SHA‑256, можно найти в свободно распространяемой библиотеке STM32 X-CUBE-CryptoLib
ECC для детектирования и коррекции ошибок во Flash-памяти и контроль четности SRAM
Контроль безопасности и проверка подлинности бинарного кода Криптографический загрузчик
Защищенная область памяти
RDP уровня 2 для отключения загрузчика
Безопасное обновление программного обеспечения в условиях эксплуатации Криптографический загрузчик
Защищенная область памяти
Коммуникации и аутентификация
Безопасность коммуникаций Использование криптографического протокола для обмена информацией (например, TLS для Ethernet)
Использование криптографических функций, таких как AES/DES/SHA Следует использовать только официальную криптографическую библиотеку STM32 X-CUBE-CryptoLib
Ускорение работы криптографических функций, таких как AES/DES/SHA Совместно с криптографической библиотекой STM32 X-CUBE-CryptoLib следует использовать микроконтроллеры со встроенным аппаратным ускорителем AES
Генерация истинно случайных чисел Аппаратный генератор случайных чисел
Идентификация микроконтроллера Уникальный номер микроконтроллера
Аутентификация устройства Встраивание в устройство общего ключа шифрования и обмен зашифрованными сообщениями
Аутентификация устройства с проверкой подлинности Встраивание в устройство закрытого ключа шифрования с сертификатом и обмен зашифрованными сообщениями
Аутентификация коммуникационных серверов Встраивание в устройство общего ключа шифрования и обмен зашифрованными сообщениями
Встраивание в устройство серверного открытого ключа шифрования и обмен зашифрованными сообщениями

Выбор микроконтроллера серии STM32G0

Теперь, после детального ознакомления с возможностями STM32G0 в области безопасности, можно сделать обоснованный выбор конкретного микроконтроллера для своего проекта. Вся линейка G0 разбита на три семейства, предназначенных для разных областей применения:

  • Value Line – бюджетные микроконтроллеры, сейчас для заказа доступны линейки STM32G030 и STM32G070;
  • Access Line, STM32G071 – базовая линейка семейства;
  • Access Line & Encryption, STM32G081 – базовая линейка с добавленными функциями криптографии.

Такие параметры, как корпус, объем памяти и допустимое напряжение питания, даны в упомянутом выше материале «Новое семейство микроконтроллеров STM32G0». Здесь же мы покажем наличие тех или иных специализированных опций, ответственных за обеспечение безопасности. В таблице 6 сжато обозначен функционал всех ныне доступных микроконтроллеров STM32G0.

Таблица 6. Защитный функционал разных линеек STM32G0 (часть 1)

Микроконтроллер Защита от чтения (RDP) Защита от записи (WRP) Защита от чтения проприетарного кода (PCROP) Защищенная область памяти Блок защиты памяти (MPU) Обнаружение физического доступа (Tamper detection) Программируемый детектор напряжения (PVD)
Value Line
STM32G070RBT6
STM32G070CBT
STM32G070KBT6
STM32G070C8T6
Access Line
STM32G071RBT6
STM32G071GBU6
STM32G071CBT6
STM32G071CBU6
STM32G071GBU6N
STM32G071KBU6
STM32G071EBY6TR
STM32G071KBU6N
STM32G071KBT6
STM32G071KBT6N
STM32G071RBI6
STM32G071CBT6TR
STM32G071G8U6
STM32G071K8U6
STM32G071G8U6TR
STM32G071C8U6TR
STM32G071G8U6N
STM32G071C8T6
STM32G071GBU6TR
STM32G071GBU3
STM32G071GBU3TR
STM32G071E8Y6TR
STM32G071C8U6
STM32G031K6T6
STM32G031K8T6
STM32G031C6T6
STM32G031C8T6
STM32G031K8U6
STM32G031C6U6
STM32G031C8U6
STM32G031G6U6
STM32G031G8U6
Access Line & Encryption
STM32G081RBT6

Таблица 6. Защитный функционал разных линеек STM32G0 (часть 2)

Микроконтроллер Коррекция ошибок Flash-памяти (ECC) Контроль четности ОЗУ Независимый сторожевой таймер (IWDG) Уникальный
номер микро-
контроллера
Аппаратный генератор случайных чисел (TRNG) Аппаратный ускоритель AES Обеспечение безопасности тактирования (CSS и LSECSS)
Value Line
STM32G070RBT6
STM32G070CBT
STM32G070KBT6
STM32G070C8T6
Access Line
STM32G071RBT6
STM32G071GBU6
STM32G071CBT6
STM32G071CBU6
STM32G071GBU6N
STM32G071KBU6
STM32G071EBY6TR
STM32G071KBU6N
STM32G071KBT6
STM32G071KBT6N
STM32G071RBI6
STM32G071CBT6TR
STM32G071G8U6
STM32G071K8U6
STM32G071G8U6TR
STM32G071C8U6TR
STM32G071G8U6N
STM32G071C8T6
STM32G071GBU6TR
STM32G071GBU3
STM32G071GBU3TR
STM32G071E8Y6TR
STM32G071C8U6
STM32G031K6T6
STM32G031K8T6
STM32G031C6T6
STM32G031C8T6
STM32G031K8U6
STM32G031C6U6
STM32G031C8U6
STM32G031G6U6
STM32G031G8U6
Access Line & Encryption
STM32G081RBT6

В настоящее время разработчикам доступно четыре отладочных платы с микроконтроллерами STM32G0:

  • NUCLEO-G070RB с микроконтроллером STM32G070RBT6 бюджетной линейки Value Line, интересна тем, что она имеет разъем, совместимый с Arduino Uno V3, так что разработчикам, переходящим на STM32 с Arduino, можно будет использовать уже приобретенные дочерние платы;
  • NUCLEO-G071RB с микроконтроллером STM32G071RBT6 базовой линейки Access Line. Отладочная плата в целом аналогична предыдущему варианту, отличаясь только установленным микроконтроллером;
  • на плате STM32G071B-DISCO так же, как и на NUCLEO-G071RB, установлен микроконтроллер STM32G071RBT6, но STM32G071B-DISCO позиционируется как отладочная плата для работы с интерфейсом USB Type-C, поскольку имеет аппаратные возможности управления питанием через интерфейс Type-C (UCPD). STM32G071B-DISCO совместима со специализированным программным обеспечением, STM32CubeMonitor-UCPD, которое при помощи удобного графического интерфейса позволяет осуществлять мониторинг состояния интерфейса UCPD, отправлять PD команды на подключаемую целевую плату, проводить простую обработку профилей питания, а также получать доступ к просмотру напряжения и тока на шинах питания;
  • познакомиться с линейкой Access Line & Encryption можно при помощи отладочной платы STM32G081B-EVAL (рисунок 9) на базе микроконтроллера STM32G081RBT6. В отличие от предыдущих вариантов STM32G081B-EVAL содержит большее количество релевантной периферии и специальный разъем для подключения дочерних плат с дополнительным функционалом.

Рис. 9. Отладочная плата STM32G081B-EVAL

Рис. 9. Отладочная плата STM32G081B-EVAL

Заключение

Семейство микроконтроллеров STM32G0 обладает полным набором инструментов для обеспечения информационной безопасности. Имея мощный защитный арсенал даже в бюджетной линейке Value Line, к которому в Access Line добавляется еще больше возможностей по обеспечению безопасности, а в линейке Access Line & Encryption – еще и аппаратная поддержка шифрования, семейство STM32G0 способно в полной мере обеспечить безопасность разрабатываемого устройства. Компания STMicroelectronics представила новый продукт, который готов дать полновесный ответ на все современные вызовы, с которыми приходится сталкиваться системам на базе микроконтроллеров:

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

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

Литература

  1. «Introduction to STM32 microcontrollers security». STM Application Note AN5156.
  2. STM32G0 Online Training.
  3. «Managing memory protection unit (MPU) in STM32 MCUs». STM Application Note AN4838.
  4. «Secure programming using STM32CubeProgrammer». STM Application Note AN5054.
  5. «STM32 crypto library». STM User manual UM1924.
  6. «STM32G0x1 advanced ARM-based 32-bit MCUs». STM Reference Manual RM0444.
  7. «STM32 Nucleo-64 boards with STM32G07xRB MCUs». STM User manual UM2324.
  8. «STM32G0 Discovery kit for USB Type-C and Power Delivery». STM User manual UM2401.
•••

Наши информационные каналы

О компании ST Microelectronics

Компания STMicroelectronics является №1 производителем электроники в Европе. Компоненты ST широко представлены в окружающих нас потребительских товарах – от iPhone до автомобилей разных марок. Лидеры индустриального рынка выбирают компоненты ST за их надежность и выдающиеся технические параметры. В компании ST работает 48 000 сотрудников в 35 странах. Производственные мощности расположены в 12 странах мира. Более 11 тысяч сотрудников заняты исследованиями и разработками – инновационное лидерство ...читать далее

Товары
Наименование
NUCLEO-G070RB (ST)
NUCLEO-G071RB (ST)
STM32G071B-DISCO (ST)
STM32G081B-EVAL (ST)
STM32G070RBT6 (ST)
STM32G070CBT6 (ST)
STM32G070KBT6 (ST)
STM32G070C8T6 (ST)
STM32G071RBT6 (ST)
STM32G071GBU6 (ST)
STM32G071CBT6 (ST)
STM32G071CBU6 (ST)
STM32G071GBU6N (ST)
STM32G071KBU6N (ST)
STM32G071EBY6TR (ST)
STM32G071KBT6 (ST)
STM32G071KBT6N (ST)
STM32G071RBI6 (ST)
STM32G071CBT6TR (ST)
STM32G071G8U6 (ST)