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

Implementar funciones avanzadas

Ver fuente en GitHub

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 adormecidos (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 - principal envía una trama de datos directamente al dispositivo final Transmisión directa

  • Transmisión indirecta - matriz posea los datos hasta que se solicite por 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. A continuación, el padre 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 los soportes de radio configurar dinámicamente el marco Pendiente mordió en reconocimientos salientes a SED, los conductores deben implementar la fuente de coincidencia de dirección API 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 soporta dinámicamente estableciendo el marco Pendiente mordió, la radio podría apagar la fuente de coincidencia de dirección API 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 los soportes de chips de radio Scan Energy / detectar, asegúrese de desactivar la lógica de exploración de energía de software mediante el establecimiento de la macro OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0 .

Aceleración de hardware para mbedTLS

mbedTLS define varias macros en el archivo principal de configuración de cabecera, mbedtls-config.h , para permitir a los usuarios habilitar las 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. Ver la aceleración de hardware mbedTLS para 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 de forma predeterminada. 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 OpenThread, los siguientes archivos de cabecera de configuración mbedTLS deben añadirse a los ot-config definiciones de compilación de archivos CRealice de la plataforma:

  • Configuración principal, que define todas las macros necesario usado 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\""
)

Macros comentadas en mbedtls-config.h no son obligatorias, y se pueden habilitar en el archivo de cabecera de configuración específica del usuario para la aceleración de hardware.

Para una completa ejemplo de configuración específica del usuario, ver el mbedtls_config_autogen.h archivo en ot-efr32 .

Módulo AES

OpenThread Security aplica criptografía 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 electrónico de códigos) para la llamada funcional básica AES CCM.

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

  1. Definir el MBEDTLS_AES_ALT macro en el archivo de cabecera configuración mbedTLS de usuario específicos
  2. Indicar la ruta de la aes_alt.h archivo mediante el MBEDTLS_CPPFLAGS variables

Módulo SHA256

OpenThread Security aplica algoritmos hash HMAC y SHA256 para calcular el valor hash para la gestión de claves de red 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. Definir el MBEDTLS_SHA256_ALT macro en el archivo de cabecera configuración mbedTLS de usuario específicos
  2. Indicar la ruta de la sha256_alt.h archivo mediante el MBEDTLS_CPPFLAGS variables

Funciones ECC

Desde mbedTLS actualmente sólo es compatible con aceleración de hardware para partes de funciones ECC, en lugar de todo el módulo, puede elegir implementar algunas funciones definidas en path-to-mbedtls /library/ecp.c para acelerar la multiplicación punto de ECC.

Secp256r1 curva se utiliza en el algoritmo de intercambio de claves de la ECJPAKE proyecto. Por lo tanto, la aceleración de hardware debería al menos soportar la operación de curva de weierstrass corta secp256r1. Ver SiLabs CRYPTO aceleración de hardware para mbedTLS para un ejemplo.