Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial Internet of Things >> Tecnología de Internet de las cosas

Cómo proteger las comunicaciones UART en dispositivos IoT

Con bloques criptográficos integrados en MCU, se ha hecho posible para los desarrolladores para asegurar todos los canales de comunicación, incluidas las interfaces como UART que no brindan seguridad en sí mismas.

Con el número cada vez mayor de violaciones de datos y privacidad de alto perfil en los sistemas de Internet de las cosas (IoT), las empresas y los consumidores tienen una mayor conciencia de la necesidad de seguridad al comprar productos conectados. Ofrecer los mejores productos o servicios de su clase ya no es suficiente. Los dispositivos que no brinden la seguridad adecuada no podrán competir con aquellos que brindan seguridad de un extremo a otro.

Muchos protocolos implementan la seguridad dentro del estándar y son una parte integrada de cualquier controlador. Sin embargo, los dispositivos integrados que se conectan a través de un receptor-transmisor asíncrono universal (UART) no están protegidos. UART es una de las interfaces de comunicación digital más simples entre dispositivos. Es un protocolo de comunicación sin ACK que puede ser leído por cualquier dispositivo si se conoce la velocidad en baudios.

Para evitar que los datos se lean o inyecten en el sistema, el canal de comunicación debe estar protegido por los sistemas que envían y reciben los datos. Por lo tanto, incluso si un intruso obtiene acceso al canal de comunicación con la velocidad de transmisión correcta, el canal estará protegido.

Seguridad simétrica y asimétrica

Los canales de comunicación a menudo se protegen mediante algoritmos criptográficos. En términos generales, los algoritmos criptográficos se pueden clasificar en simétricos y asimétricos. Con algoritmos de clave simétrica, el remitente y el receptor comparten una única clave secreta. El remitente encripta el mensaje usando la clave y comparte el mensaje encriptado con el receptor. Luego, el receptor usa la misma clave para descifrar el mensaje.

La principal preocupación de seguridad con los algoritmos de clave simétrica es cómo intercambiar de forma segura la clave secreta entre el remitente y el receptor. Si la clave es capturada por otra entidad durante el intercambio de claves, esa entidad también puede descifrar los mensajes enviados por el remitente. Por lo tanto, es fundamental que la clave se comparta de forma segura solo con el remitente y el receptor en algoritmos de clave simétrica.

Para permitir el intercambio seguro de claves simétricas, se utilizan algoritmos de claves asimétricas. Los algoritmos asimétricos utilizan diferentes claves para los procesos de cifrado y descifrado. Aunque estas claves son diferentes, están relacionadas matemáticamente. La clave simétrica se puede intercambiar de forma segura cifrándola con una clave asimétrica y el receptor descifrándola utilizando la clave asimétrica relacionada. Una desventaja de los algoritmos asimétricos es que involucran cálculos matemáticos complejos y tienden a ser intensivos en computación.

Para obtener el nivel más alto de seguridad, el cifrado RSA se utiliza como algoritmo de clave asimétrica. Con RSA, una entidad comunicante tiene una clave pública y una clave privada. La clave pública, como su nombre indica, se comparte públicamente y está disponible para cualquier persona. Por el contrario, la clave privada está en manos de la entidad comunicante. Para enviar un mensaje a la entidad, el remitente encripta el mensaje usando la clave pública de la entidad. Este mensaje cifrado solo puede descifrarse mediante la clave privada. Dado que la clave privada está disponible solo para el receptor previsto, esto asegura que solo el receptor pueda descifrar el mensaje.

Cifrado de clave pública y privada

RSA utiliza cálculos exponenciales y la factorización prima de números muy grandes, lo que lo hace altamente seguro pero también intensivo en computación. Además, la implementación de RSA en tiempo real, para evitar la latencia en las comunicaciones, aumentaría el costo del sistema al requerir un motor de procesamiento de mayor rendimiento. Muchos sistemas integrados no requieren este nivel de seguridad. En su lugar, pueden utilizar un algoritmo de cifrado más sencillo como Advanced Encryption Standard (AES), que es más práctico y rentable porque requiere menos recursos de procesamiento.

