Mucho se ha hablado últimamente de los ataques en IoT, pero muy poco de cómo defenderse. Así pues, me puse a investigar un poco sobre las medidas de las que disponemos los Makers a la hora de incrementar la seguridad en nuestros dispositivos conectados a Internet.
A estas alturas de la partida todos sabemos que Arduino se ha impuesto como la plataforma de hardware libre por excelencia y navegando un poco por su web oficial puede verse que hace relativamente poco tiempo han lanzado al mercado una nueva placa denominada MKR1000, entre cuyas especificaciones técnicas me llamó especialmente la atención un punto que decía ECC508 CryptoAuthentication.
Pues bien, si indagamos un poco más descubrimos que Arduino ha integrado el chip ATECC508A de Atmel, el cual nos dota con las bondades del algoritmo de Curva Elíptica Diffie–Hellman en nuestros dispositivos IoT. Es un buen principio, pero… ¿qué más tiene Atmel preparado para la seguridad? Además del cifrado asimétrico cubierto por la familia de dispositivos basados en ECC, encontramos los dispositivos basados en SHA y en AES. Es cuestión de elegir la familia que mejor se adapte a las necesidades de nuestro proyecto.
Vamos a estudiar un poco que características tiene cada una de las familias.
Dispositivos ECC
El algoritmo de Diffie-Hellman permite acordar una clave secreta entre dos máquinas, a través de un canal inseguro y enviando únicamente dos mensajes. La clave secreta resultante no puede ser descubierta por un atacante, aunque éste obtenga los dos mensajes enviados por el protocolo. La principal aplicación de este protocolo es acordar una clave simétrica con la que posteriormente cifrar las comunicaciones entre dos máquinas. Para corregir la vulnerabilidad MitM del protocolo, éste debe ser utilizado conjuntamente con algún sistema que autentique los mensajes. [Referencia: Javier Campos]
Por esta razón, Atmel ha incluido en el chip el motor hardware SHA/HMAC para que estos mensajes estén firmados digitalmente. Estas son algunos de los puntos destacables del ECC508:
- Almacenamiento y autenticación de clave optimizados.
- Firma y verificación con ECDSA.
- Soporta certificados formato X.509.
- Motor de Hardware SHA/HMAC de 256-bit.
- ID único garantizado de 72-bit.
- Interfaces I2C y de un solo hilo.
- EEPROM de 10.5-kbit para claves secretas y privadas.
Dispositivos SHA
Por otro lado, si sólo queremos autenticar los mensajes para que un tercero no pueda hacerse pasar por nosotros, pero no tenemos especial interés en cifrarlos (no nos importa que un atacante capturando el trafico sea capaz de leerlos), serían suficientes las características de este módulo para llevarlo a cabo. Que, entre otras cosas, nos permite realizar las siguientes funcionalidades:
- Protección anti-clonado.
- Validación de arranque seguro.
- Control de acceso para redes y dispositivos.
- Tiene la capacidad de generar números aleatorios. (Lo cual es utilizado para lanzar desafíos en muchos protocolos)
Dispositivos AES
Si nos encontramos en un proyecto dentro del cual podamos distribuir las claves de forma segura, bien sea porque hemos tenido acceso físico a los dispositivos que van a transmitirse información o porque hayamos utilizado el cifrado asimétrico previamente para distribuir la clave, el módulo Atmel de cifrado simétrico es nuestro aliado.
Es bien sabido que el cifrado simétrico es mucho más eficiente que el asimétrico, y en el mundo IoT cualquier potencia que podamos ahorrarle al procesador será bienvenida.
- Utiliza una clave de 128 bits en modo CCM tanto para cifrar como para descifrar.
- Es un cifrado seguro y rápido.
Si a alguien le parece insuficiente utilizar sólo una medida de seguridad para su proyecto, o quiere evitar el cableado de los chips, Sparkfun se encargó de desarrollar una placa específica de seguridad para varios microcontroladores en la que aglutinaba todos los circuitos integrados descritos anteriormente y más.
Cabe destacar que integra un módulo RTC (Real Time Clock) que puede ser utilizado para evitar ataques de replay, que como se describe en la Wikipedia; “es una forma de ataque de red, en el cual una transmisión de datos válida es maliciosa o fraudulentamente repetida. Es llevada a cabo por el autor o por un adversario que intercepta la información y la retransmite, posiblemente como parte de un ataque enmascarado”.
Ahora que tenemos claro que hardware tenemos a nuestro alcance en el mercado, es momento de investigar que librerías existentes nos permiten utilizar de forma sencilla todas las características que nos ofrecen los circuitos de Atmel.
Para los que prefieren comprar sus dispositivos ya diseñados y listos para utilizar, una posible medida de seguridad (aunque realmente compleja), sería cambiar el usuario y la password por defecto… (dejemos de alimentar a la botnet Mirai).
Referencias:
https://www.arduino.cc/en/Main/ArduinoMKR1000
https://learn.sparkfun.com/tutorials/crypto-shield-hookup-guide?_ga=1.11916276.1930350317.1478807030
http://www.atmel.com/products/security-ics/cryptoauthentication/
Muy interesante, siempre está bien que implementen más medidas de seguridad en los dispositivos que utilizamos, ya sea el móvil o la misma placa de Arduino. Un saludo.