Implementar recursos avançados

Veja o código-fonte no GitHub

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

Frame automático pendente

O IEEE 802.15.4 define dois tipos de métodos de transmissão de dados entre o pai e filho: transmissão direta e transmissão indireta. A segunda é projetada principalmente para dispositivos finais com sono (SEDs) que ficam suspensos na maior parte do tempo, despertar periodicamente para pesquisar o pai em busca de dados na fila.

  • Transmissão direta: o familiar responsável envia um data frame 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, o dispositivo final filho precisa primeiro consultar o pai para determinar se há dados disponíveis para ele. Para fazer isso, o filho envia um solicitação, que o pai confirma. O pai determina se tiver dados para o dispositivo da criança. Nesse caso, ele envia um pacote de dados ao filho dispositivo, que confirma o recebimento dos dados.

Se o rádio oferecer suporte à configuração dinâmica do bit Frame Pendente na saída para os SEDs, os motoristas precisam implementar correspondência de endereço de origem para ativar esse recurso. O OpenThread usa essa API para informar ao rádio SEDs para os quais definir o bit do frame pendente.

Se o rádio não oferecer suporte à configuração dinâmica do bit Frame Pendente, o o rádio pode fragmentar a API de correspondência do endereço de origem para retornar OT_ERROR_NOT_IMPLEMENTED:

Busca de energia/Detecção com rádio

O recurso Energy Scan/Detect exige que o chip de rádio faça uma amostragem de energia apresentando em canais selecionados e retorna o valor de energia detectado para o na camada superior.

Se esse recurso não for implementado, a camada MAC IEEE 802.15.4 envia/recebe um pacote de solicitação/resposta de beacon para avaliar valor de energia no canal.

Se o chip de rádio for compatível com o recurso Energy Scan/Detect, desative o software lógica de leitura de energia definindo a macro OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0:

Aceleração de hardware para mbedTLS

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

O OpenThread não ativa essas macros, portanto, a criptografia simétrica algoritmos de hash e funções ECC usam software de código aberto por padrão. Essas implementações exigem memória considerável e recursos computacionais. Para um desempenho ideal e uma melhor experiência experiência do usuário, recomendamos ativar a aceleração de hardware em vez do software para implementar as operações acima.

Para ativar a aceleração de hardware no OpenThread, use o comando mbedTLS a seguir Os arquivos principais de configuração precisam ser adicionados à compilação ot-config. definições nos arquivos CMake da 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: src/platform-name-mbedtls-config.h

Exemplo de nrf52811.cmake:

target_compile_definitions(ot-config INTERFACE
    "MBEDTLS_USER_CONFIG_FILE=\"nrf52811-mbedtls-config.h\""
)

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

Para ver um exemplo completo de configuração específica do usuário, consulte o mbedtls_config_autogen.h em ot-efr32.

Módulo AES

O OpenThread Security aplica a criptografia AES CCM (Counter with CBC-MAC) aos criptografar/descriptografar as mensagens IEEE 802.15.4 ou MLE e validar a mensagem o código de integração. A aceleração de hardware deve pelo menos oferecer suporte ao AES ECB básico modo Electronic Codebook Book para a chamada funcional básica do AES CCM.

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

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

Módulo SHA256

O OpenThread Security aplica algoritmos de hash HMAC e SHA256 para calcular a Valor de hash para gerenciamento de chaves de rede e geração de PSKc de acordo com a linha de execução Especificação.

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

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

Funções ECC

Como o mbedTLS atualmente só oferece suporte à aceleração de hardware para partes do ECC funções, em vez de todo o módulo, você pode optar por implementar algumas definidas no path-to-mbedtls/library/ecp.c para acelerar o ECC multiplicação de pontos.

A curva secp256r1 é usada no algoritmo de troca de chaves da ECJPAKE. Portanto, a aceleração de hardware precisa ser compatível com a velocidade de Weierstrass curta secp256r1 operação de curva. Consulte Aceleração de hardware CRYPTO da SiLabs para mbedTLS como exemplo.