Como garantir a segurança de sistemas embarcados usando DSCs e MCUs

By Stephen Evanczuk

Contributed By DigiKey's North American Editors

Com a migração para a Internet das Coisas (IoT), a segurança foi muito além de um recurso opcional em aplicações embarcadas, evoluindo para um recurso obrigatório que é necessário para garantir a integridade do sistema. Para atender a uma gama cada vez maior de especificações de segurança, os desenvolvedores precisam de soluções que não apenas atendam aos requisitos das aplicações de baixo consumo de energia ou alto desempenho, mas que também possam oferecer recursos de segurança baseados em hardware, incluindo autenticação, criptografia, armazenamento seguro e inicialização segura.

Este artigo apresenta uma breve introdução aos princípios de segurança embarcada. Em seguida, mostra como os desenvolvedores podem usar os controladores de sinais digitais (DSCs) de alto desempenho e as unidades de microcontroladores (MCUs) PIC24F de baixa potência da Microchip Technology, juntamente com os dispositivos de segurança especializados da Microchip, para atender à demanda emergente por segurança embarcada rigorosa.

A segurança embarcada se baseia em quatro princípios fundamentais

Conectados à Internet pública, os produtos inteligentes podem ser unidos em aplicações sofisticadas que poucos produtos autônomos podem igualar. No entanto, a ameaça de ataques cibernéticos usando esses mesmos caminhos de conectividade não apenas limita potencialmente o valor dos produtos inteligentes, mas também expõe esses produtos, as aplicações associadas e seus usuários a fontes aparentemente infinitas de ameaças.

Além de enfrentar a demanda contínua dos consumidores por segurança cibernética no nível do sistema, os desenvolvedores precisam cada vez mais atender às especificações de segurança de organizações nacionais e regionais. Duas das especificações mais influentes, a ETSI EN 303 645 da Europa, "Cyber Security for Consumer Internet of Things: Baseline Requirements" e a NIST IR 8259 dos Estados Unidos, "Foundational Cybersecurity Activities for IoT Device Manufacturers", sugerem que as práticas de segurança cibernética dependem de quatro princípios fundamentais:

  • Uso de senhas exclusivas
  • Disponibilidade de armazenamento seguro no dispositivo para parâmetros de segurança confidenciais
  • Comunicação segura por meio de autenticação mútua e comunicação criptografada
  • Capacidade de garantir a integridade e a autenticidade do firmware por meio de inicialização segura e atualização segura do firmware

O fornecimento de sistemas com base nesses princípios fundamentais exige o uso de uma plataforma confiável que impeça os hackers de injetar códigos comprometidos que alterem as comunicações, o armazenamento, o firmware ou até mesmo os próprios mecanismos de segurança.

As plataformas confiáveis ajudam a garantir a segurança, criando segurança ao nível de sistema desde o início, usando mecanismos de segurança imutáveis baseados em hardware. Embora o conceito seja simples, a implementação da segurança no nível do sistema tem sido um desafio, pois um ponto fraco de segurança em qualquer parte do sistema pode abrir caminho para um ataque cibernético. Ao usar os DSCs dsPIC33C de alto desempenho e as MCUs PIC24F de baixa potência da Microchip Technology, em combinação com os dispositivos de segurança complementares da Microchip, os desenvolvedores podem implementar mais facilmente projetos embarcados que garantem a segurança no nível de sistema.

Atendendo aos requisitos de desempenho e potência

Projetados para suportar uma ampla gama de casos de uso, os dispositivos das famílias de DSC dsPIC33C e MCU PIC24F da Microchip combinam plataformas de execução robustas com recursos de aplicações específicas, incluindo um amplo complemento de periféricos analógicos integrados, controle de forma de onda e comunicações. De fato, usando a modulação múltipla por largura de pulso (PWM), amplificadores de ganho programável (PGAs), conversores analógico-digitais (ADCs) e outros periféricos em um DSC dsPIC33C, os desenvolvedores podem implementar sistemas complexos com um mínimo de componentes adicionais, normalmente precisando apenas dos dispositivos de alimentação necessários em qualquer projeto desse tipo. Um exemplo é o uso do DSC de núcleo único DSPIC33CK512MP608 para implementar um projeto de fonte de alimentação ininterrupta (UPS) fora da rede elétrica (Figura 1).

