Google is committed to advancing racial equity for Black communities. See how.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Implementar funciones avanzadas

Algunas funciones avanzadas son opcionales, dependiendo de si son compatibles o no en la plataforma de hardware de destino.

Trama automática pendiente

IEEE 802.15.4 define dos tipos de métodos de transmisión de datos entre padres e hijos: transmisión directa y transmisión indirecta. Este último está diseñado principalmente para dispositivos finales con sueño (SED) que duermen la mayor parte del tiempo y se despiertan periódicamente para sondear al padre en busca de datos en cola.

  • Transmisión directa: el padre envía una trama de datos directamente al dispositivo final Transmisión directa

  • Transmisión indirecta: el padre retiene los datos hasta que los solicita su dispositivo final previsto Transmisión directa

En el caso indirecto, un dispositivo final secundario debe primero sondear al principal para determinar si hay datos disponibles para él. Para hacer esto, el niño envía una solicitud de datos, que el padre reconoce. El padre luego determina si tiene datos para el dispositivo hijo; si es así, envía un paquete de datos al dispositivo secundario, que reconoce la recepción de los datos.

Si la radio admite la configuración dinámica del bit Frame Pending en los reconocimientos salientes de los SED, los controladores deben implementar la API de coincidencia de direcciones de origen para habilitar esta capacidad. OpenThread usa esta API para decirle a la radio para qué SED establecer el bit Frame Pending.

Si la radio no admite la configuración dinámica del bit Frame Pending, es posible que la radio OT_ERROR_NOT_IMPLEMENTED API de coincidencia de direcciones de origen para devolver OT_ERROR_NOT_IMPLEMENTED .

Energy Scan / Detect con radio

La función Energy Scan / Detect requiere que el chip de radio muestree la energía que se presenta en los canales seleccionados y devuelva el valor de energía detectado a la capa superior.

Si esta función no está implementada, la capa MAC IEEE 802.15.4 envía / recibe un paquete de solicitud / respuesta de baliza para evaluar el valor de energía actual en el canal.

Si el chip de radio es compatible con Energy Scan / Detect, asegúrese de desactivar la lógica de exploración de energía del software configurando la macro OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0 .

Aceleración de hardware para mbedTLS

mbedTLS define varias macros en el archivo de encabezado de configuración principal, mbedtls-config.h , para permitir a los usuarios habilitar implementaciones alternativas de AES, SHA1, SHA2 y otros módulos, así como funciones individuales para la criptografía de curva elíptica (ECC) sobre GF (p) módulo. Consulte Aceleración de hardware mbedTLS para obtener más información.

OpenThread no habilita esas macros, por lo tanto, los algoritmos criptográficos simétricos, los algoritmos hash y las funciones ECC utilizan implementaciones de software por defecto. Estas implementaciones requieren una memoria considerable y recursos computacionales. Para un rendimiento óptimo y una mejor experiencia de usuario, recomendamos habilitar la aceleración de hardware en lugar del software para implementar las operaciones anteriores.

Para habilitar la aceleración de hardware dentro de OpenThread, los siguientes archivos de encabezado de configuración mbedTLS deben agregarse a los indicadores de opciones de compilación en el Makefile del ejemplo de plataforma:

  • Configuración principal, que define todas las macros necesarias utilizadas en OpenThread: /openthread/third-party/mbedtls/mbedtls-config.h
  • Configuración específica del usuario, que define implementaciones alternativas de módulos y funciones: /openthread/examples/platforms/ platform-name /crypto/ platform-name -mbedtls-config.h

Ejemplo:

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

Las macros comentadas en mbedtls-config.h no son obligatorias y se pueden habilitar en el archivo de encabezado de configuración específico del usuario para la aceleración de hardware.

Para obtener un ejemplo completo de configuración específica del usuario, consulte el efr32-mbedtls-config.h .

Módulo AES

OpenThread Security aplica cifrado AES CCM (Contador con CBC-MAC) para cifrar / descifrar los mensajes IEEE 802.15.4 o MLE y valida el código de integración de mensajes. La aceleración de hardware debe admitir al menos el modo básico AES ECB (Libro de códigos electrónico) para la llamada funcional básica AES CCM.

Para utilizar una implementación alternativa del módulo AES:

  1. Defina la macro MBEDTLS_AES_ALT en el archivo de encabezado de configuración mbedTLS específico del usuario
  2. Indique la ruta del archivo aes_alt.h usando la variable MBEDTLS_CPPFLAGS

Módulo SHA256

OpenThread Security aplica algoritmos hash HMAC y SHA256 para calcular el valor hash para la gestión de claves maestras y la generación de PSKc de acuerdo con la Especificación de subprocesos.

Para utilizar una implementación de módulo SHA256 básica alternativa:

  1. Defina la macro MBEDTLS_SHA256_ALT en el archivo de encabezado de configuración mbedTLS específico del usuario
  2. Indique la ruta del archivo sha256_alt.h usando la variable MBEDTLS_CPPFLAGS

Funciones ECC

Dado que mbedTLS actualmente solo admite aceleración de hardware para partes de funciones ECC, en lugar de todo el módulo, puede optar por implementar algunas funciones definidas en <path-to-mbedtls> /library/ecp.c para acelerar la multiplicación de puntos ECC.

La curva secp256r1 se utiliza en el algoritmo de intercambio de claves del borrador ECJPAKE . Por lo tanto, la aceleración de hardware debe admitir al menos la operación de curva de weierstrass corta secp256r1. Consulte Aceleración de hardware SiLabs CRYPTO para mbedTLS para ver un ejemplo.