Микроконтроллеры STM32G4: аппаратные и программные средства обеспечения безопасности

31 августа

управление питаниемуправление двигателемпотребительская электроникаавтоматизацияуниверсальное применениеST Microelectronicsстатьяинтегральные микросхемыARMCortex-M4МикроконтроллерSTM32G4FMACCORDICAESECCTamper

Алексей Гребенников (г. Москва)

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

Другие статьи из цикла

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

Обзор методов обеспечения безопасности

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

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

Компания STMicroelectronics поддерживает стандарты безопасности IEC 60730 и IEC 60335 (класс В) для бытового оборудования и IEC 61508 (SIL – до уровня SIL3) для промышленного оборудования. В рамках производственного процесса компанией STMicroelectronics обеспечивается мониторинг систематических и случайных сбоев программного и аппаратного обеспечения.

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

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

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

Рис. 1. Соотношение разных типов случайных сбоев

Рис. 1. Соотношение разных типов случайных сбоев

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

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

Не все случайные сбои приводят к опасным ситуациям, и некоторые из них даже могут считаться безвредными с точки зрения безопасности системы. Стандарты безопасности, как правило, требуют отслеживания опасных сбоев, приводящих к потенциальному повреждению системы. Чем чаще обнаруживаются и, по возможности, корректируются опасные сбои, тем ниже вероятность отказа системы в целом. Время детектирования и устранения опасного сбоя должно быть не больше так называемого «безопасного времени процесса» (PST), которое рассчитывается, исходя из физических параметров системы с учетом всех задержек, времен реакции и прочего. Для количественной оценки сбоев в стандартах безопасности вводятся термины «доля безопасных сбоев» (SFF) и «диагностическое покрытие» (DC). SFF – это отношение числа безопасных сбоев, куда также входят детектируемые опасные сбои, к общему числу сбоев. DC определяется как отношение вероятности детектируемого опасного сбоя к вероятности детектируемого и недетектируемого опасных сбоев.

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

Рис. 2. Метод детектирования случайного сбоя

Рис. 2. Метод детектирования случайного сбоя

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

В случае использования метода компенсации модуль диагностики определяет неисправность, заменяет поврежденный компонент и после этого возобновляет работу всей системы, как это показано на рисунке 3. При использовании метода компенсации случайных сбоев вводится показатель стойкости к опасным неисправностям (HFT) – количество сбоев, которое система может перенести при сохранении работоспособности. Чем больше этот показатель, тем выше стойкость системы к неисправностям.

Рис. 3. Метод компенсации случайного сбоя

Рис. 3. Метод компенсации случайного сбоя

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

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

Рассмотрим более подробно системы безопасности микроконтроллеров семейства STM32G4 производства компании STMicroelectronics.

Система восстановления синхроимпульсов (CRS)

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

Основные особенности системы CRS согласно рисунку 4:

Рис. 4. Блок-схема системы CRS

Рис. 4. Блок-схема системы CRS

  • Возможность выбора источника синхронизации с программируемой полярностью и коэффициентом деления. Предусмотрены следующие источники синхронизации: внешний вывод микроконтроллера, выход внешнего низкоскоростного генератора LSE, сигнал начала кадра (SOF) потока данных USB.
  • Возможность генерации синхроимпульсов с помощью программного обеспечения.
  • Автоподстройка генератора синхроимпульсов без использования ресурсов центрального процессора (CPU).
  • Опция ручного контроля для более быстрой сходимости во время запуска.
  • 16-битный счетчик ошибки частоты с автозахватом и перезагрузкой.
  • Программируемый предел для автоматической оценки ошибки частоты и выдача статуса оценки.
  • Маскируемые прерывания/события: ESYNC – «ожидается синхронизация», SYNCOK – «блок засинхронизирован», SYNCWARN – «предупреждение синхронизации», ERR – «ошибка синхронизации или автоподстройки».

На рисунке 5 показан механизм работы цепей CRS при синхронизации от сигнала SOF потока данных USB.

Рис. 5. Механизм работы CRS при синхронизации от сигнала SOF