Diagrama do DSC de núcleo único Microchip DSPIC33CK512MP608 (clique para ampliar)Figura 1: Como em outros DSCs dsPIC33C, o DSC de núcleo único DSPIC33CK512MP608 integra um conjunto abrangente de periféricos, simplificando o projeto de sistemas complexos, como o UPS fora da rede elétrica mostrado. (Fonte da imagem: Microchip Technology)

Para aplicações que exigem recursos de controle em tempo real e processamento de sinais digitais, os DSCs dsPIC33C combinam os recursos de uma MCU e um DSC com suas instruções especializadas e funcionalidade de hardware. Para projetos críticos de segurança, os DSCs dsPIC33C estão prontos para a segurança funcional IEC 60730 e em conformidade com a ISO 26262, oferecendo vários recursos de hardware projetados para simplificar a certificação de segurança funcional para aplicações ASIL-B (nível B de integridade da segurança automotiva) e SIL-2 automotiva, além de aplicações automotivas de segurança crítica.

Enquanto os DSCs dsPIC33C são projetados para aplicações em que o desempenho é fundamental, as MCUs PIC24F oferecem um equilíbrio entre desempenho e eficiência energética para sistemas embarcados de uso geral, eletrônicos de consumo, automação industrial, dispositivos médicos e outras aplicações que exigem controle e conectividade, mas não precisam de recursos de DSP. Assim como os DSCs dsPIC33C, as MCUs PIC24F são dispositivos prontos para segurança funcional IEC 60730 com bibliotecas de diagnóstico de segurança Classe B para a criação de aplicações domésticas.

Conforme observado anteriormente, a integridade do firmware é um princípio fundamental da segurança cibernética embarcada. Para ajudar os desenvolvedores a garantir a integridade do firmware e a proteção geral do código, a Microchip oferece Flash programável de uso único (OTP) por meio da segurança de inibição da escrita ICSP (programação serial no circuito) e CodeGuard em dispositivos DSC dsPIC33C, como o DSC de núcleo único DSPIC33CK512MP608 e o DSC de núcleo duplo DSPIC33CH512MP508, bem como dispositivos MCU PIC24F, como a MCU PIC24FJ512GU405, entre muitos outros configurados com diferentes conjuntos de periféricos de aplicações específicas.

Protegendo o firmware do dispositivo

A Flash OTP por inibição da escrita ICSP permite que os desenvolvedores configurem partes da memória Flash como memória OTP e protejam a memória Flash contra leitura/escrita. O recurso ICSP de propriedade da Microchip permite que esses dispositivos sejam programados em série por meio de um par de pinos durante a execução na aplicação final. Com esse recurso, os fabricantes podem concluir a programação nas placas de produção. Enquanto o ICSP exige o uso de um dispositivo de programação externo para controlar o processo da Flash OTP, o ICSP aprimorado permite que um carregador de inicialização na placa controle o processo da Flash OTP. Esses dispositivos também suportam a autoprogramação em tempo de execução (RTSP), que permite que o código Flash da aplicação do usuário se atualize durante o tempo de execução.

Após programar o dispositivo de produção, os desenvolvedores podem ativar a inibição da escrita ICSP, que impede qualquer programação ou apagamento adicional do ICSP. No entanto, as operações de apagamento e programação da Flash RTSP podem prosseguir mesmo quando a inibição da escrita ICSP estiver ativada, se o código apropriado de atualização da Flash for programado no dispositivo antes da sua ativação. Como resultado, os desenvolvedores podem usar um carregador de inicialização confiável para alterar a Flash, mesmo quando a inibição da escrita ICSP estiver ativada, permitindo que eles atualizem o firmware com segurança e, ao mesmo tempo, reduzam as tentativas externas de atualizar a Flash nos sistemas de produção.

