- Si el sistema no es teóricamente irrompible, al menos debe serlo en la práctica.
- La efectividad del sistema no debe depender de que su diseño permanezca en secreto.
- La clave debe ser fácilmente memorizable de manera que no haya que recurrir a notas escritas.
- Los criptogramas deberán dar resultados alfanuméricos.
- El sistema debe ser operable por una única persona.
- El sistema debe ser fácil de utilizar.
(Principios de Auguste Kerckhoffs en 1883)
Desde la antigüedad el hombre ha buscado la forma de ocultar mensajes. Ya Heródoto nos narra como un hombre tomó un cuadernillo, rayó la cera que cubría una de las tablillas en las que se escribía y en la madera misma grabó un mensaje. Luego, volvió a cubrir con cera la tablilla ocultando de esta manera su mensaje. O en otra de sus historias, como un mensaje fue tatuado en el cuero cabelludo de un esclavo al cual envió con la única instrucción de que le raparan el pelo. Otros métodos eran algo más sofisticados, como el que en el siglo XV describiera el científico italiano Giovanni Battista della Porta el cual permitía esconder el mensaje en la superficie de la albúmina de un huevo cocido y haciéndose solo visible si se pelaba.

La esteganografía (del griego στεγανος steganos, «cubierto» u «oculto», y γραφος graphos, «escritura») como vocablo lo encontramos por primera vez en un libro escrito en el siglo XVI por el Abad Johannes Trithemius llamado Steganographia.

En dicho libro a parte de tratar temas como conjurar espíritus también se trataba el tema de la codificación de mensajes. Johannes también publicó Polygraphiae Libri Sex dedicado exclusivamente a la encriptación, fue el creador del cifrado de Trithemius y fundador de la sociedad secreta Sodalitas Celtica (Cofradía Céltica) dedicada al estudio de las lenguas, las matemáticas, la astrología y la magia de los números. Todo un personaje.

Durante las guerras mundiales la ocultación de mensajes se volvió de vital importancia y se encontraron métodos cada vez más ingeniosos. Por ejemplo, usando los puntos de las letras o su ausencia («i,j,t,f») para transmitir mensajes en morse, el uso de la máquina Enigma. O el sistema Null Cipher en el cual en una frase aparentemente banal decodificamos un mensaje secreto si cogemos digamos la segunda letra de cada palabra de la misma.
Amparados seguros, aguardando su estela atenuada cada anochecer, solos, atentos, ciertamente acariciamos nimiamente la esmeralda edificada, sencilla al amparo siniestro, estupefactos, atemorizados, recelosos, creyendo simplemente morir.
Con los años los sistemas se han vuelto más y más complejos. Hemos pasado de sustancias con alto contenido en carbono (por ejemplo la famosa tinta invisible hecha de zumo de limón) a reacciones químicas o sustancias sólo visibles con una longitud de onda en concreto (rayos ultravioleta, infrarojos,etc.) En la actualidad el cifrado usando ordenadores se ha vuelto indispensable. Métodos como el de enmascaramiento y filtrado, algoritmos y transformaciones son de uso generalizado. Uno de los métodos que me ha llamado la atención investigando sobre el tema ha sido el de bit menos significativo. (LSB o Least Significant Bit, en sus siglas en inglés) .
En la era de lo digital vivimos en un mundo binario, es decir, de 1 y 0 que es el lenguaje que entienden las máquinas. Colores, números y letras vienen representados en una sucesión de 1 y 0 para cada uno de ellos. En las imágenes cada píxel vendría codificado por un valor decimal compuesto por el RGB ( es la composición del color en términos de la intensidad de los colores primarios de la luz, rojo verde y azul) . Por ejemplo el color negro tendría un valor de «000000». Si cambiáramos el cero más a la derecha por un uno el color que nos aparecería sería tan parecido que no sería perceptible el cambio. Jugando con esto miremos el siguiente ejemplo que puedes encontrar en la Wikipedia y que por su sencillez me limito a transcribir.
Ejemplo:
El valor (1 1 1 1 1 1 1 1) es un número binario de 8 bits. Al bit ubicado más a la derecha se le llama «bit menos significativo» (LSB) porque es el de menor peso, alterándolo cambia en la menor medida posible el valor total del número representado.
Un ejemplo de esteganografía: Ocultamiento de la letra «A». Si se tiene parte de una imagen con píxeles con formato RGB (3 bytes), su representación original podría ser la siguiente (3 píxeles, 9 bytes):
(1 1 0 1 1 0 1 0) (0 1 0 0 1 0 0 1) (0 1 0 0 0 0 1 1)
(0 0 0 1 1 1 1 0) (0 1 0 1 1 0 1 1) (1 1 0 1 1 1 1 1)
(0 0 0 0 1 1 1 0) (0 1 0 0 0 1 1 1) (0 0 0 0 0 1 1 1)
El mensaje a cifrar es ‘A’ cuya representación ASCII es (1 0 0 1 0 1 1 1), entonces los nuevos píxeles alterados serían:
(1 1 0 1 1 0 1 1) (0 1 0 0 1 0 0 0) (0 1 0 0 0 0 1 0)
(0 0 0 1 1 1 1 1) (0 1 0 1 1 0 1 0) (1 1 0 1 1 1 1 1)
(0 0 0 0 1 1 1 1) (0 1 0 0 0 1 1 1) (0 0 0 0 0 1 1 1)
Estas técnicas de ocultamiento se pueden utilizar en documentos, imágenes e incluso sonidos. Dejando a simple vista una información obvia y ocultando sutilmente otra.
Seguramente me he dejado muchísima más información en el tintero pero invito a lector que investigue por sí mismo en este apasionante mundo y porque no, lo pruebe por sí mismo. A continuación encontrará un par de links a programas gratuitos con los que probar a ocultar sus propios mensajes secretos
- StegHide Software esteganográfico que soporta cifrado y compresión. Trabaja con archivos JPEG, BMP, WAV y AU y tiene licencia GNU
- Steghide UI Interfaz gráfica de usuario (GUI) para StegHide de licencia GNU
Más información en :
- https://es.wikipedia.org/wiki/Esteganograf%C3%ADa#Historia
- https://es.wikipedia.org/wiki/Bit_menos_significativo
- https://es.wikipedia.org/wiki/Johannes_Trithemius
- https://es.wikipedia.org/wiki/Claude_Elwood_Shannon
- https://es.wikipedia.org/wiki/Auguste_Kerckhoffs
- https://es.wikipedia.org/wiki/Seguridad_por_oscuridad