Mostrando entradas con la etiqueta RSA. Mostrar todas las entradas
Mostrando entradas con la etiqueta RSA. Mostrar todas las entradas

lunes, agosto 18, 2025

La Gran Búsqueda de Números Primos de Mersenne en Internet para superar el mayor Número Primo conocido hasta la fecha

Si hace tres días me dice que os iba a estar hablado de esto no me lo hubiera creído, pero me escribieron a mi buzón de MyPublicInbox con una consulta sobre un trabajo de investigación, y una cosa me llevó a otra, y acabé por leer de todo esto un ratito, así que os he hecho este pequeño artículo que seguro que a más de uno os sucede como a mí, que acabáis descubriendo alguna curiosidad que, quién sabe, lo mismo os permite ganar un quesito algún día. 
Por supuesto, el trabajo de investigación no es nada de esto, pero sí que necesitaba entender previamente todo esto. Os lo cuento en un artículo cortito.

Todos sabéis de la importancia de los Números Primos para muchas cosas, por su característica de que son divisibles sólo por 1 y por sí mismos. Una de las áreas donde más impacto tienen es en el mundo de la Criptografía Moderna de hoy en día, donde el cifrado con claves RSA se basa en tener dos números primos p y q, que multiplicados dan n. Y la gracia es que calcular n a partir de p y q es trivial, porque es una operación directa, pero si tienes n, encontrar los dos números primos p y q es complicado y computacionalmente costoso.
Los Criptoanalistas buscan junto eso, crackear el código RSA en tiempo útil, buscando vulnerabilidades en las implementaciones de software, o nuevos avances tecnológicos en el cálculo de la descomposición factorial o nuevas aproximaciones matemáticas que reduzcan la complejidad algorítmica y hagan que se pueda romper una clave RSA en tiempo útil. Para seguir esto tenemos el RSA Challenge, que intenta saber qué longitudes de claves de RSA son las que ya no se consideran seguras.
Por supuesto, la llegada de los Quantum Computers se supone que hará que todo ese proceso sea trivial, y por tanto llevamos años trabajando en nuevos sistemas de Criptografía Cuántica - basándonos en las propiedades del envío de información sensible con haces de luz - y la Criptografía Post-Cuántica (PQC), que se centra en utilizar sistemas de Criptografía no basados en factorización de números primos. En el mundo de la algorítmica tuvimos avances como el "Fast Factoring Integers by SVP Algorithms" con una propuesta de descomposición factorial más rápida, o el famoso "Algoritmo de Shor".
En la parte de Criptografía Cuántica tenemos los Quantum Random Number Generators o los Sistemas de Quantum Key Distribution, que ya se están usando en producción, pero mientras llegan los ordenadores completos, estamos protegiendo los sistemas con algoritmos de criptografía que no basan su seguridad en la dificultad de la operación de factorizar los primos para n. Son los algoritmos de Post-Quantum Cryptography. Desplegarlos, es lo que se conoce como tener estrategias de Quantum Readiness o Quantum Safe. Todo por no ser complejo para un Quantum Computer calcular un número primo. De todo esta parte hablaremos en el Programa de Quantum y Post-Quantum Computing para Ciberseguridad: Formación Especializada, Libro & Foro Online que estamos llevando con la Universidad de Deusto.
En toda esta amalgama de aproximaciones, disciplinas y áreas de investigación, seguir encontrando nuevos Números Primos o nuevas formas de probar si un número es o no es un Número Primo de forma acelearada sigue siendo importante y relevante. Si miramos al futuro mundo de Súper Computación y con que estamos creando en la carrera de por Súper Inteligencia Artificial puede ser que tengamos que extender la longitud de las claves a tamaños mucho mayor o aplicar, al mismo tiempo que puede hacer que sea más trivial romper una clave RSA

El Número Primo Más Grande

Aún no sabemos cuál puede ser la importancia real en la práctica en el futuro, pero si sabemos que avanzar en estas áreas de investigación es importante. Una de estas áreas de trabajo es seguir expandiendo los Números Primos y para tener un mayor conjunto de estos, y más grande que utilizar. Por eso, a día de hoy, continuamos buscando números primos de mayor tamaño.

De entre los Números Primos, hay un grupo especial de ellos que se llaman los Primos de Merssene, en honor al matemático francés Marín Mersenne que los comenzó a estudiar. Son números primos que son un número menos que una potencia de dos. Es decir, el número 3 es igual a 4 que es 2^2 menos 1. Lo mismo sucede con el número 31 que es 2 ^5 - 1.  Y no son tantos. A día de hoy se conocen 52 números Primos de Mersenne, y la distancia entre cada uno de ellos es cada vez mayor en el número de dígitos que tienen.

Por supuesto, no todos los números potencia de 2 menos 1 son números primos (sólo 52 hasta día de hoy lo son), pero se ha dado la circunstancia de que los últimos Números Primos más grandes descubiertos son todos Primos de Mersenne, así que ahí seguimos buscando los siguientes. Entre otras cosas - que el conocimiento per sé es más que suficiente - porque permite acotar además los números que hay que probar para localizar el siguiente Número Primo, mirando en únicamente si es un posible Primo de Mersenne.
El último Número Primo que es Primo de Mersenne descubierto es el 2^136.279.841 − 1 también llamado M136.279.841, y fue descubierto el 12 de octubre de 2024 por Luke Durant, tal y como se anunció en el proyecto GIMS (Great Internet Mersenne Number Prime Search), que desde el año 1996 busca eso, localizar con la ayuda de todos los investigadores de Internet el siguiente Primo de Mersenne