A segurança Flash da CodeGuard oferece proteção mais refinada do programa Flash por meio do uso separado de segmentos de inicialização e segmentos gerais. Os desenvolvedores definem o tamanho desses segmentos configurando o endereço do limite do segmento de inicialização (BS) (BSLIM) no registrador BSLIM do dispositivo; o segmento geral (GS) ocupa a memória restante. Para proteger ainda mais as informações confidenciais, cada segmento contém partições adicionais. Por exemplo, o BS contém a tabela de vetores de interrupção (IVT), a tabela opcional de vetores de interrupção alternativos (AIVT) e o espaço adicional de palavras de instrução (IW); o segmento de configuração (CS), que contém dados críticos de configuração do usuário do dispositivo, fica no espaço de endereço do usuário no GS (Figura 2).

Diagrama das famílias de DSC dsPIC33C e MCU PIC24F da MicrochipFigura 2: As famílias DSC dsPIC33C e MCU PIC24F suportam proteção de código em partições separadas, como BS e GS. (Fonte da imagem: Microchip Technology)

Após definir as partições do segmento, os desenvolvedores podem usar o registrador de segurança do firmware (FSEC) do dispositivo para ativar opcionalmente a proteção contra escrita e definir o nível de proteção do código necessário para cada segmento. Durante o tempo de execução, o dispositivo impede que o código contido em um segmento com um nível de proteção de código inferior acesse o código contido em um segmento com um nível de proteção de código superior. Em um sistema típico, os desenvolvedores protegeriam a escrita do BS e definiriam sua proteção de código em um nível alto, atenuando as tentativas externas de alterar o BS, inclusive o carregador de inicialização.

Implementação da atualização segura de firmware por via aérea

Os desenvolvedores de software se deparam inevitavelmente com a necessidade de atualizar o software em resposta à combinação de bugs recém-descobertos de softwares, aprimoramentos da concorrência ou ameaças emergentes à segurança. Diferentemente das atualizações de aplicativos móveis, a realização de atualizações seguras do firmware em sistemas embarcados corre o risco de interferir nas aplicações em execução no momento, na melhor das hipóteses, ou de "travar" o sistema, na pior delas. As famílias de DSCs dsPIC33C e MCUs PIC24F de baixa potência da Microchip oferecem um mecanismo de partição dupla projetado para ajudar os desenvolvedores a evitar esses problemas.

No modo de operação padrão, esses dispositivos usam toda a memória física disponível como um espaço de memória contínuo e de partição única (Figura 3, à esquerda) que pode ser configurado em BSs e GSs separados. No modo de partição dupla, os desenvolvedores dividem a memória física em partições ativas e inativas separadas (Figura 3, à direita).

Diagrama das famílias DSC dsPIC33C e MCU PIC24F da Microchip nos modos de partição única ou dupla (clique para ampliar)Figura 3: Os desenvolvedores podem operar as famílias DSC dsPIC33C e MCU PIC24F no modo padrão de partição única ou no modo de partição dupla. (Fonte da imagem: Microchip Technology)

Operando no modo de partição dupla, esses dispositivos podem continuar executando o código da aplicação na partição ativa, enquanto programam a partição inativa. Após a conclusão da programação, a realização da instrução em tempo de execução da troca de inicialização (BOOTSWP) faz com que o dispositivo alterne o destino de inicialização para a partição atualizada. Se o código na partição atualizada falhar ou for considerado deficiente, a reinicialização do dispositivo fará com que ele seja automaticamente inicializado na partição original (Figura 4).

