MCU & FPGA STM32 TrustZone em Microcontroladores Cortex-M: Segurança por Hardware na Arquitetura ARMv8-M

TrustZone em Microcontroladores Cortex-M: Segurança por Hardware na Arquitetura ARMv8-M


Introdução ao TrustZone em Microcontroladores Cortex-M

O TrustZone é um mecanismo de segurança introduzido pela ARM para permitir que um único microcontrolador opere, simultaneamente, em dois domínios de execução isolados: um ambiente Seguro (Secure World) e outro Não Seguro (Non-Secure World). O objetivo é tornar possível a execução de código sensível — como rotinas criptográficas, gerência de chaves, boot seguro e proteção de firmware — em uma região fortemente protegida, mesmo quando o restante da aplicação (pilhas de comunicação, drivers externos, interfaces ricas) roda em modo normal, sem privilégios especiais.

Esse isolamento não é apenas conceitual; ele ocorre na própria arquitetura do processador, permitindo separar memória, periféricos e fluxos de execução. Assim, mesmo que uma vulnerabilidade atinja o lado não seguro (por exemplo, uma pilha TCP/IP, que costuma ser alvo frequente de ataques), o domínio seguro permanece protegido, evitando que partes críticas sejam comprometidas.

No contexto dos microcontroladores, o TrustZone transformou a forma como desenhamos a segurança embarcada. Diferentemente de soluções externas — como chips de criptografia dedicados, secure elements ou processadores duplos — o TrustZone oferece um modelo integrado, leve e com baixo custo, ideal para produtos IoT, industriais e automotivos, onde segurança e eficiência energética são essenciais.

Essa tecnologia está disponível apenas nos microcontroladores baseados na Arquitetura ARMv8-M, que trouxe extensões específicas para oferecer segurança por hardware sem adicionar complexidade excessiva ao pipeline do processador. A ARM desenvolveu dois perfis principais dessa arquitetura: um altamente seguro (arquitetura v8-M Security Extension) e outro otimizado para aplicações de tempo real, ambos podendo incorporar o TrustZone.

Nos próximos capítulos, exploraremos em profundidade a arquitetura ARMv8-M dentro do contexto da TrustZone, quais núcleos Cortex-M suportam esse recurso, como as memórias são protegidas, exemplos com microcontroladores da STMicroelectronics e como projetar sistemas embarcados realmente seguros usando esses recursos.


TrustZone e a Arquitetura ARMv8-M

A introdução do TrustZone nos microcontroladores ARM ocorreu com a arquitetura ARMv8-M, que foi especialmente projetada para atender sistemas embarcados onde segurança e tempo real precisam coexistir. Ao contrário da TrustZone para processadores Cortex-A, voltada para sistemas complexos como smartphones e SBCs (Single Board Computers), a versão para Cortex-M foi completamente redesenhada para garantir baixa latência, simplicidade de configuração e compatibilidade com aplicações típicas de microcontroladores.

A ARMv8-M introduz um mecanismo de particionamento baseado em hardware capaz de dividir tanto a memória Flash e SRAM quanto os periféricos entre o mundo Seguro e o Não Seguro. Essa divisão é controlada principalmente pelo componente SAU (Security Attribution Unit) e pode ser complementada pelo IDAU (Implementation-Defined Attribution Unit), que depende de cada fabricante de microcontrolador. A combinação de ambos define, de maneira determinística, quais regiões podem ser acessadas por cada domínio de execução. Assim, o processador pode garantir que um código considerado “não seguro” jamais consiga ler uma chave criptográfica, manipular um bootloader protegido ou sobrescrever blocos críticos da aplicação.

Dentro dessa arquitetura, o processador mantém dois contextos paralelos, cada um com seu próprio stack pointer (PSP_NS e PSP_S para Non-Secure e Secure, respectivamente). A comutação entre eles é assistida por instruções dedicadas e ocorre com latência extremamente baixa — característica essencial para preservar o comportamento de sistemas de tempo real. Além disso, funções seguras podem ser expostas por meio de “Secure Gateways”, que criam pontos controlados de entrada para o mundo não seguro, permitindo que a aplicação acesse serviços de segurança sem violar o isolamento.

A ARMv8-M existe em dois perfis principais relacionados à TrustZone:

  • ARMv8-M Baseline — destinado a núcleos menores (como Cortex-M23), mantém compatibilidade com Cortex-M0/M0+ e ainda oferece TrustZone, mas com um conjunto de instruções mais compacto.
  • ARMv8-M Mainline — adotado por núcleos como Cortex-M33 e Cortex-M35P, integra TrustZone com recursos adicionais, como DSP, otimizações para desempenho e suporte para aplicações críticas de segurança (inclusive resistência a ataques físicos no caso do Cortex-M35P).