AES es un algoritmo criptográfico simétrico, lo que significa que ambos lados del canal de comunicaciones comparten una clave secreta común. La limitación de AES como se mencionó anteriormente radica en compartir de forma segura la clave entre el remitente y el receptor UART sin exponerla a entidades externas. Para solucionar este problema, RSA se puede utilizar para cifrar la clave AES e intercambiarla de forma segura. Dado que la clave común solo debe compartirse una vez, el canal de comunicación puede soportar la complejidad y latencia de RSA. En otras palabras, la demora en procesar el algoritmo RSA afecta solo al intercambio de claves inicial, no a todos los mensajes.

El intercambio seguro de claves ocurre en varias etapas (Figura 1). Primero, el receptor UART genera un par de claves RSA y comparte su clave pública con el remitente. No importa si otra entidad ve la clave pública porque solo se usará para encriptar mensajes destinados al receptor UART. Luego, el remitente genera aleatoriamente una clave AES y la encripta usando la clave pública del receptor. El receptor descifra la clave AES usando la clave privada RSA.


Figura 1:Intercambio seguro de clave secreta AES utilizando claves públicas y privadas RSA. (Fuente:Infineon)

Dado que solo el receptor tiene acceso a la clave privada RSA, la clave AES cifrada solo puede ser descifrada por el receptor. Esto asegura que la clave AES sea conocida solo por el remitente y el receptor, y que cualquier intruso con acceso al canal de comunicaciones no pueda derivar la clave. Además, todos los mensajes posteriores entre el remitente y el receptor se cifran con la clave AES, lo que hace que estos mensajes sean inaccesibles para cualquier otra parte que no esté destinada a recibirlos. Esto también elimina la amenaza de ataques man-in-the-middle (MIM) que implican la modificación de mensajes después de que se han enviado pero antes de que se hayan recibido.

Firmware frente a hardware

La implementación de algoritmos de seguridad en dispositivos integrados que utilizan firmware plantea muchos desafíos de diseño. Los algoritmos criptográficos, por su naturaleza, tienden a ser intensivos en computación. También aumentan la huella de memoria, añaden retraso al procesamiento e introducen una complejidad sustancial en los sistemas. Como resultado, la implementación de la seguridad en el firmware consumirá ciclos de CPU y recursos de MCU sustanciales. Además, para cumplir con los requisitos de la aplicación en tiempo real, se requerirá una MCU de mayor rendimiento, lo que aumentará el costo del sistema.

Parte de la razón por la que se utilizan tantos recursos de MCU es porque las MCU son unidades de procesamiento de uso general. Por esta razón, muchas MCU integran hardware diseñado específicamente para algoritmos criptográficos. Con un motor criptográfico integrado, una MCU puede proporcionar cifrado y descifrado de datos en tiempo real en un espacio mucho más pequeño y a un costo menor en comparación con una MCU sin capacidades de procesamiento criptográfico basadas en hardware.

El MCU PSoC 6 de Infineon es un ejemplo de ello. Tiene un bloque criptográfico dedicado que proporciona aceleración de hardware de funciones criptográficas. El bloque criptográfico es flexible y se puede utilizar para admitir diferentes algoritmos criptográficos para garantizar que los datos estén protegidos. Esto permite a los desarrolladores introducir seguridad en los dispositivos de IoT integrados utilizando estándares de cifrado como AES, DES, TDES y RSA y comprobaciones de integridad como el algoritmo hash seguro ( SHA) y verificación de redundancia cíclica (CRC). La descarga de funciones criptográficas de la MCU de esta manera hace posible introducir seguridad de manera rentable en casi todas las aplicaciones integradas sin necesidad de emplear un procesador más potente.

Números aleatorios verdaderos

Sin embargo, asegurar un sistema integrado requiere algo más que cifrar las comunicaciones. Específicamente, la clave AES que genera el sistema debe ser aleatoria. Sin embargo, las MCU son deterministas, por lo que las claves generadas también serían deterministas, lo que permitiría a un pirata informático utilizar la "fuerza bruta" para recorrer las diferentes semillas aleatorias posibles y derivar potencialmente la clave AES. Por lo tanto, el firmware necesita una forma de generar números aleatorios verdaderos para garantizar la aleatoriedad de la clave AES, por lo que no puede ser forzada.

Para hacer esto, el bloque criptográfico debe incluir un generador de números aleatorios verdaderos (TRNG). En el bloque criptográfico PSoC 6, por ejemplo, el TRNG tiene seis osciladores de anillo que proporcionan fuentes de ruido físico. Los osciladores de anillo contienen inversores sensibles a la temperatura que introducen jitter en la señal del oscilador de anillo. Esta señal le da a la MCU acceso a una verdadera fuente de números aleatorios para garantizar la aleatoriedad de las claves AES que genera.

