Introdução

Durante a produção do produto eletrônico, é desejável que, após a gravação do firmware (binário) no microcontrolador, que haja uma proteção na memória contra leitura. Assim, o programa desenvolvido e gravado não fica acessível a concorrentes e/ou hackers mal intencionados.

Para proteger a memória dos microcontroladores da família RA da Renesas, mais especificamente os que embarcam um core Arm Cortex-M33, é necessário usar o Device Lifecycle Management (DLM). Tanto a capacidade de debug quanto a interface de programação serial dependem das configurações dele [1]. É possível verificar os estados de Device Lifecycle abaixo [2]:

Device Lifecycle States

As transições de um estado para o outro são descritas a seguir:

Device Lifecycle State Transitions

Veja que é possível fazer transições reversas, como passar do estado DPL (Deployed) de memória protegida contra leitura, de volta para o SSD (Secure Software Development) com acesso de leitura de memória, via um processo de autenticação por chaves [3] [4]. Se não tiver feito o processo de autenticação por chaves, ainda é possível recuperar o acesso de escrita e leitura (revertendo a transição), mas toda a memória do MCU é apagada. Assim, protegendo o conteúdo do programa.

Exemplo

Veja abaixo um passo a paso de como fazer a gravação de um firmware de exemplo e fazer a proteção da memória sem injeção de chaves. Para isso vamos usar o Renesas Flash Programmer para:

  • Gravar o firmware de exemplo
  • Verificar que é possível fazer a leitura do programa gravado
  • Fazer a transição de SSD para NSECSD e ainda para DPL
  • Verificar a proteção de memória
  • Reveter para o estado SSD e verificar que a memória foi apagada

Gravar o firmware de exemplo

Siga os passos do artigo Primeiros passos com o Renesas Flash Programmer para fazer a gravação do firmware de exemplo que pisca os LEDs da placa EK-RA4M2.

Verificar que é possível fazer a leitura do programa gravado

Siga os passos do artigo Como ler a memória do microcontrolador com o Renesas Flash Programmer para fazer a leitura do programa gravado.

Fazer a transição de SSD para NSECSD e ainda para DPL

Vá em Target Device » Read Device Information, e verifique que o microcontrolador está no estado inicial SSD (ou CM).

RFP Read Device Information SSD

RFP Device SSD

Vá em Target Device » DLM Transition..., e escolha NSECSD.

RFP DLM Transition

RFP DLM Transition to NSECSD

Veja agora com o Read Device Information que o dispositivo está em NSECSD:

RFP Device NSECSD

Seguindo o mesmo processo, vá em Target Device » DLM Transition..., e agora escolha DPL. E verifique também com o Read Device Information:

RFP Device DPL

Verificar a proteção de memória

Apesar de ser possível fazer a leitura das informações gerais do dispositivo com o Read Device Information, não é mais possível fazer a leitura do firmware que foi programado. Assim como feito anteriormente, vá em Target Device » Read Memory... e tente fazer a leitura dos primeiros 8KB (0x2000) da Code Flash. E, como esperado, não é possível fazer a leitura do programa gravado:

RFP Read Memory Fail Error(E100000E): A protection error occurred in the device. (Command: 15, Response: D5) Operation failed

Reveter para o estado SSD e verificar que a memória foi apagada

Já que não configuramos o processo de autenticação por chaves, para voltarmos para o estado inicial SSD, é necessário ir em Target Device » Initialize Device:

RFP Initialize Device

Após esse processo, os LEDs param de piscar, indicando que a memória do dispositivo foi apagada. E, ao fazermos um último Read Device Information, verificamos que o dispositivo voltou ao estado SSD, podendo ser programado de novo.

RFP Device SSD

Referências