A presença da TrustZone permite construir sistemas embarcados onde rotinas sensíveis podem residir em um domínio protegido, enquanto o restante da aplicação — interfaces ricas, protocolos de comunicação, modems, conectividade — opera de forma independente. Essa separação reduz enormemente a superfície de ataque e viabiliza projetos mais robustos conforme exigido por padrões de segurança modernos, como PSA Certified, IoT Security Foundation e requisitos automotivos.


Núcleos Cortex-M que Suportam TrustZone

A presença do TrustZone está diretamente vinculada à adoção da arquitetura ARMv8-M, que introduz o particionamento seguro/não-seguro no nível do hardware. Assim, apenas alguns núcleos Cortex-M possuem esse recurso; outros, mesmo que modernos, não oferecem suporte ao TrustZone.

A seguir, apresentamos os principais núcleos Cortex-M com suporte ao TrustZone, incluindo suas características no contexto de segurança embarcada:

Cortex-M23 (ARMv8-M Baseline)

É o sucessor filosófico do Cortex-M0+, voltado para consumo ultrabaixo e aplicações simples, porém agora incorporando TrustZone. Apesar de mais modesto em desempenho, ele permite a construção de dispositivos IoT extremamente eficientes que possam armazenar chaves criptográficas e executar boot seguro sem necessidade de componentes externos.

Cortex-M33 (ARMv8-M Mainline)

É o núcleo mais difundido com TrustZone e representa a evolução direta do Cortex-M4. Ele combina DSP (Digital Signal Processing), opções de FPU (Floating Point Unit), excelente desempenho por watt e um ecossistema amplo. O Cortex-M33 costuma ser o ponto de partida para MCUs IoT industriais, automotivos e de comunicação segura.

Cortex-M35P (ARMv8-M Mainline + Proteções Físicas)

Destinado a aplicações com requisitos de proteção anticlonagem e resistência a ataques físicos, como terminais de pagamento, medidores certificados e dispositivos financeiros. Além da TrustZone, ele inclui contramedidas embutidas contra fault injection, análise de energia (SPA/DPA) e leitura física do barramento interno.

Cortex-M55 (ARMv8.1-M)

Apesar de ser mais associado a aplicações de AI embarcada e alto desempenho, seu conjunto arquitetural também incorpora a noção de ambientes seguros herdados da ARMv8-M. Ele trabalha com Helium (extensões vetoriais avançadas) e normalmente aparece em SoCs mais complexos, mas ainda dentro da família Cortex-M.


Núcleos Cortex-M que não suportam TrustZone

Para clareza, os seguintes não possuem TrustZone:

  • Cortex-M0 / M0+
  • Cortex-M1
  • Cortex-M3
  • Cortex-M4
  • Cortex-M7
  • Cortex-M33 sem extensões de segurança ativadas pelo fabricante (raro, mas possível)
  • Cortex-M55 com configuração sem Security Extension (dependente do integrador)

Ou seja, mesmo que o núcleo suporte TrustZone, o fabricante do microcontrolador precisa habilitá-la no silício, na documentação e na ferramenta de desenvolvimento.


Resumo técnico

NúcleoArquiteturaTrustZonePerfil
Cortex-M23ARMv8-M BaselineSimUltra baixo consumo, IoT básico
Cortex-M33ARMv8-M MainlineSimIoT industrial, segurança avançada
Cortex-M35PARMv8-M MainlineSimAlta segurança física
Cortex-M55ARMv8.1-MSim (dependente do integrador)IA embarcada, DSP/Helium

Benefícios, Importância e Modelo de Uso da TrustZone

A introdução da TrustZone no ecossistema dos microcontroladores Cortex-M representa uma mudança profunda na forma como se constrói segurança embarcada. Em vez de confiar exclusivamente em barreiras de software — que podem ser burladas se houver estouro de pilha, execução de código injetado ou falhas em protocolos — agora o sistema conta com proteção por hardware, integrada ao pipeline e às unidades de controle do processador. Esse tipo de isolamento reduz significativamente a superfície de ataque e ajuda a garantir que um defeito no sistema operacional, no driver ou na pilha de rede não comprometa o núcleo crítico da aplicação.

Do ponto de vista arquitetural, a TrustZone permite isolar rotinas que lidam com informações sensíveis, tais como gerenciamento de chaves criptográficas, validação de firmware, cálculo de assinaturas digitais, inicialização segura (Secure Boot) e autenticação de dispositivos, assegurando que essas operações só possam ser executadas dentro do ambiente seguro. Além disso, esse domínio privilegiado controla totalmente quais recursos são acessíveis pelo ambiente não seguro, criando um modelo claro de fronteiras e responsabilidades. Isso é crucial em aplicações conectadas, onde uma vulnerabilidade em protocolos como Wi-Fi, Bluetooth, USB ou TCP/IP poderia, sem o TrustZone, comprometer todo o dispositivo.

