
La clave RSA de 512 bits en el sistema de energía doméstica permite controlar una “central eléctrica virtual”


Cuando Ryan Castellucci adquirió hace poco paneles solares y un sistema de almacenamiento de baterías para su casa en las afueras de Londres, se sintió atraído por la posibilidad de utilizar un panel de control de código abierto para supervisar y controlar el flujo de electricidad que se genera. En cambio, obtuvo mucho, mucho más: unos 200 megavatios de capacidad programable para cargar o descargar a la red a voluntad. Esa es energía suficiente para abastecer a aproximadamente 40.000 hogares.
Castellucci, cuyos pronombres son “ellos”/”ellos”, adquirió este notable control después de obtener acceso a la cuenta administrativa de GivEnergy, el proveedor de gestión energética con sede en el Reino Unido que suministraba los sistemas. Además del control sobre aproximadamente 60.000 sistemas instalados, la cuenta de administrador (que equivale al control raíz de los productos conectados a la nube de la empresa) también les permitió enumerar nombres, direcciones de correo electrónico, nombres de usuario, números de teléfono y direcciones de todos los demás clientes de GivEnergy (algo que el investigador en realidad no hizo).
“Mi plan es crear Asistente de hogar e integrarlo con eso, pero mientras tanto, decidí dejarlo hablar con la nube”, Castellucci escribió el juevesrefiriéndose al equipo recientemente instalado. “Configuré una carga programada y luego comencé a experimentar con la API. La noche siguiente, tenía el control de un Planta de energía virtual “compuesto por decenas de miles de baterías conectadas a la red eléctrica”.
Todavía roto después de todos estos años.
La causa de la omisión de autenticación que descubrió Castellucci fue una interfaz de programación que estaba protegida por una clave criptográfica RSA de solo 512 bits. La clave firma tokens de autenticación y es el equivalente aproximado de una clave maestra. El tamaño de los bits le permitió a Castellucci factorizar la clave privada que sustenta toda la API. La factorización requirió $70 en costos de computación en la nube y menos de 24 horas. GivEnergy introdujo una solución dentro de las 24 horas posteriores a que Castellucci revelara en privado la debilidad.
El primer caso conocido públicamente de factorización de RSA de 512 bits Llegó en 1999 Por un equipo internacional de más de una docena de investigadores. La hazaña requirió siete meses de una supercomputadora y de cientos de otras computadoras. En 2009, los aficionados tardaron unas tres semanas en realizarla. Factor 13 claves de 512 bits
Resulta tentador culpar a los ingenieros de GivEnergy por atribuir la seguridad de su infraestructura a una clave que es fácil de descifrar. Sin embargo, Castellucci dijo que es mejor asignar la responsabilidad a los creadores de las bibliotecas de códigos en las que se basan los desarrolladores para implementar procesos criptográficos complejos.
“Esperar que los desarrolladores sepan que el RSA de 512 bits es inseguro claramente no funciona”, escribió el investigador de seguridad. “No son criptógrafos. Ese no es su trabajo. El error no fue que alguien usara el RSA de 512 bits. Fue que una biblioteca en la que confiaban Déjalos.”
Castellucci señaló que OpenSSL, la biblioteca de códigos criptográficos más utilizada, todavía ofrece la opción de usar claves de 512 bits. Lo mismo ocurre con la biblioteca de criptografía Go. Casualmente, la biblioteca de criptografía Python eliminó la opción hace solo unas semanas (la comprometerse (porque el cambio se realizó en enero).
En un correo electrónico, un representante de GivEnergy reforzó la evaluación de Castellucci, escribiendo:
En este caso, el enfoque de cifrado problemático se adoptó a través de una biblioteca de terceros hace muchos años, cuando éramos una pequeña empresa emergente con solo dos desarrolladores de software bastante jóvenes y una experiencia limitada. Su suposición en ese momento era que, dado que este cifrado estaba disponible dentro de la biblioteca, era seguro de usar. Este enfoque se transmitió a lo largo de los años intermedios y esta parte del código base no se modificó significativamente desde la implementación (por lo que no había pasado por la revisión del equipo más experimentado que tenemos ahora).