Mensajes ocultos (Esteganografía)

El origen de esta palabra deriva de la composición de los vocablos griegos στεγανος steganos, que significa cubierto u oculto, y γραφος graphos, que significa escritura. La palabra esteganografía, como muchas otras que ya están aceptadas y en uso,  no figura en el diccionario de la Real Academia.

Por lo tanto, la esteganografía, literalmente,significa “escritura encubierta.”  La esteganografía ha sido utilizada a lo largo de la historia de las comunicaciones secretas. Los criminales siempre han buscado la manera de ocultar su actividad en el espacio real o virtual.

La esteganografía digital representa una amenaza particularmente  hoy, debido a la gran cantidad de aplicaciones de esteganografía digital de libre acceso en Internet que se puede utilizar para ocultar cualquier archivo digital dentro de otro archivo digital. El uso de estas aplicaciones,que son fáciles de conseguir y fácil de usar, permite a los delincuentes ocultar sus actividades en el espacio cibernético. De hecho, la Guía NIJ de Electronic Crime Scene Investigation en los Estados Unidos da respuestas a las posibles pruebas digitales en el maltrato infantil, pornografía infantil, y las investigaciones sobre terrorismo que  incluyen información usando esteganografía.

Por lo tanto, la esteganografía  presenta un desafío significativo para los que investigan ya que la detección de información oculta y la extracción de información es muy difícil a tal grado que  es imposible en algunos casos (criptografía).

Uno de los ejemplos que me gusta en lo personal es el que aparece Odisea 2001 de Arthur C. Clark, donde se habla de una computadora con  que lleva por nombre HAL-9000, si recorremos cada letra entonces tendríamos, H\rightarrow I,\,A\rightarrow B,\, L\rightarrow M, es decir,  HAL-9000 se transforma en IBM-9000 la cuál fue en su momento la mejor computadora,   este tipo de esteganografía se conoce como modelo de transposición y fue muy usado por los emperadores romanos para el envío de mensajes.

Ahora explicaremos un método de esteganografía:

Inserción en el bit menos significativo (Least Significant Bit Insertion)

Este es el método moderno más común y popular usado para la esteganografía, también es uno de los llamados métodos de sustitución. Consiste en hacer uso del bit menos significativo de los pixels de una imagen y alterarlo. La misma técnica puede aplicarse a vídeo y audio, aunque no es lo más común.  De este modo, la distorsión de la imagen en general se mantiene al mínimo (la perceptibilidad es prácticamente nula), mientras que el mensaje es esparcido a lo largo de sus píxeles. Esta técnica funciona mejor cuando el archivo de imagen es grande, posee fuertes variaciones de color (“imagen ruidosa”) y también aventaja cuanto mayor sea la profundidad del color.  Asimismo esta técnica puede utilizarse eficazmente en imágenes a escala de gris, pero no es apropiada para aquellas en color de 8 bit paletizadas (misma estructura que las de escalas de gris, pero con paleta en color). En general, los mejores resultados se obtienen en imágenes con formato de color RGB (tres bytes, componentes de color, por píxel).

Ejemplo:

Un ejemplo de esteganografía: Ocultemos la letra “A”. Si se tiene parte de una imagen con píxeles con formato RGB (3 bytes), su representación original podría ser la siguiente (3 píxeles, 9 bytes):

(1 1 0 1 1 0 1 0) (0 1 0 0 1 0 0 1) (0 1 0 0 0 0 1 1)

(0 0 0 1 1 1 1 0) (0 1 0 1 1 0 1 1) (1 1 0 1 1 1 1 1)

(0 0 0 0 1 1 1 0) (0 1 0 0 0 1 1 1) (0 0 0 0 0 1 1 1)

El mensaje a codificar es “A” cuya representación ASCII es (1 0 0 1 0 1 1 1), entonces los nuevos píxeles alterados serían:

(1 1 0 1 1 0 1 1) (0 1 0 0 1 0 0 0) (0 1 0 0 0 0 1 0)

(0 0 0 1 1 1 1 1) (0 1 0 1 1 0 1 0) (1 1 0 1 1 1 1 1)

(0 0 0 0 1 1 1 1) (0 1 0 0 0 1 1 1) (0 0 0 0 0 1 1 1)

de esta forma podemos insertar mensajes en la imagen, utilizando este principio básico observemos como parte de este  post se puede insertar en una imagen

Primero construimos una función en Mathematica Ver 8.0 para insertar el texto en la imagen “InserteMensaje”

InserteMensaje[imagen_Image, mensaje_String] :=
Block[{datosnormales, datostruncados, pixelcanal, secretobits},
datosnormales = ImageData[imagen, “Byte”];
pixelcanal = Apply[Times, Dimensions[datosnormales]];
secretobits =
PadRight[Flatten[IntegerDigits[ToCharacterCode[mensaje], 2, 8]],
pixelcanal];
datostruncados = BitAnd[datosnormales, 2^^11111110];
Image[datostruncados +
Fold[Partition, secretobits,
Reverse@Rest[Dimensions[datosnormales]]], “Byte”
]];

Después construimos una función para extraer el mensaje

ExtraerMensaje[imagen_Image] := Block[{datosecretos},
datosecretos = BitAnd[ImageData[imagen, “Byte”], 1];
datosecretos = Partition[Flatten[datosecretos], 8];
datosecretos =
FromCharacterCode[FromDigits[#, 2] & /@ datosecretos];
StringTrim[datosecretos,
FromCharacterCode[{0, 0, 0, 0, 0, 0, 0, 0}] ..]]

la imagen de este blog de hecho ya tiene el mensaje oculto, veamos la comparación entre las imágenes

Ambas imágenes son del mismo tamaño pero “diferentes”.  (¿Cuál es la que contiene el mensaje oculto?).

Moraleja: no hagan mal uso de estas herramientas, porque siempre hay alguien que vigila!!!

Bibliografía

National Criminal Justice Reference Service

Steganography Analysis and Research Center

Anuncios

2 comentarios en “Mensajes ocultos (Esteganografía)

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s