Diagrama dos DSCs dsPIC33C e MCUs PIC24F da Microchip no modo de partição dupla (clique para ampliar)Figura 4: No modo de partição dupla, os DSCs dsPIC33C e as MCUs PIC24F podem carregar o código da aplicação em uma partição, enquanto continuam a executar o código da aplicação na outra partição. (Fonte da imagem: Microchip Technology)

Depois que o sucesso da partição atualizada for garantido, a sequência de inicialização da flash (FBTSEQ) da partição atualizada poderá ser definida com um valor menor do que o da partição original. Nas reinicializações subsequentes do dispositivo, ele será inicializado na partição atualizada com o valor mais baixo de FBTSEQ (Figura 5).

Diagrama do modo de partição dupla que permite que os desenvolvedores especifiquem a sequência de inicialização na partição desejada (clique para ampliar)Figura 5: O modo de partição dupla permite que os desenvolvedores especifiquem a sequência de inicialização na partição desejada, após a reinicialização do dispositivo. (Fonte da imagem: Microchip Technology)

A Flash OTP por inibição da escrita ICSP e segurança Flash de CodeGuard oferece suporte essencial para a segurança de código estático e em tempo de execução, mas a segurança embarcada abrangente exige mecanismos adicionais, incluindo armazenamento seguro de chaves, autenticação de código e comunicações seguras.

Usando dispositivos de segurança complementares para garantir a segurança do sistema embarcado

Combinando os DSCs dsPIC33C e os microcontroladores PIC24F com o ATECC608 CryptoAuthentication da Microchips ou o CI de segurança TrustAnchor100 (TA100) CryptoAutomotive, os desenvolvedores podem implantar mais facilmente o complemento total dos recursos de segurança baseados em hardware.

Esses CIs de segurança fornecem mecanismos de segurança resistentes a violações baseados em hardware, incluindo armazenamento seguro, mecanismos de criptografia acelerados por hardware, geradores de números aleatórios verdadeiros e outros mecanismos exigidos por algoritmos criptográficos. Projetados especificamente como dispositivos complementares, os CIs podem ser facilmente adicionados a projetos de sistemas DSC ou MCU para concluir a implementação da segurança total de sistemas embarcados (Figura 6).

Diagrama dos CIs de segurança Microchip ATECC608 ou TA100 (clique para ampliar)Figura 6: Os CIs de segurança, como o ATECC608 ou o TA100, complementam os recursos de segurança dos DSCs dsPIC33C e das MCUs PIC24F, simplificando a implementação de sistemas embarcados seguros. (Fonte da imagem: Microchip Technology)

A execução de uma operação crítica, como a atualização segura do firmware, ilustra os recursos de segurança complementares dos DSCs dsPIC33C e dos microcontroladores PIC24F em conjunto com esses CIs de segurança complementares. Os desenvolvedores usam técnicas de assinatura de código para verificar a autenticidade e a integridade do código antes da conclusão das operações de atualização do firmware. Aqui, os desenvolvedores usam seus sistemas de desenvolvimento para criar um pacote de atualização que contém o código, os metadados do código e uma assinatura usada para verificação (Figura 7).

Diagrama da assinatura de código que fornece um protocolo vitalFigura 7: A assinatura de código fornece um protocolo vital usado rotineiramente para verificar a autenticidade e a integridade do código, antes da atualização em um sistema de destino. (Fonte da imagem: Microchip Technology)

No sistema de destino, a verificação de assinatura baseada em hardware elimina o risco de comprometimento dos protocolos de verificação, o que era possível com o tipo de verificação de assinatura baseada em software, usado no passado. Em vez disso, um CI de segurança complementar, como o ATECC608 e o TA100 da Microchip, realiza operações de verificação de assinatura de forma rápida e segura, sem risco de comprometimento (Figura 8).

Diagrama de verificação baseada em hardwareFigura 8: em um sistema de destino, a verificação baseada em hardware fornecida por um CI de segurança, como o ATECC608 ou o TA100, é essencial para garantir a verificação do código antes da atualização do firmware pelo carregador de inicialização. (Fonte da imagem: Microchip Technology)

