Documentos de Académico
Documentos de Profesional
Documentos de Cultura
esteganografiaXXI PDF
esteganografiaXXI PDF
PRACTICANDO LA ESTEGANOGRAFÍA EN EL SIGLO XXI...
1. Introducción.
La esteganografía es el arte de escribir de forma oculta. Esta palabra, de origen griego,
proviene de los términos esteganos (secreto, oculto) y graphos (escritura), es decir, escritura oculta.
La esteganografía y la criptografía persiguen el mismo fin: enviar mensajes de forma secreta, pero
ambas disciplinas son diferentes. En la criptografía se trata de ocultar el significado de un mensaje,
mientras que en la esteganografía se trata de ocultar el mensaje en sí, que además puede estar cifrado,
o no.
El uso de la esteganografía data de hace miles de años, y ya Herodoto (485 a.c. 425 a.c.)
narra cómo Demeratus, rey de Esparta utilizó la esteganografía para avisara a su ciudad de un
próximo ataque de Xerxes, rey de los persas. En aquellos tiempos se escribía sobre tablillas enceradas,
marcándolas con un punzón... Demeratus hizo grabar un mensaje directamente en la madera de las
tablillas y luego las hizo cubrir de cera, de manera que parecieran “tablas en blanco” sin utilizar...
Desde la antigüedad hasta hoy, la esteganografía se ha utilizado constantemente, y el único
límite que ha tenido es el de la imaginación humana... ejemplos por todos conocidos son la tinta
invisible, los mensajes escondidos en dobles fondos, o los microfilms escondidos en el tubo de pasta
de dientes de un superespía...
Hoy, la esteganografía cobra sentido de nuevo, ya que es posible ocultar información relevante
en ficheros que aparentemente tienen sólo otros contenidos, como los ficheros gráficos o de sonido.
Pero no nos quedemos aquí, expliquemos por qué es esto posible, veamos cómo se puede hacer
teóricamente y pongámoslo en la práctica...
2. Esteganografía digital.
Hay gran variedad de tipos de ficheros de ordenador, pero en el fondo, el contenido de todos
ellos es el mismo: una sucesión de bits (ceros y unos). Las diferencias que existen entre los ficheros
hay que verlas desde un punto de vista más alto, desde un nivel de abstracción mayor y radica en el
significado que contienen los bits.
Los distintos tipos de ficheros organizan su contenido de forma diferente, para poder
almacenar un tipo de información distinta... así tenemos ficheros que contienen texto, imágenes, datos
de contabilidad, documentos complejos, sonido, hojas de cálculo, vídeo, planos, páginas de Internet,
etc... Hoy en día se puede guardar cualquier tipo de información en un fichero.
La esteganografía digital trata de esconder los datos de un fichero (bits) dentro de otro fichero
(que contiene más bits). O sea, que de lo que trata esta disciplina es de “esconder bits dentro de un
montón de bits”. Pero claro, si modificamos un fichero añadiéndole más bits escondidos... estaremos
modificando el contenido del fichero y la información que éste almacena... y ese cambio será visible...
¿o quizás no?
La esteganografía moderna trata de esconder bits dentro de un fichero, pero sin que un
observador que disponga del fichero final pueda sospechar que dicho fichero, además del significado
evidente que contiene, almacena otra información oculta...
3. ¿Cómo se puede ocultar una serie de bits en otra serie de bits?
El tipo de fichero que se desea esconder no es relevante en absoluto, puede ser cualquiera. Nos
da igual que sea un pdf, un ejecutable, o un archivo de sonido... ¡al fin y al cabo se esconderán los bits
que lo componen! Otra cuestión muy diferente es de qué tipo es el fichero “anfitrión”, el que va a
guardar la información secreta... ya que al hacerlo no debemos destruir el contenido original del
fichero.
La cuestión es ¿cómo podemos ocultar una serie de bits en un fichero? Tenemos dos opciones:
1. Añadir los bits del fichero a ocultar a un fichero ya existente. Esta opción supone
aumentar el tamaño del fichero ocultador, sumándole el tamaño del fichero oculto.
Para hacerlo, si no queremos que el engaño sea visible, debemos conseguir que el fichero
ocultador siga pareciendo normal. Por lo tanto, sólo podremos insertar bits ocultos en
huecos del fichero ocultador. Los huecos pueden ser creados artificialmente... por
ejemplo, en un fichero ejecutable podemos abrir un hueco de 100 bytes y antes del hueco
colocar un salto incondicional al byte justamente posterior al hueco. Pero no todos los
tipos de ficheros admiten huecos...
Esta técnica se usa sobre todo con ficheros ejecutables. Sin embargo, hay que tener
cuidado de que el porcentaje de huecos no sea muy elevado, ya que podría resultar
evidente que el tamaño del fichero es demasiado grande para lo que hace el programa...
Este sistema tiene como gran desventaja que los huecos artificiales en el código pueden ser
fácilmente descubiertos por un analizador de código apropiado que los detecte, con lo que
el sistema no es muy seguro.
2. Modificar los bits de un fichero ya existente, en función de los bits a ocultar, de forma
que después podamos recuperar los bits ocultos. En términos telecofrikis, podríamos decir
que es como “modular” un fichero portador con un fichero de datos.
La desventaja de este sistema es obvia: modifica el contenido del fichero original. Pero si
lo pensamos bien, eso quizás no sea un problema...
Este sistema se utiliza con ficheros de imágenes (mapas de bits) o con ficheros de sonido.
En estos tipos de archivo, se almacenan digitalizados valores que en sí son analógicos. De
tal manera, por ejemplo, que un fichero de mapa de bits almacena, para cada punto de la
pantalla, un valor numérico que representa una referencia del color exacto de dicho punto.
En el caso del sonido, almacenan, para cada instante, el valor numérico que representa el
tono exacto del sonido.
Pero una de las máximas de este sistema es que los ficheros “ocultadores” originales
NUNCA deben ser transmitidos y es mejor ni siquiera guardar copia de ellos. Si no se
tiene la imagen original para compararla con la imagen esteganografiada... ¡Es casi
imposible detectar que esta última oculta algo!
La única debilidad de este sistema radica en la posibilidad de que el atacante conozca el
algoritmo esteganográfico. Si así fuera, podría ejecutar el algoritmo inverso sobre archivos
de imagen o de sonido, en busca de “información secreta”. Si bien este ataque es
estadísticamente muy complejo si el algoritmo esteganografiador es suficientemente
bueno, ya que las posibilidades de ocultación son enormes.
Veamos un resumen de todo lo explicado en la siguiente tabla:
TIPOS DE ESTEGANOGRAFÍA DIGITAL.
Modificar los bits de un fichero ya
Añadir los bits del fichero a ocultar a
existente, en función de los bits a
un fichero ya existente.
ocultar.
➔ Se puede ocultar cualquier tipo de fichero.
➔ Los ficheros a ocultar pueden ser previamente encriptados.
➔ Es posible la esteganografía recursiva (un fichero oculto dentro de un fichero, que a su
Características vez está oculto dentro de un fichero, que a su vez está oculto dentro de un fichero...)
➔ Como ficheros ocultadores se suelen ➔ Como ficheros ocultadores se suelen
usar ejecutables. usar imágenes y sonido.
➔ El fichero resultante es perfectamente
normal, lógico y coherente.
➔ No se aumenta el tamaño del fichero
ocultador.
➔ Sin conocer el algoritmo
esteganografiador, es casi imposible ni
No se modifica el contenido del
Ventajas
➔
siquiera detectar que el fichero
fichero ocultador
resultante esconde algo.
➔ Conociendo el algoritmo ocultador, es
estadísticamente muy difícil obtener el
fichero oculto. (Si el algoritmo está
bien diseñado).
➔ Es bastante resistente frente a ataques.
➔ Si un atacante consiguiera el fichero ocultador original y el fichero ocultador con la
información añadida, podría obtener la información oculta fácilmente.
➔ Hay que crear huecos artificiales
donde esconder la información
Inconvenientes oculta.
➔ Aumenta el tamaño del fichero ➔ Modifica el contenido original del
ocultador. fichero ocultador.
➔ Es fácilmente detectable. (Se pueden
encontrar los trozos de código inútil).
➔ Es débil frente a ataques.
4. La Esteganografía Digital en la práctica
Todo esto es muy bonito y muy interesante... ¿pero cómo lo podemos aplicar? Evidentemente
hay dos maneras... Puedes implementar tus propios algoritmos esteganográficos para ocultar la
información (pero este recurso está limitado a unos pocos...), o también puedes utilizar programas
esteganográficos ya existentes.
Voy a explicar aquí la utilización de un programa de esteganografía sumamente sencillo. Se
llama steghide y funciona bajo linux. Hay otras aplicaciones para linux y para las plataformas
Windows... Al final encontrarás enlaces a algunas de ellas.
Steghide es un paquete disponible en el repositorio de Debian Etch. Se instala con el comando:
prompt# aptget install steghide
Una vez hecho esto, ya estará disponible como un comando más del sistema.
Para hacer una demostración, he escogido varios ficheros:
✔ He elegido ocultar la hoja de datos técnicos del punto de acceso Linksys WAP54G, en
formato pdf. Es el fichero WPA54G.pdf.
✔ Como fichero “ocultador”, he elegido una preciosa foto de la escultura que hay en
Córodba en mitad del río, llamada estatua.jpg.
✔ He ocultado la hoja de cálculo en la imagen, usando steghide, obteniendo el fichero
esteganografiado estatua2.jpg. Aparentemente contiene sólo la fotografía de la estatua en
el río, aunque internamente incluye también el fichero pdf.
Para esteganografiar, hay que ejecutar el comando steghide indicando el archivo a ocultar, el
archivo ocultador y el nombre del archivo esteganografiado resultante. Al ejecutar, el programa pide
una contraseña (a la que llama salvoconducto).
prompt$ steghide embed ef WAP54G.pdf cf estatua.jpg sf
estatua2.jpg
Para invertir el proceso, hay que ejecutar el comando steghide, indicando el nombre del
archivo esteganografiado y un nombre del archivo para el “secreto” extraído. Al ejecutar, el programa
pide la contraseña. Si no es correcta, no extraerá la información oculta.
prompt$ steghide extract sf estatua2.jpg xf WAP54G.pdf
A continuación muestro las consolas relativas a los dos procesos:
Pantalla1: Proceso de “esteganografiar”: oculta el fichero “WPA54G.pdf” dentro del fichero “estatua.jpg”,
produciendo el fichero “estatua2.jpg”. (Se usó como contraseña “estudiaenlinea”).
Pantalla2: Proceso de “desesteganografiar”: Obtiene el fichero “WAP54G.pdf” a partir del fichero “estatua2.jpg”. (Se
usó como contraseña “estudiaenlinea”).
Y por si quedara duda, os muestro las dos imágenes, la original y la que tiene el fichero
oculto... ¿Cuál es cuál?
5. Archivos incluidos en esta práctica.
Adjunto a este documento incluyo los siguientes ficheros:
✔ WAP54G.pdf. Es el fichero pdf que se oculta.
✔ estatua.jpg. Es el fichero “portador”, antes de incluir la información oculta.
✔ estatua2.jpg. Es el fichero esteganografiado, es decir es la imagen con el fichero oculto
incluido. A partir de él se puede obtener el fichero WAP54G.pdf ejecutando el comando
descrito anteriormente y usando como contraseña “estudiaenlinea”.
6. Enlaces interesantes sobre el tema.
✔ http://steghide.sourceforge.net/ Página oficial de Seteghide. (In English).
✔ http://www.fbi.gov/hq/lab/fsc/backissu/july2004/research/2004_03_research01.htm
Impresionante documento del FBI que explica la esteganografía en general y la digital en
particular. Muy bueno. (In English).
• http://www.nakasoft.net/xiao/esp/ Página de Xiao Steganography. Incluye el programa
y vídeos explicativos.
✔ http://lifehacker.com/software/encryption/hidefilesinjpegimages207905.php Explica
cómo hacer esteganografía con WinRar, si bien ,se consiguen ficheros muy débiles frente
a ataques. (In English).
✔ http://openstego.sourceforge.net/ Página principal de OpenStego, utilidad esteganográfica
para Linux y Windows. Es Freeware. (In English).
• http://www.dragonjar.org/openstegosolucionlibreparaesteganografia.xhtml Tutorial
de OpenStego. (En castellano).
✔ http://www.invisiblesecrets.com/ Página principal del software “Invisible Secrets”, para
plataformas Windows. Es de pago. (In English).