Esteganografía

From FdIwiki ELP
Jump to: navigation, search

La esteganografía es un conjunto de técnicas que permiten ocultar mensajes dentro de otros mensajes, llamados portadores. Etimológicamente proviene del griego steganos (cubierto, oculto) y graphia (escritura). Su objetivo es establecer un canal de comunicación encubierta, de forma que alguien externo a él no pueda saber que realmente se está produciendo un intercambio de información.

Motivación

La esteganografía viene motivada por el llamado problema del prisionero, en el que dos prisioneros, Alice (A) y Bob (B) están encarcelados en celdas distintas y quieren planear su huida. La única vía de intercambio de mensajes es a través del guardia de la prisión, Oscar (O), quien puede leer todos esos mensajes, y modificarlos o directamente no entregarlos si sospecha de algo. Por tanto, el envío de un mensaje encriptado está descartado, ya que aunque O no entienda el mensaje, podría sospechar que A y B están planeando algo. La esteganografía da una solución a este problema, ya que desde el punto de vista de O el mensaje es inofensivo, pero A y B conocen cómo extraer el mensaje secreto del portador.

Esteganografía y criptografía

Aunque ambas tienen un objetivo parecido, que es el intercambio de información de manera que alguien externo no pueda obtener esa información, lo llevan a cabo de forma distinta. La principal diferencia es que la criptografía no intenta ocultar que este intercambio de información está sucediendo, sino que ofusca su contenido para que sólo pueda descifrarlo el destinatario. El problema de este método es que alguien que tenga acceso al mensaje enviado, sospecharía de que se está intercambiando información secreta, y aunque no pueda obtenerlo, podría tomar medidas al respecto. Un ejemplo podría ser un gobierno de un país en el que hay represión, que vigile más estrechamente a las personas que envíen emails cifrados.

Por otro lado, la esteganografía permite que esos mensajes se intercambien ocultos dentro de, por ejemplo, fotografías, que pueden subirse a un blog, o a una red social y que en principio el intercambio pase desapercibido para un posible atacante. Los destinatarios del mensaje, si saben dónde encontrar las fotografías y conocen el algoritmo esteganográfico empleado, pueden recuperar el mensaje secreto.

De todas formas, para una mayor seguridad, suelen emplearse ambos métodos combinados, es decir, primero se encripta un mensaje y posteriormente se oculta en el portador, de manera que para un atacante, recuperar el mensaje sea todavía más difícil.

Esteganografía clásica

Se cree que el origen de la esteganografía fue en la Antigua Grecia. Uno de los primeros métodos usados fue el de las tablillas con cera. En la Antigua Grecia se usaban tablillas de madera cubiertas con cera sobre las cuales se escribían textos. Este método esteganográfico se aprovechaba de ello, grabando en primer lugar el texto sobre la madera, que luego se cubría de cera sobre la cual se escribía otro texto para ocultar el primero. El receptor quitaba la capa de cera y revelaba el mensaje original. A lo largo de la historia, y hasta antes de la aparición de los primeros ordenadores se han usado diversas técnicas de esteganografía, que dan lugar a lo que se conoce como esteganografía clásica. Algunas de estas técnicas son:

  • Tatuar información en el cuero cabelludo de un mensajero al que se le había rapado la cabeza. Una vez que el pelo crecía de nuevo, se envíaba al mensajero junto con un mensaje falso, de forma que si era capturado, se tomaría este mensaje por el verdadero y el mensaje real no sería comprometido.
  • Empleo de tintas invisibles. Tradicionalmente se han usado zumos de frutas o vinagre para escribir un mensaje sobre una hoja de papel que es revelado al acercar el papel a una fuente de calor. En tiempos más modernos, se emplean productos químicos que reaccionan bajo luces de diversas longitudes de onda, como puede ser la luz ultravioleta.
  • Cifrado nulo. El método más básico consiste en ocultar el mensaje secreto en la primera letra de cada palabra del mensaje portador. Versiones más sofisticadas pueden incluir, por ejemplo, usar una plantilla con agujeros tal que al ponerse esa plantilla sobre el mensaje portador se puede leer en los agujeros el mensaje secreto.
  • Cifrado de Bacon. Inventado por Francis Bacon, consiste en asignar a cada letra del abecedario con un código binario. Posteriormente se codifica el mensaje secreto y se escribe un mensaje falso que tenga tantos caracteres como la codificación del mensaje secreto. Por último, se imprime el mensaje falso usando dos tipos de letra distintos, asignando a cada caracter de este mensaje un tipo u otro dependiendo de cuál sea el caracter binario correspondiente del mensaje secreto.