Рис. 5. Механизм работы CRS при синхронизации от сигнала SOF

При каждом возникновении синхронизирующего события в счетчик CRS загружается значение RELOAD. После этого счетчик начинает обратный отсчет до нуля и затем прямой отсчет не выше чем до верхней границы (OUTRANGE). Если за этот промежуток времени не возникает синхронизирующий сигнал SYNC, генерируется событие SYNCMISS. Если на момент прихода сигнала SYNC значение счетчика CRS выше верхнего предела – генерируется ошибка, если значение счетчика выше порога предупреждения, но ниже верхнего предела – генерируется предупреждение, если значение счетчика ниже значения FELIM – генерируется сигнал SYNCOK. FELIM – это предельная ошибка частоты. Если значение регистра CRS больше значения FELIM, обновляется значение битового поля TRIM для точной подстройки частоты HSI 48 МГц.

Flash-память

Микроконтроллеры семейства STM32G4 могут содержать до 512 кбайт внутренней Flash-памяти, организованной в два банка. Интерфейс к памяти поддерживает все виды доступа – чтение, запись, стирание, а также защиту памяти.

Flash-память поддерживает коррекцию ошибок (ECC), при этом избыточность составляет 8 бит на 64-битное двойное слово. Ошибки в одном бите обнаруживаются и автоматически корректируются, уведомление об ошибке приходит через маскируемое прерывание. Двойные ошибки не исправляются, механизм ECC может только зафиксировать их возникновение и отправить уведомление об этом, которое приходит через немаскируемое прерывание NMI. Механизм использования коррекции ошибок показан на рисунке 6.

Рис. 6. Механизм коррекции ошибок (ECC)

Рис. 6. Механизм коррекции ошибок (ECC)

Память поддерживает следующие механизмы защиты:

  • Защита областей памяти от нежелательной записи (WPR). Поддерживаются две области такого типа на один банк памяти. Области памяти защищаются от стирания и перепрограммирования.
  • Зашита областей памяти с кодом, составляющим интеллектуальную собственность (PCROP). Поддерживается одна область такого типа для каждого банка памяти, может содержать только исполняемый код. Данный тип защиты не поддерживается модулем MPU ядра Cortex-M
  • Защита областей памяти от чтения (RDP), которая помогает защитить содержимое Flash-памяти, байтов опций, внутренней памяти CCM SRAM и резервных регистров от запросов на чтение, поступающих от отладчиков или программ, запускаемых после загрузки системы из SRAM или загрузчика. Содержимое такой области памяти доступно только загрузчику, запускаемому из Flash-памяти.
  • Выделение области памяти, код из которой выполняется только один раз при загрузке. Поддерживается одна область такого типа для каждого банка памяти.

Конфигурация областей памяти осуществляется с помощью байтов опций, как это показано в таблице 1.

Таблица 1. Конфигурация механизмов защиты памяти

Опции Описание Комментарии
RDP[7:0] Уровень защиты от чтения Так же, как для F3
PCROP1_STRT[11:0] Смещение начала области PCROP для банка 1 Новое в STM32G4
PCROP1_END[14:0] Смещение конца области PCROP для банка 1
PCROP2_STRT[14:0] Смещение начала области PCROP для банка 2
PCROP2_END[14:0] Смещение конца области PCROP для банка 2
PCROP_RDP Область PCROP сохраняется при снижении уровня RDP Новое в STM32G4
WRP1A_STRT[6:0] Смещение начала области А, защищенной от записи, для банка 1 В серии STM32G4 защита от записи реализована с гранулярностью в две страницы, один бит опций выделяется для каждых двух страниц
WRP1A_END[6:0] Смещение конца области А, защищенной от записи, для банка 1
WRP1B_STRT[6:0] Смещение начала области В, защищенной от записи, для банка 1
WRP1B_END[6:0] Смещение конца области В, защищенной от записи, для банка 1
WRP2A_STRT[6:0] Смещение начала области А, защищенной от записи, для банка 2
WRP2A_END[6:0] Смещение конца области А, защищенной от записи, для банка 2
WRP2B_STRT[6:0] Смещение начала области В, защищенной от записи, для банка 2
WRP2B_END[6:0] Смещение конца области В, защищенной от записи, для банка 2