Si no conocías algo de esto, pues ya has aprendido algo hoy, pero si lo conocías, ya sabes que tenemos muchas áreas en las que investigar, y en las que trabajar, y puedes ponerte a ello. Me encantaría jugar a predecir cuándo - gracias a la evolución tecnológica - vamos a localizar el próximo número. ¿Te atreves a especular?

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


martes, abril 09, 2024

GoFetch: Cómo extraer claves RSA con Data Memory-Dependent Prefetch en los Apple Serie-M

Reconozco que cuando leí que había un - Exploit que afecta a un bug de Hardware similar a Meltdown, Spectre, Spectre_v1 y el reciente GhostRace que no era parcheable, miré a mi nuevo y flamante Macbook Book Pro M3 y pensé en si me lo cambiaba o no. Pero la verdad es que al final los bugs y exploits de hardware son algo en lo que estamos aún en la punta del témpano de hielo, como dice mi amigo. A este exploit se le llama GoFetch, y el resultado y la idea es espectacular.
La idea se basa en explotar una funcionalidad que viene en los microprocesadores modernos llamada DMP (Data Memory-Dependent Prefetch), o lo que es lo mismo, cargar en la Cache del Microprocesador las direcciones de memoria que se van a acceder para acelerar la ejecución de los programas, haciendo que el dato esté disponible antes de que se utilice en el caché más rápida del equipo, la que se encuentra en el microprocesador.

Figura 2: Mi flamante MacBook Pro M3 Pro es vulnerable
a GoFetch, y aunque se ha publicado un workaround que ya he
instalado, el fallo es "Unpatchable"

Esta idea de prefecthing es algo que se utiliza en todas las disciplinas, y los vinisteis a la última charla de b, yo os conté como hicimos con Juan Antonio Calles un proyecto en el año 2008 de Prefetching Web Browsing, que visto esto, merece la pena que os cuente en un artículo a parte. En los microprocesadores también hay prefetching, y se llama DMP, pero no se sabe muy bien cómo funciona el algoritmo de predicción que tiene cada uno de los microprocesadores. 
En el mes de Mayo de 2022 se publicó el trabajo de "Augury: Using data memory-dependent prefetchers to leak data at rest", donde explicaba básicamente un ataque bastante sencillo de entender, más difícil de implementar. La idea es tan sencilla como que si existe un módulo llamado DMP que, basado en los datos que acceden los programas, entonces existen direcciones de memoria predictivas almacenadas en la Caché-L1 del microprocesador que no ha sido invocada por nadie.

Para ello, "sólo" hay que introducir un programa que lleve un patrón de accesos, que nos permita inferir qué va a cargar el DMP. Este imagen muestra que si nosotros accedemos a determinadas direcciones en memoria, entonces el DMP va a traer a la Caché-L1 del microprocesador los datos siguientes.
El patrón es bastante sencillo, así que ya sabemos que están en los registros de la Cache-L1 datos concretos, por lo que podríamos extraer esos datos explorando qué hay en la caché. Para eso se hace un ataque de Side-Channel a los registros con un Time-Based, esto es así porque si un dato ha sido guardado en la Caché-L1 su tiempo de respuesta es menor que el resto, así que si un dato está en la Caché-L1 se podría saber qué hay ahí por los tiempos de respuesta, independientemente de que tengamos una respuesta negativa que no nos permita acceder al dato por seguridad. 
Visto este trabajo de Augury, los investigadores han seguido esta misma línea, y han publicado el último artículo académico, llamado: "GoFetch: Breaking Constant-Time Cryptographic Implementations Using Data Memory-Dependent Prefetchers" donde han ido más lejos, y se han dedicado a hacer una implementación funcional de cómo sacar claves criptográficas del sistema operativo, accediendo a los datos mediante una manipulación del DPM de los M-Serie de Apple. Y es espectacular.
Si se rompe la criptografía de un sistema operativo, se acabó con todo. Ya es como que no existiera ninguna seguridad de la información, de los datos, de los procesos, de todo. Por eso las claves criptográficas que utiliza el sistema operativo - cualquiera - son las más protegidas del sistema, y con GoFetch acabamos de ver cómo pueden ser extraídas con este ataque.


En el artículo académico, los investigadores han seguido estudiando cómo funciona el DMP de los microprocesadores M-Serie de Apple, que lógicamente no tienen documentación publicada. El trabajo es un poco como el que vimos en la serie de Halt & Catch Fire, donde tenemos a gente jugando con el hardware a bajo nivel para sacar los datos. En este caso los investigadores han descubierto que el DMP se activa no solo con acceso mediante punteros a zonas de memoria, sino con otro montón de tipos de datos sintéticos que pueden ser inyectados artificialmente por un explotit.
A partir de ese momento, se trataba ver de si era posible hacer un exploit funcional que pudiera extraer una clave criptográfica de un equipo Apple con un M-Serie, y el resultado lo tenéis en el siguiente vídeo que han publicado en la web de GoFetch.Fail donde tienes toda la información del proyecto.
El exploit que han utilizado para hacer esta demo, inyectando un patrón que haga que el DMP cargue en los registros de la Caché-L1 del microprocesador las direcciones de la clave RSA lo tenéis en GitHub, para que veáis cómo hacen el patrón previo, y como exploran la caché con un ataque Time-Based
El ataque es una maravilla, y los bugs de hardware una pesadilla para la seguridad de los sistemas operativos, porque además muchos de estos componentes son autenticas black box para programadores de sistemas operativos (por ejemplo kernels de Linux), así que poco pueden hacer antes de conocer el bug.


