Google is committed to advancing racial equity for Black communities. See how.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Implementar recursos avançados

Alguns recursos avançados são opcionais, dependendo se são ou não suportados na plataforma de hardware de destino.

Quadro automático pendente

O IEEE 802.15.4 define dois tipos de métodos de transmissão de dados entre pais e filhos: transmissão direta e transmissão indireta. O último é projetado principalmente para dispositivos de fim de sono (SEDs) que dormem a maior parte do tempo, acordando periodicamente para consultar o pai em busca de dados na fila.

  • Transmissão direta - pai envia um quadro de dados diretamente para o dispositivo final Transmissão direta

  • Transmissão indireta - o pai mantém os dados até que sejam solicitados pelo dispositivo final pretendido Transmissão direta

No caso indireto, um dispositivo final filho deve primeiro sondar o pai para determinar se há dados disponíveis para ele. Para fazer isso, a criança envia uma solicitação de dados, que o pai reconhece. O pai então determina se possui algum dado para o dispositivo filho; em caso afirmativo, ele envia um pacote de dados para o dispositivo filho, que confirma o recebimento dos dados.

Se o rádio suporta a configuração dinâmica do bit Frame Pending em confirmações de saída para SEDs, os drivers devem implementar a API de correspondência de endereço de origem para habilitar esse recurso. OpenThread usa essa API para informar ao rádio para quais SEDs definir o bit de quadro pendente.

Se o rádio não suporta a configuração dinâmica do bit Frame Pending, o rádio pode retirar o endereço de origem match API para retornar OT_ERROR_NOT_IMPLEMENTED .

Varredura / detecção de energia com rádio

O recurso Varredura / Detecção de Energia requer que o chip de rádio faça a amostragem da energia apresentada nos canais selecionados e retorne o valor de energia detectado à camada superior.

Se este recurso não for implementado, a camada MAC IEEE 802.15.4 envia / recebe um pacote Beacon Request / Response para avaliar o valor de energia atual no canal.

Se o chip de rádio suportar Varredura / Detecção de energia, certifique-se de desabilitar a lógica de varredura de energia do software configurando a macro OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0 .

Aceleração de hardware para mbedTLS

mbedTLS define várias macros no arquivo de cabeçalho de configuração principal, mbedtls-config.h , para permitir que os usuários habilitem implementações alternativas de AES, SHA1, SHA2 e outros módulos, bem como funções individuais para a criptografia de curva elíptica (ECC) sobre GF (p) módulo. Consulte aceleração de hardware mbedTLS para obter mais informações.

OpenThread não habilita essas macros, portanto, os algoritmos criptográficos simétricos, algoritmos hash e funções ECC utilizam implementações de software por padrão. Essas implementações requerem memória considerável e recursos computacionais. Para obter um desempenho ideal e uma melhor experiência do usuário, recomendamos habilitar a aceleração de hardware em vez de software para implementar as operações acima.

Para ativar a aceleração de hardware dentro do OpenThread, os seguintes arquivos de cabeçalho de configuração mbedTLS devem ser adicionados aos sinalizadores de opção de compilação no Makefile do exemplo de plataforma:

  • Configuração principal, que define todas as macros necessárias usadas no OpenThread: /openthread/third-party/mbedtls/mbedtls-config.h
  • Configuração específica do usuário, que define implementações alternativas de módulos e funções: /openthread/examples/platforms/ platform-name /crypto/ platform-name -mbedtls-config.h

Exemplo:

EFR32_MBEDTLS_CPPFLAGS  = -DMBEDTLS_CONFIG_FILE='\"mbedtls-config.h\"'
EFR32_MBEDTLS_CPPFLAGS += -DMBEDTLS_USER_CONFIG_FILE='\"efr32-mbedtls-config.h\"'

As macros comentadas em mbedtls-config.h não são obrigatórias e podem ser ativadas no arquivo de cabeçalho de configuração específico do usuário para aceleração de hardware.

Para obter um exemplo completo de configuração específica do usuário, consulte o efr32-mbedtls-config.h .

Módulo AES

A segurança OpenThread aplica a criptografia AES CCM (Contador com CBC-MAC) para criptografar / descriptografar as mensagens IEEE 802.15.4 ou MLE e valida o código de integração da mensagem. A aceleração de hardware deve pelo menos suportar o modo básico AES ECB (Electronic Codebook Book) para chamada funcional básica AES CCM.

Para utilizar uma implementação alternativa do módulo AES:

  1. Defina a macro MBEDTLS_AES_ALT no arquivo de cabeçalho de configuração mbedTLS específico do usuário
  2. Indique o caminho do arquivo aes_alt.h usando a variável MBEDTLS_CPPFLAGS

Módulo SHA256

OpenThread Security aplica algoritmos de hash HMAC e SHA256 para calcular o valor de hash para gerenciamento de chave mestre e geração de PSKc de acordo com a especificação de thread.

Para utilizar uma implementação alternativa do módulo básico SHA256:

  1. Defina a macro MBEDTLS_SHA256_ALT no arquivo de cabeçalho de configuração mbedTLS específico do usuário
  2. Indique o caminho do arquivo sha256_alt.h usando a variável MBEDTLS_CPPFLAGS

Funções ECC

Como o mbedTLS atualmente só oferece suporte à aceleração de hardware para partes das funções ECC, ao invés do módulo inteiro, você pode escolher implementar algumas funções definidas em <path-to-mbedtls> /library/ecp.c para acelerar a multiplicação de pontos ECC.

A curva secp256r1 é usada no algoritmo de troca de chaves do rascunho ECJPAKE . Conseqüentemente, a aceleração de hardware deve pelo menos suportar a operação de curva weierstrass curta secp256r1. Veja SiLabs CRYPTO Hardware Acceleration para mbedTLS para um exemplo.