Curso de privacidad y protección de comunicaciones digitales


   Lección 0. Introducción. Problemática en la privacidad de comunicaciones digitales
   Lección 1. Introducción al cifrado de la información. Herramienta GPG y OpenSSL
   Lección 2. Cifrado de discos: proteger tu privacidad de forma sencilla y efectiva
   Lección 3. Comunicaciones seguras mediante mensajería instantánea
   Lección 4. Protección de comunicaciones en dispositivos móviles
   Lección 5. Protección de comunicaciones en redes sociales
   Lección 6. Malware: orígenes y evolución
   Lección 7. Canales subliminales. Esteganografía




Lección 7. Canales subliminales. Esteganografía
Dr. Alfonso Muñoz - 02/01/2014
Security researcher & Co-editor Criptored - Twitter: @mindcrypt

Temario

Apartado 1. Definiciones
Apartado 2. Antecedentes. Esteganografía clásica o pura
Apartado 3. Procedimientos esteganográficos en la actualidad
    3.1. Tendencias en el diseño de estego-sistemas. Portador público
    3.2. Técnicas generales de ocultación
    3.3. Tendencias de ocultación en redes de telecomunicación
    3.4. Esteganografía en imágenes, audio y vídeo digital
Apartado 4. Detección de comunicaciones ocultas. Contramedidas
    4.1.Estegonálisis. Clasificación de ataques y tendencias
Apartado 5. Recomendaciones
    5.1. Balance perceptibilidad-ocultación. Selección del estegomedio más apto y la técnica más adecuada
    5.2. Minimizando el impacto en el portador mediante matrices de codificación y distribución de la información
Apartado 6. Algunas referencias



El objetivo de esta lección se centra en resaltar los conceptos más importantes referidos a la creación de comunicaciones enmascaradas/ocultas utilizando procedimientos esteganográficos. El presente texto pretende de una manera didáctica resaltar las diferentes técnicas que existen hoy día, más allá de las que aplican a contenido multimedia y que pudieran ser más conocidas. Dado el carácter divulgativo de esta lección hay muchas fórmulas matemáticas que serán omitidas. Realmente no son necesarias para alcanzar un objetivo mucho más ambicioso una visión global de esta ciencia que puede facilitar la protección de comunicaciones digitales mediante procedimientos complementarios a la ciencia de la criptología.

APARTADO 1. DEFINICIONES

El ser humano siempre ha tenido secretos de muy diversa índole, y ha buscado mecanismos para mantenerlos fuera del alcance de miradas indiscretas. Esta necesidad tiene hoy día una mayor relevancia en la protección de las comunicaciones digitales, donde la investigación y desarrollo de nuevas técnicas ha avanzado notoriamente en las últimas décadas para evitar, o minimizar, ataques de revelación, supresión o alteración de la información intercambiada entre diferentes actores. Un pilar fundamental en este proceso ha consistido en apoyar la seguridad de los procedimientos implementados en el uso de la criptografía. Esta ciencia tiene entre sus virtudes facilitar servicios de autenticidad, confidencialidad e integridad de la información almacenada o intercambiada. Su problema fundamental recae en la visibilidad de su uso, es decir, las comunicaciones cifradas pueden ser detectadas, aunque no por ello revelada la información que se protege, pudiendo impedir la comunicación entre entidades que se comuniquen mediante estos procedimientos o localizar a las fuentes que transmiten la información para acciones posteriores. De la necesidad de desarrollar nuevos mecanismos para complementar a esta ciencia surge el interés de uso de la esteganografía. Esta ciencia se encargará de ocultar la existencia misma de una comunicación. En la práctica la información, siempre que sea posible, irá previamente cifrada, consiguiendo así un doble nivel de seguridad.

La esteganografía es la ciencia y el arte de ocultar una información dentro de otra, que haría la función de tapadera o cubierta, con la intención de que no se perciba ni siquiera la existencia de dicha información. A menudo la utilización de esta tapadera o cubierta con fines esteganográficos recibe el nombre de estegomedio. Así dependiendo de la tapadera que estemos utilizando hablaremos de estego-imágenes (si se usa una imagen inofensiva como tapadera), estego-vídeo, estego-audio, estego-texto, etc. En teoría, sólo quienes conozcan cierta información acerca de la ocultación, un secreto (típicamente una clave), estarían en condiciones de descubrirla. En la criptografía, en cambio, no se oculta la existencia del mensaje sino que se hace ilegible para quien no esté al tanto de un determinado secreto, la clave. No obstante, una característica que ambas comparten es que se trata de que un emisor envíe un mensaje que sólo puede ser entendido por uno o varios receptores apoyándose en el hecho de que ambos extremos de la comunicación comparten un secreto específico.

El término esteganografía, cuyo origen etimológico proviene de las palabras griegas Steganos (oculto) y Graphein (escribir) se puede traducir como escritura oculta y llega a nuestros días como una traducción del término inglés steganography, que a su vez proviene del título del libro Steganographia, escrito por el abad alemán Johannes Trithemius (1462-1516) en 1499. El libro Steganographia, posiblemente el trabajo más famoso del autor, está compuesto por 3 volúmenes, escritos en latín. Los dos primeros recogen procedimientos de escritura oculta, mientras que el tercero, hace referencia a temas mágicos, como astrología o magia negra. Los trabajos de Johannes Trithemius son considerados como influyentes en la evolución de la criptografía, así como influyente en la historia de la esteganografía, ya que define sistemas para ocultar mensajes secretos dentro de mensajes aparentemente inofensivos. El libro Steganographia, tuvo una circulación reducida en el siglo XVI, concretamente en círculos privados, hasta que se publicó finalmente en 1606.

Independientemente de su origen etimológico, resulta muy complejo datar un origen exacto de las primeras comunicaciones utilizando procedimientos esteganográficos. En muchas ocasiones, las escrituras de civilizaciones antiguas pueden parecer sistemas cifrados e incluso procedimientos de ocultación de mensajes. Sin embargo, es habitual que consistan en lenguas muertas de las cuales se ha perdido la capacidad de interpretación. En otras ocasiones, ha sido posible interpretar el lenguaje, como sucedió con la piedra Rosetta y los jeroglíficos. En otras circunstancias, esa incapacidad por comprender una lengua se utilizó como procedimiento criptográfico con utilidad militar. Un caso significativo fue en la II Guerra Mundial donde el ejército norteamericano utilizó indios navajos (codetalkers) como oficiales de radio.



APARTADO 2. ANTECEDENTES. ESTEGANOGRAFÍA CLÁSICA O PURA

Desde la antigüedad hasta finales del siglo XX (en torno a la década de los 80) se ha documentado el uso de procedimientos de esteganografía clásica o pura. En este sentido, la esteganografía clásica o pura se puede definir como todo aquel conjunto de métodos de ocultación, que se mantienen en secreto, que permiten esconder un mensaje aprovechándose de un canal específico o tapadera, habitualmente la tapadera utilizada es desconocida para el potencial atacante. Se habla entonces de esteganografía pura ya que su seguridad está basada en el desconocimiento, es decir, el atacante no conoce la técnica de ocultación empleada por el emisor ni el medio donde oculta la información deseada.

A continuación se destacan sólo algunos sucesos significativos en el periodo histórico citado. Estos proporcionarán una perspectiva global de la utilidad de la esteganografía en el pasado y qué actores han estado interesados en utilizarla. En ciertas ocasiones, ciertas técnicas han sido puestas en duda por diferentes historiadores, no obstante, lo importante en este punto es centrarse en la inventiva de las técnicas propuestas independientemente si estas fueron utilizadas o no como indican la mayoría de libros que se pueden consultar.

Con este condicionante, un buen comienzo para observar este conjunto de trucos y artimañas, para dificultar a un “enemigo” detectar información sensible que debe permanecer oculta a su conocimiento, puede datarse en el siglo V a.C gracias a la obra Historias del historiador griego Heródoto. Esta obra recoge en sus crónicas los conflictos entre Grecia y Persia, de especial interés desde el punto de vista de la esteganografía. Algún ejemplo:

  1. Historia de Histiaeo. Según esta crónica, desde la corte de Persia Histiaeo quería alentar a su yerno Aristágoras de Mileto para que se rebelara contra el rey de Persia. Para transmitir sus instrucciones de forma segura, Histiaeo afeitó la cabeza de un mensajero, y tatuó el mensaje en su cuero cabelludo esperando a continuación a que le volviera a crecer el pelo. El mensajero pudo viajar sin levantar sospechas y hacer llegar la información que fue revelada al afeitarse la cabeza. Esta "sutil" comunicación permitió a los griegos percatarse de los planes persas para conquistarlos.

    Una variante de esta idea se relata en otra crónica donde el noble Harpagus transmitió una información a Cyrus, rey de Persia, indicándole que recibiría ayuda desde "dentro" para solucionar la opresión que sufría su país. Para ello vistió a un mensajero de cazador y le proporcionó una liebre en cuyo vientre afeitado había escrito el mensaje a transmitir. Este mensaje permanecería oculto tras crecer el bello. El cazador con la liebre pasaron desapercibidos.

  2. Historia de Demarato. Demarato, un griego que vivía en la ciudad Persa de Susa, decidió avisar a Esparta que el rey persa Jerjes estaba planeando invadir Grecia. La dificultad recaía en cómo enviar el mensaje sin que fuera interceptada por los vigías persas, para ello ingenió un mecanismo de comunicación que consistía en retirar la cera de un par de tablillas de madera, escribir la alerta de la proliferación militar en Persia y luego cubrir el mensaje con cera. Esta tabla, aparentemente en blanco, pasó completamente desapercibida, incluso para sus receptores durante un tiempo, hasta que la hija de Cleómenes (esposa de Leónidas) lo vaticinó y descubrieron el método tan sutil de comunicación. Como resultado obvio de esta advertencia, los griegos comenzaron a armarse.

En otras culturas, con menos influencia de nuestra cultura occidental, paralelamente se produjeron procedimientos de lo más curiosos. Un ejemplo, es en la cultura milenaria China donde se escribían mensajes sobre seda fina, que luego era aplastada hasta formar una pelotita diminuta que se recubría de cera para facilitar que el mensajero ocultara la información tragándose la bola. Pero sin duda, unos de los mecanismos esteganográficos más tradicionales fueron las tintas invisibles. Clásicamente las tintas invisibles son líquidos (aunque en la actualidad existen otras modalidades de aplicación como, por ejemplo, mediante spray) que se aplican a una superficie concreta y al secarse permiten ocultar a la vista la información escrita. En general, se requiere calor, luz (en la actualidad, infrarrojos o luz ultravioleta) o alguna mezcla química especial para cambiar su color y revelar la información enmascarada. Una referencia clásica a la hora de hablar de tintas invisibles se encuentra en el siglo I d.c. El naturalista, escritor y militar romano Plinio el Viejo refleja en su obra Historia Natural cómo la leche de la planta Tithymallus podía usarse como tinta invisible. Esta sustancia se vuelve transparente al secarse, pero calentándola suavemente se chamusca y se pone marrón.

Desde entonces es conocido cómo muchos fluidos orgánicos se comportan de manera similar, muchos de ellos porque son ricos en carbono. De hecho, es posible improvisar tinta invisible con leche, zumo de limón (en general, zumos de frutas), vinagre, vino, azúcar diluida, la orina o el propio semen.

En el siglo XVI, el científico italiano Giovanni Porta describió una variante curiosa de tinta invisible escondiendo un mensaje dentro de un huevo cocido. El proceso consistía en hacer una tinta con una mezcla de una onza (28 gramos) de alumbre y una pinta de vinagre (la "pinta" inglesa son 568 mililitros), y escribir el mensaje utilizando esta tinta sobre la cáscara. La solución penetra la cáscara porosa y deja un mensaje en la superficie de la albúmina del huevo duro, que sólo se puede leer si se pela el huevo.

Toda esta experimentación en tintas invisibles se fue volviendo muy sofisticada con el paso de los siglos, tanto es así que su uso masivo en conflictos bélicos en el siglo XX fue notorio. Es en el siglo XX donde surge con más fuerza la idea de tintas específicas que idealmente solo reaccionan, se invierten, con un único compuesto químico. La paranoia que las agencias de inteligencia tenían con las tintas invisibles hizo que durante la II Guerra Mundial, alemanes y estadounidenses comprobaran que todas las cartas que caían en sus manos no contuvieran tinta invisible, lo cual era algo tedioso debido a la diversidad de tipos de tintas y sustancias que debían aplicar para invertirlas. Fue entonces cuando se avanzó en técnicas de detección basadas en luz ultravioleta. Todo este conocimiento de tintas invisibles, hoy día, tiene una aplicación civil importante y puede observarse, por ejemplo, en las marcas de agua presentes en billetes de papel moneda o en las tintas ultravioletas.

Pero antes de avanzar a nuestro días, es importante echar un vistazo al avance en procedimientos de ocultación de comunicaciones en los siglos XVI y XVII como culmen de la cultura renacentista, procedimientos que influirían en otros más modernos ya en los siglos XX y XXI.

Un ejemplo esteganográfico curioso en este periodo tuvo lugar en la Inglaterra del siglo XVI donde la esteganografía tuvo una gran importancia en las conspiraciones urgidas entre los nobles católicos ingleses que querían destronar a la reina protestante Isabel I (1533-1603) y entregar el trono a la católica María I de Escocia (1542-1587). La comunicación entre los conspiradores y la reina María debía pasar lo más desapercibida posible ya que cualquier conocimiento de esta implicaría ser acusados de alta traición y condenados a muerte. Por este motivo, emplearon tanto criptografía como esteganografía para ocultar sus mensajes. Un mecanismo recurrido fue la ocultación de mensajes en barriles de cerveza que se transportaban sin levantar la atención.