Защита от чтения (RDP) активируется для всей Flash-памяти, при этом определены несколько уровней защиты:

  • уровень 0: нет защиты;
  • уровень 1: защита от чтения;
  • уровень 2: запрет отладки.

Разрешены следующие переходы между уровнями: с уровня 0 на уровень 1, с уровня 1 на уровень 0, с уровня 0 на уровень 2 и с уровня 1 на уровень 2.

Более подробно механизмы защиты памяти рассмотрены в следующем разделе.

Механизмы защиты памяти

Механизмы защиты памяти поддерживаются для Flash-памяти, статической памяти ядра (CCM SRAM) и резервных регистров.

Как было показано выше, для механизма защиты от чтения (RDP) определены три уровня защиты (0…2). На нулевом уровне защиты разрешены операции чтения, записи, стирания для всех видов памяти – Flash, статической памяти, регистров. Байты опций могут быть модифицированы. Этот уровень – заводская настройка по умолчанию. На первом уровне защиты устанавливаются ограничения на чтение Flash-памяти, статической памяти и резервных регистров. Эти блоки памяти могут быть доступны для чтения только для кода, загруженного из пользовательского участка Flash-памяти. Если обнаруживается попытка доступа отладчика или пользовательского кода, загруженного не из Flash-памяти, генерируется останов системы, который сохраняется до следующей перезагрузки. Однако на этом уровне могут быть модифицированы байты опций, соответственно, существует возможность снятия защиты первого уровня.

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

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

На рисунке 7 показаны возможные варианты перехода между уровнями защиты RDP.

Рис. 7. Переходы между уровнями защиты RDP

Рис. 7. Переходы между уровнями защиты RDP

Согласно рисунку 7, уровень защиты RDP задается одним байтом опций. Значение 0хАА соответствует нулевому уровню защиты, значение 0хСС – второму уровню, все остальные значения соответствуют первому уровню защиты RDP.

В таблице 2 обобщены ограничения на доступ к различным типам памяти при использовании механизма защиты от чтения RDP.

Таблица 2. Ограничения доступа для различных типов памяти при использовании RDP

Область памяти Уровень защиты RDP Право доступа, когда загрузчик расположен в пользовательском секторе Flash-памяти* Право доступа, когда загрузка проводится из памяти RAM, внешнего загрузчика или обнаружен доступ отладчика
Основная Flash-память 1 R/W/E Нет доступа
2 R/W/E Неприменимо, возможна загрузка только из пользовательского сектора Flash-памяти
Системная Flash-память (загрузчик) 1 R Чтение
2 R Неприменимо, возможна загрузка только из пользовательского сектора Flash-памяти
Байты опций 1 R/W/E Чтение/запись/стирание
2 R Неприменимо, возможна загрузка только из пользовательского сектора Flash-памяти
Резервные регистры 1 R/W Нет доступа
2 R/W Неприменимо, возможна загрузка только из пользовательского сектора Flash-памяти
CCM SRAM 1 R/W Нет доступа
2 R/W Неприменимо, возможна загрузка только из пользовательского сектора Flash-памяти
OTP 1 R/W Нет доступа
2 R/W Неприменимо, возможна загрузка только из пользовательского сектора Flash-памяти
* – R (read) – чтение, W (write) – запись, E (erase) – стирание.

В устройствах STM32 может быть использован программный код, содержащий интеллектуальную собственность сторонних разработчиков. Для защиты такого кода от преднамеренного считывания используется механизм PRCOP. Как было показано выше, области памяти с защитой PRCOP доступны только для исполнения, чтение/запись/стирание запрещено. При компиляции кода, который необходимо защитить механизмом PRCOP, нужно использовать соответствующие опции компилятора, например для armcc – “execute_only”. Защита PRCOP работает независимо от RDP.

