Parte V – El grafo es mi aliado, y un poderoso aliado es.
Ya has visto cómo ocultar información por tus propias manos (si has utilizado el código que te he comentado).
Ahora vamos a utilizar una herramienta de código libro que puedes encontrar en algunas distribuciones de Linux. Y que también dispone de versión para Windows.
Se trata de Steghide. Se trata de una herramienta muy antigua (la versión se congeló en 2003).
Pero dado que es un método distinto y que incluye cifrado, la voy a comentar someramente.
Puedes descargarla aquí.
Te permite ocultar texto e imágenes dentro de imágenes. También te permite incluir mensajes de texto, imágenes y audio dentro de archivos de audio. Y además encripta el mensaje.
Como puedes ver, el objetivo de esta herramienta es no solo que no se vea el mensaje, sino que no se pueda interpretar. Dejo a tu imaginación los posibles usos…
Voy a poner un ejemplo de uso con imágenes para ver las diferencias con los otros métodos.
steghide embed -cf entrada.jpg -ef mensaje.txt -sf salida-txt.jpg


Si comparamos los espectros de ambas imágenes

Vemos la dificultad de diferenciarlas.
“Poderosa herramienta es” diría el maestro Yoda…
¿Cómo lo hace?
Si leemos el manual de uso del programa veremos que dice que utiliza una aproximación grafo-teórica a la esteganografía .
Dicho de un modo metafórico, Steghide utiliza los grafos como un tahúr.
En el método que implementamos en la sección anterior escondíamos los bits del mensaje en los coeficientes de la transformada Discreta del Coseno de un modo secuencial. Steghide lo que hace es mezclar los bits del mensaje (además de encriptarlos previamente), barajarlos de modo que un análisis estadístico del fichero JPG no permita descubrir que hay un mensaje oculto.

Como ya eres un programador avanzado, voy a realizar las funciones de gestor de la mandanga (es decir, la gestión de la demanda de requisitos de software).
Este sería, más o menos, lo que hace el programa para ocultar un mensaje de texto (para una imagen viene a ser lo mismo. ya que una imagen se puede poner en modo texto como BASE64, por ejemplo):
- El mensaje es convertido a un stream de bits (eso ya lo hicimos)
- Compresión del stream.
- Cifrado AES del stream de bits.
- Generación de una función pseudoaleatoria (usando la clave suministrada como semilla) para mezclar los bits del mensaje.
- Modelado de un grafo a partir de parejas de bits (los del mensaje y los bits de los coeficientes de la TDC “usables”). Este grafo representa todas las posibles maneras de incluir los bits en los coeficientes TDC.
- Resolución del problema del emparejamiento mínimo del grafo. También es llamado el problema del apareamiento. El valor minimizado es la distorsión (visual y espectral) que se produce al cambiar los bits de los coeficientes.
- Inserción de los bits aleatorizados en los coeficientes no nulos de la Transformada Discreta del Coseno.
Si quieres profundizar en el tema, aquí tienes el paper de Stephan Heltz y Petra Mutzel donde se desarrolla la matemática necesaria.



Deja un comentario