Para agilizar a implementação de sistemas seguros, a Microchip fornece uma combinação de ferramentas de desenvolvimento de software e hardware.

Agilize o desenvolvimento de software e hardware

Enquanto o ambiente de desenvolvimento integrado (IDE) MPLAB X oferece aos desenvolvedores um ambiente completo de desenvolvimento de software, o compilador C MPLAB XC oferece suporte ao desenvolvimento de cadeias de ferramentas existentes. Para agilizar o desenvolvimento em qualquer ambiente, o MPLAB Code Configurator (MCC) da Microchip permite que os desenvolvedores usem uma interface gráfica para gerar automaticamente inicializadores, criar drivers, alocar pinos, implementar bibliotecas e ajudar a agilizar muitos dos procedimentos e processos críticos de configuração de baixo nível associados a qualquer projeto de desenvolvimento de software embarcado.

Para agilizar a implementação de um carregador de inicialização seguro adequado, o Bootloader para DSC dsPIC33 e MCUs PIC24 da Microchip oferece uma interface gráfica que ajuda os desenvolvedores a configurar e gerar rapidamente os carregadores de inicialização personalizados necessários para suas aplicações. Um aplicativo hospedeiro do carregador de inicialização relacionado simplifica ainda mais a transferência do código da aplicação para o dispositivo de destino.

Para o desenvolvimento de hardware, a Microchip fornece várias placas de desenvolvimento associadas para a criação de sistemas baseados em DSCs dsPIC33C ou MCUs PIC24F. De fato, a placa PIC-IoT EV54Y39A e a placa PIC-IoT AC164164 da Microchip (Figura 9) integram CIs de segurança que são pré-provisionados com credenciais de segurança para o Amazon Web Services (AWS) e o Google Cloud, respectivamente.

Imagem da placa PIC-IoT AC164164 da MicrochipFigura 9: Placas como a PIC-IoT AC164164 ajudam a acelerar o desenvolvimento da segurança embarcada, integrando CIs de segurança que são pré-provisionados com credenciais para AWS ou Google Cloud. (Fonte da imagem: Microchip Technology)

Para projetos personalizados, a Microchip oferece uma placa de desenvolvimento dsPIC33CH Curiosity (DM330028-2) baseada no DSC de núcleo duplo dsPIC33CH512MP508. Como alternativa, os desenvolvedores podem conectar o módulo plug-in baseado no dsPIC33CH128MP508 da Microchip (MA330040) a uma placa de avaliação incorporada Microchip Explorer (DM240001-2) para agilizar o desenvolvimento de sistemas embarcados seguros.

Conclusão

A segurança do sistema embarcado depende da disponibilidade de mecanismos baseados em hardware, capazes de suportar os princípios essenciais de segurança cibernética que incluem integridade do firmware, autenticação, criptografia e armazenamento seguro. Enquanto os DSCs dsPIC33C e as MCUs PIC24F da Microchip simplificam a proteção de código, seus CIs de segurança ATECC608 e TA100 fornecem os mecanismos de segurança adicionais necessários em uma plataforma de segurança eficaz. Usando esses dispositivos em combinação, os desenvolvedores podem atender à necessidade de segurança no nível do sistema em soluções embarcadas para a IoT, bem como em aplicações automotivas, industriais, de consumo e médicas.

DigiKey logo

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.

About this author

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk has more than 20 years of experience writing for and about the electronics industry on a wide range of topics including hardware, software, systems, and applications including the IoT. He received his Ph.D. in neuroscience on neuronal networks and worked in the aerospace industry on massively distributed secure systems and algorithm acceleration methods. Currently, when he's not writing articles on technology and engineering, he's working on applications of deep learning to recognition and recommendation systems.

About this publisher

DigiKey's North American Editors