Каждый участок памяти с защитой PRCOP определяется начальным и конечным смещением страницы памяти. Эти атрибуты задаются в байтах опций. Деактивация PRCOP возможна только при снижении уровня защиты RDP с первого на нулевой. Необходимо учитывать, что это предполагает массовое стирание памяти. Для контроля стирания участков памяти с защитой PRCOP используется бит PRCOP_RDP байтов опций, который определяет, нужно ли стирать участки памяти с защитой PRCOP при регрессии уровня защиты RDP с первого на нулевой.

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

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

Рис. 8. Определение защищенных участков памяти

Рис. 8. Определение защищенных участков памяти

Когда биты опций FLASH_SEC2R[SEC_SIZE] равны нулю, защищенные участки памяти не определены. Модификация этих битов доступна только при нулевом уровне защиты RDP.

Защищенные участки памяти доступны только во время первоначальной загрузки, когда еще не установлены соответствующие биты опций. Типовым примером использования такого участка памяти является проверка подлинности и дешифрование образа программного обеспечения с помощью криптографического ключа. Биты опций задают размер защищенной памяти в страницах. Для первого участка защищенной памяти базовый адрес всегда 0х0800_0000, что соответствует вектору сброса для Cortex-M4. Второй защищенный участок начинается с адреса 0x0804_0000.

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

Содержимое защищенного участка памяти стирается при изменении уровня защиты RDP с первого на нулевой, даже если этот участок памяти пересекается с атрибутом PCROP. Алгоритм стирания защищенной памяти в зависимости от атрибута PCROP показан в таблице 3.

Таблица 3. Стирание защищенной памяти

Размер
защищенной памяти (SEC_SIZE[6:0])
Память защищена? PCROP_PDR Стертые страницы
0 Нет 1 Все (массовое стирание)
0 0 Все кроме PCROP
 >0 Да 1 Все (массовое стирание)
>0 0 Все кроме PCROP за пределами области защищенной памяти

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

Рис. 9. Временный запрет на отладку

Рис. 9. Временный запрет на отладку

Как видно на рисунке 9, отладка на время выполнения кода из защищенного участка памяти запрещается путем сброса бита FLASH_ACR[DBG_SWEN].

В устройствах семейства STM32G4 первоначальная загрузка возможна из трех источников – встроенной статической памяти SRAM, системной памяти и основной Flash-памяти. Однако безопасная загрузка с использованием защищенной памяти предполагает загрузку из Flash-памяти. Для запрета других источников загрузки необходимо установить бит BOOT_LOCK в регистре FLASH_SECR. Для установки этого бита не требуется выполнения каких-либо условий. Однако сброс этого бита возможен только на нулевом уровне защиты RDP или при смене уровня защиты RDP с первого на нулевой, когда происходит массовое стирание памяти.

Резервные регистры и защита от вскрытия и повреждения

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

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

На рисунке 10 показана блок-схема системы защиты от вскрытия.

Рис. 10. Блок-схема системы защиты от вскрытия

Рис. 10. Блок-схема системы защиты от вскрытия

Цепи детектирования вскрытия TAMP могут тактироваться от двух источников: тактового сигнала TAMP (или RTCCLK), который может быть использован только в режиме детектирования уровня с фильтрацией, и тактового сигнала APB, применяемого для чтения и записи резервных и TAMP-регистров. Синхросигнал TAMP может приходить от высокоскоростного внешнего осциллятора (HSE) c делением частоты на 32, от низкоскоростного внешнего осциллятора (LSE) или от низкоскоростного внутреннего осциллятора (LSI). В режиме ожидания или останова можно использовать только низкоскоростные осцилляторы LSE или LSI. В режиме отключения питания или в режиме VBAT можно использовать только LSE. Как видно на рисунке 10, несколько внутренних событий могут сгенерировать событие для цепей TAMP. Каждое внутреннее и внешнее событие имеет конфигурационный бит включения. По умолчанию все внутренние события включены, а все внешние события выключены. Также по умолчанию все события TAMP приводят к стиранию резервных регистров. Для внешних событий можно отключить функцию стирания. Следует заметить, что резервные регистры не сбрасываются во время системного сброса или после выхода устройства из режима ожидания. Эти регистры могут быть сброшены только при срабатывании события вскрытия или при смене уровня защиты Flash-памяти от чтения с первого на нулевой.

