Segurança de sistemas embarcados usando o PSoC 64
Contributed By DigiKey's North American Editors
2022-07-27
O número de produtos conectados à Internet continua a crescer a uma taxa exponencial. O problema enfrentado por muitas equipes de produtos é que os desenvolvedores de software embarcado não têm experiência suficiente em segurança. A falta de experiência pode levar a requisitos de segurança negligenciados, lacunas de segurança e implementação deficiente. O resultado são sistemas conectados que estão mal protegidos e são os mais fáceis de obter por roubo de propriedade intelectual, além de dispositivos e dados do usuário.
Os projetistas de sistemas baseados em microcontroladores têm várias soluções à sua disposição, que podem ser usadas para simplificar as implementações de segurança e fornecer-lhes as ferramentas para fazê-lo com sucesso. Por exemplo, os microcontroladores de núcleo único podem usar o TrustZone da Arm, que faz parte da arquitetura Armv8-M (e mais além). Há também soluções com microcontroladores de vários núcleos.
Este artigo mostra como os desenvolvedores podem usar processadores com vários núcleos para garantir suas soluções embarcadas. Especificamente, examina o microcontrolador seguro Cypress PSoC 64 e as ferramentas que ele fornece para implementar uma solução segura.
Fundamentos de segurança embarcada
Um dos fundamentos centrais para projetar um produto seguro é aproveitar o isolamento baseado em hardware. Este isolamento pode vir de muitas formas, tais como um ambiente de execução isolado, ou memória isolada baseada em uma unidade de proteção de memória (MPU). Ao mais alto nível, um microcontrolador precisa ser capaz de separar seu ambiente de execução em um ambiente de processamento seguro (SPE) e um ambiente de processamento não seguro (NSPE).
Um SPE é um ambiente de execução isolado que mantém separados do NSPE a sua memória, componentes e código de aplicação. O SPE pode ser pensado como um processador de segurança. O SPE executa código seguro e operações tais como um sistema operacional seguro e/ou uma raiz da confiança (RoT). O SPE também executará serviços confiáveis tais como criptografia, armazenamento seguro, atestado e registro seguro. Um número limitado de aplicações confiáveis relacionadas a operações seguras será executado no SPE.
O NSPE, por sua vez, pode ser considerado como o ambiente de execução rico em recursos que executa tudo, exceto para operações seguras. Na verdade, o NSPE é realmente o modelo de programação familiar a que a maioria dos desenvolvedores de embarcados estão acostumados; ele tem um RTOS e a maioria dos componentes da aplicação.
O isolamento baseado em hardware é um dos principais inquilinos, ou melhores práticas, fornecido pela Arm® Platform Security Architecture (PSA) para construir sistemas seguros. As diferentes camadas de isolamento que acabamos de discutir podem ser vistas implementadas na Figura 1, com o PSoC 64 sendo o exemplo. Neste exemplo, o SPE e o NSPE (1) produzem o isolamento do hardware ao ter os ambientes de tempo de execução em processadores separados. Além da separação do tempo de execução, os serviços confiáveis e RoT são ainda mais isolados (2). Finalmente, cada aplicação confiável no SPE também é isolada usando ferramentas como partições e MPUs (3) confiáveis.
Figura 1: Uma aplicação segura usa isolamento baseado em hardware para separar os ambientes de execução. 1) NSPE e SPE são isolados 2) RoT e serviços confiáveis são isolados 3) Aplicações confiáveis são isoladas. (Fonte da imagem: Arm/Cypress)
O PSoC 64 é um microcontrolador de dois núcleos, onde o NSPE é executado em um processador Arm Cortex®-M4, e o SPE é executado em um processador Arm Cortex-M0+. O Arm Cortex-M0+ executa todas as funções de segurança e pode se comunicar com o Cortex-M4 através de um barramento de comunicação do inter-processador (IPC). A arquitetura limita o acesso ao SPE, que é hardware isolado.
Para começar a usar o PSoC 64, os desenvolvedores vão querer verificar o Kit pioneiro de inicialização segura PSoC 64.
O kit pioneiro de inicialização segura PSoC 64
O kit pioneiro de inicialização segura PSoC 64 (Figura 2) tem tudo o que os desenvolvedores precisam para começar a proteger suas aplicações. Primeiro, tem um módulo PSoC 64 que possui o microcontrolador PSoC 64, memória externa e todos os circuitos de suporte (mostrados em vermelho). A memória externa pode ser usada para armazenar código de aplicação ou usada para armazenar novas imagens de firmware para atualizações seguras de firmware por via aérea (FOTA).
Figura 2: O kit pioneiro de inicialização segura PSoC 64 tem tudo o que os desenvolvedores precisam para começar a desenvolver aplicações IoT seguras. (Fonte da imagem: Cypress)
Em seguida, tem um módulo Wi-Fi que permite aos desenvolvedores conectar a placa a uma rede. O módulo Wi-Fi é especialmente útil para aplicações de IoT, onde a placa se conectará a serviços de nuvem como AWS ou Azure. A placa de desenvolvimento suporta Amazon FreeRTOS, que discutiremos na próxima seção.
Finalmente, o kit pioneiro suporta uma ampla gama de capacidades de expansão, como barra de pinos, barra de pinos Arduino e uma gama de sensores. Os desenvolvedores podem aproveitar o controle deslizante de toque e os botões de toque na placa, pushbuttons, potenciômetro e muito mais. A placa também é configurada para tornar a personalização bastante fácil para quase todas as aplicações.
O pacote de software seguro PSoC 64
Projetar uma aplicação embarcada segura pode ser demorado e desafiador. Os desenvolvedores devem estar procurando soluções que ajudem a diminuir os custos e o tempo de colocação no mercado, garantindo ao mesmo tempo que sua aplicação seja segura. Para ajudar nisso, o PSoC 64 fornece uma ampla gama de software que permite aos desenvolvedores construir rapidamente uma aplicação segura.
Por exemplo, o CySecureTools fornece aos desenvolvedores um conjunto de ferramentas para criação de chaves e certificados, bem como ferramentas para assinatura de aplicações do usuário e para o fornecimento de microcontroladores Cypress. A ferramenta permite que os desenvolvedores transfiram o Cypress RoT e depois injetam seus próprios ativos de segurança. Informações sobre como configurar e usar o CySecureTools podem ser encontradas no arquivo README do repositório github.
Uma ferramenta que os desenvolvedores da IoT acharão útil é o suporte para AWS usando o FreeRTOS. O repositório github contém exemplos úteis para utilizar o FreeRTOS e AWS com o PSoC 64. O primeiro exemplo em que os desenvolvedores estariam interessados é a aplicação "Olá mundo" que transmite mensagens MQTT do PSoC 64 para a nuvem AWS. Este exemplo permite que o desenvolvedor passe pelo processo de provisionamento, geração de chaves e fases de implantação. No final do exemplo, os desenvolvedores têm um dispositivo embarcado seguro conectado ao AWS. Detalhes sobre como começar podem ser encontrados no Guia de Introdução ao kit CY8CKIT-064S0S204343.
Aplicações seguras com o confiável Firmware-M (TF-M)
O PSoC 64 fornece aos desenvolvedores uma estrutura de segurança pronta para uso, que pode ser facilmente personalizada para uma aplicação. Os desenvolvedores podem achar útil entender o que está acontecendo nos bastidores a partir de uma perspectiva de software. Especificamente, o firmware PSoC 64 utiliza uma estrutura de segurança de código aberto conhecida como Firmware-M confiável ou TF-M.
TF-M é uma implementação de referência da estrutura de segurança IoT Arm PSA. Ele fornece aos desenvolvedores ferramentas de segurança úteis, tais como atestados de dispositivos, verificação de firmware, serviços de criptografia, gerenciamento de segredos de dispositivos e particionamento seguro, só para citar alguns. A Cypress aproveitou o TF-M para construir sua estrutura de segurança para que os desenvolvedores pudessem então utilizá-la em suas aplicações.
Os desenvolvedores podem modificar sua estrutura de segurança adicionando seu próprio código, adicionando perfis de segurança, e muito mais. Entretanto, é importante ter em mente que quanto mais o software SPE for modificado, maior será a chance de que uma vulnerabilidade seja adicionada. Os desenvolvedores precisam equilibrar cuidadosamente os riscos associados a mudanças, acréscimos ou subtrações ao firmware de base.
Dicas e truques para a segurança de aplicações embarcadas
Os desenvolvedores que procuram assegurar suas aplicações embarcadas pela primeira vez têm muito a considerar. Aqui estão várias "dicas e truques" que podem simplificar e acelerar o desenvolvimento:
- Realize um modelo de ameaça e análise de segurança (TMSA) no início do ciclo de desenvolvimento.
- Use uma placa de desenvolvimento para testar o dispositivo RoT, Bootloader seguro, processo de provisionamento do dispositivo e atualizações de firmware.
- Não implemente a segurança sozinho! Aproveite as pilhas existentes de firmware seguro de código aberto para minimizar o retrabalho.
- Não deixe de pensar no ciclo de vida do dispositivo, incluindo como ele deve ser desativado com segurança.
- Explore ferramentas como o CySecureTools; tais ferramentas vêm com exemplos de modelos de segurança, software e amostras.
- Ao clonar o repositório github FreeRTOS, clone a última versão etiquetada. A clonagem da linha principal ativa muitas vezes resulta em encontrar incompatibilidade de ferramentas e "bugs" que ainda estão em progresso.
- Comece um projeto passando pelo Guia de Introdução ao Kit CY8CKIT-064S0S2-4343W da Cypress. Ele fornece todas as informações necessárias para que uma aplicação de base seja executada, podendo então ser modificada para fins específicos do produto.
Os desenvolvedores que seguem estas "dicas e truques" descobrirão que poupam bastante tempo e sofrimento.
Conclusão
A segurança não tem que ser difícil. Os desenvolvedores de embarcados devem se concentrar nos diferenciadores de seus produtos, seu molho secreto. Na maioria dos casos, isso não é segurança. Este artigo explorou como o PSoC 64 pode ajudar os desenvolvedores a proteger rapidamente suas aplicações, fornecendo não apenas um ambiente de isolamento baseado em hardware, mas também uma estrutura de ferramentas de software. Juntas, as soluções de hardware e software proporcionam aos desenvolvedores um ciclo acelerado de desenvolvimento de segurança.
Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