Esto es una tendencia que vamos a seguir viendo, y no hace mucho os hablamos de cómo rompieron la seguridad del TPM con un ataque hardware en donde reside la seguridad del sistema BitLocker en Windows, y esto va a seguir. Mi recomendación es que conozcas y juegues mucho con el hardware, y si te mola, comienza jugando con Drones, Arduino o Raspberry Pi, que dan para mucho juego. Esto deseando ver cómo migran este ataque a iPhone e iOS. Clock is Ticking.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


domingo, enero 08, 2023

Factorización de RSA con un Optimizador de Quantum Computing (y Classic Computing)

Desde hace años llevamos hablando del riesgo para los algoritmos de cifrado de la aparición de los ordenadores cuánticos. Sabemos que cuando lleguen los ordenadores cuánticos profesionales, la factorización de números enteros que es soporte fundamental de RSA, será trivial. Y esto nos dejará sin uno de los soportes fundamentales de la criptografía moderna, ya que en él se sustenta el cifrado de las comunicaciones modernas.

Figura 1: Factorización de RSA con un Optimizador
de Quantum Computing (y Classic Computing)
Imagen: Dall-e 2 (happy hacker in futurist art style)

Pero hace años que se está estudiando e investigando cómo sería posible romper RSA, por supuesto. Es uno de los grandes objetivos de los investigadores en criptografía, y cualquier avance que abra nuevas puertas, nuevos caminos, nuevas formas de atacar la robustez de RSA, son siempre exploradas y analizadas en detalle. Si no estás familiarizado con RSA, te recomiendo que te compres, leas y subrayes este libro.

Desde el año 2001 existe el RSA Factoring Challenge, donde se premia a los que consiguen hitos relevantes en su ruptura, pero al mismo tiempo, donde los investigadores buscan dejar su nombre escrito, pues es un reconocimiento mundial. Si vemos la tabla en Wikipedia, podemos ver que el reto comienza en RSA100, que ya fue roto en el año 1991.
Si vamos a la segunda parte de la tabla, ya vemos que el último hito lo tenemos en romper RSA250, conseguido en el año 2020. Algo que, a pesar de ser un avance en la investigación y en la técnica, deja todavía muy lejos a RSA2048 que es el más utilizado hoy en día.
Lo que sí es cierto es que ya se conocen algoritmos para romper RSA cuando existan los equipos cuánticos del tamaño necesario para ejecutarlos, como es el caso del propuesto por Peter Shor, que permite factorizar los números enteros en tiempo asintótico de O((logN)^3) y espacial de O(logN). Este algoritmo no es nuevo y, como explica la Wikipedia, en el año 2001 se puedo aplicar en un ordenador cuántico de 7 Qbits para descomponer 15 en 3 y 5.
Hoy en día, los investigadores están buscando encontrar nuevas formas de atacar el problema de romper RSA desde varios puntos diferentes, que ayuden a reducir la complejidad desde diferentes puntos de vista.  El primero de ellos, intentando encontrar algoritmos que factoricen números enteros grandes de forma más eficiente. Exprimiendo para ello la matemática. Como explican en Segu-Info, en el año 2021, el matemático alemán Claus-Peter Schnorr publicó el artículo académico de "Fast Factoring Integers by SVN Algorithms", que propone un método más eficiente para intentar que las computadoras clásicas pudieran romper RSA, pero no escala tanto como para ser una amenaza real para RSA2048
Por otro lado, es cierto que las Computadoras Cuánticas - no orientadas a este problema, sino generalistas - avanzan cada vez más deprisa y, en cuanto estas lleguen, podrán implementar el algoritmo de citado anteriormente de Peter Shor, lo que obliga a trabajar y pensar en los algoritmos de Post-Quantum Encryption y a tener una estrategia de reemplazo en todos los rincones. Como ya vimos, el gobierno de Estados Unidos ya ha comenzado con su camino en esta dirección, bajo la publicación de la Quantum Computing Cybersecurity Preparedness Act

Y es que, cada día vemos equipos cuánticos de más potencia y calidad. A finales del año 2022, la empresa IBM anunció que su ordenador cuántico OSPrey de 433 Qbits, pero sobre todo que planea tener en el año 2025 a Kookaburra, con un objetivo de más de 4158 Qbits, lo que cambiará, seguro, las reglas del juego con los algoritmos que se van a poder ejecutar.
Por supuesto, habrá que ver en lo que están trabajando Google y Microsoft en estas áreas de investigación, donde también tienen puestos muchos recursos en la competición cuántica que estamos viendo desde hace unos años.

Factorización de RSA con Quantum Computing y Classic Computing

