|
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 indireta - o pai mantém os dados até que sejam solicitados pelo dispositivo final pretendido
No caso indireto, um dispositivo final filho deve primeiro consultar 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 esta API para informar ao rádio para quais SEDs definir o bit de quadro pendente.
Se o rádio não suportar a configuração dinâmica do bit Frame Pending, o rádio pode remover a API de correspondência de endereço de origem 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 da energia detectada à 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. Consulteaceleraçã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 habilitadas 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 arquivo mbedtls_config_autogen.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:
- Defina a macro
MBEDTLS_AES_ALT
no arquivo de cabeçalho de configuração mbedTLS específico do usuário - Indique o caminho do arquivo
aes_alt.h
usando a variávelMBEDTLS_CPPFLAGS
Módulo SHA256
OpenThread Security aplica algoritmos de hash HMAC e SHA256 para calcular o valor de hash para gerenciamento de chave mestra 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:
- Defina a macro
MBEDTLS_SHA256_ALT
no arquivo de cabeçalho de configuração mbedTLS específico do usuário - Indique o caminho do arquivo
sha256_alt.h
usando a variávelMBEDTLS_CPPFLAGS
Funções ECC
Como o mbedTLS atualmente só oferece suporte à aceleração de hardware para partes das funções ECC, em vez de para o 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 . Portanto, 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.