На рисунке 11 показана схема подключения внешних цепей детектирования вскрытия.

Рис. 11. Подключение внешних цепей детектирования вскрытия

Рис. 11. Подключение внешних цепей детектирования вскрытия

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

Цепи детектирования вскрытия содержат цифровой фильтр с ультрамалым потреблением энергии. Для определения состояния переключателя детектирования вскрытия могут быть использованы внутренние подтягивающие резисторы. Эти резисторы используются только во время подзарядки емкостей для предотвращения утечки энергии в случае, если переключатель детектирования вскрытия окажется замкнут на землю. Длительность импульса подзарядки емкости программируется для поддержания различных величин емкостей и может быть равна 1, 2, 4 или 8 периодам тактового сигнала TAMP. Состояние входов TAMP_INx определяется после завершения импульса подзарядки. Для всех входов можно использовать функцию фильтрации, которая заключается в детектировании нескольких идентичных событий подряд до подачи сигнала прихода события. Число событий программируется и может быть равным 1, 2, 4 или 8, частота оцифровки также программируется в диапазоне 1…128 Гц. На рисунке 12 показана временная диаграмма срабатывания цепи защиты от вскрытия.

Рис. 12. Сигналы цепи защиты от вскрытия

Рис. 12. Сигналы цепи защиты от вскрытия

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

Рис. 13. Использование цепей защиты от вскрытия для генерации прерываний

Рис. 13. Использование цепей защиты от вскрытия для генерации прерываний

Все прерывания могут вывести процессор из состояния энергосбережения. Все цепи детектирования событий вскрытия могут быть активированы или деактивированы при помощи конфигурации регистра TAMP_CR1. Если событие активировано и детектировано, устанавливается соответствующий бит в регистре TAMP_SR. Регистр TAMP_IER позволяет маскировать прерывания от событий вскрытия. Для определения источника события обработчику прерывания необходимо прочитать регистр TAMP_MISR. В контроллере прерываний (NVIC) есть отдельные входы для модулей RTC и TAMP.

Проверка контрольной суммы

Контрольные суммы (CRC) используются для проверки целостности данных во время передачи и хранения, а также для вычисления «подписи» программного обеспечения. В последнем случае происходит сравнение контрольных сумм, вычисленных во время сборки и во время загрузки программного обеспечения. Микроконтроллеры семейства STM32G4 позволяют вычислять контрольную сумму для данных длиной 8, 16 и 32 бита, используя полиномы определенного размера и величины. Специальный блок вычисления контрольной суммы позволяет свести к минимуму дополнительные операции программного обеспечения во время процедуры вычисления. Также для вычисления контрольных сумм больших блоков данных можно использовать контроллер DMA.

Модуль вычисления контрольной суммы обладает следующими характеристиками:

  • программируемый нечетный полином. По умолчанию используется полином CRC-32 для локальных сетей со значением 0x04C11DB7, что соответствует полиному:
  • x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1
  • программируемый размер полинома (7, 8, 16, 32 бита);
  • программируемое начальное значение (по умолчанию 0xFFFFFFFF);
  • поддержка различных порядков записи байтов для входных и выходных данных.

На рисунке 14 показана схема вычисления контрольной суммы.

Рис. 14. Схема вычисления контрольной суммы

Рис. 14. Схема вычисления контрольной суммы

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

Порядок входных данных может быть изменен в зависимости от значения битов REV_IN[1:0] в регистре CRC_CR. Например, входные данные 0x1A2B3C4D могут быть использованы для вычисления контрольной суммы как:

  • 0х58D43CB2 с перестановкой битов, сделанной побайтно;
  • 0xD458B23C с перестановкой битов, сделанной для полуслов;
  • 0xB23CD458 с перестановкой битов, сделанной для целых слов.

Принцип перестановки битов в слове показан на рисунке 15.