A todos estos avances, el pasado 23 de Diciembre de 2022 se presentó un artículo académico en China, titulado "Factoring integers with sublinear resources on a superconducting quantum processor", donde un equipo de investigación amplio explicaba cómo habían utilizado una aproximación mixta para resolver el problema de escala que tenía el algoritmo de "Fast Factoring Integers by SVN Algorithms", utilizando para las partes que no escalaban un ordenador cuántico. 

Para su prueba de concepto, utilizaron la factorización de enteros en RSA48 utilizando un ordenador de 10 Qbits. En este caso utilizan, computación clásica para la mayor parte del algoritmo, pero añade un optimizador cuántico "QAOA" que sirve para resolver las partes no escalables del algoritmo de Schnorr  para optimizar el algoritmo de Shor, que no garantizaban un rendimiento asintótico sublinear, y elevaba la complejidad al tiempo que reducía la potencia de la solución.
Con esta aproximación, el equipo de investigación ha hecho también un estudio de cuál sería el tamaño del equipo cuántico que se necesitaría para llegar a romper RSA2048 con esta aproximación mixta, lo que ha generado mucha controversia en la comunidad investigadora, a la par que mucho miedo geopolítico entre los encargados de los sistemas de cifrado de las grandes empresas y estados.

Figura 11: IBM ya podría romper RSA-2048 con su OSPrey

Claro, si sumas las últimas noticias, pues parece que IBM ya podría romper RSA-2048 con su equipo OSPrey, y parece que los equipos de más de 372 Qbits, están más cerca de lo que parece. Pero aún hay que ver cómo evoluciona esto. Lo cierto es que, viendo la velocidad a la que van las noticias, hay que ir pensando en poner estrategias de Post-Quantum Encryption en los estados y gobiernos cuanto antes, porque puede ser que no en mucho tiempo, esto ya sea posible de una manera más o menos común.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


viernes, diciembre 23, 2022

Quantum Computing Cybersecurity Preparedness Act: Comienza la era de Ciberseguridad Post-Quantum en Estados Unidos

El gobierno de Estados Unidos ha decidido aprobar en el congreso la llamada "Quantum Computing Cybersecurity Preparedness Act", que abre el camino de la era de ciberseguridad post-cuántica en la seguridad de la administración de EEUU. Ha sido firmada por el presidente Biden, y en ella se establecen los primeros pasos a tomar para preparar los sistemas criptográficos para la llegada en algún momento en el tiempo, de los ordenadores cuánticos.

Comienza la era de Ciberseguridad Post-Quantum en Estados Unidos

Mucho se ha hablado de los problemas de ciberseguridad que existirán cuando los ordenadores cuánticos sean una realidad práctica en nuestras vidas, ya que las "complejas" operaciones matemáticas que hoy en día garantizan la confidencialidad de los datos que hoy se cifran con nuestros algoritmos criptográficos, ya no servirán con la existencia de equipos informáticos cuánticos, lo que dejará al descubierto todos los datos que hoy protegemos. Grandes investigadores, como son el Dr. Ignacio Cirac o el Dr. Luciano Bello, que dedican su trabajo al campo de la computación cuántica, llevan años en sus ponencias hablando del impacto que en el mundo de la ciberseguridad.


En el libro de "El cifrado de las comunicaciones digitales: De la cifra clásica a RSA (2ª Edición)", tienes la base de toda la criptografía clásica y moderna de nuestros sistemas, y con la llegada en el futuro, que sea en la década del 2030, todas esas protecciones caerán, y podríamos tener muchas consecuencias no deseadas. Datos cifrados capturados en transmisiones, copias de archivos con claves olvidadas, volúmenes de almacenamiento con datos confidenciales protegidos, etcétera, se abrirán para todos.
Hace ya años, en el artículo de Quantum Cryptography, os contaba cómo en Telefónica habíamos utilizado tecnología cuántica para hacer el cifrado de datos, que es otra aproximación válida, ya que se basa en proteger las claves de cifrado compartiéndolas con tecnología cuántica. Una aproximación válida hoy en día, pero que no funcionaría en el futuro si el algoritmo de cifrado no fuera PQE, ya que permitiría al atacante acceder a la información incluso sin clave.


Figura 4: PoC de cifrado cuántico de Telefónica, la UPM y Huawei

Con el objetivo de preparase, se lleva años trabajando en los algoritmos PQE (Post-Quantum Encryption), que utilizan diferentes aproximaciones para evitar el uso de las funciones matemáticas que hoy son útiles, pero con la llegada de los ordenadores cuánticos dejarán de serlo. Y es por ello que se lleva trabajando en la elección de algoritmos criptográficos PQE desde el hace años para que, con tiempo, preparamos la seguridad de la información de nuestros datos, y fueron anunciados en Julio de este año.

Algoritmos de cifrado post-cuántico elegidos por el NIST

Para ello el NIST ha estado trabajando en el programa de Post-Quantum Cryptography Standarization en la elección de cuáles deberían de ser esos algoritmos PQE, que al final fueron cuatro los elegidos. Para el cifrado general, se eligió a Crystals-Kyber como el algoritmo a utilizar para cifrado público.

Figura 5: Algoritmos PQE elegidos por NIST: Cifrado público

Para firma digital, los algoritmos elegidos han sido tres, que son Crystals-Delithium, Falcon y Sphincs+, que están totalmente documentados, y disponibles para que todo el mundo los pueda implementar.

Figura 6: Algoritmos PQE elegidos por NIST: Firma Digital


