O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Implementar recursos avançados

Veja o código no GitHub

Alguns recursos avançados são opcionais, dependendo se são compatíveis ou não 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 pai e filho: transmissão direta e transmissão indireta. Este último é projetado principalmente para dispositivos de suspensão de sono (SEDs, na sigla em inglês), que dormem na maioria das vezes, acordando periodicamente para pesquisar o pai em busca de dados na fila.

  • Transmissão direta: o pai envia um frame de dados diretamente para o dispositivo final Transmissão direta

  • Transmissão indireta: o pai mantém os dados até que seja solicitado pelo dispositivo final pretendido. Transmissão direta

No caso indireto, um dispositivo final filho precisa primeiro pesquisar o pai para determinar se há dados disponíveis para ele. Para fazer isso, o filho envia uma solicitação de dados, que o pai confirma. O pai determina se tem dados para o dispositivo filho. Nesse caso, ele envia um pacote de dados para o dispositivo filho, que confirma o recebimento dos dados.

Se o rádio for compatível com a configuração dinâmica do bit "Pendente" do frame em confirmações de saída para SEDs, os drivers precisarão implementar a API de correspondência de endereço de origem para ativar esse recurso. O OpenThread usa essa API para informar ao rádio quais SEDs serão definidos como o bit de frame pendente.

Se o rádio não for compatível com a configuração dinâmica do bit de frame pendente, ele poderá fragmentar a API de correspondência de endereço de origem para retornar OT_ERROR_NOT_IMPLEMENTED.

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

O recurso Verificação de energia/detecção exige que o chip de rádio simule a energia apresentada nos canais selecionados e retorne o valor de energia detectado à camada superior.

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

Se o chip de rádio for compatível com a Detecção/detecção de energia, desative a lógica de verificação de energia de software configurando a macro OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0.

Aceleração de hardware para mbedTLS

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

O OpenThread não ativa essas macros. Portanto, os algoritmos simétricos de criptografia, algoritmos de hash e funções de ECC usam implementações de software por padrão. Essas implementações exigem recursos computacionais e de memória consideráveis. Para otimizar o desempenho e melhorar a experiência do usuário, recomendamos ativar a aceleração de hardware, em vez de software, para implementar as operações acima.

Para ativar a aceleração de hardware no OpenThread, os seguintes arquivos principais de configuração de mbedTLS precisam ser adicionados às definições de compilação ot-config 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 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 a aceleração de hardware.

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

Módulo AES

O OpenThread Security aplica a criptografia AES CCM (Counter with CBC-MAC) para criptografar/descriptografar as mensagens IEEE 802.15.4 ou MLE e valida o código de integração de mensagens. A aceleração de hardware precisa ser, no mínimo, compatível com o modo básico do AES ECB (Electronic Codebook Book) para chamadas funcionais básicas do AES CCM.

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

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

Módulo SHA256

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

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

  1. Defina a macro MBEDTLS_SHA256_ALT no arquivo principal de configuração do 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 é compatível apenas com a aceleração de hardware para partes das funções de ECC, em vez de todo o módulo, você pode optar por implementar algumas funções definidas em path-to-mbedtls/library/ecp.c para acelerar a multiplicação de pontos de ECC.

A curva secp256r1 é usada no algoritmo de troca de chaves do rascunho ECJPAKE. Portanto, a aceleração de hardware precisa ser, no mínimo, compatível com a operação de curva curta da secp256r1. Consulte SiLabs CRYPTO Hardware Acceleration para mbedTLS para ver um exemplo.