Muy diferente fue el procedimiento que un siglo después de estos acontecimientos, el científico alemán Gaspar Schott (1608-1666) describiría en su libro Schola Steganographica. En esta obra se describía como ocultar mensajes en partituras de música, haciendo equivaler una nota musical concreta con una letra. En ningún momento se buscó que las notas musicales tuvieran alguna coherencia y su resultado diera una melodía agradable, en cualquier caso, su representación, por ejemplo, en papel, permitía perfectamente ocultar un mensaje. Basado en estas ideas surgieron otros procedimientos de ocultación, como los basados en el número de ocurrencias de las notas. Se han documentando mensajes ocultos en músicos famosos como J.S. Bach o John Wilkins.


Figura 1. Equivalencia de notas musicales y texto a ocultar.

John Wilkins (1614-1672) desarrolló, además, obras relacionadas directamente con el mundo de la criptografía y esteganografía como Mercury, or The Secret and Swift Messenger en 1641. Es destacable el desarrollo de procedimientos para ocultar información utilizando dibujos geométricos, es decir usando puntos, líneas o triángulos de un dibujo para enmascarar información. Según Jacqueline L. Tobin y Raymond G. Dobard, autores de la obra Hidden in Plain View: A Secret Story of Quilts and the Underground Railroad, ideas de este tipo permitieron a esclavos afroamericanos establecer comunicaciones enmascaradas, aprovechando las tradiciones de su civilización, cultura y religión, desde finales del siglo XVIII hasta por lo menos la Guerra de la Independencia Estadounidense, siglo XIX. A lo largo de los años, los esclavos afroamericanos constituyeron una red encubierta apoyados por familias blancas comprometidas para asistir a los esclavos fugitivos. Se habilitaron casas seguras, estaciones y refugios para ocultarse, al igual que se estableció diferentes códigos secretos de comunicación para facilitar a los esclavos el viaje a la libertad. Uno de los códigos de comunicación oculto consistía en bordar en colchas, en terminología inglesa quilt code, una serie de patrones que proporcionaban determinada información. Los captores no veían nada raro en que las mujeres de los esclavos colgaran las colchas al aire libre para airearlas, especialmente en primavera y meses de verano.


Figura 2. Patrón "Bow Tie".

La simbología de los patrones bordados era muy variada, por ejemplo, proporcionaban la dirección por donde escapar, indicaban si era necesario preparar herramientas para el largo viaje, indicaban si era mejor tomar un camino por la montaña, indicaban si una persona era segura para "hablar", consejos de no andar en línea recta para evitar rastreos, etc. Por ejemplo, la Figura 2 muestra un patrón que indicaba a los esclavos que se deshicieran de su ropa vieja y buscaran otra para encajar mejor en la nueva ciudad. Un método muy sencillo, a la vez que eficaz, cuya seguridad se basaba en el secreto compartido boca a boca entre los esclavos.

En el mismo periodo de los ejemplos anteriores, siglos XVI y XVII, aprovechando la corriente renacentista en arquitectura, escultura y pintura, aparecen de nuevos procedimientos ingeniosos de ocultación. Se comienza a utilizar imágenes anamórficas, como un mecanismo ideal para camuflar información, sobre todo política. Una anamorfosis, como tal, es una deformación reversible de una imagen a través de procedimientos matemáticos u ópticos, que se manifiesta cuando se observa de una manera especial. Una imagen anamórfica famosa es el Vexierbild creada por Erhard Schon (1491-1542) estudiante del famoso artista alemán Albrecht Durer. A primera vista aparecen lugares, costas, barcos y ciudades, pero si se analiza la obra con más cuidado se descubre la composición anamórfica de Carlos V, Fernando I, el Papa Pablo III y Francisco I.


Figura 3. Patrón Obra Vexierbild de Erhard Schon. A la derecha se observa las personalidades una vez "comprimida" la imagen.

Gran parte de todo este conocimiento recopilado del renacimiento repercutirá siglos más tarde en los procedimientos fotográficos para miniaturizar información. En 1857, Brewster sugirió la posibilidad de ocultar mensajes secretos mediante reducción fotográfica en un espacio no mayor que un punto de tinta. En 1860, el fotógrafo francés Rene Dragon consiguió imágenes pequeñas, después de solucionar una serie de problemas técnicos. Los microfilms hicieron su aparición y desde entonces se han documentado multitud de ejemplos de su uso. Un ejemplo de utilización fue durante la guerra Franco-Prusiana de 1870-1871. Mientras París y el emperador Napoleón III se encontraban sitiados, y sus canales de comunicación interrumpidos, se habilitaron una serie de mecanismos para enviar mensajes microfotografiados utilizando palomas mensajeras. Otro ejemplo de utilización fue en la guerra Ruso-Japonesa de 1905 donde los oficiales ocultaban imágenes microscópicas el lugares tan curiosos como los agujeros de la nariz, los oídos o incluso debajo de las uñas. Esta tendencia hizo, por ejemplo, que los alemanes en la I Guerra Mundial utilizarán la reducción fotográfica para ocultar páginas de información o fotografías en puntos sobre cartas o periódicos. La evolución de estos procedimientos dio lugar a la técnica de ocultación conocida como micropunto en la II Guerra Mundial y de gran uso durante la Guerra Fría, de la cual se han escrito multitud de ensayos. Esta técnica permitió reducir fotográficamente páginas de texto a un punto de menos de 1 milímetro de diámetro. Estos micropuntos eran ocultados en el punto de una frase en una carta, detrás de un sello pegado en un sobre, etc.

En nuestros días, aplicaciones "curiosas" de estas ideas pueden verse en ciertas impresoras que imprimen puntos microscópicos invisibles al ojo humano que permiten, entre otras cosas, rastrear un documento una vez impreso. Este conjunto de impresoras es conocido como "impresoras espías" por el grupo de derechos civiles EFF Electronic Frontier Foundation. Puede obtenerse más información en su proyecto Machine Identification Code Technology Project.

Por último cabe destacar dos tapaderas muy útiles: el papel y el cuerpo humano. Antes de la revolución tecnológica (Internet, redes sociales, etc.) los textos escritos en papel eran de las pocas alternativas ampliamente utilizadas para transmitir información. Esto hizo que urgieran diferentes procedimientos esteganográficos para crear comunicaciones enmascaradas en este tipo de soporte. En próximos apartados profundizaremos en esta forma de ocultación vinculándolo con sus mejoras actuales. Por otro lado, en una situación extrema, cuando no es posible ni siquiera utilizar una tapadera establecida, el cuerpo humano puede utilizarse para crear ese canal oculto de información. Algún ejemplo documentado son señales con las manos en el caso de USS PUEBLO 1968 o la utilización del código MORSE mediante pestañeo (Jeremiah Denton en la guerra de Vietnam transmite la palabra T-O-R-T-U-R-E mientras sus captores le obligan a difundir propaganda).

En resumen, la esteganografía ha tenido históricamente una utilidad manifiesta en conflictos militares, espionaje, diplomacia, política y lo que hoy día se podría denominar libertades civiles. Hoy día, como se verá posteriormente, estos usos se siguen manteniendo aunque también es notorio su auge en espionaje económico-industrial y la distribución de material protegido por derechos de autor.

En cuanto a la distribución de material protegido por derechos de autor un ejemplo significativo que resalta la sofisticación para la distribución de películas se produjo en octubre de 1999. El grupo de hackers denominado MoRE (Masters of Reverse Engineering) publicó en Internet el código fuente del programa DeCSS (Decoder Content Scramblins System) un software que anulaba el sistema de protección de los DVD y facilitaba su reproducción, inicialmente, en sistemas GNU/Linux. Poco después, la industria llevó a juicio al único miembro del grupo con identidad conocida, el joven noruego Jon Johansen (15 años), acusándolo de robo de datos y el desarrollo de software que facilitaría la piratería al ir en contra de las leyes de propiedad intelectual. Al mismo tiempo, la MPAA (Motion Picture Association of America) empezó a demandar a todo aquel sitio web que almacenaba o enlazaba a una copia de dicho programa. Como forma de protesta contra el juicio al joven Jon Johansen, y para evidenciar las contradicciones de la legislación que prohibía la publicación del programa DeCSS, se propuso representar el código fuente del programa ilegal bajo una forma completamente legal.

Se pensó en convertir la información binaria del programa en un número, concretamente en un número primo. La ventaja de este elección son varias, pero la principal es la distribución. No existe jurisprudencia para prohibir la publicación de un número primo. Por ejemplo, la base de datos Prime pages, lleva el registro de los números primos más grandes. Si el número primo fuese lo suficientemente grande entonces sería publicado y esto facilitaría su distribución y conocimiento por el público. Basándose en esta idea Phil Carmody generó, en marzo de 2001, varios números candidatos a número primo cuya representación binaria corresponde a una versión comprimida (algoritmo gzip) del programa fuente DeCSS escrito en lenguaje de programación C. Uno de ellos se identificó como el décimo primo más grande conocido, número de 1.401 dígitos, lo que facilitó aún más su distribución. Después de esta experiencia, Phil Carmody creó también otro primo de 1.811 dígitos, el cual corresponde a un programa ejecutable, escrito en código máquina que implementa la misma funcionalidad que el anterior. Si se aplica en forma estricta la ley DMCA (Digital Millennium Copyright Act), este número sería ilegal en los Estados Unidos de América, lo cual por otro lado no tiene sentido ninguno.



APARTADO 3. PROCEDIMIENTOS ESTEGANOGRÁFICOS EN LA ACTUALIDAD

3.1. Tendencias en el diseño de estego-sistemas. Portador público

Después de la II Guerra Mundial muchas ramas de la ciencia experimentaron un avance significativo. Los nuevos conocimientos en teoría de códigos (matemáticas), telecomunicaciones e informática, química, física, biología, procesamiento digital de contenido multimedia, etc., tuvieron su reflejo notorio en la ciencia de la esteganografía. Estos nuevos procedimientos ya no se restringen a los clásicos conflictos bélicos, sino a todas aquellas facetas que requieren ocultar una información a un grupo de individuos. Tiene aplicación directa en: política, comunicaciones militares, diplomacia, mecanismos de protección de propiedad intelectual, defensa de libertades civiles, secretos industriales, intrusión en sistemas informáticos (por ejemplo, espionaje industrial), ocultación de malware, etc. Es en esta nueva época cuando se empieza hablar de la ciencia de la esteganografía moderna. Esta nueva vertiente consiste en que la seguridad de los procedimientos esteganográficos no depende de mantener en secreto el algoritmo de ocultación, principios de Kerckhoffs, e incluso tampoco del tipo de la tapadera/cubierta utilizada. La seguridad recae exclusivamente en mantener una pequeña información secreta entre los intervinientes de la comunicación enmascarada, típicamente una clave. En las últimas dos décadas se ha publicado muchas investigaciones sobre esta temática y se ha intentado formalizar matemáticamente lo más rápido posible diferentes aspectos de esta ciencia. Por ejemplo, en 1998, Cachin C. (An Information Theoratic Model for Steganography, in Proceedings of the Second International Workshop on Information Hiding, 1998) publicó una destacable definición formal de la seguridad de un estegosistema, donde incluso se formalizó la idea de la seguridad perfecta en un estegosistema, secreto perfecto (a semejanza de la criptografía), si se da la condición que la probabilidad de distribución de estego-cubiertas en un canal y la probabilidad de distribución de las cubiertas sean iguales. La condición es que la probabilidad de distribución de las cubiertas no se vea alterada durante el proceso de inserción del mensaje oculto.

Aunque el mejor procedimiento de ocultación es "aquel que funciona" (sea esteganografía pura o no), está claro que la tendencia actual, por lo menos académica e industrial, es la utilización de portadores públicos y técnicas de ocultación conocidas por los atacantes. Esta información no debería facilitarles la detección de información oculta en esos portadores/tapaderas. Por ejemplo, son comunes las investigaciones de ocultación (y de detección) en imágenes digitales con formato JPEG.

En la actualidad, existen tres tendencias de diseño de sistemas esteganográficos (excluimos en este punto la esteganografía pura):

a) Estegosistemas de clave simétrica

Es el esquema de estegosistema más común. Emisor y receptor comparten una clave secreta (estegoclave) y toda la seguridad del sistema se aposenta en ella. Lo normal es que el algoritmo esteganográfico y el tipo de tapadera utilizado sean públicos. De la clave del sistema, estegoclave, suelen derivarse subclaves que se utilizan para cifrar la información a ocultar y tiene utilidad en el proceso de ocultación. Por ejemplo, si el algoritmo esteganográfico modifica elementos de un portador de manera pseudoaleatoria, es común, que subclaves derivadas de la estegoclave primaria alimenten un generador de números pseudoaleatorios del cual se obtienen las posiciones de los elementos concretos a modificar.

b) Estegosistemas de clave pública

Son aquellos sistemas que requieren el uso de dos claves. Una clave pública para el proceso de ocultación y una clave privada para obtener el mensaje oculto. Algunos artículos recomendados sobre este tipo de estegosistemas pueden verse en [1][2][3].

c) Estegosistemas cuánticos

Estos sistemas aprovechan los conocimientos sobre física cuántica para diseñar sistemas que faciliten la ocultación de información. Existen varias formas de realizar esto, por ejemplo, aprovechándose del ruido cuántico o de los códigos correctores de errores cuánticos. Una introducción recomendada a estos sistemas puede verse en [4][5][6]. Ideas parecidas se han utilizado en las últimas décadas para establecer comunicaciones enmascaradas utilizando diversas características de la naturaleza (comunicaciones atmosféricas con ciertas peculiaridades, ruido ambiente, etc.).