Ahora, ya que existe una recomendación clara de cuáles son los algoritmos de criptografía post-quantum, lo que ha aprobado el gobierno de EEUU en su Quantum Computing Cybersecurity PreparednessAct es comenzar el proyecto de transformación de todos los algoritmos criptográficos a un modelo PQE, por lo que con el nuevo acto se insta a dos cosas:

  • Establecer cuáles son las guías de transición para migrar a algoritmos PQE para toda la administración.
  • En un plazo máximo de 15 meses, se presente la estrategia nacional de ciberseguridad para la era post-quantum. 
Lo que llevará a trabajar en criptografía mirando, y dando por hecho, en breve habremos entrado en una nueva era. No está mal para terminar el año.

¡Saludos Malignos!

Autor: Chema Alonso (Contactar con Chema Alonso)  


jueves, agosto 12, 2021

Criptografía: la rama con más historia de la ciberseguridad y con un futuro prometedor

La Criptografía es una materia apasionante. Me gusta recordar que esta ciencia ha escondido los mayores secretos de la Humanidad desde tiempos inmemoriales. Esta ciencia nos ha acompañado a lo largo de la humanidad y ha ido evolucionando con la misma, creando cada vez criptosistemas más sofisticados de modo que pudiera dar respuesta a las demandas de cada época. Pasando por los criptosistemas clásicos, como el famoso cifrado César o Vigenère, se dio paso a la Criptografía moderna, donde contamos con algoritmos tan importantes como el intercambio de claves Diffie-Hellman, el cual marcó un antes y un después en la Criptografía.

Figura 1: Criptografía: la rama con más historia de
la ciberseguridad y con un futuro prometedor

Este algoritmo resuelve el problema de cómo establecer una clave común entre los interlocutores de la comunicación sin la necesidad de utilizar un canal seguro o un contacto previo entre los mismos, el cual hasta 1976 había acompañado a la humanidad. La genialidad de este algoritmo le valió el premio A.M. Turing de 2015 de la Association for Computer Machinery y además dio lugar a la Criptografía asimétrica, en la que, a diferencia de la simétrica utilizada hasta entonces, se utiliza una clave diferente para cifrar y descifrar. 

De hecho, cada interlocutor utiliza un par de claves, una pública y otra privada. Aquí se puede hablar de algoritmos tan relevantes como RSA, la gran aportación de la firma digital y los certificados o las grandes ventajas de la Criptografía basada en curvas elípticas. Además, hay evoluciones de la Criptografía que estamos viendo, como la Criptografía ligera, la Criptografía homomórfica, etc.

La Criptografía, guardiana de la seguridad de nuestros datos y comunicaciones

La Criptografía utiliza el aparataje matemático como base para garantizar el funcionamiento de la misma, dándole aplicaciones que traen grandes aportaciones a la sociedad. De hecho, ha sabido hacer transparente esa complejidad y robustez matemática al usuario, quien la utiliza hoy en día casi sin ser consciente de ello.

¿Sabías que cuando sacas dinero de un cajero automático estás utilizando Criptografía, o cuando hablas por teléfono o cuando ves tu partido de fútbol favorito o cuando navegas por gran parte de las páginas de Internet o cuando envías un mensaje de Whatsapp/Telegram? Tantas acciones cotidianas que hacemos todos los días bajo las que subyace la Criptografía, haciendo de guardiana de la seguridad de nuestros datos y comunicaciones.
La Criptografía tiene características únicas respecto a cualquier otra rama de la Ciberseguridad. Además de ser la rama con más historia de la Ciberseguridad, también tiene un futuro prometedor. Hablamos de la Criptografía Cuántica, que permite hacer un intercambio de clave por un canal inseguro (típicamente a través de fibra óptica o aire) utilizando las propiedades de la cuántica, de forma que se puede detectar si hay un espía en el canal. Incluso ya se está trabajando en la Criptografía post-cuántica, es decir, aquella que se muestra resistente a la aparición del ordenador cuántico.

Breve repaso de la evolución de la Esteganografía

Tanto se podría decir de cada uno de los conceptos enunciados, sin embargo, en esta ocasión me gustaría hablar de la Esteganografía: una ciencia complementaria a la Criptografía cuyo objetivo es ocultar el hecho mismo de la transmisión de información. Sabiendo esto se entiende la etimología de la palabra Esteganografía, que proviene del griego “Steganos” (oculto) y “Graphos” (escritura).

Al no conocer el atacante que existe la comunicación, se reducen las probabilidades de ataque, lo que supone una medida extra de seguridad, la cual puede ser muy útil cuando se trata con información sensible o, por ejemplo, en situaciones de censura. Al igual que sucede con la Criptografía, los orígenes de la Esteganografía se remontan tiempo atrás. De hecho, se ha usado desde la antigüedad, en diferentes civilizaciones como la Griega y la China.

Haciendo un repaso por los diferentes sistemas esteganográficos a lo largo de la historia se encuentran curiosos e ingeniosos sistemas para ocultar la información. Se sitúa en el S. V a.C. el mecanismo mencionado por Heródoto, el cual escribía un mensaje en una tablilla y luego se recubría con cera para ocultar el mensaje. También es muy sonado el método de escribir un mensaje en la cabeza del mensajero. ¡Fijaos el tiempo que requería enviar un mensaje oculto de esta manera! Primero había que afeitar la cabeza del mensaje, escribir el mensaje, dejar el pelo crecer, enviar el mensaje y volver a afeitar la cabeza para leer el mensaje. ¡Nada que ver con la velocidad a la que transmitimos hoy los mensajes y la cantidad de información que manejamos!

