¿Cómo funciona la esteganografía?

Si deseas ocultar información en una imagen, puedes hacerlo ajustando sutilmente el color o el brillo de cada píxel sucesivo (los cuadrados que forman una imagen digital). Eso es apenas perceptible para los ojos humanos, pero muy fácil de detectar para las computadoras.

Supongamos que el valor de brillo de un píxel es un número entre 0 (negro) y 255 (blanco). Si desea codificar una A, puede agregar 1 al brillo de un píxel (ya que A es la primera letra del alfabeto); si desea codificar E, agregaría 5; y así.

De esa manera, con ajustes muy sutiles en los valores de brillo, podría ocultar toda una cadena de texto en una imagen: por ejemplo, si cambiara el brillo de tres píxeles sucesivos en 1, 3 y 5, podría enviar invisiblemente el palabra clave “ACE”. También puede ocultar una imagen dentro de otra.

Si estás ocultando información en archivos de música, aproveche la forma en que el algoritmo MP3 (proceso matemático) convierte y comprime audio analógico en forma digital. En este caso, su información secreta no solo está oculta sino que también está cifrada, por lo que es muy difícil de detectar y descifrar.

Ejemplos de esteganografía

Supongamos que tengo una imagen extremadamente simple hecha de solo tres píxeles (arriba), que resultan ser varios tonos de gris. En cosas como las páginas web, los colores están representados por tres pares de dos hexadecimales (base-16), cada uno hecho de los números 0–9 y las letras A–F.

El primer par representa el contenido rojo del píxel, el segundo par el contenido azul y el tercer par el contenido verde. En tonos grises, los valores de rojo, azul y verde son iguales. Si agrego 1 al primer píxel, 3 al segundo píxel y 5 al tercer píxel, obtengo tres nuevos píxeles que se ven prácticamente idénticos a un ojo humano (abajo).

Pero si comparara las dos imágenes o usara una computadora para restar los valores de color, fácilmente podría darme cuenta de que la diferencia entre ellos es 1—3—5, lo que representa la palabra ACE con un código de sustitución simple (A=1, B =2, C=3, etc.). Es un ejemplo trivial, pero ilustra la idea muy claramente: puedo ocultar información cambiando los colores de una imagen tan levemente que nadie se dé cuenta.

Puedo hacer lo mismo de una manera un poco más compleja cambiando la parte roja, verde y azul de cada píxel por separado. Si resto 1 del valor rojo del píxel rojo (FF−1 = FE), 3 del valor verde del píxel verde (A9−3 = A6) y 5 del valor azul del píxel azul (FF− 5 = FA), obtengo tres nuevos píxeles que, nuevamente, se ven prácticamente idénticos al ojo humano, pero aún ocultan mi mensaje secreto (ACE).

Esto es un poco más difícil de detectar que mi simple cambio de brillo porque estoy ocultando el código en un “lugar” diferente (una parte diferente del valor del color) cada vez.

Si hubiera descubierto y descifrado el truco de esteganografía que usé en el ejemplo en blanco y negro, no sería capaz de darse cuenta inmediatamente de lo que escondí en el ejemplo en color: ¡estoy haciendo algo ligeramente diferente esta vez!