Please enter CoinGecko Free Api Key to get this plugin works.

Bl0ckch41nnewsHackear una planta de energía virtual con RSA de 512 bits

11


Cuando Ryan Castellucci adquirió recientemente 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 monitorear y controlar el flujo de electricidad que se genera. En cambio,
ganó 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
adquirió este notable control después de obtener acceso a la cuenta
administrativa de GivEnergy, el proveedor de gestión de energía con sede en el
Reino Unido que suministró los sistemas. Además del control sobre
aproximadamente 60.000 sistemas instalados, la cuenta de administrador, que
equivale al control total de los productos conectados a la nube de la empresa,
también le habría permitido 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 era configurar Home Assistant e integrarlo con él, pero mientras
tanto decidí dejarlo hablar con la nube»
,
escribió Castellucci el jueves, refiriéndose al equipo instalado recientemente.
«Configuré una carga programada y luego comencé a experimentar con la API.
La noche siguiente, tenía el control de una
central eléctrica virtual
compuesta por decenas de miles de baterías conectadas a la red»
.

RSA de 512 bits después de todos estos años


La causa de la omisión de autenticación que descubrió Castellucci fue una
API que estaba protegida por una clave criptográfica RSA de sólo 512
bits.

La clave firma tokens de autenticación y es el equivalente aproximado de una
«clave maestra». El tamaño de la clave permitió a Castellucci factorizar la
clave privada que sustenta toda la API. La factorización requirió U$S 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 se produjo en 1999
por un equipo internacional de más de una docena de investigadores. La hazaña
requirió siete meses para llevar a cabo una supercomputadora y cientos de
otras computadoras. En 2009, los aficionados dedicaron unas
tres semanas a factorizar 13 claves de 512 bits
para proteger el firmware de las calculadoras de Texas Instruments contra
copias. En 2015,
los investigadores demostraron «factorización como servicio», un método que utilizaba la computación en la nube de Amazon, costaba 75
dólares y tardaba unas cuatro horas. A medida que la potencia de procesamiento
ha aumentado, los recursos necesarios para factorizar claves son cada vez
menores.

Es tentador culpar a los ingenieros de GivEnergy por fijar la seguridad de
su infraestructura en una clave que es fácil de romper. Castellucci, sin
embargo, dijo que es mejor asignar la responsabilidad a los creadores de
bibliotecas de códigos en las que confían los desarrolladores para
implementar procesos criptográficos complejos.

«Esperar que los desarrolladores sepan que RSA de 512 bits es inseguro
claramente no funciona»
, escribió el investigador de seguridad.
«No son criptógrafos. Este no es su trabajo. El error no fue que alguien
usara RSA de 512 bits. Fue que una biblioteca en la que confiaban se lo
permitió»
.

Castellucci señaló que OpenSSL, la biblioteca de códigos criptográficos más
utilizada, todavía ofrece la opción de utilizar claves de 512 bits. También lo
hace la biblioteca criptográfica Go. Casualmente, la biblioteca de
criptografía de Python eliminó la opción hace sólo unas semanas (el
compromiso
para el cambio se realizó en enero).

En un correo electrónico, un representante de GivEnergy reforzó la evaluación
de Castellucci y escribió:
«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
experiencia limitada. Supusieron en ese momento que, dado que este cifrado
estaba disponible en la biblioteca, era seguro utilizarlo. Este enfoque se
aplicó a lo largo de los años y esta parte del código base no cambió
significativamente desde la implementación (por lo que no pasó por la
revisión del equipo más experimentado que tenemos ahora)».

El factor clave

El cifrado RSA se basa en números extremadamente grandes que son producto de
dos números primos. El número grande, conocido como módulo, normalmente se
denota como ‘n’, mientras que los números primos se denotan como ‘p’ y ‘q’. Si
bien es fácil multiplicar los dos números primos, es casi imposible para
alguien con sólo el módulo de una clave de longitud suficiente identificar los
dos números primos subyacentes, un proceso conocido como factorización. La
dificultad de resolver este problema permite la creación de dos claves. Una es
una clave pública que cualquiera puede tener y la otra es una clave privada
que debe mantenerse en absoluto secreto. Factorizar un par de claves rompe
completamente su seguridad porque revela la parte privada.

La dificultad de resolver este problema es directamente proporcional al número
de posibles primos que deben probarse. Cuantas más posibilidades haya, más
difícil será encontrar el par adecuado. Esta entropía, a su vez, es
proporcional a la longitud de bits del módulo. En 2019, un equipo de
investigadores factorizó una clave RSA de 795 bits, lo que la convirtió en el
tamaño de clave más grande roto hasta ese momento. Un año después, los
investigadores
factorizaron una clave RSA de 829 bits.
Hasta la fecha, no hay casos confirmados de factorización de RSA de 1024
bits, pero eso no significa que no se pueda hacer.