Otra técnica utilizada durante las guerras mundiales era la utilización de tintas invisibles, como puede ser la de limón. O la ingeniosa idea de escribir el mensaje en un huevo cocido, cuya cáscara porosa absorbe la tinta y luego pelando el huevo se puede leer el mensaje.



Incluso es frecuente la utilización de textos como soporte para ocultar los mensajes, no solo en textos sino por ejemplo en partituras de música. Otro mecanismo conocido es la Rejilla de Cardano, donde utilizando una rejilla con un patrón se puede leer un mensaje oculto en un texto. Para l@s que tengan curiosidad por esta técnica pueden revisar este post sobre el accidente del Yack-42 en Turquía.

Técnicas actuales donde se utilizan medios informáticos para ocultar la información

Para ocultar los mensajes, la Esteganografía se apoya en un estegomedio, es decir, el recurso utilizado para ocultar la información. Hoy en día es frecuente la utilización de diferentes formatos de archivos, como imágenes, videos, audios, textos, lenguajes de programación, protocolos, ficheros, redes sociales, etc. como “tapadera” o estegomedio. Esto tiene multitud de aplicaciones a día de hoy, desde la protección de los derechos de autor (con las famosas marcas de agua), hasta la vulneración de mecanismos de seguridad como firewalls o antivirus, exfiltración de datos o la creación de estegomalware. Como siempre, las herramientas están disponibles para sus buenos usos u otros menos buenos… La Criptografía y la Esteganografía no son ciencias excluyentes sino complementarias. De hecho, no es extraño hacer una combinación de Criptografía y Esteganografía, cifrando los mensajes ocultos por si fueran descubiertos.

Figura 4: Libro de Esteganografía y Estegoanálisis
de Jordi Serra y Daniel Lerch en 0xWord

En cuanto a los mecanismos de ocultación, hay muchos que se pueden utilizar. Uno muy utilizado en imagen digital es la técnica LSB (Least Significant Bit en inglés), que como su nombre indica consiste en la sustitución de los bits menos significativos de una imagen por el mensaje a ocultar. Si la cantidad de información a ocultar no es demasiado grande, este mensaje pasará inadvertido a los ojos de los visualizadores de la imagen.

El estegoanálisis es el encargado de descubrir estos mensajes ocultos, para lo cual se suele buscar información redundante, que al modificarla no afecte al estegomedio y que permita descubrir esos canales de comunicación encubiertos.

Herramientas para trabajar con Esteganografía

Hay varias disponibles, como OpenStego, Steghide, Xiao Steganography, S-tools, etcérera. Cada una tiene sus particularidades, algoritmos de cifrado, medios que soporta, etc. Para ilustrar un ejemplo de cómo se puede aplicar la Esteganografía en imágenes digitales, os voy a hablar de S-tools, una herramienta muy sencilla que permite ocultar y descubrir mensajes ocultos en imágenes. 

Su utilización es muy sencilla e intuitiva. Para visualizar la imagen que servirá como estegomedio simplemente podemos arrastrar la imagen (en formato BMP). En este caso se ha usado la imagen “Figuras.bmp”.

Figura 5: Figuras.bmp antes de introducir el mensaje secreto

El fichero que se va a ocultar es “MensajeSecreto.docx” que contiene el texto “Ataque al amanecer”. Para ocultar este archivo con el mensaje en la imagen simplemente basta con arrastrar el archivo a ocultar encima de la imagen que se usará como tapadera. Entonces la herramienta nos pedirá que introduzcamos una clave y el algoritmo de cifrado que se quiera usar. Como algoritmos se pueden emplear varios: IDEA, DES, TripleDES y MDC. En este caso se elige IDEA con la clave 9512.    

Figura 6: Selección de opciones de ocultación del mensaje secreto

A continuación, pulsamos sobre la imagen, que ya tiene el fichero oculto incrustado y seleccionamos la opción de guardar, dándole el nombre de “Hidden.bmp” a la imagen resultante. Cuando el destinatario recibe la imagen esteganográfica, si quiere descubrir el mensaje secreto primeramente debe arrastrar la imagen para abrirla con S-tools

A continuación, pulsando el botón derecho y usando la opción Reveal, podemos introducir de nuevo el algoritmo de cifrado y la clave (previamente debe haber un intercambio de clave entre los interlocutores) y…¡tachán!…esto esto es lo que obtenemos:

Figura 7: Hay un fichero oculto en la imagen

Usando la opción de guardar podemos traernos a local este fichero, abrirlo y descubrir el mensaje secreto:

Figura 8: Fichero extraído con S-tools de la imagen

Como se puede ver, esta herramienta permite ilustrar fácilmente los conceptos de la esteganografía. Por supuesto, todo es cuestión de imaginación para hacer cosas interesantes 😊 


