domingo, 15 de julio de 2012

Esteganografía: El canal alfa

¿Has sentido la necesidad de pasar información a través de un canal público? ¿Has sentido la necesidad de no levantar sospechas? o solo quieres ocultar información, sea cual sea tú fin, en esta entrada encontrarás un programa que te será muy útil así como la descripción de una técnica relativamente práctica que utiliza imágenes para ocultar información.


Ocultando información

Debido a  que a muchas personas no les interesa la teoría detrás de esta técnica, he comenzado por la parte práctica, la cual es de interés común.

Necesitarás:
  •  Ruby
  • El código del programa, descargar AQUÍ
  • Instalar la gema ChunkyPNG
    gem install chunky_png
  • La siguiente imagen para seguir los ejemplos al pie:


Primero veamos las opciones que nos proporciona el programa con la opción --help y de camino veamos también que espacio de almacenamiento tenemos disponible en la imagen.
Bueno, a simple vista se puede ver que el programa nos ofrece muchas opciones útiles para manipular la imagen, y también nos muestra que tenemos apróx. 145 KB de espacio útil dentro de la imagen.

Ahora veamos como se oculta y revela información dentro de la imagen

También podrías — si el texto es muy grande — especificar un fichero completo y ocultarlo dentro con la opción --file, o podrías también si consideras que la información dentro de la imagen es muy grande, volcarla en un fichero, con la opción --output-file. Veamos

¿Cómo funciona?


Antes que nada aclaremos unas cosas, por ejemplo el título de la entrada:

 ¿Qué es la esteganografía?
es la parte de la criptología en la que se estudian y aplican técnicas que permiten el ocultamiento de mensajes u objetos, dentro de otros, llamados portadores, de modo que no se perciba su existencia. Wikipedia
Es preciso aclarar, que la esteganografía y la criptografía van de la mano pero el fin de ambas es diferentes. La esteganografía falla cuando se descubre la presencia de información oculta dentro del portador, aún si esta está cifrada. La criptografía falla cuando el sistema de cifrado falla.

Para mas información visita wikipedia.

El canal alfa

Ya a estas altura de juego ya muchos de ustedes estarán familiarizado con la representación hexadecimales de los colores en la web, por ejemplo dos colores muy comunes y que posiblemente sabes son el blanco #FFFFFF y el negro #000000. Para el que no lo sepa, esas representaciones son números, números que indican la cantidad de ciertos colores preestablecidos, los cuales son: Rojo, Verde y Azul. De ahí su nombre, colores RGB.

Continuando, para representar dichos colores se necesitan 3 bytes, en cierta forma un byte por cada dos dígitos hexadecimales de ahí la decisión por adoptar la representación base dieciséis, es mucho fácil de recordar. Ahora, imagina que preparas una imagen y has seleccionado un color, pero pasa algo, sucede que es un color muy intenso y quieres darle un poco de opacidad — que se vea algo transparente — ¿Cómo lo logras? ¡pues con el canal alfa!

El canal alfa es un cuarto byte A dentro de la representación numérica del color RGB de un píxel y representa la opacidad que este tiene. Cuando se utiliza el canal alfa, el píxel se denomina por el cuarteto RGBA — Un píxel es, por así decirlo, un punto de color dentro de la imagen  — .

— ¿Qué pasaría si decidiera darle total opacidad a un píxel?
— Pues simple, conseguirías un píxel trasparente.
— Un píxel transparente es un píxel invisible ¿no?
— exacto.

De  forma resumida, para ocultar información dentro de una imagen con canal alfa, solo tendríamos que insertar la información en el espacio RGB de un píxel y ocultarla dándole total opacidad con el canal alfa ... solo eso ...

Debilidades

Esta técnica presenta una debilidad y es que cualquier persona podría poner visibles todos los pixeles transparentes de una imagen y ver una evidente anomalía en la imagen. Veamos como se logra esto con el programa de la entrada y la opción --show-alpha:

y el resultado es el siguiente:


Conclusión


Aquí no está, quizás esté en otra parte :P

 Referencias


Este artículo está  basado en otro escrito por Daniel Lerch en su extraordinario blog.

Enlaces de interés

No hay comentarios:

Publicar un comentario