La esteganografía lingüística es una ciencia que se aprovecha de la lingüística computacional para diseñar sistemas útiles en la protección y la privacidad de las comunicaciones digitales y en el marcado digital de textos. En los últimos años se han documentado múltiples formas de alcanzar este objetivo. En este artículo se analiza la posibilidad de generar automáticamente textos en lenguaje natural en lengua española que oculten una información dada. Se proponen una serie de hipótesis y se experimenta mediante la implementación de un algoritmo. Las pruebas realizadas indican que es factible utilizar modelos N-Gram y peculiaridades derivadas de la ley de Zipf para generar estegotextos con una calidad lingüística tal que un lector humano podría no diferenciarlo de otro texto auténtico. Los estegotextos obtenidos permitirán la ocultación de al menos 0,5 bits por palabra generada.
Linguistic Steganography is a science that utilises computational linguistics to design systems that can be used to protect and ensure the privacy of digital communications and for the digital marking of texts. Various proposed ways of achieving this goal have been documented in recent years. This paper analyses the possibility of generating natural language texts in Spanish that conceal information automatically. A number of hypotheses are put forward and tested using an algorithm. Experimental evidence suggests that it is feasible to use N-gram models and specific features of the Zipf law to generate stegotexts with a good linguistic quality where human readers could not differentiate the stegotext from authentic texts. The stegotexts obtained allow the concealment of at least 0.5 bits per word generated.
La esteganografía lingüística es una ciencia, variante de la esteganografía
El interés en la última década en esta ciencia se debe a que puede dar solución a dos problemas comunes: la privacidad y el anonimato y el marcado digital de textos. Para ello se utilizan dos grandes familias de algoritmos clasificados en técnicas de modificación de textos existentes y en técnicas de generación automática de estegotextos.
Las primeras son las técnicas más tradicionales de ocultación de información que consisten en utilizar un texto existente y ocultar la información mediante la modificación de elementos del mismo. En la última década se han propuesto multitud de técnicas de este tipo (Bergmair,
Partiendo de las ventajas que ofrece un sistema frente a otro y conscientes de sus posibles limitaciones, en este trabajo se analiza la posibilidad de generar estegotextos automáticamente en lengua española utilizando modelos N-Gram y se proporciona un concepto novedoso de edición manual de estegotextos a posteriori que facilita la producción de estegotextos de apariencia similar a aquellos escritos por humanos.
En lo que sigue, para facilitar la comprensión del lector, la propuesta se estructura de la siguiente manera: En el apartado 2 se incluye una recopilación de las investigaciones más significativas sobre la generación automática de estegotextos; en el apartado 3 se enumeran nuestras hipótesis y se describe la experimentación con el algoritmo propuesto; finalmente, en el apartado 4 se sintetizan las conclusiones de la investigación realizada y se proponen líneas para posibles trabajos futuros.
Los algoritmos de generación automática de textos deben considerar la calidad léxica, sintáctica y semántica, así como la cohesión y la coherencia del estegotexto resultante. Para aproximarse a este problema, desde finales del siglo XX se han propuesto dos grandes líneas de generación, que se pueden aplicar conjuntamente: unas basadas en imitación gramatical y otras basadas en imitación estadística de un texto “típico” en una lengua concreta.
Para la generación de textos en lenguaje natural se parte de la idea de que las palabras y las expresiones presentes en una lengua siguen patrones concretos. Un modelado estadístico del lenguaje natural permitiría cuantificar diferentes aspectos sobre textos en una lengua concreta que tendría utilidad para la creación de textos con validez lingüística que no sólo no levanten las sospechas de un software automatizado (una máquina) sino tampoco de un lector humano. En general, puede ser muy complejo realizar un modelado estadístico preciso sobre una lengua. Por ello, en determinados entornos, como pueda ser la esteganografía, modelados estadísticos más sencillos serían, en principio, prácticos para propuestas reales. Por ejemplo, analizar la estadística de unos textos de entrenamiento que se toman como referencia. Si el modelo estadístico estuviera basado en textos de entrenamiento, los estegotextos generados basados en ellos reproducirían de una manera u otra su estructura. De hecho, esta idea es recurrente en algunas de las propuestas conceptualmente más interesantes de generación automática de estegotextos basada en imitación estadística.
Un ejemplo significativo es la propuesta de Peter Wayner en 1992 (Wayner,
1. Construir una tabla con todas las diferentes combinaciones de n letras que ocurran en S y contabilizar el número de veces que ocurren en S.
2. Elegir una de ellas aleatoriamente que actuará de semilla inicial. Esto generará las primeras n letras de T (el estegotexto).
3. Repetir esta acción hasta que se genere todo el texto deseado.
a. Coger las n-1 letras siguientes de T.
b. Buscar en la tabla estadística creada todas las combinaciones de letras que comienzan con esas n-1 letras.
c. La última letra de esas combinaciones forma el conjunto de posibles elecciones para la siguiente letra que será añadida a T.
d. Elegir entre esas letras y usar la frecuencia de sus ocurrencias en S para “evaluar” cuál es la mejor elección.
e. Añadirla a T.
Según este algoritmo, un primer orden de imitado genera caracteres aleatorios de acuerdo a su distribución estadística. En un segundo orden se imita la distribución de parejas de caracteres de los textos S de entrenamiento, y así sucesivamente para mayor orden. Se supone, por la información publicada (Wayner,
El proceso de ocultación de información se realiza mediante la selección de las opciones de la próxima letra a mostrar. Wayner justificó cómo esto se podría hacer, entre otras opciones, utilizando un árbol de Huffman. El algoritmo esteganográfico, basándose en las frecuencias de aparición de la próxima letra a mostrar, crea un árbol Huffman con ellas, asignándoles un código binario a cada una, este código es el correspondiente a la información binaria necesaria para alcanzar el nodo en el cual está presente la letra en el árbol Huffman. La ocultación de información consistiría en ir eligiendo nodos del árbol, cuyo código–rama coincidan con la información a ocultar. Si la selección de las ramas de este árbol, que imita la estadística de la fuente, es aleatoria, el texto resultante imitará o se aproximará mejor a la distribución estadística del texto fuente. Si imita la estadística es razonable que imite la sintaxis y gramática del texto de entrenamiento.
Conceptualmente no se han propuesto alternativas al sistema de Wayner. Quizás una posible variante esté basada en cadenas de Markov. Una cadena de Markov puede describirse como un modelo estocástico en el cual la probabilidad de que suceda un evento depende exclusivamente del evento anterior. Esto tiene aplicación en esteganografía lingüística y estegoanálisis. En 2003, Shu-feng investigaría sobre (Shu-feng y Huang,
Los textos en lenguaje natural pueden verse como un conjunto de léxico (palabras) que mediante uniones (reglas gramaticales) permiten construir fragmentos con significado (semántica) cuya unión (coherencia) aporta un valor concreto al lector. Dado que de una forma simplista un texto puede verse como un conjunto de oraciones unidas, tiene sentido analizar la posibilidad de imitar la estructura gramatical de una lengua concreta y analizar si en esa imitación para generar un texto válido es posible ocultar información. Una excelente manera de realizar esto es mediante el uso de gramáticas libres de contexto. Para comprender su uso es necesario remontarse a los años 60 del siglo XX. En la década de los 60 el excepcional lingüista A. Noam Chomsky postuló la gramática generativa (
En la década de los 90, Peter Wayner vinculó la posibilidad de utilizar las construcciones CFGs (Wayner,
La ocultación de información se realiza mediante la selección de elementos concretos dentro de una regla específica, regla que es elegida mediante algún algoritmo de selección concreto. En el ejemplo anterior, una posible oración extraída (selección de la regla AB) de las reglas definidas podría ser: “Buenos días, estimado compañero Tomás, dame tu número de teléfono para charlar. Un saludo” la cual ocultaría 8 bits (1+2+1+2+1+1).
Wayner desarrolló varios ejemplos interesantes aplicando estas ideas: spammimic (ocultación en un mensaje con estructura de correo de spam), baseball game, etc. Aunque Wayner se esforzó en formalizar la construcción de CFGs seguras con utilidad esteganográfica (Wayner
En la práctica, resulta realmente complejo utilizar CFGs en herramientas públicas de manera robusta en la concepción actual. Un intento relevante de los pocos destacables, fue el sistema NICETEXT, del que se pueden extraer ideas para nuevos diseños.
En 1997, Chapman y Davida en diversas investigaciones (Chapman y Davida,
NICETEXT permite la generación dinámica de las reglas gramaticales basada en la imitación gramatical de textos de entrenamiento, es decir, habilita los procedimientos necesarios para identificar reglas sintácticas y mediante un etiquetador PoS (
Adicionalmente a las características mencionadas, es importante añadir que NICETEXT todavía produce estegotextos con defectos derivados de sustituciones no válidas en contexto y anomalías entre el estilo de escritura seleccionado y el vocabulario empleado. No obstante, pocas innovaciones se han dado en esta línea de investigación desde las ventajas conceptuales aportadas por NICETEXT, aunque es cierto que se han publicado otras propuestas basadas en gramáticas libres de contexto, como por ejemplo la herramienta TEXTO que transforma información a sentencias en inglés (disponible en ftp://ftp.funet.fi/pub/crypt/steganography), las herramientas C2txt2c (Zuxu
El estudio de las propuestas publicadas de generación automática de estegotextos hace que centremos nuestro interés en la posibilidad de generación basada en imitación estadística. El principal motivo reside en evitar posibles restricciones o limitaciones del uso de todos los recursos necesarios para llevar a la práctica una generación basada en imitación gramatical: analizadores morfosintácticos, recursos léxicos, etiquetadores, etc. Al fin y al cabo, si la imitación estadística es la adecuada, se debería imitar la estructura gramatical de la lengua o textos de entrenamiento seleccionados.
En el siguiente apartado se proponen una serie de hipótesis acerca de la posibilidad de utilizar modelos N-Gram para generar automáticamente estegotextos en lengua española. Seguidamente, se llevan a cabo diversas medidas para corroborar las afirmaciones realizadas.
Nuestra investigación se centra en la posibilidad de adaptar el algoritmo de Wayner para la imitación estadística de la relación entre palabras en un texto de entrenamiento dado. Como adelantábamos, la propuesta de Wayner hacía hincapié en la posibilidad de imitar estadísticamente la aparición de caracteres en un texto en lengua inglesa. Esta imitación, considerando secuencias de 6 o más caracteres consecutivos, permitía generar estegotextos con validez léxica y sintáctica, e incluso, en ocasiones, con apariencia de texto con coherencia global. Esta propuesta, no exenta de pequeños fallos, producía, debido a su diseño, errores léxicos. Las palabras se troceaban en un número determinado de caracteres y era posible, por ejemplo, al seleccionar el primer conjunto de letras de la tabla raíz que al juntarse no produjeran palabras válidas. Ante esta situación se plantean las siguientes hipótesis:
Dado uno o más textos de entrenamiento, sería posible anotar las ocurrencias de las palabras presentes en los mismos y contabilizar la repetición de cada una, es decir, anotar qué palabras van detrás de qué otra y con qué probabilidad. Un algoritmo de generación automática de estegotextos podría aprovecharse de esa información para imitar la estructura de un texto en lenguaje natural seleccionando palabras. De hecho, si la selección de las palabras fuera aleatoria sería más probable que las palabras más probables se seleccionaran y menos el resto, es decir, se imitaría la estadística de la fuente de entrenamiento. Si se imita la estadística de la fuente, es más probable que el estegotexto resultante, que está basado en textos de entrenamiento con validez léxica y sintáctica, tenga a su vez validez léxica y sintáctica. La ocultación de información se realizaría mediante la selección concreta de unas palabras u otras. Los textos resultantes deberían tener la suficiente calidad lingüística para no ser detectados por un software automatizado y en la medida de lo posible tampoco por lectores humanos.
Considerando estas hipótesis se formula la implementación del siguiente algoritmo:
1. El proceso de generación se basa en el análisis de bloques de n palabras, extraídas de uno o más textos de entrenamiento, mediante una ventana deslizante que se desplaza una posición para cada nuevo bloque. Es decir, el primer bloque tendrá las palabras de 0 a n-1, el segundo bloque de 1 a n, y así sucesivamente.
2. N define el orden de complejidad del algoritmo (N-gram), lo que significa el número de palabras a considerar consecutivamente.
3. Las palabras se relacionan mediante nodos enlazados en los que se contabiliza el número de veces que se han repetido en el texto de entrenamiento. Según esto, existirá una tabla raíz que almacenará todas las “palabras diferentes” que existan en el texto fuente.
Basado en lo anterior, el algoritmo de generación de estegotextos funcionaría, en general, de la siguiente manera:
a) Se selecciona una “palabra” aleatoriamente de la tabla raíz, aunque podría considerarse otro criterio con fines sintácticos, como por ejemplo hacer que el estegotexto empezase por un artículo o por mayúscula. Esta selección desencadenará el resto del estegotexto resultante, por lo que para un mismo texto de entrenamiento es posible obtener diferentes estegotextos seleccionando diferentes palabras de la tabla raíz.
b) Si esta palabra no tiene sucesores, es decir, no apunta a otro nodo, se elije otro término de la tabla raíz (paso a). Si el nodo sucesor solo tiene una palabra, esta palabra se añade al estegotexto, lo que significa que no es posible ocultar información en este paso, y se elige el siguiente nodo disponible. Si el nodo sucesor tiene varias palabras posibles entre las que elegir esta selección permitirá ocultar información. Para intentar que la imitación estadística sea lo más adecuada posible, lo que afecta a la calidad lingüística del estegotexto, se decide que con las palabras de cada nodo y las frecuencias con las que aparecen (después de la palabra del nodo anterior) se construya un árbol de Huffman. La palabra seleccionada será aquella cuyo código binario (información binaria para acceder a ella a través de las ramas del árbol) coincida con la información binaria que se quiere ocultar.
c) Si se llega al último nodo (si el orden n=8 serían 8 palabras consecutivas) se elige la última palabra seleccionada para el estegotexto y se vuelve al paso b). Este proceso se repite hasta que se genere el estegotexto que oculta la información deseada.
d) El receptor necesita construir la tabla de frecuencias del texto de entrenamiento seleccionado e invertir el proceso para conocer los bits que ocultan cada palabra del estegotexto recibido.
Por ejemplo, el algoritmo principal podría elegir de la tabla raíz la palabra “La” seguidamente la palabra “habitación” y finalmente, el orden n-ésimo, la palabra “Juan”. De esta forma se construiría el estegotexto con la información a ocultar. El receptor reconstruiría la tabla de frecuencias utilizando los textos de entrenamiento y recuperaría la información enmascarada.
Con el objetivo de cuantificar la calidad de la propuesta algorítmica de generación automática de estegotextos basada en modelo N-Gram se implementa este algoritmo en lenguaje JAVA y se realizan una serie de medidas, estudiando propiedades estadísticas, el tamaño y la calidad del estegotexto resultante.
En primer lugar es interesante comprobar si un modelo N-Gram imita, se aproxima, correctamente a la estadística de textos de entrenamiento. Si esta imitación es adecuada los estegotextos resultantes imitarán de mejor manera la estructura gramatical de los textos de entrenamiento. Analizando diferentes fuentes/textos de entrenamiento puede cuantificarse como es cierta esta aproximación estadística. Al menos lo es comparando la estadística de caracteres y de palabras en fuentes de entrenamiento y estegotextos generados para órdenes n mayores de 7.
A continuación, por brevedad, se adjuntan algunos ejemplos de estas medidas, véase
El algoritmo desarrollado produce estegotextos cuyo tamaño depende del orden n y de los textos de entrenamiento (factor de expansión). Cuanto mayor sea el número de palabras presentes en un texto de entrenamiento más probable será que existan múltiples alternativas de palabras a continuación de otra dada, por tanto, habrá más opciones entre las que elegir y se conseguirá ocultar más información por palabra generada, lo cual reducirá el tamaño final del estegotexto resultante. Por otro lado, el orden de imitado también afectará directamente al tamaño final. Si el orden es pequeño, por ejemplo n=3 (tres palabras consecutivas), es más fácil que existan varias palabras sucesoras en el texto de entrenamiento que si el orden es mayor. Esto es fácil de entender con un ejemplo: es más fácil encontrar varias palabras que sucedan a “la casa”, por ejemplo “la casa es”, “la casa blanca”, “la casa está”, etc., que palabras que sucedan a “yo vivo en la calle Carretas situada en”. Un orden pequeño generará estegotextos más pequeños pero de peor calidad lingüística, mientras que un orden grande generará estegotextos más grandes pero de mejor calidad. Por tanto, la elección del orden es una cuestión arbitraria que debe considerar el emisor en función del texto de entrenamiento.
En la práctica, las pruebas realizadas indican, que en general un orden entre 7 y 9 proporciona unos resultados léxicos y sintácticos que no son mejorados con un orden superior. En la medida de lo posible, debe evitarse el uso de órdenes mayores de 9 ya que provocaría un estegotexto de mayor tamaño. El impacto final de los elementos en juego (orden n, texto de entrenamiento e información a ocultar) influirán en el factor de expansión. Se conoce como factor de expansión a la relación:
En la
Por tanto, en la cuantificación de que texto de referencia será mejor para reducir el factor de expansión debe considerarse:
El orden de entrenamiento. A menor orden menor factor de expansión por la explicación reflejada en párrafos anteriores.
- La probabilidad de las palabras en el texto de referencia. Cuanto mayor sea el número de palabras con probabilidad de ocurrencia alta en un lenguaje dado existirá un mayor número de palabras a continuación de las mismas y por tanto se podrá ocultar más cantidad de información reduciendo el factor de expansión (al que le afecta en gran medida las palabras seleccionadas que no ocultan información).
Una vez observados aspectos estadísticos y de tamaño derivados de la aplicación de un modelo N-Gram en la generación de estegotextos es el momento de analizar la calidad de los textos generados.
A continuación se presentan varios ejemplos de estegotextos generados para diferentes órdenes y textos de entrenamiento, con el objetivo de apreciar algunas de las afirmaciones vertidas en los párrafos anteriores (
En los ejemplos anteriores, en los que, de momento, ignoramos inconsistencias y problemas de cohesión y coherencia global, puede observarse que los estegotextos generados no finalizan necesariamente con una estructura puramente sintáctica. Esto no es un problema excesivo ya que se pueden finalizar manualmente o mediante algún procedimiento automático. El algoritmo puede insertar en la información ocultada un marcador de fin de forma que no implique problemas de desincronización en el receptor al recuperar la información. El receptor sabe hasta qué palabra el estegotexto contiene información útil y después de cuál es simplemente relleno.
La calidad del texto de entrenamiento, como lo es también el orden de complejidad, es vital en la generación de los estegotextos. Entendemos por calidad no sólo el tamaño del mismo, sino también su validez léxica, sintáctica, su género literario, su estilo, etc. Ante este condicionante una pregunta interesante a resolver sería qué texto de entrenamiento, si es que hay alguna preferencia, es más adecuado para su uso esteganográfico. En principio, diferentes tipos de textos podrían ser considerados como fuente para ocultar información: poemas, novelas, artículos periodísticos, código de programación, etc. Desde un punto de vista lingüístico, y al trabajar con secuencias de n palabras consecutivas, sería interesante filtrar zonas del texto que pudieran afectar claramente a la coherencia del estegotexto resultante como resultado de concatenar diversas secuencias de palabras. Por ejemplo, descartar índices, títulos, numeraciones ( a), b), c), I, II, III ), fechas, referencias, etc. En la práctica los textos de entrenamiento recomendados, según las investigaciones actuales, serían libros y novelas (narrativa) con decenas de miles de palabras. También una obra de poesía podría ser una buena candidata como fuente de entrenamiento ya que, en general, la coherencia entre las frases en este tipo de textos puede entenderse como más flexible que en otros tipos de textos de entrenamiento. De hecho, es frecuente en este tipo de textos que frases adyacentes hablen de cosas muy diferentes.
Como se justificó en apartados anteriores, el algoritmo permite la creación de diferentes estegotextos para una misma información a ocultar, texto de entrenamiento y orden n. Esto depende de la primera palabra seleccionada en la tabla raíz. Será posible crear tantos estegotextos diferentes como palabras diferentes existan en el texto de entrenamiento y muchos de estos estegotextos tendrán similitudes.
Mediante el software implementado es posible generar todos los estegotextos posibles, es decir, generar cada uno de los estegotextos para cada una de las palabras de la tabla raíz. Esta opción facilitará al emisor elegir el estegotexto más adecuado, más bits ocultos por palabra (estegotextos más pequeños) o aquellos con mejor aceptabilidad lingüística. Esta opción es muy interesante si se utiliza un texto de entrenamiento diferente por cada comunicación y se desea elegir el “mejor” estegotexto posible.
A continuación, se adjunta un ejemplo de algunos de los posibles estegotextos para la ocultación de una pequeña información de 72 bits, que contiene la dirección IP 81.10.49.51 representando cada carácter a ocultar con 6 bits y después 6 bits de código de fin, utilizando para ello como fuente de entrenamiento la versión digital de “Guerra y Paz” de León Tolstoi, cuyo tamaño en texto plano es 396KB con 69.344 palabras. En los siguientes ejemplos se ha utilizado un orden n=7, generando 9.291 estegotextos diferentes.
nueva ciencia - la estrategia -, pero el príncipe Bagration no le miró con gozo, inclinando la mano, cosa que todavía no le ha llamado ni una sola en el campo. -No olvides que estarás con mi padre y la hija de la visitante, con la túnica de las tres días de armisticio. Bagration contestó. - ¿No quieres...? - preguntó. - A la habitación de
había hecho un esfuerzo extraordinario para decir que no respondería de sí misma frase -. No se pueden vivir sin guerras. ¿Por la noche, cuando, después de la ausencia, a las piernas. Sus mejillas se contraían violentamente, y cuando se encogió de hombros y abrió los brazos separados del cuerpo, presentaba su marido con el mismo tono de la Princesa, como si ésta se fue a dormir a casa del conde Bezukhov. III En el momento
El mayor problema en la ocultación de información mediante esteganografía lingüística, ya sea en textos existentes o generados, es conseguir que el estegotexto resultante presente cohesión y coherencia global, es decir, que no sea una secuencia de frases “más o menos ordenadas”.
El algoritmo de generación automática basado en un modelo N-Gram produce todavía pequeños errores gramaticales, por ejemplo, signos de puntuación que se abren y no se cierran, así como posibles problemas de coherencia global cuando el estegotexto crece en tamaño, por ejemplo, que se repitan expresiones. Teóricamente es difícil razonar, con los conocimientos actuales, que un algoritmo pueda generar estegotextos de muy alta precisión para contextos variados, ya que esto sería como haber encontrado una solución a un problema parecido al formulado en el test de Turing
Dado que resulta muy complejo dar con un algoritmo genérico que genere automáticamente estegotextos con una validez lingüística alta, esto es más crítico para estegotextos más grandes, el problema se puede enfocar de otra manera. Si no es posible generar estegotextos perfectos, a lo mejor sí es posible modificarlos una vez creados “maquillando” los errores derivados de la generación automática. Si se profundiza en esta idea, existe el problema fundamental de sincronizar las “palabras” donde el emisor oculta la información con las “palabras” que espera el receptor para recuperar el mensaje oculto, es decir, introducir cambios en el estegotexto generado implicaría que el receptor debería conocerlos, lo cual no es muy práctico porque implicaría el envío de los mismos para evitar la desincronización.
Pensemos en la estructura en forma de árbol utilizada por el algoritmo para ocultar una información. Una información se oculta mediante la selección de una palabra entre las disponibles en el siguiente nivel. Es decir, si se selecciona la palabra “La” la siguiente palabra podría ser “habitación” (bit 0), “había” (bit 10) o “limpió” (bit 11) en función de los bits a ocultar, véase
En este proceso de recuperación y de sincronización podría actuarse de varias formas: Una consistiría en que la herramienta diera error si después de una palabra del “supuesto” estegotexto se encuentra otra palabra que no coincide con ninguna de las esperadas. Si el atacante tuviera información de las tablas de frecuencia esto le simplificaría descartar mensajes sin información oculta; otra variante consistiría en despreciar todas las palabras que se lean hasta que se encuentre una de las palabras posibles para el nivel de la tabla (lista enlazada) donde nos encontremos. Realmente lo importante es que el receptor no pierda la sincronización respecto a la tabla de frecuencias y al estegotexto recibido.
Este detalle, permite mejorar a posteriori, en principio manualmente, estegotextos generados por el emisor sin que ello afecte al receptor. La única condición es que el emisor puede utilizar cualquier palabra que no se encuentre en el nivel posterior para que el receptor no pierda la sincronía. Es decir, en el ejemplo anterior entre las palabras que forman las parejas “La habitación”, “La había”, “La limpió”, podría utilizarse cualquier palabra, una o más, que no fuera “habitación, había o limpió”. De esta forma el emisor puede corregir posibles errores gramaticales y mejorar la coherencia del texto sin necesidad que el receptor conozca esta información.
Por ejemplo, si ocultamos una pequeña información de 126 bits, usando un orden 9 y fuente de entrenamiento las poesías completas de Antonio Machado obtendríamos entre los estegotextos posibles uno como el siguiente (se adjunta sólo un fragmento,
Supongamos por un momento que queremos corregir una serie de pequeños errores, como, por ejemplo, signos de puntuación o mayúsculas (
Para solucionar estos problemas, el algoritmo implementado genera una plantilla con las palabras posibles en cada nivel, de forma que el emisor pueda seleccionar qué palabras añadir entre palabras del estegotexto, palabras que serán despreciadas por el receptor. Por ejemplo, seleccionamos de
[WORD:en] [muerta][flota][.][bella][roja][en][,][sobre][arrebolada][y]
[WORD:la][sus][la]
[WORD:arboleda] [arboleda]
[WORD:!] [!]
[WORD:Mientras] [Mientras]
[WORD:el] [el]
[WORD:corazón][querido][sueño][fondo][mar][temblor][semblante][tictac][vino][aire][sol][ataúd][silencio][blanquecino][maestro][solitario][blanco][mármol][fruto][encanto][hálito][patio][pretil][ambiente]…
Teniendo en cuenta esto, editamos la frase. Entre las múltiples opciones posibles elegimos la siguiente:
Por suerte, en los textos en lenguaje natural en español, y en otras lenguas, las palabras tienen co-ocurrencias determinadas, es decir, es más probable que ciertas palabras vayan detrás de otras y es más probable que existan más palabras detrás de unas que de otras. Esto tiene que ver con la Ley de Zipf que afirma que un pequeño número de palabras son utilizadas con mucha frecuencia, mientras que ocurre que un gran número de palabras son poco empleadas. En general, existirían pocas palabras después de las cuales será muy costoso (en tiempo) elegir una palabra nueva, porque aparecerán muchas opciones en el nivel de la tabla correspondiente, y muchas palabras después de las cuales existirán pocas opciones, con lo que se tendrá más libertad para añadir palabras nuevas.
Por ejemplo, en textos en lenguaje natural palabras como
Estos criterios ayudan a reducir el tiempo de edición y las posiciones donde es mejor trabajar para corregir los posibles fallos gramaticales. En resumidas cuentas, es posible generar estegotextos en lengua española automáticamente y corregir los errores manualmente sin afectar a la correcta recepción, creando estegotextos de una calidad notable. Esta aportación original es la que hemos denominado
No es sencillo estimar la capacidad de ocultación real del algoritmo ya que eso depende del texto de entrenamiento, del orden y de las palabras introducidas mediante edición manual. Las pruebas que se han realizado reflejan tamaños de 0,5 a 2 bits por cada palabra presente en el estegotexto final. Las pruebas realizadas indican que para ocultación de informaciones por encima de la centena de bits, los estegotextos generados son de un tamaño destacable del orden de decenas de centenas de palabras (depende del tamaño y de la “calidad” de la fuente de entrenamiento) y por tanto la edición manual llevará un tiempo considerable (decenas de minutos). El interés de invertir más o menos tiempo en la calidad de los estegotextos generados dependerá de la importancia de la información intercambiada entre emisor y receptor.
Adicionalmente a lo anterior, existe una variante posible del funcionamiento del algoritmo aprovechándose de la técnica correctora publicada. Esta variante consistiría en la generación de estegotextos de “mala calidad” pero que ocuparan poco espacio para dedicar más tiempo a la corrección de pocos errores. Este supuesto puede ser conseguido mediante la utilización de un orden n bajo. Si el estegotexto es pequeño, sería factible incluso, mediante la técnica de maquillaje manual publicada, retocar la coherencia global de todo el texto.
Por ejemplo, si ocultamos 54 bits (un coordenada GPS: 42.08.36 → 42º 08’ 36’’) utilizando como fuente de entrenamiento la versión digital de “100 años de soledad” y un orden 3, se obtiene un estegotexto como el de la
Este estegotexto podría ser corregido manualmente y generar un estegotexto con apariencia próxima a uno generado por un ser humano (
En este trabajo se demuestra cómo es posible generar automáticamente estegotextos en lengua española mediante un modelo N-Gram. Se observa cómo imitar estadísticamente uno o más textos de entrenamiento a nivel de palabra permite una imitación léxica y gramatical mejor que propuestas previas, como por ejemplo el algoritmo de Wayner. No obstante, la utilización de un modelo N-Gram sigue produciendo estegotextos carentes de coherencia y de sentido global (especialmente si son largos). Mientras nuevas investigaciones permiten solucionar este hecho, se propone el concepto de maquillaje manual. Es posible editar estegotextos generados para corregir errores y darle una “apariencia humana” al resultado. Las pruebas realizadas indican que es factible obtener estegotextos indistinguibles por un lector humano y entendemos que si un humano no puede determinar si un texto ha sido escrito por un humano o una máquina, un software automatizado no será capaz de hacerlo tampoco. Las pruebas realizadas indican que es factible ocultar unas decenas o pocas centenas de bits en textos de decenas o pocas centenas de palabras y demuestran una ocultación mínima de 0,5 bits por palabra en el estegotexto final. Si se opta por el maquillaje manual de estegotextos que oculten decenas de bits, se observa la necesidad de invertir pocos minutos en la corrección, lógicamente esta depende de la capacidad de edición del emisor.
Esta aparentemente baja capacidad de ocultación permite, al menos, enmascarar direcciones de internet o mensajes breves (como podrían ser mensajes de movilización, localización, etc.). Por ejemplo, en una red monitorizada es posible intercambiar un “texto” inofensivo que contenga la posición GPS de una reunión clandestina o es posible intercambiar “textos” en una red corporativa que sirvan para controlar un software espía de manera transparente a los filtros de la red, etc.
Actualmente las investigaciones en curso se orientan hacia cuatro aspectos: La automatización y simplificación del maquillaje manual; aumentar la capacidad de ocultación, la introducción de modelos lingüísticos para facilitar estegotextos con mayor coherencia global y un análisis en profundidad de la seguridad de la propuesta. Destáquese que actualmente emisor y receptor de una comunicación deben conocer previamente el texto de entrenamiento utilizado. Un atacante podría intentar descubrir el texto de entrenamiento a partir de fragmentos capturados de estegotextos transmitidos. La tarea no es baladí y es exclusiva por estegotexto capturado. El orden de entrenamiento utilizado y el maquillaje manual empleado introducen la posibilidad de cuantiosos falsos positivos si se desea buscar textos que cumplan ciertos patrones N-GRAM. La estrategia a seguir de ataque no es sencilla de definir dado que no basta con hacer búsquedas en buscadores de internet u otros recursos y realizar comparaciones masivas. Este tema está abierto a la investigación.
La ciencia de la esteganografía puede definirse como 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 (Kahn,
¿Es posible que una máquina genere textos en lenguaje natural que un humano no sepa distinguir si los ha producido una máquina o una persona?