S-Tools, escrito por Andrew Brown, es un programa para Windows que permite encriptar y
ocultar datos en archivos .wav o en imágenes en formato .bmp o .gif.
Nota: Este programa es freeware, así que puede distribuirse libremente, si
bien hay que tener en cuenta que, dado que incluye la implementación de diversos
algoritmos criptográficos, podría estar sujeto a determinadas restricciones a la
exportación. Creo que su uso en Francia podría ser ilegal bajo la Ley 90-1170 de dicho
país, que prohíbe el uso de criptografía (corríjanme si me equivoco). Asimismo,
podría entrar en conflicto con la EAR (Regulación del Tráfico Internacional de Armas)
americana.
S-Tools funciona bajo Windows 95 e integra la encriptación en el mismo programa,
permitiendo ocultar los datos todo tipo de archivos. No hay duda que, salvo que se sea un
fanático de la matemática del caos, será más fácil hacer pasar desapercibidos
nuestros datos sensibles en nuestro clásico directorio de imágenes, donde habrá
imágenes de todo tipo que en unos cuantos gifs de fractales.
En cuanto a los algoritmos criptográficos, se dispone de cuatro algoritmos de clave
única: IDEA, DES, Triple DES y MDC. IDEA es por ahora el mejor y más fuerte de los
cuatro. En cuanto a DES, sería preferible no utilizarlo, dado que se le han descubierto
demasiadas debilidades para seguir considerándolo seguro.
El manejo es muy simple, y se realiza en combinación con el Explorador de Windows 95.
Seleccionamos en el Explorador el archivo wav o de imagen en el que queremos ocultar los
datos y lo arrastramos a la ventana de S-Tools. S-Tools abrirá el archivo y lo mostrará
en una ventana, indicando además el número de bytes que puede ocultar como máximo. A
continuación, seleccionamos en el Explorador el archivo a ocultar y lo arrastramos a la
ventana del archivo "matriz" que está en la ventana de S-Tools. Si tenemos
activada la opción de compresión, se comprimirá el archivo de datos, y después S-Tools
mostrará un diálogo en el que nos pide la password para la encriptación y nos da a
elegir el algoritmo criptográfico a utilizar. En caso de que el archivo
"matriz" sea una imagen, aparecerá otro diálogo con diversas opciones
referentes a cómo ha de manipular S-Tools los colores de la imagen. Una vez hecho esto,
comienza el proceso esteganográfico, cuyo progreso podemos seguir en la ventana Actions
de S-Tools. Una vez terminado, podamos grabar el archivo, haciendo click con el botón
derecho del ratón sobre la ventana del archivo y elegiendo la opción "Save" o
"Save as..." del menú contextual.
Para extraer los datos, bastará con arrastrar el archivo a la ventana de S-Tools. Una vez
lo haya abierto, pulsamos el botón derecho del ratón sobre la ventana del archivo y
seleccionamos la opción "Reveal". S-Tools nos pedirá la password y el
algoritmo criptográfico empleados al ocultar los datos, y si la password es correcta,
extraerá los datos.
Para los archivos de sonido, S-Tools distribuye los bits de los datos a ocultar entre
los bits menos significativos de los bytes que forman el wav.
Por ejemplo, supongamos la siguiente secuencia de ocho bytes de un archivo wav:
132 134 137 141 121 101 74 38
Que en binario es:
10000100 10000110 10001001 10001101 01111001 01100101 01001010 00100110
Supongamos ahora que queremos ocultar un byte con valor 213, es decir, 11010101,
en la anterior secuencia. Simplemente se reemplaza el bit menos significativo de cada byte
por el bit correspondiente del byte que ocultamos. Como resultado obtenemos:
10000101 10000111 10001000 10001101 01111000 01100101 01001010 00100111
es decir,
133 135 136 141 120 101 74 39
Los bytes varían como mucho en +- 1, una variación imperceptible para el oído humano.
En cuanto a las imágenes, el proceso es el siguiente, y depende de si queremos como
imagen final una imagen de 24 bits o una de 256 colores, que necesitará reducción de
color (es por esto por lo que al ocultar datos en una imagen, S-Tools nos muestra un
diálogo en el que pregunta si queremos una imagen de 24 bits o emplear reducción de
color).
Con las imágenes de 24 bits, el proceso es simple. Dado que cada pixel de una imagen de
24 bits está definido por tres bytes con valores RGB, bastará con dispersar los bits de
los datos a ocultar en los bits menos significativos de estos bytes sin que hay grandes
variaciones apreciables para el ojo. El gran inconveniente es el tamaño de este tipo de
imágenes.
Es bastante más complicado ocultar los datos en una imagen de 256 colores. Una imagen
así puede tener antes de la manipulación unos 200 colores, y nuestra manipulación puede
hacer que se rebase el límite de 256. Sin embargo, hay una simple regla que utiliza
S-Tools y que evita el problema. Una imagen de 32 colores nunca superará el límite de
256 aunque manipulemos los bits. Lo que cambiamos son los bits menos significativos de
cada valor RGB de la imagen, es decir, 3 bits que pueden variar entre 000 y 111, 8
valores. Así, si cada color puede "expandirse" en 8 colores, el máximo de
colores que podemos tener para no rebasar el límite de 256 es 256 / 8 = 32 colores. No
está garantizado que éste sea el límite superior para cualquier imagen, pero si hay
suerte, los colores apenas variarán. S-Tools reduce el número de colores de la imagen
intentando preservar lo más posible la imagen original. El algoritmo utilizado es
ppmquant. Si se conoce cómo trabaja el algoritmo se puede "jugar" con las
opciones que da el boton Advanced del diálogo que aparece al ocultar datos en imágenes.
Hablando ahora ya en términos generales, es de destacar que S-Tools permite, mientras
haya espacio en el archivo "matriz", ocultar más de un archivo en él.
También hay que señalar que distribuir los datos de una manera lineal en el archivo
matriz sería muy simple, por lo que S-Tools, utilizando un generador de números
pseudoaleatorios que toma como semilla los bits que forman la password proporcionada,
genera una serie de valores que determinarán las posiciones a emplear. Por ejemplo, si el
archivo "matriz" tiene 100 bits disponibles para ocultar datos, y se ocultan 10
bits en ellos, no se ocultarán en los bits 0 a 9, sino en una secuencia aleatoria que
depende de la password, como por ejemplo 63, 32, 89, 2, 53, 21, 35, 44, 99, 80.