Рис. 15. Перестановка битов в слове

Рис. 15. Перестановка битов в слове

Порядок выходных данных также может быть изменен путем установки битов REV_OUT в регистре CRC_CR.

Время вычисления контрольной суммы зависит от размерности данных и составляет для 32-битного блока 4 такта шины AHB, для 16-битного блока – 2 такта шины AHB, для 8-битного блока – 1 такт шины AHB.

Контрольная сумма может быть рассчитана контроллером DMA во время нахождения основного процессора (CPU) в режиме сна.

Электронная подпись устройства

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

UID программируется заводом-изготовителем и не может быть изменен пользователем.

96-битный UID содержит следующую информацию:

  • координаты X и Y на пластине;
  • номера лота и пластины;
  • индивидуальный номер для каждого устройства.

Часть полей UID всегда равна нулю. Это происходит в случаях, когда размер величины, записанной в регистр, меньше размера самого регистра, например, для координат X и Y.

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

Генератор случайных чисел

Генератор случайных чисел (ГСЧ), интегрированный в устройства STM32, вырабатывает случайные числа, необходимые для процедур, результат выполнения которых должен быть непредсказуемым.

Генерация случайных чисел основана на использовании источника шума. Набор из четырех 32-битных случайных чисел может быть сгенерирован с максимальным периодом, составляющим 213 тактов частоты fAHB. Если период меньше 213, то он рассчитывается как 16 х fAHB / fRNG. Например. для частот fAHB = 64 МГц и fRNG = 48 МГц случайные числа будут вырабатываться каждые 57 тактов шины AHB. Правило генерации случайных чисел следующее: чем ниже частота, тем выше энтропия.

Для снижения энергопотребления можно отключить функцию ГСЧ (RNGEN=0 в RNG_CR).

ГСЧ может активировать три флага:

  • DRDY: достоверные случайные данные готовы;
  • SECS: сгенерирована неправильная случайная последовательность – 64 последовательных нуля или единицы либо 32 последовательные комбинации “01” или “10”;
  • CECS: частота fRNG меньше чем fAHB/32 (эту проверку можно отключить, особенно в случаях генерации случайных чисел с высокой энтропией).

Также ГСЧ может сгенерировать три прерывания:

  • CEIS: ошибки тактового сигнала;
  • SEIS: ошибка генерации случайной последовательности;
  • DRDY: данные готовы.

На рисунке 16 показана блок-схема ГСЧ.

Рис. 16. Блок-схема ГСЧ

Рис. 16. Блок-схема ГСЧ

Генератор случайных чисел основан на аналоговой цепи, состоящей из нескольких кольцевых генераторов, оцифрованные выходы которых соединяются с помощью элемента «исключающее ИЛИ» (XOR) и формируют начальное значение ГСЧ, из которого с помощью цифрового постпроцессора формируются четыре 32-битных случайных числа за один раунд вычислений. Для оцифровки аналогового начального значения используется специальный тактовый сигнал, поэтому качество случайных чисел не зависит от частоты HCLK. Содержимое блока постпроцессора передается в регистры данных с помощью памяти FIFO, состоящей из четырех слов. Флаг готовности данных DRDY устанавливается после полного заполнения FIFO и автоматически сбрасывается после чтения всех данных.

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

ГСЧ может работать только в активном режиме. Его можно держать включенным в режиме сна для исключения задержки при переходе в активный режим. В других режимах энергосбережения ГСЧ деактивирован, в режиме ожидания питание ГСЧ отключено.

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

Аппаратный ускоритель алгоритма шифрования AES

Для аппаратного ускорения шифрования необходимо использовать устройства, поддерживающие эту функцию. Например, в складскую программу компании Компэл входят следующие модели с аппаратной криптографией: STM32G441CBT6, STM32G441KBU6, STM32G441VBT6, STM32G483CET3, STM32G483CEU6, STM32G483VET6, STM32G484CEU6, STM32G484QET6, STM32G484RET6.

На рисунке 17 показан общий принцип действия алгоритма шифрования.

