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 indireta: o pai mantém os dados até que sejam solicitados pelo dispositivo final pretendido
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:
- Definir a macro
MBEDTLS_AES_ALT
no mbedTLS específico do usuário arquivo principal de configuração - Indique o caminho do arquivo
aes_alt.h
usando oMBEDTLS_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:
- Definir a macro
MBEDTLS_SHA256_ALT
no mbedTLS específico do usuário arquivo principal de configuração - Indique o caminho do arquivo
sha256_alt.h
usando oMBEDTLS_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.