Si te interesan estos temas te invito a ver esta ponencia sobre ciberseguridad y criptografía (que acaba de publicarse en abierto) en el CTO Summit, el evento en el que participé junto a más de 20 profesionales del sector de la tecnología el pasado 2020.
Además, si quieres especializarte en esta área y dar un salto profesional en tu carrera, te invito a que eches un vistazo al programa del Bootcamp Online Ciberseguridad (empieza el 24 de septiembre) del que formo parte también y junto a un equipo de docentes con muchísima experiencia en el sector. Si has llegado leyendo hasta aquí te doy las gracias y espero que lo hayas disfrutado.

¡Hasta pronto!

Autora: Carmen Torrano, experta en Ciberseguridad en Telefónica y docente en cursos de Ciberseguridad.

jueves, enero 16, 2020

Los años locos de la seguridad informática: De la camiseta prohibida al virus de una sola línea de código

Las líneas de código (es decir, los programas de computadores o el software) perfilan el mundo actual, de esto no hay duda. Desde un microondas, relojes, teléfonos, pasando por diferentes vehículos que usamos a diario como aviones, coches, etcétera, hasta complejas instalaciones como por ejemplo las centrales nucleares, hospitales (y su instrumentación) o fábricas, dependen de un programa de un ordenador. Y toda esta, digamos, dependencia y expansión, empezó justo después de la invención del primer microprocesador, el Intel 4004 en 1971, y desde entonces el software ha ido ocupando un sitio destacado y fundamental dentro de la tecnología y a su vez, de la sociedad.

Figura 1: Los años locos de la seguridad informática: 
De la camiseta prohibida al virus de una sola línea de código

Esto no quiere decir que antes no hubiera programas (de hecho, en este artículo aparecen algunos anteriores a esa fecha) ya que el primer, digamos “código”, se creó en 1715 … ahí lo dejamos ;) . En nuestro libro “Microhistorias: anécdotas y curiosidades de la historia de la Informática (y los hackers)” aparecen más historias como estas, tanto de ciberseguridad como de la informática y hackers en general.

Figura 2: Libro de "Microhistorias: anécdotas y curiosidades
de la historia de la informática (y los hackers)"

En este artículo hemos seleccionado algunos fragmentos de código que, de alguna u otra manera, han tenido impacto en el mundo de la seguridad informática y casi podríamos decir que en la sociedad. Desde instrucciones erróneas en vehículos espaciales que había que hacer un “bypass” (como el caso del Apolo 14) pasando por el curioso caso de la camiseta prohibida y el código de cifrado RSA, harán acto de presencia en este texto. Vamos a verlos un poco más en profundidad.

Sobrecarga (overflow) y engaño (deception) en el software del Apolo 11 y 14

En ambos viajes espaciales, un programa de ordenador estuvo a punto de echar al traste toda la misión. No fueron un problema técnico del vehículo, sino una mala interpretación de una señal en un caso y un error de programación o de interpretación de señales en el otro.

En el caso de la misión Apolo 11, a pocos minutos de aterrizar en la Luna, Buzz Aldrin dejó activo un radar del vehículo LEM que desbordó de información (overflow) el ordenador, activando las alarmas 1201 y 1202 que casi terminan con la misión. Menos mal que Margaret Hamilton y su equipo tenían previsto este contratiempo (esas alarmas indicaban justamente este problema de sobrecarga) y lo tenían bajo control.

Por otro lado, en el viaje del Apolo 14, también hubo un problema, esta vez relacionado con una señal de abortar que no debía de estar activa. En este caso fue Don Eyles, uno de los miembros del equipo de Margaret quien lo solucionó realizando un “bypass” o engañando al sistema. Tienes toda la historia al detalle en este enlace que publicamos.

Figura 3: Sección del código del fichero EXECUTIVE.AGC donde aparece la activación de la alarma 1202

En la imagen de la Figura 3 se puede apreciar la porción de código que activaba la alarma 1202 del Apolo 11 (el código fuente al completo está en GitHub). Una explicación a fondo de esta alarma y su funcionamiento la puedes encontrar en este enlace.

El gusano de Morris, el primer ataque a la red Internet

El 2 de noviembre de 1988, un joven estadounidense de 23 años, llamados Robert Tappan Morris, creó el primer malware de tipo gusano (programado en Lenguaje C) que provocó, según él, por accidente, el mayor ataque a la red Internet de la época. El 10% de los ordenadores conectados, unos 6.000 la mayoría servidores, provocando el mayor ataque tipo DoS de la historia (hasta ese momento).

El programa explotaba un agujero de seguridad en el modo debug del clásico programa de Unix llamado sendmail (el cual se ejecuta en el sistema operativo a la espera de recibir conexiones para recibir emails) y “bug” en el daemon del comando/protocolo finger, fingerd (encargado de gestionar dichas peticiones). Antes de infectar otro ordenador, el gusano comprobaba si estaba presente. En caso afirmativo, el gusano lo volvía a infectar una de cada siete veces (esto lo hacía por si acaso había otro gusano Morris modificado en ejecución y así sustituirlo).

Figura 4: Parte del código fuente del gusano encargado de probar
diferentes contraseñas por defecto para acceder a los servidores

Esto provocó que muchos usuarios se infectaran demasiadas veces por el malware, llegando a colapsar la máquina, dejando de funcionar. Hoy día Robert Morris es profesor de Informática en el MIT. En este enlace puedes ver el código fuente completo y en este otro un análisis en profundidad del mismo.

El virus de una sola línea (bomba fork)