Рис. 17. Принцип действия алгоритма шифрования

Рис. 17. Принцип действия алгоритма шифрования

Алгоритмы шифрования предназначены для преобразования открытого текста или любой открытой информации в закрытый шифротекст с помощью секретного ключа шифрования. Алгоритм шифрования AES – это симметричный блочный шифр, в котором используются ключи размером 128 или 256 бит.

Операции шифрования сопряжены с огромным количеством вычислений, которые приводят к серьезной загрузке CPU в случае использования программных реализаций. В устройствах семейства STM32G4 используется аппаратное ускорение шифрования AES, позволяющее значительно снизить уровень загрузки CPU. Поддерживаются несколько стандартных режимов шифрования и два размера ключа – 128 и 256 бит. Блок аппаратного ускорения AES выполнен в соответствии со стандартом NIST FIPS 197 и позволяет более эффективно выполнять операции шифрования по сравнению с программными библиотеками. На рисунке 18 показана блок-схема реализации AES.

Рис. 18. Блок-схема реализации AES

Рис. 18. Блок-схема реализации AES

Ускоритель AES является ведомым устройством на шине AHB. Ключ, синхропосылка и данные могут быть переданы CPU посредством записи в регистры, отображаемые в пространстве памяти. В этом случае результат также считывается из этих регистров. Обмен данными может происходить и через каналы DMA: один канал для записи и один для чтения. Ядро AES поддерживает перестановки данных по 1, 8, 16 или 32 бита. Внутри ядра размерность данных и начального значения – 128 бит, размерность ключа – 256 бит. Также поддерживаются ключи длиной 128 бит.

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

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

Согласно стандарту NIST, поддерживаются шесть режимов работы AES:

  • режимы блочного шифрования, обрабатывающие данные размером, кратным 128 бит – режим простой замены (ECB) и режим простой замены с зацеплением (CBC);
  • режим поточного шифрования, где данные могут быть любой размерности, не кратной 128 – режим гаммирования (СTR);
  • режимы с проверкой подлинности, предполагающие вычисление имитовставки – режим гаммирования с имитовставкой Галуа (GCM), режим выработки имитовставки Галуа (GMAC), режим гаммирования с имитовставкой (CCM).

Определены три режима работы ядра AES:

  • зашифровывание;
  • развертка ключей для расшифровывания (только для ECB и СBC);
  • расшифровывание.

Если длина сообщения не кратна 128 в режимах ECB и CBC, дополнение сообщения до нужной длины должно быть выполнено программно.

На рисунке 19 показан алгоритм работы режима простой замены (ECB).

Рис. 19. Алгоритм простой замены (ECB)

Рис. 19. Алгоритм простой замены (ECB)

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

На рисунке 20 показана схема режима работы простой замены с зацеплением (CBC).

Рис. 20. Режим простой замены с зацеплением (CBC)

Рис. 20. Режим простой замены с зацеплением (CBC)

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

На рисунке 21 показана схема режима гаммирования (CTR).

Рис. 21. Режим гаммирования (CTR)

Рис. 21. Режим гаммирования (CTR)

В режиме CTR ядро AES используется для генерации ключей. Шифрованный текст получается путем выполнения операции исключающего ИЛИ сгенерированного ключа и блока открытого текста. В отличие от режимов ECB и CBC, для режима CTR не требуется развертка ключа для расшифровывания, так как ядро, вырабатывая ключи, всегда работает в режиме зашифровывания, даже для расшифровывания данных.

На рисунке 22 показан режим гаммирования с имитовставкой Галуа (GCM).

Рис. 22. Режим гаммирования с имитовставкой Галуа (GCM)

Рис. 22. Режим гаммирования с имитовставкой Галуа (GCM)

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

На рисунке 23 показан режим выработки имитовставки Галуа (GMAC).

Рис. 23. Режим выработки имитовставки Галуа (GMAC)

Рис. 23. Режим выработки имитовставки Галуа (GMAC)

Режим GMAC используется для подтверждения подлинности сообщения. Фактически выполняется процедура вычисления имитовставки из режима GCM без операции зашифровывания исходного текста.