Nos sistemas embarcados modernos, a importância desse recurso ultrapassa a camada técnica. Com a proliferação de dispositivos IoT e o aumento dos ataques direcionados a equipamentos industriais, de automação e infraestrutura, normas internacionais como IEC 62443, PSA Certified e ETSI EN 303 645 passaram a exigir mecanismos robustos de segurança. A TrustZone facilita a conformidade com esses padrões, pois permite implementar Root of Trust confiável, armazenar segredos de forma segura e realizar boot verificado — tudo dentro de um único microcontrolador, reduzindo custos e aumentando a viabilidade de produtos mais seguros para o mercado.

O uso correto da TrustZone segue uma filosofia clara:
apenas o código estritamente necessário deve residir no mundo seguro.
Isso evita que o domínio crítico se torne grande demais, reduzindo a probabilidade de erros e mantendo a superfície de ataque mínima. A maior parte da aplicação — comunicação, interface de usuário, lógica de negócio — deve rodar no mundo não seguro, que chama funções seguras através de Secure Gateways. Desse modo, cria-se uma organização modular onde o ambiente seguro funciona como um “microkernel criptográfico” protegendo o sistema.

Na prática, a TrustZone melhora:

  • Confiabilidade: falhas no lado não seguro não derrubam ou comprometem o domínio seguro.
  • Integridade: código sensível não pode ser alterado remotamente.
  • Confidencialidade: chaves e dados críticos nunca escapam para a RAM não segura.
  • Resistência a ataques físicos e remotos: exploração de vulnerabilidades torna-se mais difícil.
  • Atualizações seguras: firmware pode ser validado antes da execução.

Esse conjunto de benefícios torna a TrustZone indispensável para qualquer dispositivo que precise operar de forma segura em ambientes conectados — desde sensores IoT até controladores industriais, gateways, equipamentos médicos, sistemas automotivos, medidores inteligentes, dispositivos de pagamento e aplicações de defesa.


Microcontroladores STM32 com TrustZone e Exemplos Práticos de Utilização

A STMicroelectronics foi uma das primeiras fabricantes a adotar a arquitetura ARMv8-M com TrustZone em suas linhas de microcontroladores. Isso resultou na criação de famílias especificamente projetadas para aplicações seguras, conectadas e com requisitos de certificação. Os dispositivos STM32 compatíveis com TrustZone utilizam majoritariamente o núcleo Cortex-M33, que agrega desempenho, DSP, opções de FPU e o particionamento seguro/não seguro.

Famílias STM32 com suporte à TrustZone

Atualmente, os principais grupos de MCUs da ST que implementam TrustZone são:

1. STM32L5 Series — Foco em baixo consumo + segurança

Baseados em Cortex-M33, são otimizados para aplicações IoT alimentadas a bateria que ainda assim precisam de mecanismos fortes de proteção. Eles incluem:

  • TrustZone for ARMv8-M
  • Secure Boot + Secure Firmware Update (SBSFU)
  • Hardware cryptography (AES, PKA, SHA-256 etc.)
  • Proteção contra leitura e escrita de Flash

Modelos comuns:

  • STM32L552, STM32L562

2. STM32U5 Series — Ultra-Low Power de nova geração com segurança reforçada

Também baseados em Cortex-M33, porém com melhorias em eficiência energética e mais recursos criptográficos. São ideais para dispositivos vestíveis, sensores inteligentes e aplicações avançadas de IoT.

Modelos com TrustZone:

  • STM32U535, STM32U545
  • STM32U575, STM32U585

3. STM32H5 Series — Desempenho alto e segurança nativa

Linha destinada a aplicações industriais e de automação que exigem performance maior. Mantêm o núcleo Cortex-M33 com TrustZone e agregam o novo ecossistema STM32Trust TEE (Trusted Execution Environment).

Modelos conhecidos:

  • STM32H533, STM32H563, STM32H573

Como a TrustZone é utilizada na prática nos STM32

A programação com TrustZone em um STM32 baseia-se na divisão do projeto em dois ambientes:

  1. Secure Project — contém:
    • Bootloader seguro
    • Inicialização da SAU/IDAU
    • Configurações de particionamento da Flash e SRAM
    • Drivers seguros (opcional)
    • Funções de serviço expostas via Secure Gateways (SG)
  2. Non-Secure Project — contém:
    • Aplicação principal
    • Pilhas de comunicação (Wi-Fi, BLE, TCP/IP, USB etc.)
    • Interface com sensores
    • UI, lógica de controle, tarefas secundárias