3.2. Técnicas genetrales de ocultación

El interés concreto de un sistema esteganográfico dependerá de 3 características: capacidad (cantidad de información que puede ser ocultada), seguridad/invisibilidad (probabilidad de detección por un estegoanalista) y robustez (cantidad de alteraciones dañinas que el medio puede soportar antes de que se pierda la información oculta).

Considerando estas características la búsqueda de un procedimiento concreto de ocultación en un medio puede ayudarse teniendo en cuenta 3 grandes líneas de creación de algoritmos esteganográficos [7]:

    1. La cubierta existe y la ocultación de información no la modifica.

    2. La cubierta existe y la ocultación produce alteraciones.

    3. La generación automática de la cubierta incluye la información a ocultar.

En los siguientes apartados se analizarán técnicas que se basan en la línea 2 y 3. Más peculiar es la línea de investigación 1. Esta línea hace referencia a todos aquellos mecanismos que permitirían ocultar información sin necesidad de modificar o generar un portador. Un ejemplo, puede consistir en la reordenación de elementos siempre y cuando esta no implique modificación del portador. Un ejemplo sencillo consistiría en tener 128 imágenes y enviarlas con un orden determinado. Otro ejemplo consistiría en seleccionar una imagen de un conjunto, esta selección permitiría ocultar información binaria. En general, este tipo de ejemplos no son muy prácticos y no permiten ocultar mensajes de tamaño medio o grande (centenas de bits).

3.3. Tendencias de ocultación en redes de telecomunicación

A continuación se presentan las tendencias de ocultación más famosas en comunicaciones digitales: a) ocultación en sistemas de ficheros y sistemas operativos, b) ocultación en el formato de ficheros, c) estructura lógico-física de los soportes de almacenamiento, d) tecnologías web y lenguajes de marcado, e) canales encubiertos con protocolos de comunicación y f) esteganografía lingüística. Dejamos para un apartado aparte la esteganografía multimedia (vídeo, audio e imágenes).

a) OCULTACIÓN EN SISTEMAS DE FICHEROS Y SISTEMAS OPERATIVOS

La mayoría de las técnicas esteganográficas centran su interés en el intercambio de información y la creación de canales de comunicación encubiertos. En ciertas ocasiones puede ser de utilidad utilizar procedimientos más o menos locales con beneficios concretos. En este sentido cobran mayor importancia los procedimientos de ocultación que se aprovechan de las características de los sistemas de ficheros y sistemas operativos. En el pasado estas técnicas han sido utilizadas con éxito en la ocultación de troyanos, la ocultación de herramientas tipo rootkit para escalada de privilegios, ocultación de medidas de protección software, ocultación de partición de datos, etc.

Algunos ejemplos famosos son:

1. Ocultación en fragmentación interna

Los Sistema Operativos, y concretamente sus sistemas de ficheros, trabajan con ficheros, estructuras lógicas que permiten acceder de forma conjunta a una serie de octetos guardados en un dispositivo. Desde un punto de vista físico, un fichero ocupa bloques de un elemento de almacenamiento, siendo un bloque (conjunto de octetos) la unidad mínima que maneja un sistema de ficheros concreto. El sistema de ficheros FAT16 utiliza, por ejemplo, bloques de 32 KBbytes, y el sistema de ficheros ext2 utilizado en entornos GNU/Linux, bloques de 4 KBytes (en realidad el tamaño de los bloques de un sistema de ficheros ext2 se puede decidir en su creación usando el mandato mkfs). Dado que el tamaño de un fichero no es un múltiplo exacto del tamaño del bloque, siempre hay parte de un bloque que no se usa, y está reservado para ese fichero. Esto es lo que se conoce como fragmentación interna del fichero o slack space. Partiendo de esta idea, es viable la utilización de la fragmentación interna de los ficheros para ocultar información, ya sean ficheros generados aposta con fragmentación interna u otros ya existentes. Ocultar datos en la fragmentación interna tiene una serie de ventajas a destacar, por un lado resultan invisibles al sistema de ficheros, a las aplicaciones y a las herramientas de validación de archivos convencionales. Por otro lado, tiene inconvenientes de portabilidad, ya que si un fichero con información oculta se copia con herramientas estándar la información de la zona de fragmentación interna se pierde, ya que sólo se copia los datos de usuario. En ciertos contextos esta desventaja podría ser una ventaja interesante, precisamente si interesa que el fichero copiado no se lleve la información encubierta. Esta técnica no se limita a discos duros, sino que puede ser aplicada a cualquier medio físico que soporte un sistema de ficheros. Lógicamente por su naturaleza, tiene el inconveniente que si el fichero aumenta de tamaño, posiblemente, está información se perderá, lo cual no tiene porque ser un problema si construimos ficheros aposta para ocultar la información o utilizamos ficheros del sistema que conocemos que no variarán su tamaño (ficheros de sistema). Una herramienta clásica que utiliza esta técnica de la fragmentación interna (también conocido como espacio vago) es la herramienta BMAP. Este tipo de técnicas deben ser consideradas por los comprobadores de integridad de ficheros, sistemas antivirus y cualquier software de análisis forense medianamente robusto.

2. Borrado de información

Salvo que se actúe de manera contraria cuando borramos un fichero en un sistema de ficheros únicamente se "eliminan" los enlaces a los diferentes bloques de octetos que lo constituyen marcándose estos como libres. Mientras que este espacio no se sobrescriba con una nueva información los datos previos permanecen inalterados, por ejemplo, en el disco duro de un ordenador. Existen multitud de herramientas para recuperar archivos borrados, tanto en plataformas Windows como en GNU/Linux. Por ejemplo, en el mundo Linux los ficheros borrados con el mandato “rm” pueden ser recuperados con herramientas como e2undel, recover, etc. Por tanto, si en determinadas circunstancias es posible recuperar la información borrada, este hecho se puede utilizar como un mecanismo de ocultación de información borrando ficheros en zonas donde la probabilidad de sobreescritura, y por tanto pérdida de datos, sea muy baja. Actualmente cualquier herramienta seria de análisis forense contempla la detección de estos casos.

3. NTFS Alternate Data Streams

Otro ejemplo muy famoso es la ocultación de código mediante los ADS en NTFS. NTFS (New Technology File System) es un sistema de ficheros propietario, desarrollado en esencia a lo largo de la década de los 90, utilizado, en principio, para sistemas operativos Windows NT, 2000 y XP. Entre todas las características que se le añadieron se decidió la implantación de NTFS ADS (NTFS Alternate data streams), flujos de datos alternativos, para proporcionar compatibilidad con el sistema de ficheros de Macintosh HFS (Hierarchical File System). En general, en el sistema de fichero NTFS, un fichero se constituye de diferentes flujos de datos. Por ejemplo, un flujo almacena la información de seguridad como los permisos del fichero, otro almacena los datos reales de usuario, etc. Sin embargo, el problema surge porque es posible la creación de flujos de datos ocultos. Es decir, distintos flujos de datos en un fichero que aparentemente no pueden ser accedidos. Por ejemplo, un fichero con 1 octeto de información podría tener enlazado otros flujos alternativos de cientos de bytes en uno o más flujos. Existen multitud de herramientas que permiten listar y detectar ADS, por ejemplo la herramienta LADS List Alternate Data Streams del autor Frank Heyne, crucialADS, etc.

4. Sistemas de ficheros esteganográficos - StegFS

Quizás un buen conglomerado de todos estos procedimientos sea el sistema de ficheros esteganográfico StegFS (licencia GPL) derivado de diferentes investigaciones. Una de ellas está publicada en el artículo StegFS: A Steganographic File System (1999) de los autores HweeHwa PANG, Kian-Lee TAN y Xuan ZHOU, que incluye estudios previos, como los realizados por A. Shamir, R. Anderson, R. Needham, A. McDonald, M. Kuhn, etc. El sistema StegFS oculta información en el sistema de ficheros, de tal forma que un usuario sin la clave de acceso correspondiente a ese fichero no es capaz de deducir su existencia, aunque conozca la estructura interna del sistema de ficheros y tenga acceso total al mismo. Es decir, ni siquiera el administrador de los equipos tendría la capacidad de localizar la información. Véamos algunas pinceladas de como funciona StegFS en GNU/Linux en sistemas de ficheros como son ext2 o ext3.

En general, el espacio de almacenamiento se divide en bloques de tamaño estándar y una serie de vectores de bits (bitmap), que indica si un bloque está libre o reservado (ocupado). Por ejemplo, un bit a cero en una posición determinada del bitmap indica que el bloque con número esa posición está libre, mientras que un bit a 1 significa bloque usado. La gracia de esta herramienta, es que todos los ficheros “normales” (no ocultos) se acceden a través del directorio raíz (en sistemas UNIX "/"), acceso que se realiza gracias a una estructura de enlaces con información sobre los distintos ficheros, los bloques de información que ocupan, etc., en general, la estructura de tabla de i-nodos en un Sistema UNIX. Sin embargo, si los bloques que forman un fichero no son enlazados a la tabla de i-nodos, aparentemente desde el sistema de ficheros esta información permanece oculta, pues el sistema operativo no dispone de información para enlazar los distintos bloques. Partiendo de esta idea, lo único que debe realizar la herramienta es marcar en el bitmap los bloques de información como usados para prevenir que el espacio reservado pueda volver a ser utilizado. No obstante, todavía un usuario con conocimiento de la estructura del sistema de ficheros y acceso completo al mismo podría deducir que bloques no están enlazados y, poder inferir en que bloques existe información oculta, aunque no tendría por qué ser capaz de determinar que bloques pertenecen a qué fichero. Para dificultar esta tarea StegFS crea bloques falsos de dos tipos (activa en el bitmap el bit correspondiente), por un lado, reserva de forma aleatoria algunos bloques que son abandonados (no tienen uso para ocultar información) para contrarrestar un posible intento de localización de datos ocultos simplemente mirando el bitmap. Sin embargo, esto implicaría efectos negativos en uso óptimo del espacio de almacenamiento. Por esto, en la práctica este número de bloques abandonados es aconsejable que no sea grande. Además de este tipo de información, StegFS mantiene uno o más ficheros ocultos "dummy". Un fichero "dummy" es un fichero falso que se actualiza periódicamente, simulando la existencia de ficheros reales que van cambiando, y que dificultaría un ataque basado en el estudio de alteración de los distintos bloques marcados en el bitmap y no enlazados. En general a cada fichero oculto se accede a través de su propia cabecera, la cual contiene tres estructuras de datos:

    1. Un enlace a una tabla de i-nodos que enlaza todos los bloques de datos en un fichero.

    2. Una firma que identifica de forma única el fichero.

    3. Una lista enlazada de punteros a bloques libres reservados por el fichero.

Todos los componentes del fichero, incluidos cabecera y datos, son cifrados con una clave de acceso para hacerlos indistinguibles de los bloques abandonados y ficheros dumnny para observadores desautorizados. Como se comentó, al no ser enlazados los ficheros en el directorio central la herramienta StegFS debe ser capaz de localizar la cabecera del fichero usando sólo un nombre físico del fichero y una clave de acceso. Para permitir esto en la creación de un fichero, StegFS marca el fichero con un firma hash calculada del nombre del fichero y la clave de acceso. Además, utiliza esta información como semilla (entrada) a un generador pseudoaleatorio de número de bloque, es decir, calcula un número de bloque de forma pseudoaleatoria y comprueba en el bitmap si esta libre en cuyo caso procede a almacenar la cabecera del fichero. Una vez que esta está reservada, los bloques subsiguientes del fichero se asignan aleatoriamente consultando el bitmap, y almacenando el enlace entre los bloques del fichero. Para evitar situaciones de sobreescritura debido a diferentes usuarios trabajando con un mismo nombre de fichero y clave de acceso, el nombre físico del fichero se deriva concatenándolo con el identificador de usuario en el sistema operativo (que es único por usuario y sistema) y la ruta completa del fichero.

La localización una vez conocido esto resulta semejante. StegFS utiliza el nombre de fichero y la clave de acceso para calcular el bloque a consultar, verifica si está asignado en el bitmap, y a continuación verifica que tiene una firma de fichero igual al hash calculado (se emplean algoritmos criptográficos como SHA1 y MD5). Extendiendo esta idea se comprende que StegFS tiene más efectividad en un entorno multiusuario, ya que al existir diferentes ficheros ocultos de usuarios, se le complica a un atacante determinar qué información corresponde a un usuario concreto. De nuevo, este sistema demuestra la sofisticación que puede presentar un sistema real que mezcla criptografía y esteganografía para proteger la información.

b) OCULTACIÓN EN EL FORMATO DE LOS FICHEROS

En los últimos años se han documentado diferentes procedimientos de ocultación que se basan en utilizar las características propias de los formatos de ficheros y cómo "ejecutan" estos los diferentes programas software que los reconocen. La idea detrás de todos estos procedimientos consiste en buscar una vez más "situaciones de redundancia" que permitan ocultar información: campos que no se validan correctamente, reordenación de parámetros, añadir información fuera de la estructura definida, etc. A continuación vamos a ver algunos ejemplos conocidos de este tipo:

- Técnica End Of File (EOF): La técnica de ocultación EoF es el mejor ejemplo de técnica que demuestra cómo es posible ocultar información cuando no se realizan las validaciones oportunas de la estructura de los ficheros. Esta técnica es conceptualmente muy sencilla (y también por ello puede automatizarse fácilmente su detección) y consiste en añadir la información a ocultar al final de un fichero con estructura. Normalmente el software que "carga/interpreta" un formato de fichero lee los datos contenidos en la estructura definida, no reconociendo más allá del fin de fichero indicado en dicha estructura. De esta forma se puede añadir información al final del fichero sin que afecte al "uso normal" del mismo. Por ejemplo, se puede ocultar información al final de imágenes digitales, audio, vídeo, ejecutables, ficheros de ofimática, etc. En Internet existen muchas herramientas que hacen uso de esta técnica, por ejemplo, la herramienta Camouflage. Además, hoy día, esta técnica es usada, por su sencillez y capacidad de ocultación, ampliamente para la distribución de material protegido por derechos de autor y pornografía adulta. Típicamente se utilizan herramientas que trocean la información (por ejemplo, camuflaweb) y luego la añaden en diferentes cubiertas (típicamente imágenes) que se distribuyen por Internet, por ejemplo, a través de cuentas de correo electrónico accesibles mediante clientes de peer2mail u otras propuestas similares.

- Ficheros ejecutables. Reordenación de instrucciones máquina - Herramienta Hydan: La estructura de los ficheros ejecutables se ha utilizado en las últimas décadas para ocultar código con propósitos muy dispares, especialmente virus. Tradicionalmente se buscaban áreas libres del ejecutable o se añadía el “código/información” al final del fichero para incrustar la información deseada. Otras propuestas algo más sofisticadas se aprovechan de la reordenación de las instrucciones máquina que forman el ejecutable para ocultar una información dada. En este sentido apunta la herramienta Hydan. La herramienta Hydan es el resultado de la investigación de Rakan El-Khalil de la Universidad de Columbia. Esta investigación se centra en el estudio de la redundancia del conjunto de instrucciones en la familia de microprocesadores x86, por ejemplo, procesadores Intel. Su estudio, de forma concisa, concluyó que existen diferentes instrucciones que pueden realizar el mismo trabajo en un programa ejecutable, y por tanto, se puede sustituir una instrucción por otra equivalente, utilizando esto para representar bits de datos ocultos. Un ejemplo sencillo de esta equivalencia se puede ver en la instrucción suma. Matemáticamente una instrucción que sume 50 (por ejemplo) a otro valor puede ser reemplazada por otra instrucción que reste –50 a ese valor. En este simple ejemplo, sustituyendo sumas por restas (y viceversa) podríamos ocultar un bit por cada operación de suma o resta, sin cambiar el funcionamiento del programa ni aumentar su tamaño. Por ejemplo, si se desea oculta la información binaria “00, 01 o 11” en un programa ejecutable de tal forma que en el ejecutable esteganografiado la operación suma equivalga a un bit oculto a 0 y la operación resta a un bit a 1, tendríamos por ejemplo:



Figura 4. Ejemplo de funcionamiento de la herramienta Hydan.

Hydan presenta un ratio de ocultación aproximado de 1/110, es decir, permite almacenar un octeto de información oculta por cada 110 octetos de código máquina (bytes de las instrucciones). En general, la distribución de la información a ocultar en un ejecutable dependerá en última instancia de como sea el ejecutable (que instrucciones tenga) y de la cantidad de información a ocultar.

- Formato de ficheros de compresión En los últimos años se ha puesto de moda la manipulación o el aprovechamiento de la estructura de los formatos de ficheros comprimidos para ocultar información con algún tipo de utilidad práctica. En el BlackHat Europe 2010, Mario Vuksan, Tomislav Pericin y Brian Karney proporcionaron un resumen interesante de este tipo de técnicas en la presentación Hiding in the Familiar: Steganography and Vulnerabilities in Popular Archives Formats - (ZIP, 7ZIP, RAR, CAB y GZIP). En general, se busca campos que no son validados correctamente, reordenación de parámetros, etc., con utilidad esteganográfica. Es muy recomendable su lectura, entre sus multiples utilidades facilita la distribución de malware en ficheros comprimidos impidiendo que motores antivirus detectarán su presencia.

c) ESTRUCTURA LÓGICO-FÍSICA DE LOS SOPORTES DE ALMACENAMIENTO. ¿ESTEGANOGRAFÍA HARDWARE?

La estructura final de los datos almacenados en un medio físico también puede facilitar la creación de mecanismos de ocultación de información, ya sea en un disquete, en un CD/DVD-ROM, un disco duro, un tarjeta flash, un chip, una tarjeta SIM, un chip de memoria (por ejemplo el que almacena la BIOS del PC), etc.

Antiguamente, estaba muy de moda los discos llave y las mochilas hardware. Los discos llave eran disquetes o CDs normales que presentaban algún tipo de problema en su estructura interna (lógica o física), y que contenían un pequeño programa que al ejecutarse buscaba esas anomalías en el soporte de almacenamiento. La utilidad principal de esto era crear discos anticopia, ya que si el programa se copiaba a otro disco, que en principio, no tenía estas anomalías, el programa de detección fallaría y la ejecución no se produciría. Para permitir estos mecanismos se diseñaron distintas técnicas. Por ejemplo, dado que un disquete se divide en pequeños bloques organizativos llamados sectores que contendrán la futura información, existían técnicas para marcar ciertos sectores válidos como corruptos, formatear sectores o pistas a un tamaño de bytes no estándar con lo cual eran invisibles para el sistema operativo, etc. Todas estas técnicas antiguas de protección, pueden ser usadas para ocultar información, ya que cualquier procedimiento no estándar que se realice es habitual que pase desapercibido para el sistema operativo. Aprovechándose, precisamente de la división de un disquete en bloques lógicos llamados sectores (habitualmente de 512 bytes), la herramienta esteganográfica S-tools (módulo FDD) es capaz de ocultar datos en los sectores libres de un disquete con sistema operativo DOS y sistema de ficheros FAT (File Allocation Table). Esta asignación se realiza por medio de un generador pseudoaleatorio y en ningún caso los bloques se marcan como usados. Esto presenta la desventaja de que si la información del disquete crece, es posible que se pierda la información oculta, aunque tiene la ventaja de que un análisis de los bloques reservados no desvela su utilización.

Estas técnicas no se limitan a los dispositivos de almacenamiento convencionales sino en general a cualquier dispositivo electrónico. En este sentido apuntan notas de prensa y artículos científicos que indican la viabilidad de crear canales encubiertos o ejecución de "código de interés" (programas, malware, etc.) incluso a nivel físico de circuitos (véase por ejemplo el artículo Designing and implementing malicious hardware de Samuel T. King et al. de la Universidad de Illinois). Esta situación podría ser crítica si se importan componentes electrónicos de ciertos países y estos se utilizan en infraestructuras que manejan información reservada.

d) TECNOLOGÍAS WEB Y LENGUAJES DE MARCADO

En la última década se han publicado numerosas investigaciones centradas en la posibilidad de utilizar las tecnologías que conforman la "web" con fines esteganográficos. Dado que la información intercambiada en Internet por estas tecnologías es enorme se busca procedimientos de ocultación que a la vez, por el volumen, dificulten la tarea de un estegoanalista de diferenciar el "grano de la paja". En este sentido se han documentado procedimientos de ocultación en lenguajes de marcado, cookies, session id, captchas, http headers, redirecciones, etc. A continuación a modo de ejemplo vamos a destacar las propuestas publicadas para lenguajes de marcado tipo html o xml.

Los lenguajes de marcado y los ficheros digitales que almacenan descripciones basadas en éstos se han convertido en los medios más difundidos en Internet para distribuir una información. El lenguaje HTML HyperText Markup Language y XML eXtensible Markup Language se utilizan masivamente para publicar información en Internet (páginas web, blogs personales, etc.), para describir la configuración de servicios, para intercambiar información basada en sindicación/agregación, información comercial por mail, etc. Se han publicado algunas técnicas de ocultación basadas en estos lenguajes. Pueden destacarse 3 tipos de procedimientos de ocultación basados en html (conceptos similares se aplican a XML y otros). Al menos teóricamente existen propuestas de estegoanálisis para cada una de estas propuestas.

1. Un primer tipo consiste en la ocultación basada en caracteres invisibles. Son técnicas apoyadas en ocultar información no visible en el código de una página web, por ejemplo, ocultando texto con el color del fondo de la página web, utilizando meta-tags, etc. Por ejemplo, las herramientas WebStego e Invisible Secret ocultan información utilizando espacios (bit 0) o código de tabulador (bit 1) al final de cada línea de una página web.

2. Un segundo procedimiento consiste en la modificación de los caracteres de las etiquetas. Habitualmente las etiquetas de los lenguajes de marcado, por ejemplo, html (html 4.0 specification) son "insensitive". Es decir, las letras que componen las etiquetas pueden estar en mayúsculas o minúsculas indistintamente. Esta característica permite jugar con mayúsculas y minúsculas en los nombres de las etiquetas para codificar una información oculta.

3. El tercer procedimiento consiste en cambiar el orden de los atributos de una etiqueta. Los atributos de una etiqueta pueden aparecer en cualquier orden. El orden de los atributos puede ser cambiado sin cambiar el resultado visible o el tamaño del fichero. Esta reordenación permite crear sistemas de codificación de información. Un ejemplo, es la herramienta Deogol de Stephen Forrest. La capacidad de ocultación de información por etiqueta depende del número de atributos (más de 1) y puede verse como log2 (nº atributos!). Es decir, si una etiqueta tiene 8 atributos simplemente cambiando su orden, podemos ocultar log2 (8!) = 15.3 bits, casi dos octetos de información.

e) CANALES ENCUBIERTOS CON PROTOCOLOS DE COMUNICACIÓN. TORRE DE PROTOCOLOS TCP/IP

Desde un punto de vista esteganográfico, en la mayoría de protocolos existen ciertas debilidades o consideraciones no estrictamente definidas en diseño, que permiten a un individuo crear canales ocultos de información, que pasan inadvertidos entre una conexión de datos más o menos común. La creación de canales ocultos, en la mayoría de los protocolos de comunicaciones, es viable mediante la "manipulación" del formato de los paquetes a enviar mediante el uso de campos reservados (no utilizados en una versión determinada de un protocolo), campos que no se validan, la reordenación de los paquetes a enviar, la creación de canales en función del tiempo que se tarda en enviar una serie de informaciones (timing channels), etc. Se han documentado técnicas de ocultación para multitud de protocolos: HTTP, TCP, UDP, Ipv4, IPv6, ICMP, IPSEC, IGMP, FTP, DNS, protocolos de redes de área local (802.2, 802.3), redes inalámbricas, etc.

Por ejemplo, vamos a ver algunas técnicas de ocultación para el protocolo UDP para que se comprenda mejor como funcionaría este tipo de sistemas de ocultación. El protocolo UDP User Datagram Protocol es un protocolo de nivel de transporte, definido en la RFC 768. UDP es un protocolo no orientado a conexión, es decir para transferir datos entre dos entidades del nivel UDP no es necesario que, de forma previa, se establezca una conexión entre ellas. Cada paquete UDP es independiente de los demás. UDP es un protocolo no fiable porque no garantiza la entrega de datos al destino, los datos pueden perderse, duplicarse o entregarse desordenados. Este protocolo maneja el concepto de puerto UDP que permite identificar distintas aplicaciones dentro de una máquina. Gráficamente podemos ver cómo se estructura un paquete UDP.



Figura 5. Paquete UDP.

Puerto Origen/Destino (16 bits-16 bits): Indica el puerto que usa la aplicación para enviar-recibir el paquete UDP.

Longitud Total (16 bits): Especifica la longitud total del paquete UDP (cabecera+datos) en octetos. Este campo es redundante, ya que se puede obtener también de los campos de la cabecera IP (protocolo sobre el que se encapsula).

Suma de verificación (16 bits): Analiza que la información recibida en el receptor coincide con la suma de verificación calculada en el emisor. Conocida esta información, y al igual que en otros protocolos, es posible la creación de canales encubiertos. Entre las técnicas publicadas destacan, por ejemplo, la utilización del campo "Puerto Origen" y/o el campo "Suma de Verificación" con fines esteganográficos.

Escenarios de ocultación:

a) Manipulación del Puerto Origen UDP. El campo puerto origen UDP permite indicar al receptor porque puerto el emisor está transmitiendo información al receptor. Este campo puede ser utilizado para ocultar 16 bits por paquete UDP enviado. Hay multitud de situaciones en las cuales el receptor no necesita conocer el puerto origen de transmisión, por ejemplo, en el establecimiento de una comunicación unidireccional de transmisor a receptor.

b) Manipulación de la Suma de Verificación. La intención de este campo es que el receptor de una comunicación UDP pueda detectar errores en el paquete UDP recibido. Sin embargo, esto es una información redundante, y puede ser utilizada para ocultar información. Un receptor previamente configurado podría recibir paquetes UDP con información oculta en este campo, al recalcular la suma de verificación del segmento recibido y compararlo con el presente en el campo de "suma de verificación" comprobaría que se ha producido un error, en este caso, en lugar de descartar la información la daría como buena. Esta técnica tiene el inconveniente que si se produce un cambio de información en el paquete durante el tránsito de origen a destino se daría por buena. De cara a un canal encubierto esto se podría solucionar parcialmente considerando que actualmente los medios de transmisión son muy buenos lo que minimiza los fallos y "configurando" que la propia información ocultada pudiera contener información de verificación para los datos ocultos.

Si desea utilizar este tipo de técnica en la práctica le recomiendo la práctica con alguna de las muchas herramientas que se han publicado en este sentido:

Covert_tcp. Este programa permite manipular la cabecera de los paquetes TCP/IP para transferir información oculta a una máquina destino. Este programa puede actuar como servidor y cliente, y se puede usar también para ocultar datos en la cabecera de un datagrama IP. Es útil para pasar información a través de cortafuegos o a través de analizadores de tráfico.

