Serie BLE, Parte 3: Una comparación rápida entre los backends de bibliotecas criptográficas

TL; DR

En la publicación anterior «Una mirada más cercana al emparejamiento BLE», exploramos las diferentes fases del emparejamiento con el modo de emparejamiento LE Secure Connection .
Se recuerda a los lectores que LE Secure Connection es la otra opción para configurar el modo de emparejamiento para el protocolo BLE, se introdujo en la versión 4.2 de Bluetooth para mejorar las funciones de seguridad. .

Las actualizaciones más significativas de la versión 4.1 son el uso del algoritmo Elliptic Curve Diffie-Hellman, uno de los algoritmos aprobados por FIPS, y el soporte de un nuevo modelo de asociación llamado Comparación numérica.

Esta publicación se centrará en cada backends de biblioteca de criptografía y la API común proporcionada. Además, probaremos la efectividad de cada uno para mejorar la capacidad de realizar la implementación correcta para proyectos BLE IoT.

Configuración del entorno de prueba

Todos los desarrollos se han realizado en una plataforma de kit de desarrollo nórdico nRF52:

La implementación de la biblioteca criptográfica

¿Por dónde empezar?

Habilite el módulo de biblioteca de criptografía en el archivo de encabezado & quot; sdk_config.h & quot; :

La biblioteca criptográfica ofrece dos tipos de uso del contexto criptográfico:

La API común ofrece dos backends para implementar LE Secure Connections con criptografía de curva elíptica:

El backend acelerado por hardware utiliza hardware de criptografía para realizar operaciones criptográficas. El hardware CryptoCell requerido está disponible en el SoC nRF52840, pero no en el SoC nRF52832. Consulte la Especificación de producto nRF52840 para obtener información detallada sobre CryptoCell.

micro-ecc es una biblioteca de código abierto que realiza operaciones criptográficas. Está optimizado para programas de tamaño pequeño mientras mantiene una alta velocidad de procesamiento. El backend micro-ecc es compatible con todos los dispositivos actuales de la serie nRF5.

Seleccionar el mejor backend depende de los casos de uso del proyecto y los criterios de recursos, para eso necesitamos habilitar algún módulo del archivo de encabezado de configuración:

Caso CC310 :

Caso MICRO-ECC :

Enumeración de archivos de origen


Los archivos de fuentes de la biblioteca « m icro-ecc» pueden manejar:

Los archivos de fuentes de la biblioteca « c c310» pueden manejar:

¿Qué pasa con una versión diferente de SDK?

Advertencia: cada versión del SDK puede tener diferentes módulos, en otras palabras, el nombre y la funcionalidad de los módulos en el archivo de encabezado de configuración del SDK « sdk_config.h »Se puede cambiar de la versión SDK a otra.

CC310 frente a MICRO-ECC

¿Qué dice la documentación oficial nórdica sobre los backends?

El backend acelerado por hardware es más rápido, consume menos energía y ofrece más funciones. El uso del backend acelerado por hardware también reduce el tamaño de la aplicación. Sin embargo, este backend requiere soporte de hardware y, por lo tanto, solo está disponible en el SoC nRF52840.

Comparaciones clave

Para comparar los dos backends, implementaremos una aplicación Peripheral . firmware que admita Passkey como método de emparejamiento para LE Secure Connections (solo dispositivos 4.2); Modo de seguridad LE: 1 y nivel: 4;

¿Qué pienso sobre el rendimiento del tiempo de ejecución?

La creación de perfiles de código y la ejecución del tiempo de medición de cada backend de biblioteca de criptografía deben habilitar el módulo RTC (contador en tiempo real).
El módulo RTC utiliza una fuente de baja frecuencia, esto implica que el firmware consumirá menos energía y menos resolución.

El punto aquí es medir el tiempo transcurrido para completar las tareas que se enumeran a continuación:

<×MICRO-ECC


Después de varias pruebas simultáneas, ambos valores indican:

<×CC310


Después de varias pruebas simultáneas, ambos valores indican:

Contrariamente a lo que se dijo en la declaración de la documentación nórdica, el backend de software « micro-ecc » es más rápido que el backend acelerado por hardware « cc310 ».

¿Qué pienso sobre el consumo de energía?

El consumo de energía es un parámetro importante que influye en el promedio de duración de la batería.

Para poder estimar la diferencia de consumo de energía entre los dos backends de la biblioteca de criptografía, mediremos el consumo de corriente promedio a lo largo del tiempo mediante la placa nRF52840. Como la potencia es solo el resultado de la operación de multiplicación entre la tensión y la corriente. Con un valor fijo de voltaje, la variación del consumo de corriente puede reflejar proporcionalmente el consumo de energía.

Medición de corriente nRF52840 con micro-ecc

Utilizando un amperímetro para medir la corriente promedio durante los eventos de publicidad y conexión, los valores obtenidos varían entre 0.6mA y 1.7mA

Medición de corriente nRF52840 con cc310

Utilizando un amperímetro para medir la corriente promedio durante los eventos de publicidad y conexión, los valores obtenidos varían entre 6.8mA y 7.7mA .

Al contrario de lo que se dijo en la declaración de la documentación nórdica, el software backend « micro-ecc » c consume menos energía que el backend acelerado por hardware « cc310 ».

¿Qué pienso sobre la portabilidad y la funcionalidad?


La diferencia entre los dos valores es 58 592 bytes

Y al contrario de lo que se dijo en el comunicado de la documentación nórdica, el software backend « micro-ecc » disminuye el tamaño de la aplicación (firmware) en comparación con el backend acelerado por hardware « cc310 ».

¿Por qué es importante?

Con un producto de IoT real, la portabilidad, la funcionalidad, la velocidad y la precisión del objeto de IoT y la duración de la batería son los factores que importan para una mejor experiencia de usuario. Sin embargo, la implementación de la seguridad puede afectar el rendimiento con respecto a estos factores.