Esteganografía moderna

Se entiende por esteganografía moderna aquella en la que el mensaje portador es una archivo o canal digital, como puede ser una imagen, un archivo de audio, un vídeo o oaquetes que se envían por una red. Tiene un potencial mayor por dos principales motivos:

  • A diferencia de la esteganografía antigua, en la que el mensaje oculto era principalmente texto, con la esteganografía moderna en principio puede ocultarse cualquier tipo de archivo en cualquier otro tipo de archivo.
  • Permite el uso de algoritmos mucho más complicados, ya que puede aprovechar la potencia de cálculo del ordenador a la hora de ocultar el mensaje secreto dentro del portador.

Esteganografía en imágenes: Inserción en LSB

Uno de los algoritmos más populares (y por tanto, también más fáciles de detectar) es el de la inserción en LSB (siglas de Least significant bit, bit menos significativo). En algunos formatos de imagen, se representa cada píxel con una serie de bytes, cada uno de los cuales representa la cantidad de un determinado color primario en el píxel. La técnica de inserción en LSB se aprovecha de que el cambio en los LSB de cada byte supone un cambio lo bastante pequeño en la imagen original como para que no sea detectable por el ojo humano. Por tanto, el método sustituye los LSB de algunos bytes de la imagen por los propios bits del mensaje secreto. A la hora de emplear está técnica se recomienda usar como portador una imagen ruidosa, es decir, que los colores sean lo más heterogéneos posibles, de forma que una alteración sea difícilmente perceptible. En determinados formatos de imagen, por ejemplo GIF, que usan una paleta de colores, se puede también ocultar información secreta en la sección del archivo correspondiente a la paleta de colores.

Esteganografía en archivos de audio: echo encoding

El algoritmo LSB no funciona tan bien para archivos de audio, ya que la diferencia con el original sí puede ser apreciada por oídos humanos. Por tanto se suelen usar técnicas distintas. Una de ellas es el denominado echo encoding, o codificación de eco. Un eco es una repetición del sonido original que suena con un desfase (en inglés, offset) respecto del original y con una pérdida de amplitud (en inglés, decay) de la onda). Estos ecos, con un decay lo bastante alto y un offset corto, son imperceptibles por el oído humano. Esta característica puede usarse para codificar mensajes en el archivo de audio, donde el empleo de un offset u otro pueda corresponderse a un 0 o un 1 del mensaje codificado.

Esteganografía sobre redes

Son métodos que se aprovechan de la existencia de campos en desuso o que no afectan a un funcionamiento normal de la comunicación en los paquetes de distintos protocolos de red. Dos ejemplos son:

  • En las cabeceras TCP al iniciarse la comunicación puede elegirse un número de secuencia (32 bits) culquiera. Esto puede usarse para enviar un mensaje secreto corto cada vez que se establece una nueva conexión. Otro campo que puede usarse es el de dirección de origen, que puede falsearse para enviar información oculta en su lugar.
  • El proyecto Loki es una herramienta que se aprovecha del campo data en los mensajes de tipo ping del protocolo ICMP, ya que muchas routers redirigen estos paquetes directamente si ven que el flag de ping está activado, sin comprobar qué va en el resto del mensaje.

Otros ejemplos

  • En los archivos ejecutables para determinadas arquitecturas de procesador, se aprovecha la redundancia del juego de instrucciones para elegir una de entre varias instrucciones equivalentes. La elección de una u otra instrucción puede servir para enviar información oculta.
  • Hay caracteres Unicode que no son imprimibles. Por ejemplo, el alfabeto árabe tiene dos caracteres que sirven para "juntar" o "separar" las letras de una palabra, pero que al usarlas con letras del alfabeto latino no producen ninguna modificación en pantalla. Esto puede usarse para mandar un mensaje binario oculto dentro de un archivo de texto, que puede ser revelado al abrir el archivo con un editor hexadecimal.
  • Dependiendo del formato de archivo, pueden insertarse bits extra después de la marca de final de archivo, de forma que al abrirse con un editor normal el archivo parezca intacto, pero que pueden leerse empleando un editor hexadecimal.

Versión en inglés

Esteganografía English version

Enlaces externos