Loki. La herramienta Loki fue presentada en Agosto de 1996 en el magazine underground Phrack, una de las revistas electrónicas de hacking más conocidas. Este proyecto demostró como era viable ocultar trafico en túneles ICMP y UDP, creando canales encubiertos. Una de sus aplicaciones consistía en poder establecer comunicaciones y extraer información de una organización (por ejemplo) que se encontraba protegida por un cortafuegos. Hace años eran común que los cortafuegos habilitarán el tráfico de ciertos mensajes ICMP, por ejemplo, el tráfico que genera la herramienta ping, y que permite determinar si un equipo está "vivo" (funcionando). La idea inicial fue usar el campo de datos de los mensajes ICMP tipo 0 (echo reply) y tipo 8 (echo request) para facilitar la comunicación a una shell UNIX, y establecer canales encubiertos. Esta idea inicial se extendió a otros mensajes ICMP, así como al uso del protocolo UDP. En general, el objetivo de este ataque es introducir tráfico encubierto, típicamente IP, en paquetes ICMP (o UDP). La herramienta consta de un cliente, loki, y un servidor, lokid, que se encargan de encapsular y desencapsular el tráfico en ambos extremos.

B0CK. Es una herramienta italiana que pretende cubrir las deficiencias, según su autor "vecna", que tienen herramientas del tipo loki. B0CK usa mensajes multicast IGMP, su intención es intentar evitar el uso de ICMP para establecer canales o túneles encubiertos, ya que cada vez más este tráfico es denegado o bastante investigado. Su diseño recae en la idea que IGMP es más difícil de bloquear.

StegTunnel. La herramienta "StegTunnel" permite establecer canales ocultos de información utilizando el campo de identificación de los datagramas IP y los campos de número de secuencia de cualquier conexión TCP. Tiene una arquitectura cliente-servidor que deben compartir previamente una clave secreta para poder descifrar la información intercambiada.

VoodooNet. Herramienta de nueva concepción que permite utilizar la nueva versión del protocolo IP (Ipv6) para crear canales encubiertos que pasan inadvertidos para la mayoría de cortafuegos y sistemas de detección de intrusos. Para ello utiliza la posibilidad de encapsular tráfico IPv6 dentro de la comunicaciones habituales, hoy día, en la red con IPv4.

La lista es enorme: corskscrew, dnshell, httptunnel, icmptunnel, icmpshell, mailtunnel, tunnelshell, firepass, msnshell, wsh, 0007shell, rwwwshell, iodine, etc.

f) OCULTANDO INFORMACIÓN EN TEXTO EN CLARO. ESTEGANOGRAFÍA LINGÜÍSTICA

En 1997, Friedrich L. Bauer en Decrypted Secrets. Methods and Maxims of Cryptology, realizó una clasificación de los procedimientos de esteganografía textual que puede resumir muy bien las tendencias en procedimientos de ocultación en textos antes de la última década del siglo XX. Según esta clasificación, la esteganografía textual (su seguridad se basaba en la oscuridad) puede explicarse en dos grandes ramas: códigos abiertos (en inglés, open codes) y semagramas (en inglés, semagrams).



Figura 6. Posible clasificación de técnicas en esteganografía textual.

Los códigos abiertos son textos de apariencia inocente, que ocultan información recuperable utilizando ciertas letras, palabras, frases del texto o comunicación. Por ejemplo, ciertas letras situadas en determinadas posiciones de una carta, de la letra de una canción, etc. Procedimientos basados en estas ideas son: a) señales o pistas (en inglés, cues), b) cifradores nulos (en inglés, null-Ciphers), c) código en jerga (en inglés, jargon code) y d) rejillas (en inglés, grilles).

1. Señales o pistas. El término cues hace referencia a la transmisión de ciertas palabras, que aparecen en un texto o medio genérico de comunicación, que se utilizan como señal para avisar al receptor que realice una serie de acciones.

2. Cifradores Nulos. En general, el término null ciphers hace referencia a aquellos procedimientos esteganográficos que permiten ocultar información en un texto tapadera cuya recuperación se obtiene al seleccionar ciertas letras o palabras del mismo. La distribución de la información ocultada en el mensaje inofensivo, que se usa como tapadera, depende del algoritmo desarrollado, por ejemplo, ocultar información en sentido vertical u horizontal del mismo, cierto número de letras por línea, etc. Existen numerosos ejemplos en la historia de su uso. Quizás uno de los procedimientos más usados son los denominados acrósticos. Un acróstico, del griego akros (extremo) y stikhos (verso), en sentido estricto, es un poema cuyas letras iniciales, medias o finales de cada verso, leídas en sentido vertical, forman un vocablo o expresión. Por simplificación, se suele llamar también acróstico a la expresión formada con dichas letras, siendo en la actualidad de aplicación a cualquier texto de cualquier naturaleza, no exclusivamente a poemas. Este recurso fue muy utilizado por los poetas italianos del Renacimiento. Los fines y uso de este tipo de técnicas son tan variados como personas hay interesadas en utilizarlas (en muchas ocasiones incluso jugando al despiste al facilitar que detecten una supuesta información oculta). Un ejemplo famoso de acróstico famoso en lengua española está constituido por los versos que conforman el prólogo de la obra La Celestina del autor Fernando de Rojas (1470-1541). La selección de la primera letra de cada línea del prólogo permite observar la siguiente oración en castellano: El bachiller Fernando de Rojas acabó la comedia de Calisto y Melibea y fue nacido en la Puebla de Montalban.

Otro ejemplo, más actual, se puede ver en el caso español Yak-42. En mayo de 2003, tuvo lugar un desgraciado "accidente" en el cual un avión Yakolev 42 se estrelló en Turquía, cerca del aeropuerto de Trebisonda, cuando transportaba de vuelta a casa a 62 militares españoles tras cumplir cuatro meses de misión humanitaria en Afganistán. Todos perdieron la vida. La versión inicial de aparente "accidente" por error humano, se fue modificando tras las denuncias de los familiares acerca del mal estado de ésta y otras aeronaves utilizadas por el ejercito español. Esto, unido a la apresurada y errónea identificación de los cadáveres, acabó convirtiéndose en un elemento de desgaste para el presidente del gobierno, José María Aznar, y su partido político, el Partido Popular. Meses después de este lamentable suceso, la cadena radiofónica SER, Sociedad Española de Radiodifusión perteneciente al Grupo de Comunicación Prisa, publicó que el entonces ministro de Defensa, Federico Trillo, había responsabilizado del suceso, de forma encubierta, al Estado Mayor de la Defensa. Para ello, Trillo utilizó el editorial de la "Revista Española de Defensa", para ocultar esta información a través de un acróstico. Posiblemente, con la intención de que lo detectarán.



Figura 7. Un error humano.

3. Código en jerga. Un código en jerga, consiste en sustituir símbolos o expresiones (por ejemplo, palabras), por otras no tan comunes (o inventadas) para un uso concreto. En sentido práctico, consiste en la creación y utilización de un lenguaje secreto de comunicación, normalmente, sencillo y versátil, conocido por un grupo de personas y desconocido por el resto. Conceptualmente se encuentra en un punto intermedio entre criptografía y esteganografía. Un ejemplo famoso de código en jerga fue el Tora! Tora! Tora! usado por la armada japonesa para comunicar el ataque a Pearl Harbor en 1941.

4. Rejillas (en inglés, grilles). Estos procedimientos esteganográficos (conceptualmente la diferencia sutil respecto de los null-ciphers consiste en que estos últimos funcionan mediante un conjunto de reglas preestablecidas mientras que en el caso de las rejillas ese patrón de conducta lo establece la propia rejilla) consisten en la selección de ciertas letras o palabras de un documento utilizando para ello un conocimiento adicional que a modo de plantilla facilita la selección de dicha información. En la terminología habitual esta plantilla se conoce como grille o, en español, verja o rejilla, en tanto en cuanto deja ver solo lo que interesa. El mejor procedimiento para entender estas ideas la encontramos en el renacimiento y es conocido como la rejilla de Cardano (Cardan grille) en honor a su creador el célebre renacentista Girolamo Cardano (1501-1576). Basándose en los mismos principios, se han publicado diferentes variantes en función de cómo se utilice la plantilla. Así, por ejemplo, ir rotando 90 grados la plantilla cada vez que se obtiene una letra del mensaje oculto (turning grille), etc. A lo largo de la historia se han documentado múltiples usos de estas variantes e incluso han tenido su repercusión en la literatura, léase por ejemplo la obra Mathias Sandorf de Julio Verne (1828-1905). Un sistema más primitivo de este tipo fue el newspaper code. Este método desarrollado en la era Victoriana, época de gran expansión económica y social de Gran Bretaña entre 1837 y 1901, permitía a las clases pobres comunicarse libremente. Para ello hacían pequeños agujeros encima de ciertas letras del periódico, que al juntarlas permitían recuperar el mensaje encubierto.

Por otro lado, los semagramas consisten en la utilización de la estructura, formato y configuración de símbolos y objetos para establecer un medio de comunicación para ocultar una información. En general, refiriéndose a textos (text semagrams), consisten en pequeñas variaciones de la estructura normal de un documento, que aunque visibles, no por ello son fáciles de detectar. Las técnicas de ocultación basadas en esta idea se centran principalmente en modificaciones horizontales o verticales de palabras y frases. Por ejemplo, una modificación horizontal consistiría en añadir espacios entre palabras, de tamaño fijo o variable, mientras que una modificación vertical posible consistiría en ocultar información modificando el tamaño del espaciado vertical entre las frases. Su utilización, no se limita a textos, puede verse en fotografías, dibujos, música, etc. Por ejemplo, un dibujo con un determinado número de manzanas en un árbol puede contener una información secreta. Los semagramas visuales (en inglés, visual semagrams) consisten en utilizar todo tipo de símbolos y señales para ocultar un mensaje. Habitualmente objetos físicos, como por ejemplo, objetos de uso cotidiano, ya que por ser comunes no se le presta excesiva atención. Por ejemplo, ocultar información utilizando un garabato de una hoja, la distribución de ciertos objetos en un escritorio, las manecillas paradas de un reloj (que podría indicar la hora de un hecho), etc.

En el siglo XXI, muchos de los procedimientos de esteganografía textual reflejandos anteriormente dieron lugar a una evolución sustancial conocida como esteganografía lingüística. Podemos definir la esteganografía lingüística como aquel conjunto de algoritmos robustos que permiten ocultar una información, típicamente binaria, utilizando como tapadera información en lenguaje natural. En la actualidad, la esteganografía lingüística intenta mezclar principios de la ciencia de la esteganografía y la lingüística computacional (análisis automático del contenido textual, generación textual, análisis morfosintáctico, lexicografía computacional, descripciones ontológicas, etc.) para crear procedimientos públicos no triviales según los principios de Kerckhoffs. La seguridad de estos procedimientos dependerá exclusivamente de una información adicional conocida exclusivamente por el emisor y el receptor a modo de clave. En la práctica, este postulado no es nada sencillo y la complejidad de generar estegotextos resistentes a ataques estadísticos y lingüísticos por parte de analistas (humanos) y de sistemas automáticos (máquinas), es bastante elevada. Lo más habitual es que se puedan ocultar (no exento de problemas) decenas o centenas de bits en decenas o centenas de palabras en un texto. En la actualidad existen dos grandes líneas de investigación en este sentido: a) la generación automática de estegotextos y b) la modificación de textos existentes. Un buen trabajo para situar las publicaciones más interesantes fue publicado en 2007 por el investigador Bergmair de la Universidad de Cambridge [8], aunque bien es cierto que hoy día no cubre todas las investigaciones y herramientas publicadas.

3.4. Esteganografía en imágenes, audio y vídeo digital

Las imágenes digitales, el audio y el video digital, se han postulado a finales del siglo XX y principios del siglo XXI como los estegomedios más propicios para enmascarar información, especialmente por su enorme difusión en Internet. En los últimos años se ha publicado múltiples técnicas esteganográficas y estegoanalíticas centradas en este tipo de contenidos [7], así como nomenclatura en función de cómo se trabaje con la información de estos formatos. Los diferentes procedimientos esteganográficos se clasifican en función de las transformadas o criterios matemáticos que se utilizan para la ocultación de información. Por ejemplo, son famosas las técnicas que trabajan en el dominio espacial de la señal, dominios transformados como la transformada discreta de Fourier, la transformada discreta del coseno (por ejemplo, en ficheros JPEG), transformada Mellin-Fourier, transformada discreta Wavelet y sus coeficientes (por ejemplo, en fichero JPEG2000), etc. Independientemente de todos estos conceptos, lo que debe tenerse en cuenta para avanzar en procedimientos esteganográficos en contenidos multimedia es conocer el formato del fichero sobre el que se desea operar y acceder a las posiciones donde se almacena la información útil, aquella información que puede ser utilizada con fines esteganográficos. En unos casos, serán pixeles (dominio espacial), en otro caso coeficientes de transformadas matemáticas (por ejemplo, ficheros JPEG), etc. Qué portador utilizar y qué transformada concreta dependerá de la aplicación concreta que se desee, la seguridad esperada y la invisibilidad requerida.

Por ejemplo, es común que técnicas que trabajan en el dominio espacial proporcionen mayor capacidad de ocultación, mientras que los del dominio transformado (por ejemplo, dominio de la frecuencia) sean más robustos contra ataques, tales como compresión, o procesamiento, en general, de la señal. Aunque podrían desarrollarse procedimientos de ocultación basados en cualquiera de las técnicas generales de ocultación comentadas en apartados anteriores, en la práctica las técnicas de ocultación más utilizadas en formatos multimedia son técnicas de inserción que modifican el "fichero fuente" para ocultar unos datos. En general, la información añadida actuará a modo de ruido adicional que puede provocar perturbaciones en la estegoimagen, estegovideo o estegoaudio definitivo generado. Por este motivo, es común que las técnicas de ocultación se aprovechen de las limitaciones del sistema de percepción humano (vista y oído) para minimizar que un usuario pudiera darse cuenta a "simple vista" de la presencia de información oculta. Por ejemplo, la modificación de los colores de una imagen en una región donde hay presente gran variedad de colores es menos apreciable que si se modifica el color de ciertos píxeles en regiones uniformes con uno o pocos colores. Del mismo modo, el ojo humano es muy sensitivo a modificaciones en los bordes de una imagen (en el contorno).