«La única barrera para [factorizar RSA de 1024 bits] en público es algún
esfuerzo de ingeniería y financiación, y encontrar una organización grande
dispuesta a aportar suficiente potencia informática»
, dijo
Nadia Heninger, profesora especializada en criptografía de la Universidad de California en
San Diego.
«Se podría haber hecho hace años si la gente hubiera querido: no existe
ninguna barrera técnica y, sin duda, varias grandes empresas tienen los
recursos informáticos».

Anticipándose a la inevitable caída del RSA de 1024 bits, el Instituto
Nacional de Estándares y Tecnología de EE.UU. dejó de permitir su uso en
2013 y dejará de permitir el uso de RSA de 2048 bits en 2031.
Microsoft anunció a principios de este año la obsolescencia del RSA de
1024 bits

en Windows.

La tarea de Castellucci se hizo más difícil porque no tenían acceso a la clave
pública que protegía la cuenta de administrador. En su lugar, solo tenían un
JWT (abreviatura de JSON Web Token) que estaba firmado por la clave.
Castellucci explicó cómo excedieron la limitación:

RSA necesita tres valores para funcionar, el módulo ‘n’, el exponente privado
‘d’ y el exponente público ‘e’. Una firma RSA se calcula como
s= md mod n: el mensaje ‘m’ se eleva a la potencia de
‘d’ módulo ‘n’. Se valida comprobando que
se mod n ≡ m. Con los factores primos de ‘n’, es
trivial calcular ‘d’, y para una clave de 512 bits es factible encontrar los
factores primos, pero no tenía ‘n’ ni ‘e’. Por convención, ‘e’ es casi siempre
es ‘65537’, pero Castellucci no tenía idea de qué era ‘n’. De todos modos,
luego de utilizar algunas fórmulas y ecuaciones matemáticas, pudo continuar al
análisis.

Este no es un RSA de libro de texto

Las matemáticas anteriores solo cubren el
«Libro de texto RSA»
que opera con números sencillos, lo que presenta varios problemas en la
práctica. Sólo puede operar con números menores que el módulo de la llave. Los
números tampoco pueden ser demasiado pequeños, de lo contrario son posibles
varios ataques. Para solucionar este problema, el mensaje se codifica y se
rellena utilizando la
codificación PKCS #1 v1.5
antes de firmarlo. Para esto existe la herramienta
JWT-Key-Recovery, que rápidamente proporciona el módulo.

Rompiendo la llave

El módulo se genera seleccionando números primos grandes, normalmente
denominados ‘p’ y ‘q’, y multiplicándolos (se puede ver en la publicación,
RSA artesanal). El algoritmo conocido más eficiente para factorizar el módulo en números
primos se llama
tamiz de campo numérico general (GNFS). En base a
algunas instrucciones, el investigador alquiló unos cientos de núcleos de CPU en la nube para
hacerlo más rápido y, unas horas más tarde y una factura de 70 dólares, tenía
los dos números primos que necesitaba.

Una vez en posesión de los dos números primos, el investigador utilizó una
herramienta personalizada
para generar la clave privada y luego firmó el JWT proporcionado con una
cuenta de demostración que estaban usando. Con algunos pasos adicionales,
Castellucci había transformado el token para brindar el mismo acceso que
tenían los administradores dentro de GivEnergy.

Con base en la numeración secuencial de cada cuenta, Castellucci estimó que la
cuenta tenía el control de alrededor de 60.000 sistemas instalados. Suponiendo
que cada sistema pueda cargar o descargar de 3 a 4 kW por inversor, eso
equivale aproximadamente a 200 MW de electricidad.

Castellucci elogió a GivEnergy por tomarse en serio su informe y solucionarlo
menos de un día después de recibirlo. El investigador confirmó que ya no era
posible factorizar la clave API.
GivEnergy reveló aquí
su uso de la clave débil. Un análisis de los registros del sistema indicó que
la debilidad nunca había sido explotada maliciosamente, afirmó la compañía.

En una entrevista, Castellucci volvió al problema de las bibliotecas de
códigos obsoletas que aún no han eliminado el soporte para claves débiles y
señaló el daño potencialmente catastrófico que puede resultar años después.

«El problema de GivEnergy que encontré es como si alguien pisa una vieja
mina terrestre»
, dijo.

Fuente: ArsTechnica



Source link

Los comentarios están cerrados.