Google is committed to advancing racial equity for Black communities. See how.
Cette page a été traduite par l'API Cloud Translation.
Switch to English

Mettre en œuvre des fonctionnalités avancées

Certaines fonctionnalités avancées sont facultatives, selon qu'elles sont prises en charge ou non sur la plate-forme matérielle cible.

Cadre automatique en attente

IEEE 802.15.4 définit deux types de méthodes de transmission de données entre parent et enfant: la transmission directe et la transmission indirecte. Ce dernier est principalement conçu pour les périphériques endormis (SED) qui dorment la plupart du temps, se réveillant périodiquement pour interroger le parent pour les données en file d'attente.

  • Transmission directe - le parent envoie une trame de données directement au périphérique final Transmission directe

  • Transmission indirecte - le parent conserve les données jusqu'à ce que le périphérique final prévu le demande Transmission directe

Dans le cas indirect, un terminal enfant doit d'abord interroger le parent pour déterminer si des données sont disponibles pour lui. Pour ce faire, l'enfant envoie une demande de données, que le parent reconnaît. Le parent détermine ensuite s'il a des données pour le périphérique enfant; si tel est le cas, il envoie un paquet de données à l'appareil enfant, qui accuse réception des données.

Si la radio prend en charge la définition dynamique du bit Frame Pending dans les accusés de réception sortants des SED, les pilotes doivent implémenter l'API de correspondance d'adresse source pour activer cette fonctionnalité. OpenThread utilise cette API pour indiquer à la radio pour quels SED définir le bit Frame Pending.

Si la radio ne prend pas en charge la définition dynamique du bit Frame Pending, la radio peut supprimer l'API de correspondance d'adresse source pour renvoyer OT_ERROR_NOT_IMPLEMENTED .

Balayage / détection d'énergie avec radio

La fonction Energy Scan / Detect nécessite que la puce radio échantillonne l'énergie présentée sur les canaux sélectionnés et renvoie la valeur d'énergie détectée à la couche supérieure.

Si cette fonctionnalité n'est pas implémentée, la couche MAC IEEE 802.15.4 envoie / reçoit un paquet de demande / réponse de balise pour évaluer la valeur d'énergie actuelle sur le canal.

Si la puce radio prend en charge Energy Scan / Detect, assurez-vous de désactiver la logique d'analyse d'énergie du logiciel en définissant la macro OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0 .

Accélération matérielle pour mbedTLS

mbedTLS définit plusieurs macros dans le fichier d'en-tête de configuration principal, mbedtls-config.h , pour permettre aux utilisateurs d'activer des implémentations alternatives d'AES, SHA1, SHA2 et d'autres modules, ainsi que des fonctions individuelles pour la cryptographie à courbe elliptique (ECC) sur GF (p) module. Voir Accélération matérielle mbedTLS pour plus d'informations.

OpenThread n'active pas ces macros, par conséquent, les algorithmes de cryptographie symétriques, les algorithmes de hachage et les fonctions ECC utilisent tous des implémentations logicielles par défaut. Ces implémentations nécessitent une mémoire et des ressources de calcul considérables. Pour des performances optimales et une meilleure expérience utilisateur, nous vous recommandons d'activer l'accélération matérielle au lieu du logiciel pour implémenter les opérations ci-dessus.

Pour activer l'accélération matérielle dans OpenThread, les fichiers d'en-tête de configuration mbedTLS suivants doivent être ajoutés aux indicateurs d'option de compilation dans le Makefile de l'exemple de plate-forme:

  • Configuration principale, qui définit toutes les macros nécessaires utilisées dans OpenThread: /openthread/third-party/mbedtls/mbedtls-config.h
  • Configuration spécifique à l'utilisateur, qui définit des implémentations alternatives de modules et de fonctions: /openthread/examples/platforms/ platform-name /crypto/ platform-name -mbedtls-config.h

Exemple:

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

Les macros commentées dans mbedtls-config.h ne sont pas obligatoires et peuvent être activées dans le fichier d'en-tête de configuration spécifique à l'utilisateur pour l'accélération matérielle.

Pour un exemple complet de configuration spécifique à l'utilisateur, consultez le efr32-mbedtls-config.h .

Module AES

OpenThread Security applique le cryptage AES CCM (Counter with CBC-MAC) pour crypter / décrypter les messages IEEE 802.15.4 ou MLE et valide le code d'intégration de message. L'accélération matérielle doit au moins prendre en charge le mode AES ECB (Electronic Codebook Book) de base pour l'appel fonctionnel de base AES CCM.

Pour utiliser une autre implémentation de module AES:

  1. Définissez la macro MBEDTLS_AES_ALT dans le fichier d'en-tête de configuration mbedTLS spécifique à l'utilisateur
  2. Indiquez le chemin du fichier aes_alt.h à l'aide de la variable MBEDTLS_CPPFLAGS

Module SHA256

OpenThread Security applique les algorithmes de hachage HMAC et SHA256 pour calculer la valeur de hachage pour la gestion de la clé principale et la génération PSKc conformément à la spécification de thread.

Pour utiliser une autre implémentation de module de base SHA256:

  1. Définissez la macro MBEDTLS_SHA256_ALT dans le fichier d'en-tête de configuration mbedTLS spécifique à l'utilisateur
  2. Indiquez le chemin du fichier sha256_alt.h à l'aide de la variable MBEDTLS_CPPFLAGS

Fonctions ECC

Étant donné que mbedTLS ne prend actuellement en charge que l'accélération matérielle pour certaines parties des fonctions ECC, plutôt que pour le module entier, vous pouvez choisir d'implémenter certaines fonctions définies dans <path-to-mbedtls> /library/ecp.c pour accélérer la multiplication des points ECC.

La courbe secp256r1 est utilisée dans l'algorithme d'échange de clés du projet ECJPAKE . Par conséquent, l'accélération matérielle devrait au moins prendre en charge le fonctionnement de la courte courbe de Weierstrass secp256r1. Voir Accélération matérielle SiLabs CRYPTO pour mbedTLS pour un exemple.