A continuación, se van a analizar de forma resumida algunos aspectos interesantes de la ocultación de información de formatos digitales de video, audio e imágenes.

3.4.1. Esteganografía en vídeo digital

Una opción interesante para ocultar información son los formatos digitales de vídeo debido a que presentan un volumen considerable de datos que se pueden modificar para ocultar información. En 1998, A. Westfeld y G. Wolf demostraron cómo un sistema real, en concreto de videoconferencia, se podía utilizar para establecer un canal oculto de información sin que la señal sufriera una degradación grande. En general, un video puede definirse como un conjunto de frames individuales formado por imágenes y audio (y en ocasiones también texto). Los procedimientos de ocultación de información en un vídeo se pueden aprovechar de las distintas técnicas esteganográficas sobre cada uno de esos elementos individuales (estegomedios) que configuran cada frame, aunque algunos de los procedimientos específicos documentados en videos han sido: codificación de información a partir del cálculo de los vectores de movimiento entre una colección de frames, técnicas basadas en corrección de errores, etc. A pesar del gran interés que pueda presentar este estegomedio, se han publicado pocas herramientas que faciliten la aplicación real de estos procedimientos para un público amplio. Quizás una de las más conocidas es MSU StegoVideo, de Dimitry Vatolin y Oleg Petrov, que permite la ocultación de archivos en secuencias de un vídeo, aplicando la corrección de errores adecuada para que la información pase desapercibida.

3.4.2. Esteganografía en audio digital

El avance de la tecnología, en la última década, ha permitido la creación de dispositivos de consumo cada vez más pequeños y autónomos, que facilitan la creación, reproducción, replicación y distribución de audio. Dispositivos cotidianos, portátiles o no, que permiten estas tareas son por ejemplo, los ordenadores personales, PDAs, móviles, reproductores de diferentes soportes y formatos de audio (lectores de CD/DVD, MP3/MP4, iPod, audiostreaming, radios-online personales, etc.), dispositivos sintonizadores de radio (FM/AM), grabadoras de voz, software informático de procesamiento de audio, etc. Por no hablar de los clásicos instrumentos musicales y los soportes para compartir dicha información, alejadas de un mundo claramente digital, como son las clásicas partitura musicales.

El estudio de las limitaciones del sistema de audición humano es el punto de partida para el diseño correcto de un algoritmo esteganográfico que oculte información en señales de audio. El sistema de audición humano es bastante más difícil de engañar que otros sentidos, por ejemplo, que el sistema de visión. El oído presenta una sensibilidad alta a la presencia de un ruido blanco gaussiano añadido a una señal de audio. Esta detección puede ser incluso de unos 70dB por debajo del nivel de ruido ambiente. Sin embargo, a pesar de estas propiedades, existen diversas situaciones en las que el sistema puede ser engañado, es decir, es impreciso en la detección. Una de estas situaciones consiste en que ante la presencia de "sonidos fuertes" y "sonidos más débiles" los primeros tienden a enmascarar a los segundos. Otra es que el sistema de audición humano es poco sensible a ciertos cambios de fase en una señal de audio, o a la supresión de ciertas frecuencias en la señal de audio, modificaciones en las que se basa el estándar MPEG-1 audio Layer III (mp3). En los últimos años se han publicado múltiples procedimientos esteganográficos y estegoanalíticos en señales de audio: técnicas basadas en LSB (Least Significant Bit) en muestras de audio, como la herramienta stegowav, técnicas de ocultación en la fase de una señal (modulación de la fase de una señal y codificación en la fase, phase coding), técnicas de ocultación en el eco de una señal, ocultación aprovechando las características estadísticas de las señales de audio (por ejemplo, segmentación de la señal de audio de forma adaptativa), ocultación basada en algoritmos de compresión (MP3, WMA, OGG Vorbis), etc. Un ejemplo significativo de este último caso, puede ser la herramienta Mp3stego que facilita la ocultación de información en ficheros mp3.

No debe olvidarse, en este punto, que al igual que sucede con otros portadores, que la introducción de modificaciones puede crear patrones no comunes que pueden ser detectados, por ejemplo, mediante estudios estadísticos de las propiedades de la señal empleada, en muchos casos varios ataques serían válidos para distintos formatos. Por ejemplo, los diferentes algoritmos estadísticos que se utilizan para detectar ocultación de información en los LSBs de pixeles de imágenes digitales podrían ser reutilizados para detectar modificaciones en los LSBs de muestras de audio en fichero WAV.

3.4.3. Esteganografía en imágenes digitales

El estegomedio sobre el que más publicaciones y herramientas esteganográficas y estegoanalíticas se han publicado en la última década son las imágenes digitales debido a su enorme difusión en Internet.

Los principios en los que se fundamentan las técnicas de ocultación sobre este tipo de estegomedio son dos: que la modificación de la imagen no introduzca un ruido visual que levante sospechas a una persona que vea la imagen y que las modificaciones introducidas no proporcionen pistas adicionales a un estegoanalista. En este sentido se han publicado una gran variedad de técnicas para diferentes formatos gráficos de fichero (bmp, gif, jpeg, png, etc.)

Las técnicas y variantes más documentadas de estos procedimientos consisten en la modificación de los LSB (Least Significant Bit) de los píxeles de una imagen, de los índices que enlazan a la paleta de colores de un formato GIF (otros procedimientos como el reordenamiento de los colores de la paleta es posible) o de los coeficientes resultantes de aplicar alguna transformación matemática a una imagen, por ejemplo, los coeficientes DCT (transformada discreta del coseno) del formato gráfico JPEG o los coeficientes Wavelet del formato gráfico JPEG2000. Especial interés ha tenido el formato JPEG debido a su enorme difusión en Internet. Algunas de las herramientas notorias han sido, Jsteg, Outgues 0.2, F5, MB1, MB2, steghide, YASS, etc. Estas herramientas han ido evolucionando para ser más resistentes a ataques estadísticos y ataques basados en el estudio del histograma. Paralelamente las publicaciones estegoanalíticas respecto a este estegomedio son cuantiosas en volumen y en calidad.

A continuación se va analizar resumidamente algunas de las técnicas más famosas para los formatos de ficheros BMP, GIF y JPEG. En general, cualquier fichero con formato gráfico podrá ser utilizado con fines esteganográficos.

3.4.3.1. Técnica de sustitución LSB (Least Significant Bit)

La técnica LSB es el mecanismo de ocultación más clásico utilizado en esteganografía. Su utilización es muy común, debido a su facilidad de aplicación, sobre todo a imágenes y audio, permitiendo ocultar grandes cantidades de información. Para comprender su uso vamos a analizarla en primera instancia en uno de los formatos gráficos más sencillos. Antes unas breves definiciones.

Una imagen digital se puede estudiar como un conjunto de unidades de tamaño mínimo, denominados píxeles, que tienen unos determinados valores que reflejan los diferentes colores visibles para una imagen concreta. Dependiendo de la resolución de la imagen y de la codificación empleada para un formato gráfico concreto, los píxeles se representan con 1 o más octetos en dicho formato. Es habitual encontrarse ficheros gráficos con diferentes codificaciones, por ejemplo, ficheros gráficos BMP (BitMaP) con resoluciones 8, 16, 24 o 32 bits. Por ejemplo, para una imagen con una resolución de 24 bits cada píxel se representa con 3 octetos (8 bit x 3 = 24 bit). Si estos octetos representan un modelo de color RGB (Red, Green, Blue), cada octeto, respectivamente, almacenará información, sobre el nivel de rojo, verde y azul, que está presente en cada píxel. En última instancia, esta información permite obtener el color real de un píxel.

El valor concreto que puede tomar cada octeto representa la intensidad de dicho color. Este valor oscila desde el valor 0 (el nivel más oscuro) a 255 (el nivel más luminoso). Por ejemplo, un píxel representado con los siguientes 3 octetos: 11111111 (rojo) 00000000 (verde) 00000000 (azul) da como resultado un píxel de color rojo. Siendo estrictos, la técnica LSB aplicada a imágenes es un procedimiento de sustitución que permite modificar el bit menos significativo de la codificación de cada píxel de una imagen por el bit del mensaje a ocultar.



Figura 8. Ejemplo de ocultación en una imagen BMP mediante técnica LSB.

Por ejemplo, en la figura anterior se muestra como insertar 8 bits (mensaje 01100011) aprovechando el bit menos significativo de 3 píxeles de ejemplo. Cada píxel está representado por 24 bits (3 octetos) y en este caso se utiliza el bit menos significativo de cada octeto para la ocultación. En este ejemplo los bits subrayados se quedan sin alterar, ya que su valor es idéntico al que se desea insertar, mientras que los otros bits se modifican para insertar los bits deseados (en este caso, en el octeto de verde del pixel0 y en el octeto de verde y azul en el pixel2).

La elección de los píxeles a utilizar dependerá de la variante de la técnica LSB empleada. La elección de los píxeles suele clasificarse en tres tendencias: a) sustitución secuencial de píxeles en una imagen, b) sustitución pseudoaleatoria de píxeles de una imagen (clásicamente mediante un generador de números pseudoaleatorios) y c) otro criterio matemático de selección.

Independientemente del criterio de selección de píxeles, las técnicas de ocultación basadas en el principio LSB apoyaban su seguridad en el hecho de que los bit menos significativo de los píxeles de una imagen tenían un valor "aleatorio" y por tanto su modificación no aportaría información adicional a un analista, así como que dichas modificaciones (ruido adicional) introduciría cambios mínimos en la imagen que no serían percibidos por el ojo humano. Ambas suposiciones son muy matizables, y a día de hoy la seguridad de las técnicas basadas en LSB deben considerar múltiples factores para que no sea detectada la información ocultada. Por ejemplo, a finales de la década de los 90 (siglo XX) se suponía que ocultar información mediante modificaciones elegidas de forma pseudoaleatoria era suficiente para garantizar la invisibilidad. Hoy día, esto no es suficiente. No obstante, se tengan en cuenta o no consideraciones de seguridad para utilizar esta técnica, su uso es públicamente mayoritario debido a su facilidad de implementación y a la capacidad de ocultación que facilita. En la práctica, dependiendo de la imagen, se podrán utilizar más de un bit (LSB) por píxel para ocultar una información, si bien es cierto que los cambios visuales serán más abruptos y apreciables para un analista. Los cambios en los bits de mayor peso producen cambios más notorios al modificar más información sobre el valor real del color del píxel. Es decir, la modificación de ciertos bits puede cambiar completamente el color de un píxel y producir cambios notorios visualmente.

3.4.3.2. Técnicas esteganográficas basadas en paleta de colores

La evolución a lo largo de los años del tratamiento y almacenamiento de imágenes, dio lugar a la necesidad de representar las imágenes, clásicamente en formatos de ficheros gráficos, de tal forma que su tamaño final, en octetos, fuera no excesivamente grande. Este hecho facilitaría no solo su almacenamiento sino sobre todo su intercambio por las redes de telecomunicaciones. Para solucionar este problema, se propusieron varias propuestas, entre ellas, destacó la idea de crear imágenes con un número pequeño de colores. Si el número de colores en una imagen es pequeño se puede codificar estos valores en una especie de tabla, de tal forma que cada píxel en lugar de almacenar el color que le corresponda apunte a su color presente en esa tabla. El tamaño con el cual se codifica estos índices que apuntan a la tabla es menor que la codificación con la que se almacena el color para cada píxel, con lo que se consigue, finalmente, ficheros gráficos de tamaño más pequeño. Esta ordenación especial, de los octetos de la imagen, permite reducir bastante su tamaño. Esta información adicional, a modo de tabla, se conoce como paleta de colores.

Un ejemplo de uso de paleta de colores puede verse en el formato gráfico GIF Graphics Interchange Format, aunque también es posible encontrarla en otros formatos gráficos, como por ejemplo, en los ficheros BMP. La paleta de colores de los ficheros GIF permite representar hasta 256 colores diferentes, codificando el valor de cada uno con 3 octetos, que indican su valor RGB. Los valores RGB de los píxeles de la imagen no se almacenan directamente en el fichero gráfico sino que se almacenan índices que enlazan a la paleta de colores. De esta forma, en un fichero GIF, cada píxel se puede representar con 8 bits (28=256 colores posibles de la paleta) pudiendo servir de índice o entrada para indicar cuál es el color real del píxel que está en la paleta. Gracias a este mecanismo, y debido al número limitado de colores, es posible crear imágenes de tamaño realmente pequeño.

Una comparación rápida entre este formato y otros formatos gráficos más clásicos se puede ver con imágenes en formato BMP con una resolución de 24 bits. Para esta resolución, cada píxel necesitaría 3 octetos para codificar el valor del color que representa (su valor RGB). Partiendo de estas condiciones y si tuviéramos que almacenar una imagen de N colores y M píxeles, la diferencia en tamaño sería notoria, ya que se suele cumplir que M>>N, con lo que diferencia iría de 3*N+M octetos frente al valor más grande de 3*M octetos. Independientemente de la mejor conveniencia de utilizar uno u otro formato gráfico que contenga una imagen, es cierto, que estos formatos que se apoyan en la utilización de una paleta de colores facilitan la creación de diferentes técnicas de ocultación de información.