На рисунке 24 показан режим гаммирования с имитовставкой (ССМ).

Рис. 24. Режим гаммирования с имитовставкой (ССМ)

Рис. 24. Режим гаммирования с имитовставкой (ССМ)

В режиме ССМ параллельно выполняется шифрование открытого текста и вычисление имитовставки. Для шифрования текста используется режим гаммирования (CTR), а для вычисления имитовставки – режим простой замены c зацеплением (СBC). Для режима CCM определены специальные правила формирования синхропосылки (в стандарте она называется «В0»). Блок В0 содержит флаги, одноразовый случайный код и информацию о длине сообщения в байтах. По аналогии с GCM, в режиме CCM можно вычислять только имитовставку. Такой режим использования CCM называется CMAC, однако NIST не рекомендует его использовать.

Упрощенная блок-схема аппаратного ускорителя AES показана на рисунке 25.

Рис. 25. Блок-схема аппаратного ускорителя AES

Рис. 25. Блок-схема аппаратного ускорителя AES

Аппаратный ускоритель AES обрабатывает блоки данных длиной 128 бит с использованием ключа длиной 256 или 128 бит с перестановкой данных или без нее. Два флага ошибки отображают статус работы модуля. Флаг RDERR означает, что произошла операция чтения во время фазы вычислений или ввода. Флаг WRERR означает, что произошла операция записи во время фазы вычислений или вывода. Если установлен конфигурационный бит ERRIE, после установки одного из вышеперечисленных флагов генерируется прерывание.

Флаг завершения вычислений (CCF) устанавливается после завершения цикла вычислений. В этом случае также генерируется прерывание, если оно разрешено в конфигурации.

Флаг занятости (Busy) может быть использован только в режиме GCM. Этот флаг означает, что более высокоприоритетное сообщение может прервать процесс шифрования более низкоприоритетного сообщения в режиме зашифровывания GCM.

В таблицах 4 и 5 показаны сравнительные характеристики времен шифрования блоков в различных режимах работы ускорителя.

Таблица 4. Время вычисления одного 128-битного блока (в тактах AHB)

Размер ключа Режим работы Алгоритм Фаза ввода Фаза вычислений Фаза вывода Всего
128 бит Режим 1.
Зашифровывание
ECB, CBC, CTR 9 38 4 51
Режим 2.
Развертывание ключа
59 59
Режим 3.
Расшифровывание
ECB, CBC, CTR 9 38 4 51
256 бит Режим 1.
Зашифровывание
ECB, CBC, CTR 13 58 4 75
Режим 2.
Развертывание ключа
82 82
Режим 3.
Расшифровывание
ECB, CBC, CTR 13 58 4 75

Таблица 5. Время вычисления одного 128-битного блока (в тактах AHB)

Размер ключа Режим работы Алгоритм Фаза ввода Фаза подготовки заголовка Фаза обработка данных Фаза формирования метки Всего
128 бит Режим 1.
Зашифровывание
GCM 64 35 51 59 209
Режим 3.
Расшифровывание
CCM 63 55 114 58 290
CMAC 64 35 59 158
256 бит Режим 1.
Зашифровывание
GCM 88 35 75 75 273
Режим 3.
Расшифровывание
CCM 87 79 162 82 410
GMAC 88 35 75 198

Для тестов таблицы 5 предполагается, что обрабатывается один блок заголовка и один блок полезных данных в режимах GCM, CCM.

Заключение

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

В рамках расширения складской программы компания КОМПЭЛ предлагает наиболее популярные модели семейства STM32G4. Наши специалисты всегда рады помочь в выборе нужного устройства для конкретной задачи и в подборе оптимального режима его работы.

•••

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

О компании ST Microelectronics

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

Товары
Наименование
STM32G441CBT6 (ST)
STM32G441KBU6 (ST)
STM32G441VBT6 (ST)
STM32G483CET3 (ST)
STM32G483VET6 (ST)
STM32G484CEU6 (ST)
STM32G484QET6 (ST)
STM32G484RET6 (ST)