O CubeMX/CubeIDE fornece um fluxo semiautomático para configurar TrustZone:

  1. Seleciona-se um microcontrolador com TrustZone.
  2. No painel “Security”, define-se:
    • quais regiões da Flash serão Secure/Non-Secure
    • quais periféricos serão protegidos
    • quais interrupções são seguras ou não seguras
  3. O CubeIDE gera automaticamente dois projetos:
    • Project_S (Secure)
    • Project_NS (Non-Secure)

O desenvolvedor define, então, funções marcadas como:

__attribute__((cmse_nonsecure_entry))
uint32_t Secure_Add(uint32_t a, uint32_t b)
{
    return a + b;
}

Essa função passa a ser chamada do lado não seguro como um funcionário público do mundo seguro, acessível mas rigidamente controlado.

Do lado não seguro, a chamada é feita por meio de ponteiros segurizados:

typedef uint32_t (*func_ns_add_t)(uint32_t, uint32_t);
func_ns_add_t ns_add = (func_ns_add_t)((uint32_t)Secure_Add | 0x1U);

uint32_t result = ns_add(10, 20);

Observe o bit menos significativo setado, que indica ao processador que a função pertence ao domínio seguro e deve atravessar o gateway de forma validada.


Exemplos típicos de uso em aplicações reais

  • Boot Seguro (SBSFU): valida assinatura digital antes da inicialização do firmware.
  • Proteção de Propriedade Intelectual: código seguro permanece inacessível, mesmo se atacantes extraírem a Flash não segura.
  • Gerenciamento de Chaves Criptográficas: a chave nunca deixa o domínio seguro.
  • Gateways IoT e automação industrial: pilhas de rede rodam no lado não seguro; segurança permanece intacta em caso de ataque.
  • Pagamentos, medição inteligente e sensores médicos: ambientes críticos isolados de elementos expostos ao usuário.

Conclusão

A introdução da TrustZone nos microcontroladores baseados na arquitetura ARMv8-M representa uma das evoluções mais significativas no campo da segurança embarcada dos últimos anos. Em um mundo onde dispositivos IoT se conectam a redes públicas, interagem com sistemas industriais e tratam dados sensíveis, torna-se indispensável contar com um mecanismo sólido de isolamento interno. E é exatamente isso que a TrustZone oferece: uma separação rigorosa entre ambientes de execução, construída diretamente no hardware do processador, com latências mínimas e sem a necessidade de componentes externos adicionais.

Ao dividir o sistema entre domínios seguro e não seguro, a TrustZone permite proteger bootloaders, rotinas criptográficas, chaves, tabelas de autenticação e qualquer outro código crítico, reduzindo a superfície de ataque e aumentando a resiliência do dispositivo contra falhas e invasões. O restante da aplicação pode continuar funcionando de forma flexível e independente, inclusive operando pilhas complexas como BLE, TCP/IP, USB ou protocolos industriais. Esse modelo favorece tanto a estabilidade quanto a conformidade com normas de segurança internacionais, tornando o TrustZone um recurso essencial para produtos que precisam de certificação.

A STMicroelectronics incorporou essa tecnologia em várias linhas de microcontroladores, como STM32L5, STM32U5, STM32H5 e STM32H7RS, trazendo ao mercado soluções que combinam segurança robusta, baixo consumo e grande capacidade de processamento. Ferramentas como o STM32CubeIDE simplificam o processo de particionamento seguro/não seguro, oferecendo ao desenvolvedor um ambiente prático e acessível para implementar desde simples funções protegidas até sistemas complexos envolvendo boot seguro, atualização autenticada e gerenciamento de chaves.

Em síntese, o TrustZone não é apenas um recurso opcional, mas sim um pilar moderno para o desenvolvimento seguro, permitindo que a mesma MCU atue simultaneamente como um ambiente confiável e um ambiente de aplicação, de maneira eficiente, modular e escalável. À medida que novos produtos embarcados surgem com demandas crescentes de conectividade e proteção de dados, o domínio dessa tecnologia torna-se fundamental para engenheiros, arquitetos de sistemas e desenvolvedores de firmware que desejam construir soluções realmente confiáveis.

0 0 votos
Classificação do artigo
Inscrever-se
Notificar de
guest
0 Comentários
mais antigos
mais recentes Mais votado
Feedbacks embutidos
Ver todos os comentários

Related Post

Como Funcionam os Fuse Bits (Option Bytes) nos Microcontroladores STM32: Parametrização e Segurança do FirmwareComo Funcionam os Fuse Bits (Option Bytes) nos Microcontroladores STM32: Parametrização e Segurança do Firmware

Os microcontroladores STM32 utilizam Option Bytes como um sistema equivalente aos fuse bits tradicionais, permitindo configurar parâmetros essenciais de operação e segurança do firmware. Esses recursos controlam proteção de leitura,

0
Adoraria saber sua opinião, comente.x