Figura 9. Ejemplo de paleta de colores con 3 colores e imagen de 6 píxeles.

La técnica más utilizada y documentada es la aplicación de una técnica LSB sobre los índices de la imagen que apuntan a la paleta de colores. Esta técnica es fácil de comprender en el caso del formato GIF (véase el ejemplo de la figura). En este formato los datos de la imagen son octetos individuales (para hacer un símil en este formato 1 octeto es igual a un pixel). El octeto en lugar de tener información de los colores del pixel indica la posición en la paleta de colores donde se encontrará el valor real del pixel. Así, por ejemplo, un octeto con valor 0 apunta a la entrada 0 de la paleta de colores, un octeto con valor 1 apunta a la entrada 1, y así sucesivamente para los 256 valores posibles que puede tomar cada octeto. En el ejemplo de la figura el valor "real de los píxeles de la imagen" sería: color verde (3 octetos) apuntado por el índice (octeto) con valor 1, color rojo (apuntado por el índice con valor 0), color azul (apuntado por el índice con valor 2), etc. Es habitual que se modifique el bit menos significativo de la codificación de cada octeto de los datos de la imagen. Lógicamente, si modificamos algún bit a un índice su valor cambiará, por tanto ese nuevo índice apuntará a otro color diferente presente en la paleta. Aunque esta técnica es fácil de utilizar debe tenerse en cuenta una serie de consideraciones. Al modificar el bit menos significativo de un índice (ponerlo a 0 o 1) el color actual que corresponde al píxel en cuestión cambia, ya que el nuevo índice apuntará al color adyacente del actual, presente en la paleta de colores. Este hecho hace que si los colores adyacentes en la paleta no son parecidos el "ruido" debido a la manipulación de los LSB será obvia, y producirá una imagen cuyo resultado visual hará sospechar de posible ocultación de información.

Para intentar reducir este problema es común que antes de insertar la información a ocultar se realice algún procesado u ordenación previa de los colores presentes en la paleta de colores. No obstante, este hecho debe realizarse con precaución ya que puede crear patrones inusuales que no se suelen encontrar en los ficheros gráficos en cuestión, esto sucede con muchas de las herramientas de Internet, que aplican procedimientos de ocultación basados en algún tipo de preprocesado de la paleta de colores GIF. Por ejemplo, es habitual que los valores de la paleta de colores estén ordenados del más usado al menos usado, para reducir tiempos de decodificación de la imagen, o que los colores de esta no presenten cambios graduales (por ejemplo, de un bit), salvo ciertas excepciones, como son las imágenes de grises.

Aparte de la clásica aplicación de la técnica LSB sobre los índices de una imagen que apuntan a la paleta de colores, es posible aplicar otras variantes basadas en los mismos principios. Entre ellas, aplicar una técnica LSB a los colores presentes en la paleta de colores, con lo que se podría ocultar tantos bits como bits se modificarán de los colores de la paleta (máximo la modificación de 256 colores para un formato GIF), o reordenar los colores de la paleta, cuyo orden codifica una información. Típicamente si la paleta tiene 256 colores, y puesto que en principio desde un punto de vista funcional su orden no importa en la paleta (aunque si desde un punto de vista estegoanalítico) estos pueden están ordenados en el orden que sea con la única limitación que los valores (los índices) de los píxeles apunten al color oportuno. Según esto tendríamos 256! (8,5781777534284265411908227168123 e+506) posibles permutaciones de estos colores de la paleta que produciría la misma imagen final. Es decir, se puede hacer una técnica de ocultación sencilla que oculte hasta log2(256!) 1.683 bits basándose en el orden de los colores, transformando la información a ocultar en la permutación (orden) correspondiente de los colores en la paleta.

Algunas herramientas que ocultan información en ficheros GIF son: S-Tools, Hide and Seek, EZStego, Gifshuffle, MandelSteg, Empty-Pic, Gif-It-Up, Camera/Shy, Hide4PGP, etc.

3.4.3.3. Técnicas esteganográficas basadas en coeficientes. JPEG

El procesamiento digital y almacenamiento de imágenes en las últimas décadas del siglo XX, ha hecho que se utilicen un sinfín de algoritmos y transformaciones matemáticas con propósitos muy diversos, entre ellos, su aplicación a la esteganografía, especialmente los procedimientos de ocultación mediante transformaciones en el dominio de la frecuencia. En concreto, la ocultación de información utilizando los coeficientes cuantificados presentes en un fichero gráfico con formato JPEG, obtenidos al aplicar a una imagen original una transformada discreta del coseno (DCT). Este tipo de técnica es la más difundida para ocultar información en imágenes en formato JPEG (véase formato JPEG).

Las investigaciones publicadas en la primera década del siglo XXI se centran fundamentalmente en la utilización de los coeficientes cuantificados DCTs con fines esteganográficos. Si se analiza con detenimiento el formato JPEG es fácil comprender cuál es el significado real de estos coeficientes cuantificados y porqué pueden utilizarse en esteganografía. Los coeficientes cuantificados, como tal, son números que almacenan la información de la imagen a visualizar. Por tanto, ¿por qué no modificarlos como hacíamos con los valores de los píxeles de otros formatos?

Una de las primeras herramientas que puso en práctica esta idea fue Jsteg de Derek Upham. Esta herramienta aplica una técnica LSB de forma secuencial e individualizada a los coeficientes cuantificados DCTs de la imagen, de modo que para ocultar un bit de información se modifica el bit menos significativo del valor de un coeficiente cuantificado. Esta herramienta tiene la ventaja de proporcionar una alta capacidad de almacenamiento de mensajes ocultos, así como resistencia frente a ataques publicados, como los ataques visuales. Sin embargo, la modificación de los bits LSB de los coeficientes cuantificados introduce anomalías que son detectables por estudios estadísticos del histograma, con lo que la seguridad de JSteg es muy cuestionable.

Estas ideas iniciales, permitieron desarrollar herramientas con la intención de ser más robustas frente a los ataques de los estegoanalistas, especialmente, los estadísticos. Protección frente ataques clásicos como, por ejemplo, estudiar las ocurrencias de los coeficientes cuantificados (histograma), que permiten detectar si un fichero JPEG es portador de información oculta al no parecerse a la distribución típica presente en un fichero JPEG. Entre las herramientas publicadas que hacen uso de técnicas esteganográficas basadas en los coeficientes cuantificados se encuentra F5 (gran capacidad de ocultación, reducción de modificaciones mediante matrices de codificación, resistencia a ataques estadísticos de primer orden, etc.), Outguess (resistente a ataques estadísticos de primer orden), JP HIDE&Seek (utiliza procesos pseudoaleatorios para seleccionar los LSBs de los coeficientes cuantificados DCTs), etc. Todas estas herramientas, de una manera u otra, se basan en la ocultación de información mediante modificación de los coeficientes cuantificados DCTs. Al igual que sucedía con la modificación de píxeles en una imagen, es posible crear variantes de técnicas de ocultación utilizando coeficientes de forma individualizada, en grupo o mezcla de ambos, ya sea mediante selección secuencial o aleatoria.

3.4.3.4. Listado de herramientas esteganográficas

En Internet existen multitud de herramientas disponibles basadas en las técnicas esteganográficas más famosas. Una lista de herramientas interesante es, por ejemplo, la recopilada por el investigador Neil F. Johnson con más de 100 herramientas en su página web: http://www.jjtc.com/Steganography/tools.html. La mayoría de estas herramientas han sido vulneradas de forma práctica o a nivel académico. Si desea utilizarlas para proteger información sensible por favor compruebe antes los ataques publicados.



APARTADO 4. DETECCIÓN DE COMUNICACIONES OCULTAS. CONTRAMEDIDAS

4.1.Estegonálisis. Clasificación de ataques y tendencias

Una buena formalización del problema que pretende solucionar la ciencia del estegoanálisis fue planteada por G. J. Simmons en 1983, aunque ya en 1973 Butler W. Lampson definiría la idea de canal oculto como aquel canal de comunicación que viola una o más políticas de seguridad del sistema donde se aplica. Simmons describió un excelente entorno que permite comprender cómo poder llegar a utilizar la esteganografía en situaciones reales, es el denominado problema del prisionero, no confundir con el dilema del prisionero que se aplica en teoría de juegos. La descripción de este problema parte de la necesidad de comunicación entre dos entidades A y B, se supone por simplificación que se habla de personas, que son arrestadas y confinadas en celdas separadas. El objetivo que se plantea consiste en desarrollar un plan de fuga, intercambiando información a través de su guardián, dado que se les impide una comunicación directa. Si el guardián es medianamente competente no permitirá una comunicación cifrada, y si tiene la más mínima sospecha interrumpirá las comunicaciones. El problema del prisionero define cómo en determinadas situaciones es posible establecer un canal subliminal de comunicación y el uso de esteganografía en entornos hostiles.



Figura 10. Esquema genérico de estego-sistema para comunicación en entorno hostil.

En la práctica, existen varios problemas iniciales a resolver. Por un lado, la necesidad de que tanto emisor como receptor conozcan el procedimiento de ocultación utilizado. En un entorno telemático este procedimiento podría ser público y no por ello facilitar la detección al guardián. En segundo lugar, es importante estudiar cómo de robusto debe ser el procedimiento de ocultación en función de la capacidad de ataque que se le suponga al guardián.

En general, al atacante (guardián) se le consideran tres habilidades posibles:

a) Ataque pasivo. El guardián puede analizar la información intercambiada, dejando que la comunicación tenga lugar si no advierte nada raro. En un entorno telemático puede que el guardián sólo pueda analizar la información pero no interrumpirla.

b) Ataque activo. El guardián podría modificar la información, accidentalmente o a propósito, e incluso dañándola significativamente.

c) Ataque malicioso. El guardián puede modificar a su antojo la información ocultada en una cubierta con la intención de provocar una acción determinada en las entidades receptoras de dicha información. En la práctica, este ataque no es realista en la mayoría de las situaciones.

Esta formalización, que considera en el propio diseño la capacidad de ataque de un analista (guardián) sobre las potenciales comunicaciones enmascaradas, permite introducir el concepto de estegoanálisis.

Si la esteganografía es la ciencia que trata la ocultación de mensajes, el estegoanálisis es la ciencia y el arte que permite detectar esa información oculta. En la práctica, el ataque estegoanalítico más útil se basa en el ataque pasivo y este a su vez puede ser divido en 3 fases:

a) Detección de información ocultada en el estegomedio sospechoso.
b) Estimación del tamaño de la información ocultada.
c) Extracción y recuperación de la información enmascarada.

Si en el proceso de ocultación se toman las medidas de protección adecuadas, para el estegoanalista, persona que aplica estegoanálisis, es inviable conseguir la extracción y recuperación de la información real enmascarada. Por ejemplo, en los procedimientos esteganográficos actuales (de inserción) la información a ocultar se cifra previamente y se distribuye pseudoaleatoriamente a través de la cubierta seleccionada. Para recuperar la información enmascarada en claro (ordenada) se requeriría invertir el generador de números pseudoaleatorios utilizado e invertir el algoritmo de cifrado implementado. Esta difícil tarea correspondería a la ciencia del criptoanálisis al tratarse de algoritmos criptográficos públicos, cuya seguridad se justifica por la comunidad científica.

En general, los ataques pasivos se pueden clasificar en función de la información de la que disponga el estegoanalista. A continuación se muestra esta clasificación en nomenclatura inglesa, debido a su extendido uso en la literatura.

Stego-only attack. El estegoanalista dispone solo del estegomedio sospechoso, el estego-objeto, para realizar los estudios que desee, por ejemplo, un fichero gráfico. Este suele ser el caso más común en un entorno real.

Known cover attack. El estegoanalista dispone de la cubierta (por ejemplo, una imagen) en su modo original y el estego-objeto resultante de la ocultación de la información. En ningún caso posee información del algoritmo utilizado o del tipo de información enmascarada.

Known message attack. Este ataque se apoya en la posibilidad del atacante de conocer la información ocultada, en un momento determinado, en un estegomedio concreto. El análisis del tipo de estegomedio empleado para la ocultación de la comunicación podría facilitar al atacante la deducción de patrones correspondientes a ese mensaje/información concreta que permitiría ciertas ventajas para futuros ataques contra el mismo sistema de ocultación empleado. Si el algoritmo esteganográfico es medianamente seguro la dificultad de llevar a cabo este ataque podría estimarse parecida a un stego-only attack.

Chosen stego attack. Un estegoanalista para realizar este tipo de ataque debe disponer de información de funcionamiento del algoritmo esteganográfico utilizado, así como de estego-objetos con información oculta.

Chosen message attack. El estegoanalista dispone de algún procedimiento para obtener estego-objetos que ocultan mensajes elegidos por él. Este procedimiento permitiría, por ejemplo, el estudio de patrones característicos para determinar si se está usando una herramienta esteganográfica o algoritmo concreto. Esto permitiría detectar la presencia de información oculta y, en última instancia, la utilización de algoritmos de detección más precisos para estas herramientas concretas.

Known stego attack. El estegoanalista dispone de la herramienta esteganográfica utilizada para enmascarar la información, así como, la cubierta original y el estego-objeto resultante.

