INSTITUTO POLITECNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA UNIDAD CULHUACAN
SECCIÓN DE ESTUDIOS DE POSTGRADO E INVESTIGACIÓN
ESPECIALIZACIÓN EN SEGURIDAD INFORMÁTICA Y TECNOLOGIAS DE LA INFORMACIÓN
PRESENTA:
C
ANOJ
IMÉNEZA
BEL
OCULTAMIENTO DE INFORMACIÓN EN DOCUMENTOS ELECTRONICOS DE TIPO POSTSCRIPT
PARA OBTENER EL TITULO DE ESPECIALISTA EN SEGURIDAD INFORMÁTICA Y TECNOLOGÍAS DE LA INFORMACIÓN
ASESOR:
D
R. M
ARIOG
ONZÁLEZL
EE
CONTENIDO
CONTENIDO ... 4
INTRODUCCION ... 9
CAPITULO 1...10
HIPOTESIS ...10
OBJETIVO ...11
PLANTEAMIENTO DEL PROBLEMA...12
DELIMITACIÓN...14
ESQUEMA...15
ESTADO DEL ARTE ...16
Steganopic 0.1 (Windows)...17
Cloak 7.0 (Windows)...17
CryptoMX 1.1 (Win Mac Lin) ...17
Dound’s Steganography 1.6 (Windows) ...17
Hip 2.0 (Windows) ...17
UnderMP3Cover 1.1 (Linux)...17
Hide In Picture 2.1 (Windows) ...18
S−Tools (Windows) ...18
Wodax 1.2 (Windows)...18
Absolute Chaos 3.8 (Windows)...18
Hide In Picture 2.1 (Windows) ...18
MP3Stego (Windows, Linux) ...18
Invisible Secret 4 (Windows) ...18
InvisibleInk (Windows) ...19
Steganography (Windows)...19
Hermetic Stego (Windows) ...19
BitCrypt (Windows) ...19
Bon Kyu Bon 1.1.3011 (Windows)...19
SteganoG 1.21 (Windows) ...20
PicCrypt 0.3 (Windows)...20
Xiao Steganography 2.6.1 (Windows) ...20
ByteShelter 1 (Windows)...21
Digital Identity 1.0.16 (Windows)...21
HIP (Hide In Picture) 2.1 (Windows)...22
Secure Share 1.0 (Windows)...22
StegHide (Windows, Linux)...22
AdaStegano (Windows, Linux)...22
CryptArkan (Windows)...23
Xidie Security Suite (Windows)...23
OutGuess (Unix Linux)...23
Camera / Shy (Windows)...23
JPHIDE y JPSEEK (Windows)...23
Hydan (Unix Linux Windows)...24
CAPITULO 2...25
POSTSCRIPT...25
Lenguajes de Descripción de Pagina ...26
Estructura del Lenguaje...26
Programación en PostScript ...27
Números ...28
Strings...28
Nombres ...29
Arreglos...29
Procedimientos...29
Ejecución ...29
Estructuras de control...30
SELECCIÓN DEL LENGUAJE DE PROGRAMACIÓN ...32
SELECCIÓN DE MODULOS A DESARROLLAR...32
CAPITULO 3...34
ARCHIVOS DE TEXTO ...34
ARCHIVOS POSTCRIPT...35
FORMATOS COMPARATIVOS TEXTO Y POSTSCRIPT...36
CAPITULO 4...37
DESARROLLO DEL GENERADOR...37
Modo de Funcionamiento ...38
Técnica Esteganografica ...40
DESARROLLO DEL EXTRACTOR ...44
Uso Ciclo Ocultamiento – Recuperación...46
Parámetros para el Ocultamiento...46
Parámetros y uso de Portadores...48
Parámetros y uso de Extracción...51
CAPITULO 5...55
PRUEBA MOS...55
Elaboración...55
RESULTADOS...59
APLICACIONES Y USOS ...61
CAPITULO 6...63
Modificaciones Futuras...63
POSIBLES MEJORAS...63
Ampliar opciones de Formato...64
Criptografía antes de Esteganografía...64
Disminuir tamaño de archivos finales...64
Incluir archivos multimedia...65
Incluir archivos binarios o ejecutables...65
Compilación en otros Sistemas Operativos...66
CAPITULO 7...67
CONCLUSIONES...67
BIBLIOGRAFIA ...68
ANEXO 1...70
Código Fuente del Generador...70
Código Fuente del Extractor ...81
Fig. 1. Bloques de Desarrollo ...15
Fig. 2. Tabla de Codificaciones ...27
Fig. 3. Flujo de Esteganografía Propuesto...33
Fig. 4. Flujo de Extracción Propuesto...33
Fig. 5. Aspecto del generador sobre la línea de comando ...37
Fig. 6. Flujo de Ocultación de Información ...38
Fig. 7. Archivo de Texto Portador ...39
Fig. 8. Archivo PostScript resultante ...40
Fig. 9. Métricas de un carácter ...41
Fig. 10. Comparativa de Textos...42
Fig. 11. Estructura PostScript con información Oculta ...42
Fig. 12. Estructura PostScript sin información Oculta...43
Fig. 13. Archivo PostScript Sin Información Oculta...43
Fig. 14. Archivo PostScript Con Información Oculta ...43
Fig. 15. Comando de Generación de PS con información Oculta...44
Fig. 16. Flujo de Extracción...45
Fig. 17. Utilización en línea de comando para el programa Extractor...46
Fig. 18. Definición de Parámetros de formato en ejecución del programa generador 47 Fig. 19. Estructura de ficheros ejemplo en Sistema de Archivos ...48
Fig. 20. Ejemplo de contenido en archivos de Texto ...49
Fig. 21. Nombres de archivos PS generados ...49
Fig. 22. Comparativa ente texto plano y texto en PostScript ...50
Fig. 23. Archivos de prueba para Extracción ...51
Fig. 24. Apariencia de una recuperación de Información...52
Fig. 25. Ejemplo de Ocultación entre el mismo texto...53
Fig. 26. Extracción de un archivo oculto en si mismo...54
Fig. 27. Formato para evaluación MOS de Impresiones PS ...56
Fig. 28. Primer Memorando (Texto 1)...57
Fig. 29. Segundo Memorando (Texto 2)...57
Fig. 30. Parte de Texto Largo en PostScript (Texto 3) ...58
Fig. 31. Comparación Binaria...60
INTRODUCCION
El ocultamiento y la protección de la información, siempre será un tema de interés desde nivel personal hasta masivo, refiriéndonos a un interés por gobiernos o milicia;
así para la parte que involucra el ocultamiento o protección como se menciona en la hipótesis y en base a la premisa que las necesidades de protección, se tienen diferentes soluciones, estas soluciones son varias, sin embargo estudiamos una que puede presentarse comúnmente en el medio computacional y particularmente en un tratamiento especifico a la forma de utilizar textos en formato electrónico PostScript y en estos su capacidad de especificar con alta precisión ubicaciones de letras en un documento electrónico de esa naturaleza y así aprovechar dicha característica para poder ocultar información ante una lectura al documento electrónico PostScript final.
En el desarrollo de programas que involucren al computo, generalmente se ocupan variadas metodologías de ocultamiento así que en este trabajo nos ocuparemos de utilizar Esteganografía con texto para formatos de impresión electrónica por medio de PostScript, definiendo mas adelante algunos temas, problemas y delimitaciones para alcanzar los objetivos de este proyecto.
CAPITULO 1
HIPOTESIS
La Esteganografía oferta muy variadas y efectivas formas de proteger y ocultar información o datos; con esta disciplina se han desarrollado muy diferentes maneras para trasportar información en determinado medio con mas de lo que se pueda pensar en una primera vista hacia dicha representación. Lao anterior se ha desarrollado desde tiempos remotos hasta nuestros días, han existido muchas técnicas diferentes aún cuando se requiera ocultar el mismo tipo de información, un ejemplo; si se deseaba ocultar un mensaje de texto se logra por medio de micro puntos señalando una letra dentro de un texto para formar una oración, otro ejemplo esta en que se rapaba a una persona de manera que se perdiera de vista el mensaje entre el resto del cabello; siempre cumpliendo la finalidad de poder pasa alguna información inadvertida por demás medios o personas que estén al tanto de poder sospechar o percatarse de que se transmite información importante. Con lo anterior se cumple la finalidad original de la Esteganografía, que es ocultar información en un medio, a manera de que no levante sospecha alguna de que existe mas información de la que se observa a simple vista.
En el transcurrir del tiempo y el avance de la tecnología el ser humano se ha apoyado de su ingenio para mezclar, usar y desarrollar nuevas formas de ocultar información.
Actualmente el uso de la computadora ha facilitado en gran media el ocultar información en datos, estos datos pueden representar alguna información diferente entre una y/o otra persona, siendo así que se tiene una gran capacidad de enmascaramiento de información en estos medios digitales logrando transportar mas información de lo que parece, hoy en día se ha hecho uso de imágenes, sonido y video principalmente, sin descartar al texto para ocultar información, sin embargo en este ultimo medio (el Texto plano) al usarse, se ha requerido de bastante cantidad de texto para transportar determinada cantidad de algún otro contenido, lo que hace variar según la complejidad de los algoritmos utilizados resultando por ahora los mejores en desarrollos sobre ocultamiento en texto a los proyectos privados.
Con lo anterior dicho acerca de la información oculta; dentro de este trabajo nos enfocamos a desarrollar una forma de lograr mayor cantidad de información transportada mediante otro texto, este texto que en un formato electrónico debe poderse leer la misma información que la fuente original, que es un texto plano y ser transportando; a pesar de que el formato electrónico final sea mas grande para almacenamiento en disco, esto ocurrirá por respetar determinada estructura del lenguaje seleccionado que en este desarrollo será PostScript.
OBJETIVO
Con fundamento en la Esteganografía se tendrá una implementación en Software para ocultación y protección de información de texto en texto, representado por medio de un formato electrónico de visualización de documentos en pantalla y dispositivos de impresión conocido como PostScript, que debe ser capaz ademas de poder mostrar en pantalla un texto predefinido, debe poder transportar determinada cantidad de información oculta y finalmente esta implementación debe ser capaz de extraer la información que se haya logrado ocultar en este medio electrónico.
La implementación debe tener finalmente dos módulos específicos y dedicados a su tarea correspondiente; la generación y extracción de la información oculta respectivamente.
Ambas partes, la generación y la extracción deben satisfacer las siguientes características:
• Ejecutarse sobre línea de comandos.
• Aceptar parámetros de trabajo.
• El código fuente debe ser portable a mas Sistemas Operativos.
• El trabajo de cada modulo debe ser veloz.
Particularmente y adicionalmente la implementación encargada de generar el archivo debe:
• Tomar uno o mas archivos especificados en una ruta como fuentes para en estos ocultar otra información en un formato electrónico PostScript por cada archivo de texto localizado.
• Tomar un archivo especifico para ocultar en los archivos anteriormente señalados.
• Generar el formato PostScript que contiene la información oculta, visualizando otra originalmente especificada.
• Tomar valores básicos para visualización del formato final en pantalla.
Para la implementación de la Extracción se debe tener:
• La capacidad de especificarse el archivo PostScript que contiene la información Oculta.
• El archivo que contendrá la información que se recupere del archivo PostScript que anteriormente se ha especificado.
PLANTEAMIENTO DEL PROBLEMA
Actualmente existen muchas formas de ocultar y proteger información de muy variados tipos, desde mensajes hasta contenido multimedia, estas formas se derivan de dos grandes ramos, la Criptografía y la Esteganografía.
Básicamente el ocultamiento y por supuesto la protección de la información, son el objetivo de ambas disciplinas con determinada información, manteniendo la posibilidad al final de un proceso de tener una recuperación de determinada información para que los datos sensibles sean reconocidos o reconstruidos por algún destinatario final; una y otra utilizan técnicas diferentes de manejar dichas protecciones; cada una con sus propias características defienden metas particulares de prestaciones.
Es claro que ambas disciplinas han crecido y tienen sus origenes desde mucho tiempo atrás, pero siempre con una marcada diferencia que crea el parte aguas de sus usos, esta diferencia radica básicamente en estilo o forma visual final que pueden tener, por ejemplo para manejar textos, la frase:
“Luego de el nombre de usuario de escribe la contraseña.”
Cada que observamos una frase común como la anterior, que tiene un sentido como oración y que también podría no tener algún valor para mas, por la misma naturaleza de la misma fácilmente tenderíamos a menospreciarle y perderle interés de análisis.
Aplicando un método Criptográfico para proteger la oración anterior, es normal observar una cadena de texto similar a la siguiente:
“NjfKwoHJFLsfsdf fkjslfk .kjeoejsf*ç`¡’sdfdfç+sdf’¡’´ñ+çSFeRFffgDVBTfgH”
Observar la cadena anterior, generaría muchas ideas acerca de lo que pudiera esconder, que bien podría ser cualquier cosa, por lo que se levanta una sospecha inmediata y se puede aplicar un tratamiento inverso a manera de atacar el sistema de protección y tratar de revelar la información. Situación que se esquiva en la Esteganografía, pues ademas de la comparación visual con las oraciones que se ha presentado entre las disciplinas de Esteganografía y Criptografía, también acabamos de tener frente a nosotros un ejemplo de Esteganografía aplicada; pues se ha transmitido el texto “ABELCANO” dado que en los párrafos anteriores incluyendo este se toma cada letra inicial incluyendo las oraciónes de ejemplo.
En base a lo anterior y en el caso de aplicar la particularidad de no levantar sospecha sobre el envío o protección de mas información ademas de la que se logra ver y/o hasta cierto punto distinguir entre que es algún criptograma o algo que pretende a simple vista ocultar algo otro, o también que aparentemente no es de lo que nos interese sospechar, se tiene a la Esteganografía como solución.
La Esteganografía ha sido utilizada desde hace tiempos muy remotos y de muy variadas formas, por mencionar una manera, cuenta una historia de un rey que deseaba trasmitir información hacia un destino lejano y con muchos espías hacia su reino, se le ocurrió rapar a sus súbditos en algunas partes y formas de sus cabezas, esperar a que el resto del cabello cubriera lo suficiente el mensaje y enviarlos para que el mensaje pasara desapercibido hasta llegar a su destino y pudiera ser observando.
Pero existe una variante muy particular de uso desde tiempos anteriores hasta actuales, esta es relacionada con el texto que oculta otro texto, estos mensajes utilizando el texto como medio de transporte para ocultar y proteger información han resultado un medio que esta caracterizado por transportar poca información en comparación a los demás métodos, debido a que se tienen que especificar diferentes y entre textos ocasionalmente distantes características, así como formas de recuperar el mensaje, es decir que se han hecho por ejemplo una recuperación de texto oculto cada número de caracteres predeterminados o cada que se cumpla una condición, por ejemplo cada letra mayúscula, cada después de una coma o punto etc.
La poca cantidad de transporte de información oculta comúnmente obtenida en ocultar texto en texto, representa un gran problema para poder transportar un texto considerable por medio de otro texto, esto es debido a que a pesar de poder cambiar algunos bits que conformen un segmento de información por otros bits que representen otra información y que con este cambio no se note un cambio visual considerable en multimedios (Comúnmente conocido como LSB ‐ “Less Significant Bit”), el caso de bits en texto es totalmente diferente ya que al cambiar un bit de algún carácter lo convierte en otro y genera una gran diferencia y tentativamente puede llegar a considerarse posteriormente ante la vista de alguien mas como un criptograma.
Al complicarse un cambio LSB en un texto y descartarlo para considerar letras a partir de referencias, donde estas se pueden ser tomadas cada determinada distancia entre textos, resulta en requerir gran cantidad de texto para trasportar texto de tamaños pequeños, ejemplo de ello puede ser el tomar solo letras después de puntos o comas por ejemplo hasta formar una oración con sentido.
Actualmente se han desarrollado mejores y mas completos interpretes de formatos electrónicos que cuentan con grandes capacidades de impresión en papel como en pantalla y dispositivos de impresión, estos programas permiten gran control y conservación del formato que se diseñe en determinado programa para poder pórtalo a otros dispositivos o equipos compatibles y finalmente visualizarlo de la misma manera en que se han guardado, ejemplo de estos programas son todos aquellas
aplicaciones de procesamiento de texto, calculo o presentaciones en pantalla, ademas de estos existen también sintaxis y lenguajes completos de programación como el XML y el PostScript, el cual posee una versatibilidad de usos y de sintaxis a manera de alcanzar una impresión en pantalla o en papel muy personalizada y completa conforme a textos y vectores conservando esta presentación en diferentes sistemas operativos bajo un estándar de representación.
En así que en este trabajo aprovecharemos la potencia de generación de impresiones del PostScript para poder personalizar un texto a manera de que porte otro de gran cantidad en texto comparada con el texto inicial, hasta medidas cercanas a la misma cantidad de información del texto portador, debido a la manera en la que se interpretarán los datos de un texto que se dese ocultar en el documento electrónico de PostScript.
Lo anterior nos brinda la oportunidad de ofertar una opción mas completa a la mayoría de las aplicaciones de Esteganografía con formatos de documentos de texto electrónicos que sean portadores de alguna información adicional oculta.
DELIMITACIÓN
El manejo de texto como tal para poder ocultar otro texto, ocasiona generalmente textos portadores de gran tamaño, esto debido a las técnicas esteganograficas que se apliquen a la hora de ocultar y recuperar dicha información, la esteganografía presenta mucha flexibilidad y esta es generada por las formas en que las tome quien las aplique, es decir lejos de ser estrictamente una ciencia, puede perfilarse como un arte, gracias a que puede ser tan variante como el creador entienda y personalice un método esteganografico.
La forma que usaremos para esteganografíar un texto plano se basa en personalizar distancias entre caracteres dentro de un documento electrónico de PostScript, y es en las variaciones de estos espacios en las que se ocultara información aprovechando que estas diferencias tan pequeñas son imperceptibles al ojo humano dado que entre los espacios predeterminados y los nuevos calculados para los caracteres del texto, no debe existir una diferencia visible. Tal es que al aplicarla nos generara ciertas opciones como poder modificar el aspecto visual o conservarlo como esta en el archivo de texto fuente, para que dentro de estos cambios y aspectos finales, ademas de adherir texto oculto el adicionar un formato visual mas completo, el cual será justificar el texto y especificar algunas distancias de margenes, espacios entre líneas y tamaño de fuente para el documento electrónico.
En este trabajo, se usarán documentos en archivos de texto plano, estos serán transportados al formato de impresión en el lenguaje PostScript cambiando su aspecto de texto plano en archivo TXT a un formato justificado y espaciado con una fuente Arial en el lenguaje PostScript; se ha escogido este procedimiento para ofrecer una transformación del formato de la información que se tiene, sin cambiar el sentido de la lectura y en este proceso incluir otra información y conservar la lectura idéntica entre el archivo original fuente y el generado en PostScript, lo que finalmente entrega un procedimiento de esteganografía de texto para otro texto con gran capacidad de transporte para el mensaje oculto.
Los archivos de texto que tomaremos serán texto planos, es decir que deben de tener el texto de manera simple y una codificación Occidental (Mac OS Roman).
ESQUEMA
El trabajo es descrito en tres bloques, como sigue:
Fig. 1. Bloques de Desarrollo
• Lenguaje
• Medios
• Capacidades
Esteganogra~ia
• Sintaxis P.S.
• Ocultamiento
• Recuperación Desarollo
• Conjunto de Pruebas
• Modi~icaciones
• MOS
Pruebas
Cada bloque es una serie de propuestas, delimitaciones y mejoras a ideas iniciales.
El primer bloque se conforma de la selección del lenguaje a utilizar para generar el archivo que tendrá la información oculta que será el PostScript, así como los medios que se utilizaran para formar una estructura de transporte de información oculta, también se selecciona el lenguaje de desarrollo, tipos de archivos a tomar, en el caso archivos de texto.
Para el segundo bloque de desarrollo, se escoge la sintaxis que nos convenga para poder elaborar un archivo PostScript. tanto como se desarrollan los dos módulos principales del proyecto, siendo el primero un programa sobre la línea de comando que lleve a acabo el ocultamiento de la información de un archivo de texto sobre otro texto presentado en formato de PostScript, tanto como el desarrollo al modulo que nos ayudara a poder recuperar un mensaje oculto desde un archivo PostScript previamente generado.
Finalmente la parte de generación de pruebas tanto impresas como en pantalla que nos permite saber en base a una muestra de población que se le aplica una serie preguntas a responder en base a tres pares de documentos impresos diferentes, donde cada par esta conformado de un archivo que posee información oculta y de otro que no la tiene, estas pruebas son mayormente conocidas como pruebas MOS y describen el nivel de aceptación de un evento propuesto a la sociedad, en este caso de que no existe diferencia entre las impresiones cuando en verdad la hay, pero también no hay percepción de la existencia de información oculta, que es uno de los objetivos del proyecto.
ESTADO DEL ARTE
El campo de la esteganografía, actualmente; se perfila hacia el uso de medios electrónicos, en la mayoría de los casos, esto por la popularidad del medio y la facilidad de difusión tanto como la flexibilidad que estos medios electrónicos informáticos pueden llegar a proporcionar o en todo caso según la creatividad del autor para ocultar con ellos información o datos.
Actualmente existen mas del centenar de aplicaciones de esteganografía para trabajar de forma informática, es decir por medio de programas para equipo de computo, independiente de lo que pueda existir en otros medios como papel, perforaciones o tintas especiales.
El uso de medios electrónicos para el ocultamiento y/o protección de la información, tiene actualmente gran auge cuando estos medios son sustanciosos en sus capacidades y características propias de uso y manipulación, es decir estos recursos son muy populares y utilizables generalmente por tener un ¨tamaño¨
(Informaticamente hablando) considerable, por ejemplo videos, imágenes sonidos y formatos de impresión.
En base a lo anterior y requiriendo conocer la oferta actual, se tiene la siguiente recopilación en el estudio del arte relacionado con los programas hablando de Software tengan un objetivo de esteganografía.
Steganopic 0.1 (Windows)
Programa de esteganografía, que esconde textos en imágenes, sin cambiar su apariencia. Soporta solamente el formato GIF.
Cloak 7.0 (Windows)
Programa de esteganografía que se utiliza para encriptar y ocultar archivos dentro de imágenes BMP.
Utiliza métodos avanzados para proteger los archivos. Incluye los algoritmos de encriptación Cloak−128, Blowfish y Mercury.
CryptoMX 1.1 (Win Mac Lin)
Colección de herramientas de encriptación, esteganografía y conversión. Trabaja en conjunto con el navegador IE, Netscape, Mozilla y browsers Javascript. Esta realiza esteganografía de texto con texto pero genera un texto aleatorio del que extrae posteriormente la información.
Dound’s Steganography 1.6 (Windows)
Permite al usuario, con una simple clave, codificar y descodificar mensajes desde, o hacia, un archivo de imagen. Es muy fácil y prácticamente no se ve la diferencia entre la imagen original y la codificada. Tiene una imagen simple para probar.
Hip 2.0 (Windows)
Es un programa que te permite esconder archivos dentro de bitmaps, utilizando una contraseña. Da la impresión de que las figuras son normales.
UnderMP3Cover 1.1 (Linux)
Herramienta de esteganografía en archivos .mp3, que permite escribir y leer mensajes escondidos dentro de archivos con esta extensión, sin crear ninguna diferencia en el sonido.
Hide In Picture 2.1 (Windows)
Hide In Picture (HIP) es un programa de esteganografía. Permite "esconder" cualquier tipo de archivo adentro de una imagen bitmap (soporta GIF y BMP). La imagen luce como una foto normal, así otra persona no puede sospechar que contiene datos ocultos.
S−Tools (Windows)
Herramienta que permite guardar texto dentro de imágenes.
Wodax 1.2 (Windows)
Permite ocultar ficheros de texto plano en imágenes PNG utilizando la técnica
"esteganográfica" de Inserción en el Bit Menos Significativo" (aunque realmente usaba el par de bits menos significativos)
Absolute Chaos 3.8 (Windows)
Permite encriptar cualquier archivo o carpeta de la computadora y posteriormente ocultarlo en un fichero gif, doc, rtf... o cualquier otro.
Hide In Picture 2.1 (Windows)
Permite "esconder" cualquier tipo de archivo adentro de una imagen bitmap (soporta GIF y BMP). La imagen luce como una foto normal.
MP3Stego (Windows, Linux)
MP3Stego, es una herramienta que esconde datos en archivos MP3. El procedimiento consiste en tener un archivo de texto con uno .WAV, para ser trasformado en formato MP3. El problema es que para esconder datos de cualquier tamaño se necesita un archivo de un tamaño proporcional. Ejemplo: para esconder un archivo de 5 bytes, se necesita un archivo WAV de aprox.627kB. Como resultado, el tamaño del archivo compreso en MP3 fue 57Kb.
Invisible Secret 4 (Windows)
Codifica datos y archivos para mantenerlos a salvo o para transferirlos de forma segura a través de Internet, sino que también los esconde en lugares que superficialmente parecen totalmente inocentes, como archivos de imagenes, de sonidos o paginas Web.
InvisibleInk (Windows)
InvisibleInk es un programa de esteganografía intuitivo codificado en C# que coloca texto dentro de un archivo de imagen .bmp. El texto puede se fácilmente encriptado/desencriptado utilizando el algoritmo Rijndael con una clave de 256 bytes generada con la función sha256.
Steganography (Windows)
Steganography usa técnicas de ocultación de datos digitales (esteganografía) para esconder ficheros y mensajes dentro de otros ficheros (portadores) como ficheros de imagen o sonido. Esto te permite cifrar información sensible, mientras que al mismo tiempo la escondes en un fichero que no parece sospechoso, de forma que nadie sepa que hay información cifrada.
Hermetic Stego (Windows)
Hermetic Stego es un programa esteganografico que permite cifrar y esconder un archivo de cualquier tamaño entre uno o más archivos de imagen BMP, con o sin el uso de una clave stego/ciframiento, de manera que la presencia del archivo es indetectable, aún para programas forensicos que utilizan métodos estadísticos, y si se utiliza una clave stego de un usuario especifico, entonces el archivo solo puede ser extraído por alguien, usando el programa, que conoce la clave stego.
BitCrypt (Windows)
BitCrypt es un original codificador esteganografico para la comunidad de Inteligencia y otros por el estilo. El programa le permite al usuario almacenar cualquier mensaje de texto de manera cifrada que a su vez es ocultada dentro de una imagen especificada por el usuario. El texto es codificado con uno de los algoritmos de cifrado más robustos con el objeto de mejorar el nivel de seguridad.
Bon Kyu Bon 1.1.3011 (Windows)
Permite ocultar un fichero o mensaje dentro de otro archivo. Con Bon Kyu Bon se puede ocultar un documento importante o un mensaje secreto dentro de una inocente fotografía. Sólo se podrá descubrir el mensaje o documento con la clave o fichero llave correctos.
Bon Kyu Bon soporta los siguientes formatos: DLL, EXE, IL, BMP, TIF, TIFF, PNG, GIF, WAV, MID
SteganoG 1.21 (Windows)
Permite ocultar toda clase de ficheros tras una imagen digital. Así, cualquiera que abra el documento cifrado verá una inocente fotografía, aunque detrás se esconderá un documento secreto. SteganoG es muy fácil de utilizar. Sólo se escoge la imagen‐
señuelo y el archivo a ocultar. Además, cuando se configure la contraseña indicará si es suficientemente segura.
SteganoG soporta los siguientes formatos: RAW, BMP, DIB
PicCrypt 0.3 (Windows)
Es una herramienta de cifrado y protección de ficheros mediante esteganografía, en este caso usando imágenes. Se selecciona el tamaño de la imagen, el archivo a esconder dentro, una contraseña si desea aumentar todavía más la seguridad, y listo.
PicCrypt es muy sencillo y no necesita configurar nada. Lamentablemente, para recuperar el archivo cifrado se necesita usar PicCrypt.
P2Stego 1.0.0 (Windows)
P2Stego es capaz de insertar mensajes de texto en una imagen BMP de 24 bits. Sólo hay que elegir el fichero, introducir una palabra clave y el mensaje en sí. Al pulsar Hide message, P2Stego producirá una copia exacta de la imagen original.
Para descubrir el texto se tiene a disposición la pestaña Reveal, en la se podrá revelar el contenido oculto usando la misma contraseña. P2Stego presentará un mensaje de error genérico en caso de introducir una clave errónea o usar una imagen no cifrada.
P2Stego es una aplicación esteganográfica con importantes limitaciones. No se puede configurar y sólo permite insertar mensajes en imágenes BMP de 24 bits. Aún así, es una prueba de concepto interesante.
P2Stego soporta los siguientes formatos: BMP (24 bits)
Nota sobre P2Stego: Editar o convertir una imagen modificada por P2Stego hará que se pierda el mensaje oculto
Xiao Steganography 2.6.1 (Windows)
Se elige la imagen o fichero de sonido donde se ocultará la información, se selecciona los ficheros que quieres ocultar y ajusta después las opciones de configuración necesarias: algoritmo de encriptación, contraseña, etc.
El resultado es una imagen o fichero de sonido idéntico al original, sólo que en su interior se oculta un mensaje que sólo el destinatario, con Xiao Steganography y sabiendo la contraseña correspondiente, podrá descifrar.
Cambios recientes en Xiao Steganography: Puede adjuntar cualquier tipo de archivo solo limitado por el tamaño de la imagen que cargara los archivos, agregado un modulo de seguridad, Encripta / Desencripta con algoritmos RC2, RC4, DES, Triple DES , Triple Des 112 y Hashing MD2, MD4, MD5, SHA a través de la protección de clave secreta.
ByteShelter 1 (Windows)
ByteShelter es un sencillo programa con el que se puede ocultar un texto determinado dentro de un fichero de texto enriquecido (RTF). De esta forma, el documento RTF mantiene exactamente el mismo aspecto, antes y después de incluir el texto oculto.
El programa funciona de la siguiente manera: Copiar el texto RTF donde se ocultará el mensaje directamente desde el Portapapeles. Luego se escribe el mensaje secreto, y se vuelve a guardar el texto RTF y finalmente cópiarlo de nuevo al Portapapeles.
A partir de ese momento, se puede incluir en un mensaje de correo electrónico o en un DOC, y el receptor deberá usar ByteShelter (y por supuesto, introducir la correspondiente contraseña) para poder acceder al mensaje oculto en el texto RTF.
Digital Identity 1.0.16 (Windows)
Digital Identity gestiona contraseñas manteniéndolas en un lugar seguro, a salvo de ojos indiscretos, protegidas mediante un nombre de usuario y contraseña.
Para mayor seguridad, el programa tiene soporte para codificación de ficheros y de esteganografía. Puede codificar contraseñas dentro de imágenes. La imagen conserva un aspecto totalmente normal y nada hace pensar que oculta contraseñas en su interior.
El programa permite tanto encriptar como desencriptar contraseñas dentro de imágenes. También incluye utilidades de generación de claves, control de su fecha de caducidad y evaluación de su nivel de seguridad.
HIP (Hide In Picture) 2.1 (Windows)
Oculta un fichero dentro de una imagen en formato BMP, de forma que pase totalmente desapercibida.
Se puede ocultar cualquier tipo de fichero, y la imagen no se altera en absoluto, de forma que nadie sospechará que ese inocente gráfico BMP oculta un fichero secreto en su interior.
Los datos quedan protegidos mediante contraseña, y puedes elegir entre dos algoritmos de encriptación.
Secure Share 1.0 (Windows)
permite "esconder" ficheros cifrados dentro de una imagen, que sólo se pueden descodificar mediante el correspondiente programa.
El programa utiliza el algoritmo de encriptación Blowfish para codificar el archivo, y después lo oculta dentro de un gráfico GIF. La imagen tiene un aspecto totalmente normal y no se diferencia en nada de un GIF que no tenga información en su interior.
El archivo además se puede proteger mediante contraseña.
Después sólo tienes que enviar el archivo por e‐mail, FTP o como quieras, con la seguridad de que nadie podrá leer la información codificada en el mismo. Eso sí, el destinatario del mensaje debe tener Secure Share para poder descifrar el GIF.
StegHide (Windows, Linux)
Steghide es un programa de estenografía que permite ocultar datos en varios tipos de imagen y archivos de audio. Este Programa esta liberado bajo la licencia GPL por lo que se tiene acceso al código fuente y dispone de versiones para Windows y GNU/Linux.
AdaStegano (Windows, Linux)
AdaStegano permite ocultar cualquier tipo de fichero en imágenes bitmap de 24bpp, de forma que para una tercera persona no sepa que esa imagen contiene otro archivo.
A partir de una contraseña definida por el usuario, se ocultan los datos en un orden aleatorio; sin esa contraseña, es casi imposible siquiera “ver” que hay un fichero oculto en su interior.
Este software esta programado enteramente en el lenguaje Ada95 y liberado bajo licencia GPL, por lo que se puede bajar también su código fuente y funciona para GNU Linux y MS Windows. A diferencia del StegHide, el AdaSteganos cuenta con una interfase gráfica y esta totalmente en español.
CryptArkan (Windows)
La principal característica de CryptArkan es ocultar archivos cifrados dentro de archivos de audio wav con compresión PCM de 16 bits. Los archivos ocultos Irán protegidos mediante contraseña. Ademas de los archivos de audio, es posible ocultar y cifrar texto dentro de una imagen bmp como la mayor parte de programas de esteganografía.
Xidie Security Suite (Windows)
Xidie Security Suite es una de las aplicaciones lideres en cifrado y esteganografía e incluye funcionalidades como: compresión de archivos (incluyendo el formato Zip), cifrado, esteganografía con 40 tipos de portadores, borrado seguro de archivos y otros componentes que le ayudan a proteger los archivos y carpetas del PC y almacenarlos de forma segura. Puede proteger un archivo o múltiples archivos con solo un clic, directamente desde el Explorador de archivos de Windows.
OutGuess (Unix Linux)
Permite la inserción de información oculta en los bits de redundancia de fuentes de datos. La naturaleza de la fuente de datos es irrelevante para el núcleo de OutGuess. El programa se basa en los datos de controladores específicos que va a extraer bits de redundancia y escribir de nuevo después de la modificación. En esta versión el PNM y formatos de imagen JPEG son compatibles. En los siguientes párrafos, las imágenes se utiliza como ejemplo concreto de los objetos de datos, aunque OutGuess puede utilizar cualquier tipo de datos, siempre que cuenten con un controlador.
Camera / Shy (Windows)
Automáticamente busca y ofrece contenido descodificado directamente desde la Web.
Es un stand‐alone, Internet Explorer, basada en el navegador que no deja rastro en el sistema del usuario y ha mejorado la seguridad.
JPHIDE y JPSEEK (Windows)
Permiten ocultar un archivo en una imagen jpeg. El objetivo de diseño no era simplemente ocultar un archivo, sino de hacerlo de tal manera que es imposible probar que el archivo de host contiene un archivo oculto. Dada una imagen visual típica, una tasa de inserción baja (menos del 5%) y la ausencia del archivo original, no es posible concluir con certeza que vale la pena que el archivo de host contiene datos insertados. Como el porcentaje de inserción aumenta la naturaleza estadística de los coeficientes de jpeg difiere de "normal" en la medida en que aumenta la sospecha. Por encima de 15% de los efectos comienzan a ser visibles a simple vista. Por supuesto,
algunas imágenes son mucho mejores que otros cuando se utiliza un archivo de host ‐ un montón de detalle es bueno. Un cielo azul sin nubes en un paraíso de esquí cubierta de nieve es malo. Una cascada en un bosque es probablemente ideal.
Hydan (Unix Linux Windows)
Oculta un mensaje en un ejecutable. Se explota la redundancia en la instrucción de la i386 establecidos por la definición de conjuntos de instrucciones funcionalmente equivalentes. A continuación, codifica la información en código de máquina, utilizando las instrucciones de cada juego. El archivo ejecutable se mantiene sin cambios. El mensaje es cifrado Blowfish con una frase de contraseña proporcionada por el usuario antes de ser incorporados.
Según el campo observado en Software para la esteganografía, podemos observar como la mayoría de lo programas, independientemente de la plataforma en que se estén ejecutando, prefieren utilizar medios para portar información oculta, de gran capacidad en relación a su contenido y tamaño informático; esto debido a la facilidad que esta cantidad de información ofrece para poder ser reemplazada sin que se note un diferencia considerablemente visible en el resultado final.
Lo anterior nos dice sin duda alguna que la popularidad de ocultar información en imágenes o sonido y seguramente en video mas adelante por lo que este perfila en e su cantidad de información se desenvuelven y crecen con mayor velocidad que otros medios de menor cantidad de información, por lo que en un futuro seria mas probable tomar en cuenta para sospechar estos medios que los recursos mas livianos en un tamaño informático, por ejemplo textos o formatos de impresión electrónica.
Pero con base a este estudio del arte nos deja sin duda de que el recurso necesario para poder ocultar información termina siendo el recurso necesario para camuflar información, así que es siempre necesario incrementar o tener gran cantidad de información para dentro de ella colocar otra determina información que parezca perteneciente a la propia portadora, sin embargo y obviamente sin perder el objetivo de la esteganografía, esta ultima sea un mensaje o información oculta.
En base a las premisas que nos ofrecen los programas y que la elaboración de estos en su gran mayoría se enfocan a el trabajo de información oculta con ayuda de recursos multimedia de gran capacidad, el reto que se tiene es ocultar información con menor cantidad de información, así este desarrollo toma el reto de ocultar texto pero en otro texto y respetando la forma de tener un incremento en el medio portador que ocultara la información; este medio serán los archivos de impresión electrónica, conocidos como archivos PostScript.
CAPITULO 2
POSTSCRIPT
El PostScript, es un lenguaje de programación para presentar información en texto y/o vectores para, estos últimos para generar imagenes en la computadora y en impresoras que soporten este lenguaje, tal es que este lenguaje tiene ya una larga trayectoria de uso y desarrollo; ha tenido ya varias versiones y con ellas diferentes y mejores usos como también aplicaciones, por ejemplo, en las primeras versiones no es posible representar imágenes como en las ultimas versiones, sin embargo cabe mencionar que en este trabajo no nos enfocaremos al tratamiento de imágenes.
Es importante de tal manera conocer que la principal aplicación del PostScript es describir la apariencia de texto, formas graficas e imagenes. Esta descripción de alto nivel sobre texto e imagen es independiente del dispositivo grafico a usar (pantalla grafica o impresora).
Para lograr las características anteriores entre otras, el lenguaje PostScript hace uso de un “interprete”, quien tendrá el papel de cambiar las líneas de código por una representación en la pantalla involucrando textos y/o imágenes.
PostScript puede ser visto desde los siguientes puntos de vista:
• Un lenguaje de programación de propósito general con primitivas graficas incorporadas.
• Un lenguaje de descripción de pagina con cualidades de programación.
• Un sistema interactivo para controlar dispositivos de salida raster (pantallas e impresoras)
• Un formato para intercambio
El lenguaje PostScript (PS) puede interactuar con Dispositivos de Salida Raster (DSR) tales como impresoras láser, matriz de punto, de inyección de tinta y todo tipo de pantallas. Una imagen impresa o desplegada a un DSR es un arreglo rectangular de puntos llamados pixeles que pueden ser direccionados individualmente.
Por ejemplo en DSR blanco y negro cada pixel puede ser blanco o negro. En otros DSR mas avanzados estos pixeles pueden ser tonalidades de grises o colores. Con esta técnica se pueden reproducir complejas imagenes o texto dependiendo de la resolución del DSR.
Lenguajes de Descripción de Pagina
Teóricamente o comúnmente se podría pensar que cualquier aplicación (como un procesador de texto por ejemplo) podría hacer una descripción de pagina como un arreglo de paginas, cada una de estas siendo un arreglo de pixeles. Sin embargo una descripción de este tipo seria dependiente del dispositivo y por lo tanto enorme para documentos grandes. Un lenguaje de descripción de pagina debe ser suficientemente compacto para almacenamiento y transmisión, ademas de ser independiente del dispositivo.
Estas características de portabilidad e independencia para un archivo a un dispositivo se pueden lograr si el lenguaje logra describir las paginas en términos de entidades graficas abstractas de alto nivel en lugar de un arreglo de pixeles. Es en el DSR donde se genera el arreglo de pixeles a través del proceso llamado “Scan Conversion”, Este proceso consiste en que dada una descripción PS en este caso para la entidad grafica, se determinan que pixeles se deben ajustar y que valor se les debe asignar para encontrar la mejor representación posible de la entidad a la resolución del DSR.
Estructura del Lenguaje
Una descripción de pagina PS bien estructurada consiste en un prologo y un script. El prologo es un conjunto de procedimientos a usar y se acostumbra a ponerlo en el comienzo del archivo. El script es la descripción de los elementos de las paginas con ayuda de los procedimientos del prologo. Esto ayuda a que la descripción de la pagina sea mas eficiente y compacta. Por ejemplo en el prologo se puede definir:
/ms {moveto show} bind ref
Y en el script se puede llamar a este procedimiento de la siguiente forma:
(texto cualquiera aquí) 100 200 ms
Así el script de un documento a imprimir por ejemplo, consiste típicamente de una secuencia de paginas separadas. La descripción de cada pagina puede usar los procedimientos del prologo pero debe ser independiente de las demás paginas del script.
Programación en PostScript
PostScript, lejos de ser solo una estructura de representación de impresiones en pantalla o impresoras de texto y de imágenes, es un muy completo lenguaje de programación que nos permite llevar acabo diferentes tareas, tales como calculo de operaciones matemáticas y resolución de problemas computables, tal es el canso entonces que PostScript usa notación postfija. En una operación los operandos van después de los operadores.
Ej: “2 3 add”.
El interprete PS manipula entidades llamados Objetos PostScript (OP). Algunos OP son datos (números, booleanos, strings) mientras que otros son elementos de programa a ser ejecutados (nombres, operadores y procedimientos). El interprete opera ejecutando secuencia de OP. El efecto de la ejecución de un OP depende del tipo de este, sus atributos y su valor. Por ejemplo la ejecución de un OP numero provoca que el interprete ponga una copia de ese objeto en la pila de operandos para posterior seguir operaciones postfijas. La ejecución de un nombre provoca que el interprete busque su valor en el diccionario, lo obtenga y ejecute ese valor asociado. La ejecución de un objeto operador provoca que el interprete realice una acción que posee incorporada, tal como la suma o el pintado de caracteres en memoria.
El intérprete PS consume un programa mediante la ejecución de cada OP que encuentra. No es necesario por tanto compilar o interpretar el programa entero de una vez para hacer algo.
Existen tres codificaciones para programas PS: ASCII, binary token y secuencia de objetos binarios. ASCII es la codificación mas usada y recomendada. En la codificación ASCII los espacios en blanco separan una construcción sintáctica de otra. Uno o mas espacios son tratados como si fueran uno solo. Los caracteres tratados como espacios son los siguientes:
Octal Hex Decimal Nombre
000 00 0 Nulo (nul)
011 09 9 Tab (tab)
012 0A 10 Line‐feed (LF)
014 0C 12 Form‐feed (FF)
015 0D 13 Carriage‐return (CR)
040 20 32 Space (SP)
Fig. 2. Tabla de Codificaciones
Los caracteres CR y LF son también llamados caracteres newline. Un CR seguido inmediatamente por un LF son tratados juntos como un solo newline. Los caracteres (,),<,>,[,],{,},/, y % son especiales. Ellos delimitan entidades sintácticas tales como strings, procedimientos, nombres literales y comentarios, sin embargo cabe señalar que por ello al enviarlos a pantalla reciben un trato especial.
Un comentario en PS se forma desde un % hasta el siguiente newline no importando la existencia de cualquier carácter de por medio.
Números
Los números en PS pueden ser:
• Enteros con signo: 123, ‐98, 43445, 0, +17
• Reales: ‐0.002, ‐.01, 123.6e10. 1E‐5, 0.0 y
• Números con base (radix numbers): 8#1777, 16#FFFE, 2#1000
Si un entero excede el limite de implementación para ese tipo de dato entonces es convertido a real. Si un real excede su limite entonces un error de “limitcheck” ocurre.
Los mismo anterior sucede para los radix numbers.
Strings
Hay 3 convenciones para definir strings:
• Como texto literal encerrado entre ( y )
• Como dato codificado hexadecimal encerrado entre < y >
• Como dato codificado ASCII base‐85 encerrado entre <~ y ~> (PS2)
Dentro de un string el “backslash” \ se usa como carácter de escape para incluir caracteres especiales tales como : \n, \r, \t, \b, \f, \\, \(, \), \ddd. Este ultimo es código octal del carácter y sirve para poner caracteres especiales como ñ o á, ó, etc.
Nombres
Toda construcción sintáctica compuesta de caracteres regulares y que no puede ser interpretado como numero es tratado como un objeto nombre o un nombre ejecutable. Cualquier carácter excepto delimitadores o espacios pueden formar parte de un nombre. Cuando inmediatamente delante del nombre hay un / entonces este es un nombre literal, en caso contrario es un nombre ejecutable.
Arreglos
Los caracteres “[“ y “]” delimitan un arreglo. Por ejemplo: “[123 /abc (xyz)]” es un objeto arreglo que contiene el entero “123”, el nombre literal “abc” y el string “xyz”.
Procedimientos
Los caracteres “{“ y “}” delimitan un arreglo ejecutable o procedimiento. Por ejemplo:
“{add 2 div}”. Un procedimiento no es ejecutado de inmediato, sino que se pone en la pila de operandos y se ejecuta si es explícitamente invocado.
Ejecución
El lenguaje de programación PostScript, como se ha mencionado, trabaja con forme a evaluaciones postfijas, estas son asistidas de funcionamientos en pilas, dichas pilas son manipuladas por el interprete (IPS).
El IPS maneja 4 pilas que representan el estado de ejecución de un programa PS.
• Pila de operandos. Mantiene los objetos PS que son operandos para una operación posterior o son el resultado de alguna operación llevada a cabo. Esta pila puede es manipulada por el programa PS.
• Pila diccionario. Mantiene objetos diccionario. Esta pila también es manipulada por el programa PS.
• Pila de ejecución. Mantiene la secuencia de objetos ejecutables a ejecutar. Esta pila es manipulada por el IPS, puede ser leída por el programa PS pero no modificada.
• Pila de estado grafico.
La semántica de la ejecución difiere de un tipo de objeto a otro. Esta ejecución puede ser inmediata o diferida.
Por ejemplo:
“40 60 add 2 div”
1. El IPS en este caso carga en la pila de operandos el valor entero 40.
2. Se encuentra el entero 60 y lo carga también en la pila de operandos.
3. Se encuentra “add”, se busca en la pila de diccionarios por este nombre. Se encuentra en “systemdict” y se ejecuta su acción incorporada, la suma de los dos últimos operandos de la pila de operandos.
4. Luego de llevarse a cabo tal operación se carga 100 en la pila de operandos y se eliminan los operandos anteriores
5. Luego el IPS carga 2 en la pila de operandos y ejecuta “div”, después de lo cual cargaría 50 en la pila de operandos. Esta ejecución es inmediata.
Estructuras de control
En PS, las estructuras de control tales como condicionales o iteraciones son llevadas a cabo por operadores que toman procedimientos como operandos. Por ejemplo:
a b gt {a} {b} ifelse
1. El interprete encuentra los nombre ejecutables “a” y “b” y los busca en la pila de diccionarios. En este caso se asumen números y se ejecutan cargándolos en la pila de operandos.
2. El operador “gt” saca los dos operandos, los compara y pone “true” en la pila si el primero es mayor que el segundo y “false” en cualquier otro caso.
3. Se encuentran los procedimientos {a} y {b} que se ponen en la pila de operandos.
4. El operador “ifelse” toma tres operandos, un boolean y dos procedimientos.
Se sacan estos tres operandos de la pila de operandos. Si el primer operando es “true”
entonces se ejecuta {a}, en otro caso se ejecuta {b}.
El resultado de este estamento es poner entonces en la pila de operandos el valor mayor entre “a” y “b”, dado que ambos procedimientos tienen aquellos números tan solo como cuerpo.
Los operadores de control son:1
• if, ifelse
• Ejecuta un objeto incondicionalmente.
• for, repeat, loop y forall
• exit: Escapa de un loop
• stop: Termino prematuro, quiebra toda secuencia de ejecución.
• countexecstack, execstack: se usan para leer la pila de ejecución Ejemplos:
% provocara poner en la pila 4 veces el string “abc” sacando previamente
% los operandos 4 y el procedimiento de la pila 4 {(abc)}repeat
% aquí el tope de la pila termina con el valor 4 8 4 {1 sub} repeat
% equivale al codigo-C: for(i=0; i<=8; i++) proc;
% si el incremento es negativo entonces el <= se cambia por un >=
0 2 8 {proc} for
% lo siguiente pondra los valores 3.0, 2.5, 2.0, 1.5 y 1.0 en la pila 3 -0.5 1 {}for
% en cada iteracion del for el actual valor del contador es puesto en la pila, así
0 1 4 {add} for
% resultara en un 10 al final.
Entre las estructuras de control, pilas y demás prestaciones que ofrece el lenguaje de PostScript podríamos detallar mas acerca del funcionamiento del lenguaje, sin embargo dado que este no es el objetivo de esta investigación, continuaremos con las actividades relacionadas al proyecto. Todo lo concerniente al lenguaje PostScript que tenga relación con el tema se desarrollara en el tiempo.
1 PostScript. Salvador Ramírez Flandes, Ideas Básicas, P. 5