Por ejemplo, para generar una clave de 16 bytes, se genera un número aleatorio 16 veces y se agrega a los números anteriores. Esto crea la posibilidad de 2 ^ 128 teclas. Es más que suficiente para evitar que la clave "AES" sea forzada o adivinada.

Algunos criptoataques se centran en analizar las comunicaciones capturadas. Con suficientes recursos, eventualmente se puede romper cualquier clave. Para abordar esta posibilidad y aumentar la seguridad general del canal de comunicaciones, la clave AES se genera en cada reinicio. Se trata de una medida sencilla pero eficaz para aumentar la seguridad de los sistemas integrados. En resumen, incluso si un intruso identifica una clave, es probable que la clave ya no esté en uso cuando pueda ser explotada.

Seguridad con confianza

En este punto, podría ser tentador considerar segura la interfaz UART. Sin embargo, UART es un protocolo de comunicación sin ACK. Esto significa que el protocolo no tiene un mecanismo para garantizar que un mensaje recibido por el receptor esté a) completo y b) no esté dañado.

Se requiere una etapa de seguridad final para confirmar la integridad del mensaje. Un método eficaz para lograr esto es utilizar el algoritmo SHA para hacer un hash del mensaje. Ejecutar un mensaje a través de una función hash criptográfica como SHA produce un hash, una salida de longitud fija. Debido a que las funciones hash son funciones unidireccionales irreversibles, la única forma de identificar el mensaje que generó un hash particular es intentar una búsqueda de fuerza bruta de todas las entradas posibles.


Figura 2:Una función hash garantiza la integridad de las comunicaciones durante los intercambios de claves seguros y las transferencias de mensajes. (Fuente:Infineon)

Antes de enviar un mensaje, el hash de todo el mensaje se agrega al mensaje (Figura 2). Luego, el mensaje más el hash se encripta con la clave AES. De esta forma, el hash puede servir como verificación de integridad. El receptor, después del descifrado, calcula el hash del mensaje que descifró. El receptor luego compara el hash recibido y el hash calculado. Si son iguales, el mensaje no se ha modificado. Sin embargo, si los valores hash no coinciden, esto indica que la integridad del mensaje se ha visto afectada. Esto podría ocurrir porque un pirata informático intentó modificar el mensaje o se produjo un error durante la transmisión. En cualquier caso, la comunicación ha fallado.

Tenga en cuenta que el canal de comunicación se puede fortalecer aún más para la autenticidad firmando el mensaje con la clave privada del remitente. El mensaje firmado se puede verificar utilizando la clave pública del remitente para verificar que solo el remitente pudo haber enviado el mensaje. Dicho de otra manera, ninguna otra parte puede imitar ser el remitente ya que no tiene la clave privada del remitente, garantizando así la autenticidad de los mensajes. Para obtener más ideas, consulte Ejemplos de códigos comunitarios, que incluyen muchos proyectos de otros ingenieros.

La implementación de la seguridad se ha convertido en una consideración necesaria en el diseño de sistemas de IoT integrados. Es fundamental que cada dispositivo conectado sea seguro y proteja los datos del usuario para que no se vean comprometidos. Con los bloques criptográficos integrados en las MCU, los desarrolladores pueden proteger todos los canales de comunicación, incluidas las interfaces como UART que no brindan seguridad en sí mismas.

—Harigovind A y Rakshith M B son ingenieros de aplicaciones senior en Infineon Technologies.

>> Este artículo se publicó originalmente en nuestro sitio hermano, EDN .


Tecnología de Internet de las cosas

  1. Cómo 5G acelerará el IoT industrial
  2. Cómo IoT conecta los lugares de trabajo
  3. IoT proporciona beneficios en todo el mundo
  4. ¿Cómo está configurando IoT la movilidad empresarial?
  5. 7 consejos esenciales para mantener su red de IoT en casa activa y segura
  6. Hacer que IoT pague:cómo construir un modelo de negocio de IoT rentable
  7. Proporcionar un futuro seguro para miles de millones de dispositivos IoT a través de la resiliencia cibernética
  8. ¿Qué tan peligrosa es la amenaza de ataques en cadena de muerte en IoT?
  9. ¿Cómo está revolucionando IoT la seguridad en el lugar de trabajo?
  10. Cómo IoT está mejorando la experiencia del cliente
  11. 4 aplicaciones clave de IoT en la fabricación