En la práctica, el caso más real y genérico es que el estegoanalista disponga sólo del estegomedio sospechoso, stego-only attack. Si conociera además algoritmos de ocultación que operan con ese tipo de tapadera utilizada para el estegomedio podría realizar pruebas con diferentes cubiertas, estego-objetos, información a ocultar y estegoclaves. En teoría, todo ese conocimiento no debería facilitarle la detección de un estego-objeto creado por otra entidad con esta herramienta, de la misma forma al desconocer la clave utilizada en el proceso no le debería resultar abordable computacionalmente extraer y recuperar la información enmascarada por otra entidad. Adicionalmente a los ataques pasivos, es posible, también, realizar ataques activos contra la información esteganografiada. Los ataques de este tipo suelen estar basados en la transcodificación, compresión, filtrados, inserción de ruido, modificación de propiedades como la luminancia en imágenes digitales, etc. En la práctica su utilización no suele ser muy útil (o por lo menos no en primera instancia), es más interesante detectar que una comunicación enmascarada está teniendo lugar e intentar recopilar más información de las entidades que la producen. Esta idea se entiende muy bien en criptografía, donde en muchas situaciones prácticas es "más sencillo" conseguir la clave del usuario que atacar directamente a una información cifrada o a un algoritmo criptográfico concreto. No obstante, los ataques activos hoy día son utilizados mayoritariamente frente a los esquemas de watermarking que insertan marcas de agua en contenidos digitales.

De hecho, en general, cualquier estegosistema puede ser atacado considerando los siguientes 3 vectores de ataque:

a) Detección de patrones esteganográficos e implementaciones deficientes

b) Medición de variaciones respecto de la información adyacente a la modificación realizada. Ataques visuales y ataques estadísticos (chi-square, rs-attack, pair-values, etc.). Algunas herramientas de estegoanálisis interesantes son: stego suite, stegsecret, stegkit, stegAlyzer AS, stegspy, stegdetect, etc.

c) Caracterización de un portador (estegomedio) y detección de anomalías mediante algoritmos de machine learning (estegoanálisis a ciegas).

Los tres vectores de ataque anteriores intentan ayudar a responder a las preguntas ¿Qué analizar? ¿Dónde analizar? En la última década dado que se tiende a procedimientos de ocultación públicos la tendencia es estudiar portadores ampliamente distribuidos por Internet, así como tecnologías o herramientas que pudieran facilitar el uso de procedimientos esteganográficos para distribuir mensajes en Internet. Es cierto, al igual que sucede con otras tecnologías, que la ciencia de la esteganografía, entre sus múltiples usos, podría facilitar la sincronización y comunicación de grupos para realizar tareas delictivas. Quizás por este motivo en la primera década del siglo XXI se ha dedicado un esfuerzo enorme en avanzar en algoritmos y herramientas de estegoanálisis. En la actualidad, no se conocen estudios públicos significativos de estegoanálisis masivo, quizás por la complejidad de realizar estos. El único trabajo significativo, por su notoriedad pública, fue la herramienta gratuita Stegdetect desarrollada por el Niels Provos en 2001, que permitió la detección automática de ciertas herramientas esteganográficas, muy difundidas, que trabajan con imágenes JPEG (Jsteg, Jphide, Outguess 01.3b, F5, appendX y Camouflage). Niels utilizó esta herramienta para analizar más de dos millones de imágenes de eBay y un millón de imágenes de la red USENET. Este proceso no encontró ningún mensaje oculto, resultado que reflejó, al menos para los algoritmos soportados, que la presencia de información oculta en medios de comunicación masivos no era tan común como informaban algunos medios (periódico USA Today) , que pretendían promover la prohibición de la esteganografía debido a su potencial uso por terroristas (Al-Qaeda).



5. RECOMENDACIONES

5.1. Balance perceptibilidad-ocultación. Selección del estegomedio más apto y la técnica más adecuada

La pregunta más importante que debe intentar resolverse cuando se use tecnología esteganográfica es identificar claramente que procedimientos y estegomedios son los más adecuados en función de los intereses perseguidos. Esta elección no siempre es sencilla y depende de factores como: la "invisibilidad" de la técnica esteganográfica, la cantidad de información a ocultar, la tolerancia a ataques activos, las limitaciones del canal de transmisión o soporte donde se almacene, la necesidad de ocultarse en un estegomedio dado, etc.

En la medida de lo posible se deberían considerar las siguientes cuestiones:

1. Introducir los ataques estegoanalíticos (visuales, estadísticos, caracterización del portador, etc.) en el propio diseño del algoritmo esteganográfico. Esto no es nada nuevo en otras ciencias, como por ejemplo en la criptografía. La idea es probar si el algoritmo esteganográfico desarrollado es seguro a los ataques y tendencias conocidas.

2. Elección del portador. En los últimos años la tendencia de la comunidad científica es recomendar la utilización de cubiertas únicas por cada transmisión encubierta, para dificultar ataques de comparación, y seleccionar tipo de cubiertas ampliamente disponibles para dificultar la tarea del estegoanalista de "separar el grano de la paja".

3. Caracterización del portador. Una vez elegido un tipo concreto de portador, por ejemplo ficheros gráficos JPEG, es importante destacar que no todos los portadores de ese tipo son igual de "seguros" para su uso en esteganografía. La caracterización del portador concreto y el estudio de los ataques existentes permitirán concretar esta elección. Por ejemplo, en imágenes digitales los principios comentados anteriormente pueden conseguirse obteniendo una imagen de alta resolución, que puede ser obtenida con una cámara digital de fotos, para cada comunicación a realizar. Una fotografía de alta resolución presentará menos áreas uniformes, y simplemente por esto, minimizará ataques como por ejemplo los ataques visuales, y la medición de variaciones estadísticas no dará tan buenos resultados. Del mismo modo un portador, que puede ser recomendado para su uso esteganográfico, puede tener ciertas zonas que no serían recomendables de manipular porque introducirían anomalías más fácilmente detectables. La pregunta a responder sería: ¿es posible descartar esas zonas de una manera automatizada? En general, este problema es complejo ya que depende de la información a ocultar, de la cubierta seleccionada y del procedimiento esteganográfico concreto. Por suerte, los algoritmos basados en el concepto de Wet Paper Codes (códigos WPC), introducido por la investigadora Jessica Fridrich, permiten abordar este problema e incluso introducen la libertad para el emisor que las posiciones donde se realizan las modificaciones no tengan que ser conocidas por el receptor (non-shared selection channel). El concepto Wet Paper puede comprenderse fácilmente con una metáfora. Supongamos que tenemos una imagen que se ha expuesto a la lluvia de tal forma que el emisor sólo puede modificar ligeramente las zonas secas de la imagen pero no las zonas mojadas. Durante la transmisión, la estegoimagen se seca y por lo tanto el receptor no tiene información de las zonas secas que se modificaron, zonas que almacenan el mensaje oculto. Los códigos WPC intentan solucionar esta situación y permiten recuperar el mensaje oculto sin conocer las posiciones exactas de modificación.

4. Limitaciones de los algoritmos estegoanalíticos. La propia naturaleza de los algoritmos estegoanalíticos más robustos, normalmente se aposentan en la estadística, limitan su detección a ciertos umbrales mínimos. Es decir, estos algoritmos siempre detectan una mínima cantidad de información oculta, depende de la cubierta y del algoritmo, que va desde una decena a centena de octetos, independientemente si la cubierta tiene o no información oculta. Este hecho puede comprenderse porque en los potenciales estegomedios, por ejemplo imágenes digitales, es habitual que exista un pequeño "ruido" de fondo, es decir, un pequeño conjunto de perturbaciones "naturales". Esto supone falsos positivos y, lo más importante, un umbral de acción para seguir ocultando información sin que los algoritmos de estegoanálisis sean capaces de inferir qué cubiertas realmente ocultan información y cuáles no. Este hecho se puede resumir coloquialmente de la siguiente manera: a menor información ocultada la probabilidad de detección será más baja, incluso llegando a dificultar el descernimiento “estegoanalítico” de un potencial atacante. El objetivo por tanto es jugar con el balance perceptibilidad-cantidad de información a ocultar. La solución trivial a este problema consiste en ocultar menos información, pero por suerte pueden combinarse otra serie de criterios, adicionalmente a algoritmos de compresión, para aprovecharse de estos límites de detección. En concreto, el uso de distribución de la información y el uso de matrices de codificación, como veremos a continuación.

5.2. Minimizando el impacto en el portador mediante matrices de codificación y distribución de la información

En el apartado anterior mencionábamos el concepto de balance de perceptibilidad-capacidad de ocultación, es decir, a menor cantidad de información ocultada la probabilidad de detección (clásicamente un número de modificaciones más pequeñas) será menor (en este caso se está hablando de técnicas esteganográficas "intrusivas" que modifican un portador). Para dificultar al máximo la detección de un estegoanalista es común combinar dos procedimientos que se van a destacar: la distribución de la información y el uso de matrices de codificación.

a) Distribución de la información. Una manera conceptualmente sencilla de reducir el impacto de insertar una información en un portador consiste en dividir esa información en N partes e insertarla en N portadores (estegomedios) y en N proveedores (disco duro, youtube, cuenta de correo, etc.). Estos portadores podrían ser del mismo tipo o no (ficheros de video, audio, imagen, texto o mediante el uso de tecnologías web masivas). Si la información se distribuye por Internet el estegoanalista tendría la gran problemática de localizar las "partes" exactas entre la enorme cantidad de información disponible en la red de redes. Alguna propuesta práctica de este concepto es la herramienta StegPage que permite ocultar una información distribuyéndola en distintas imágenes JPEG de una página web (para la ocultación usa la herramienta StegHide).

b) Matrices de codificación. Las matrices de codificación mejoran la relación entre la información insertada y las modificaciones de un estegomedio. Estas matrices fueron descubiertas en 1998 por Crandall. Westfeld fue el primero que implementó una aplicación práctica de las mismas en la herramienta esteganográfica F5. Estas matrices normalmente consisten en maximizar la información a ocultar minimizando el número efectivo de posiciones (por ejemplo, pixeles) a modificar. Un ejemplo matemático sencillo para comprender su funcionamiento puede extraerse del sistema planteado por Westfeld en F5 que implementa una matriz de codificación basada en códigos binarios Hamming. Este sistema permite modificar, como mucho, una posición de cada (2^n)-1 posiciones por cada n bits a ocultar. Entiéndase por posición el "lugar" en el estegomedio donde es posible realizar una inserción, por ejemplo, en los píxeles de una imagen. Por ejemplo, si tenemos 2 bits que se desean ocultar (x1, x2) en los LSB de 3 pixeles (a1, a2, a3), sería posible ocultarlos modificando como mucho un LSB (1 bit). La particularización del sistema definido para n=2 quedaría entonces de la siguiente manera relacionando los bits mediante operaciones or-exclusiva:



Figura 11. Ejemplo de matriz de codificación.

En general, este esquema crece exponencialmente con el tamaño de la información a ocultar. En los últimos años se han publicado varios trabajos interesantes en esta temática intentando maximizar la capacidad de ocultación minimizando el número de modificaciones y minimizando el número de posiciones efectivas necesarias (tamaño del portador). No obstante, el esquema citado puede utilizarse con valores n pequeños y obtener sistemas esteganográficos interesantes. Por ejemplo, con n = 10 necesitaríamos 2^10-1 posiciones útiles que se pudieran modificar (de las cuales solo se modificaría UNA como mucho) para ocultar 10 bits de información. Es decir, si pensamos en términos de LSB de pixeles, se necesitaría 1023 pixeles por cada 10 bits a ocultar (sólo se modificará como mucho, en total, un LSB de un pixel). Así, por ejemplo, la siguiente imagen de tamaño de 150KB que tiene 150.999 LSBs permitiría ocultar 1470 bits (183 caracteres ASCII) modificando como mucho 147 bits. Si se usa 10 imágenes en vez de una, a cada imagen se la habría modificado como mucho 14,7 bits. Según estas condiciones la siguiente imagen podría ocultar el siguiente texto:



Figura 12. Estegoimagen con información oculta.

El jueves a las 11:00 deberás entregar el informe confidencial a la persona que se te indicará. Su nombre en clave es R32. Ten cuidado, te están vigilando, 155 caracteres.

Como puede verse es posible ocultar una información de manera razonablemente segura sin realizar sistemas complejos, complicando enormemente la tarea del estegoanalista y aprovechándose de los umbrales mínimos de detección de los algoritmos de estegoanálisis (falsos positivos para decenas o pocas centenas de bits ocultos).



APARTADO 6. ALGUNAS REFERENCIAS

[1] Ahn, L., Hopper, N. Public Key Steganography. Advances in Cryptology, Eurocrypt 2004. pp. 323-341.
[2] Guillon, P., et al. Security and watermarking of multimedia contents. Conference No4, San Jose CA , ETATS-UNIS (21/01/2002), vol. 4675, pp. 38-49. ISBN 0-8194-4415-4.
[3] Backers, M., Cachin, C. Public key steganography with active attacks. Springer Berlin / Heidelberg. LNCS, vol. 3378/2005, pp. 210-226. ISBN: 978-3-540-24573-5.
[4] Natori, S. Why Quantum Steganography Can Be Stronger Than Classical Steganography. Springer Berlin / Heidelberg, vol. 102/2006, pp. 235-240. ISBN: 978-3-540-33132-2.
[5] Dobsí, M., et al. A Theoretic-framework for Quantum Steganography. Proceedings of Workshop 2006. CTU, vol. A, pp. 124-125. ISBN 80-01-03439-9.
[6] Conti, R., et al. Quantum steganography. Patent 10/849789. 2004.
[7] Cox, I., et al. Digital Watermarking and Steganography. Morgan Kaufmann, 2 edition (2007). ISBN-13: 978-0123725851.
[8] Bergmair, R. A comprehensive bibliography of linguistic steganography. Proceedings - Spi the international society for optical engineering. 2007, vol. 6505. Doi:10.1117/12.711325.
[9] Fridrich, J. Web page. http://www.ws.binghamton.edu/fridrich/publications.html