La siguiente línea de código, en Bash, era capaz de bloquear o colgar un ordenador en versiones antiguas de Unix y muy posiblemente en algunos actuales con GNU/Linux, así que ten cuidado en ejecutarlo:
:(){ :|:& };:

bomb(){

bomb | bomb &
}
bomb
Figura 5: Bomba fork en Bash en una sóla línea Bash y abajo en formato más legible

Una bomba fork es un tipo de ataque cuyo objetivo es provocar una denegación de servicio, creando otros procesos (en concreto, a llamadas del sistema o system calls) de forma recursiva, colapsando la memoria del ordenador. Lo que hace especial este ataque, además de su extrema sencillez, es que demuestra la gran debilidad de los complejos informáticos actuales.

La bomba fork de una sola línea es una obra maestra de la programación ofuscada, aquí tienes una brevísima descripción de su funcionamiento:
1. “:()” significa que está definiendo una función llamada “:” 
2. “{:|: &}” significa ejecutar la función “:” y enviar su salida a la función ”:” de nuevo y ejecutarla en segundo plano. 
3. Dentro de la sección del punto 2 ocurre lo siguiente:
• “:” carga otra copia de la función “:” en memoria 
• “|” y hace un “pipe” de su salida hacia … 
• “:” otra copia de la función “:” la cual se tiene que cargar en memoria 
• Por lo tanto, “:|:” carga dos copias de ':' cada vez que se llama a “:” 
• “&” mata a las funciones, si la primera “:” es destruida, todas las funciones que ya se han iniciada no serán eliminadas. 
• “}” fin desde el “:” inicial
4. “;” separador de los comandos 
5. “:” ejecuta la función por primera vez
El código del cifrado RSA el Perl que se prohibió exportar … hasta en camisetas

El Gobierno de los Estados Unidos, durante un periodo de tiempo, aplicó un tratamiento casi de armamento militar a cualquier tecnología relacionada con el cifrado de información. Hasta ese momento, toda esta tecnología que rodeaba a cualquier dispositivo era costoso de implementar y programar. Hasta que apareció el algoritmo RSA de cifrado (el que es uno de los bloques fundamentales de la criptografía actual)

Figura 6: Libro de Cifrado de las comunicaciones digitales:
De la cifra clásica a RSA (2ª Edición) de 0xWord.

Este algoritmo se podía escribir en cuatro simples líneas de Perl y cualquier empresa, o particular podía, desde ese momento, y de manera sencilla utilizar sistemas de cifrado de alta seguridad en cualquiera de sus programas, lo que permitía añadir capas de seguridad a todas las partes de los sistemas de seguridad.

Figura 7: Código Perl del algoritmo de cifrado RSA en 4 líneas de código

En ese momento no se podía exportar fuera del país este tipo de código por Internet, pero claro, ahora era lo suficiente pequeño como para poder meterlo, por ejemplo, en una camiseta. Y eso fue exactamente lo que pasó, la gente comenzó a imprimirlo en camisetas (las originales se han convertido en objetos de coleccionistas, si lográis encontrarla) y esta forma poder exportarlo y venderlo por todo el globo. En la camiseta aparece el siguiente texto:
“WARNING: This shirt is classified as a munition and may not be exported from the United States, or shown to a foreign national”
El problema es que estas camisetas también se prohibieron, e incluso hoy día es posible que te paren en alguna aduana estadounidense si la llevas puesta (aunque estas restricciones están técnicamente retiradas). Eso sí, siempre te lo puedes tatuar donde quieras

Figura 8: Parte delantera de la camiseta donde se aprecia el código en Perl y también el mensaje de prohibición

Este no fue el único caso, también podemos encontrar otro como el de DeCSS (cifrado de los DVD), el cual también se imprimió en una camiseta y fue incluso a juicio.

Y muchos más...

Hay muchos más programas interesantes relacionados con la ciberseguridad (que os contaremos siempre que os haya gustado este artículo) de los cuales, además de lo curioso y su valor histórico, podemos aprender mucho de ellos. Desde errores de programación trágicos (como el caso de Therac-25, que provocó la primera muerte “por código”) hasta malware clásico como por ejemplo Conficker, el gusano que infectó millones de ordenadores, entre muchos otros. Pero amigos, esas son otras Microhistorias … ;)

Happy Hacking Hackers!!!

Autores:

Fran Ramírez, (@cyberhadesblog) es investigador de seguridad y miembro del equipo de Ideas Locas en CDO en Telefónica, co-autor del libro "Microhistorias: Anécdotas y Curiosidades de la historia de la informática (y los hackers)", del libro "Docker: SecDevOps", también de "Machine Learning aplicado a la Ciberseguridad” además del blog CyberHades. Puedes contactar con Fran Ramirez en MyPublicInbox.

Rafael Troncoso (@tuxotron) es Senior Software Engineer en SAP Concur, co-autor del libro "Microhistorias: Anécdotas y Curiosidades de la historia de la informática (y los hackers)", del libro "Docker: SecDevOps" además del blog CyberHades. Puedes contactar con Rafael Troncoso en MyPublicInbox.

Entrada destacada

+300 referencias a papers, posts y talks de Hacking & Security con Inteligencia Artificial

Hace un mes comencé a recuperar en un post mi interés en los últimos años, donde he publicado muchos artículos en este blog , y he dejado mu...

Entradas populares