Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Implementa funciones avanzadas

Ver el código fuente en GitHub

Algunas funciones avanzadas son opcionales, según si son compatibles o no con la plataforma de hardware de destino.

Marco automático pendiente

El estándar IEEE 802.15.4 define dos tipos de métodos de transmisión de datos entre superior y secundario: la transmisión directa y la indirecta. Este último está diseñado principalmente para dispositivos finales somnolientos (SED) que se activan la mayor parte del tiempo, y se activa periódicamente para consultar al elemento superior en busca de datos en cola.

  • Transmisión directa: el elemento superior envía un marco de datos directamente al dispositivo final. Transmisión directa

  • Transmisión indirecta: El elemento superior retiene los datos hasta que lo solicite su dispositivo final previsto. Transmisión directa

En el caso indirecto, primero un dispositivo secundario debe consultar al elemento superior para determinar si hay datos disponibles. Para ello, el elemento secundario envía una solicitud de datos, que el elemento superior reconoce. Luego, el elemento superior determina si tiene datos para el dispositivo secundario. En ese caso, envía un paquete de datos al dispositivo secundario, que confirma la recepción de los datos.

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

Si la radio no admite la configuración dinámica del bit de Frame Pending, es posible que la radio envíe un stub a la API de coincidencia de direcciones de origen para mostrar OT_ERROR_NOT_IMPLEMENTED.

Escaneo/detección de energía con radio

La función de escaneo o detección de energía requiere que el chip de radio tome la muestra de energía en los canales seleccionados y muestre el valor de energía detectado en la capa superior.

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

Si el chip de selección admite el escaneo o la detección de energía, asegúrate de inhabilitar la lógica del escaneo de energía mediante una 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, de modo que los usuarios puedan habilitar implementaciones alternativas de AES, SHA1, SHA2 y otros módulos, así como funciones individuales para el módulo de criptografía de curva elíptica (ECC) mediante GF(p). Consulta Aceleración de hardware mbedTLS para obtener más información.

OpenThread no habilita esas macros, por lo cual, los algoritmos de criptografía simétrica, los algoritmos de hash y las funciones de ECC usan implementaciones de software de forma predeterminada. Estas implementaciones requieren una gran cantidad de memoria y recursos de procesamiento. Para obtener un rendimiento óptimo y una mejor experiencia del usuario, te recomendamos que habilites la aceleración de hardware en lugar de software a fin de implementar las operaciones anteriores.

Para habilitar la aceleración de hardware en OpenThread, se deben agregar los siguientes archivos de encabezado de configuración mbedTLS a las definiciones de compilación ot-config en los archivos CMake de la plataforma:

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

Ejemplo de nrf52811.cmake:

target_compile_definitions(ot-config INTERFACE
    "MBEDTLS_USER_CONFIG_FILE=\"nrf52811-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 ver una configuración completa específica del usuario, consulta el archivo mbedtls_config_autogen.h en ot-efr32.

Módulo AES

La seguridad de OpenThread aplica criptomonedas ACM CCM (contador con CBC-MAC) para encriptar o desencriptar los mensajes IEEE 802.15.4 o MLE, y valida el código de integración de mensajes. La aceleración de hardware debería al menos admitir el modo básico AES ECB (Libro de códigos electrónicos) para la llamada funcional básica AES CCM.

Para usar una implementación de módulo AES alternativo:

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

Módulo SHA256

OpenThread Security aplica algoritmos de hash HMAC y SHA256 para calcular el valor de hash de la administración de claves de red y la generación de PSKc según la Especificación de Thread.

Para usar una implementación alternativa del módulo SHA256 básico:

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

Funciones de ECC

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

Se usa la curva secp256r1 en el algoritmo de intercambio de claves del borrador ECJPAKE. Por lo tanto, la aceleración de hardware debería admitir al menos la operación de curva corta seri256r1. Consulta Aceleración de hardware CRYPTO de SiLabs para mbedTLS para ver un ejemplo.