Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial Internet of Things >> Облачные вычисления

Использование безопасности Arm TrustZone в микроконтроллерах серии LPC5500

Узнайте, как Arm TrustZone повышает безопасность в микроконтроллерах LPC5500 от NXP и как реализовывать защищенные и незащищенные приложения.

По мере распространения подключенных устройств растут и сложные угрозы. NXP решает эту проблему, интегрируя надежные примитивы безопасности в семейство МК LPC5500, включая генератор случайных чисел, соответствующий стандарту FIPS, движок шифрования «Prince» для выполнения зашифрованного кода и 4096-битный набортный ключ, сгенерированный с помощью технологии PUF. В сочетании с набортным криптографическим ускорителем «CASPER» эти МК идеально подходят для развертываний IoT на границе сети, требующих сквозного предоставления ключей и устойчивой кибербезопасности.

Центральной способностью является Arm TrustZone для Cortex-M. Следующие разделы проведут вас через его основы и покажут, как использовать их в ваших проектах.

Arm TrustZone для Cortex-M

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

Рисунок 1 иллюстрирует сосуществование безопасного ПЗУ и небезопасного пользовательского кода на одном кристалле.

Использование безопасности Arm TrustZone в микроконтроллерах серии LPC5500
Рисунок 1. Безопасное ПЗУ и небезопасный пользовательский код совместно используют один МК, но изолированы.

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

Режимы процессора с TrustZone

В то время как ядра Cortex-M3 и M4 предлагают потоковый и обработчик режимов с привилегированными/непривилегированными уровнями, Cortex-M33 добавляет TrustZone, давая четыре режима: небезопасный поток, безопасный поток, небезопасный обработчик и безопасный обработчик. Это разделение также вводит отдельные таймеры SysTick для каждой области.

Использование безопасности Arm TrustZone в микроконтроллерах серии LPC5500
Рисунок 2. TrustZone расширяет Cortex-M33 до четырех режимов процессора.

Разделение памяти

TrustZone назначает атрибуты безопасности адресным диапазонам: Безопасный (S), Небезопасный (NS) и Вызываемый из небезопасного (NSC). Доступ к каждой области зависит от текущего состояния ядра. Например, LPC55S69 рассматривает адреса с нулевым 28-м битом как небезопасные, а остальные — безопасные, за исключением программной памяти, которая настраивается через блок атрибуции безопасности (SAU).

Использование безопасности Arm TrustZone в микроконтроллерах серии LPC5500
Рисунок 3. Доступ ЦП различается в безопасном и небезопасном режимах.

Создание безопасного приложения

Безопасный код не раскрывает свои внутренности напрямую. Вместо этого он публикует таблицу шлюзов (veneer table) — тонкий слой небезопасно вызываемых функций, перенаправляющих вызовы в безопасный мир. Таблица шлюзов размещается в памяти NSC, а реальные реализации находятся в безопасной памяти.

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

Переход между мирами

Две специальные инструкции управляют переключением состояния:

Последовательность небезопасного вызова выглядит так:

 // Небезопасный код
SG(); // Вход в безопасный мир
SecureFunc(); // Вызов безопасной службы через шлюз
BXNS(); // Возврат в небезопасный

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

Пример Secure Hello World

SDK LPCXpresso55S69 включает демо TrustZone, разделяющие сборку на безопасный и небезопасный проекты. Безопасный проект начинается с ранней инициализации:

__attribute__((cmse_nonsecure_entry)) void BOARD_InitTrustZone(void);

Эта функция настраивает SAU, IDAU и разделение памяти. Небезопасная главная функция остается лаконичной, так как вся настройка обрабатывается в безопасной области:

int main(void) {
// Минимальный небезопасный код
return 0;
}

Когда небезопасная сторона нуждается в безопасной службе, она вызывает функцию шлюза, например, PRINTF_NSE():

void PRINTF_NSE(const char *format, ...) __attribute__((cmse_nonsecure_entry));

Соответствующая безопасная реализация находится в безопасном проекте и экспортируется в таблицу шлюзов.

Инструменты разделения памяти

В MCUXpresso перспектива TEE предлагает визуальный редактор для настройки SAU и IDAU:

Использование безопасности Arm TrustZone в микроконтроллерах серии LPC5500
Рисунок 5. Инструмент MCUXpresso для просмотра и редактирования атрибутов безопасности карты памяти.

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

Почему TrustZone важен для LPC5500

TrustZone дает LPC5500 четкое разделение ответственности: безопасный мир защищает проприетарный код и криптографические ключи, а небезопасный — размещает пользовательские приложения. Аппаратная часть гарантирует блокировку нелегальных доступов к памяти, а программная инфраструктура (таблицы шлюзов, инструкции SG/BXNS и инструменты TEE) упрощает разработку безопасных приложений.

Для глубокого понимания посмотрите вебинар NXP TrustZone: Calling the Secure World или изучите официальную документацию.

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

Облачные вычисления

  1. Облачная революция: как облачные вычисления трансформируют IT, безопасность и карьеры
  2. Почему облачная безопасность — краеугольный камень современной киберзащиты
  3. Путь к Cloud Security Engineer: навыки, обязанности и сертификации
  4. Почему безопасность облачных данных становится программируемой
  5. Защита облачных технологий: лучшие практики для защиты данных и митигации рисков
  6. Освоение облачной безопасности: проверенные стратегии снижения рисков и защиты организации
  7. Как хакеры атакуют облачные среды — укрепление безопасности AWS
  8. Мастерство сертификации Google Cloud Engineer: проверенные стратегии обучения и инсайдерские советы
  9. Развертывание DevOps в облаке: проверенный блупринт для цифровой трансформации
  10. Миграция Enterprise Resource Planning (ERP) в облако: проверенная дорожная карта успеха