sábado, 4 de julio de 2009

El Método LSB ( parte 2 )

Recapitulando, el método LSB se caracteriza por lo siguiente:
  1. La información se oculta en los bits menos significativos.
  2. No es un método robusto, puesto que si la imagen marcada es distorsionada se pierde información .
  3. Si se analiza visualmente el plano LSB, se puede notar que "hay algo extraño" (ataque visual), lo que puede provocar que un atacante distorsione la imagen para eliminar la información.
Como dice el tercer punto, cuando se marca una imagen con el método LSB se puede notar a simple vista la distorsión generada al modificar los bits menos significativos como se mostró en la entrada anterior. En dicha entrada se ocultó un mensaje periódico que en la realidad sería muy raro tenerlo. Lo que haremos a continuación es ocultar texto en la imagen. Cada letra del texto será convertido a su valor ASCII (de 8 bits), de esta forma el mensaje que ocultaremos será una serie de números de 8 bits. El mensaje que ocultaremos es la famosa poesía del maestro Mario Benedetti (que recientemente falleció) llamada "no te salves". A continuación escribo un extracto de dicha poesía:

No te salves
Mario Benedetti

No te quedes inmóvil
al borde del camino
no congeles el júbilo
no quieras con desgana
no te salves ahora
ni nunca
no te salves

...

La imagen marcada con la poesía y su plano LSB se muestran a continuación:

Lena marcada con una poesía de Benedetti

Como se puede apreciar existe un patrón de líneas verticales debido a la codificación ASCII que usamos, puesto que muchas letras comparten ciertos bits, como las letras minúsculas que pertenecen a un pequeño rango de la codificación ASCII. La poesía escondida en la imagen consta de 762 Bytes. Si ocultamos 5 veces la poesía en la imagen podremos observar mejor el patrón de líneas verticales generado:

Patrón vertical generado en el plano LSB al ocultar texto

Para evitar este patrón generado al ocultar el texto en la imagen podemos ocultar la marca de manera aleatoria en el plano LSB. Antes de continuar con esta modificación les enlistaré las principales modificaciones que se pueden hacer al método LSB.

Entre las principales modificaciones del método LSB encontramos:
  1. Ocultar la información aleatoriamente en el plano LSB para evitar un ataque visual.
  2. Ocultar la información en bordes de la imagen evitando zonas homogéneas para evitar ataques visuales.
  3. Usar mas planos LSB para ocultar información.
  4. Utilizar el método LSB para detectar cambios hechos en la imagen.
  5. Utilizar el método LSB como un método reversible para extraer la imagen original de la marcada.
La primer modificación consiste en ocultar aleatoriamente los bits del mensaje en la imagen. El camino que tomaremos es el desordenar aleatoriamente la marca. La forma de hacerlo es después de tener el tren de bits de la marca se procederá a desordenarlo usando una llave. Dicha llave será necesaria para reordenar la marca después de extraerla de la imagen marcada. A continuación observaremos la imagen marcada y el plano LSB de la misma. Para ello ocultamos la misma poesía de Benedetti descrita anteriormente.

Lena marcada con un mensaje aleatorio

Nos podemos dar cuenta que un ataque visual no surtiría efecto si ocultamos la marca aleatoriamente puesto que no nos podemos percatar de algún patrón o algo extraño que se vea en el plano LSB. La siguiente imagen muestra la diferencia notable de no usar y de usar una marca aleatoria.

Comparación de los planos LSB marcados usando marcas originales y aleatorias

Otra forma de hacer esta modificación es distribuir la marca aleatoria en todo el plano LSB.

Esta primera modificación evita un ataque visual, pero existe un tipo de ataque estadístico llamado prueba Chi-cuadrada que puede detectar la presencia de la marca dentro la imagen marcada siempre y cuando la marca sea ocultada de forma aleatoria.

En la siguiente entrada describiremos la prueba Chi cuadrada, posteriormente continuaremos con las otras cuatro modificaciones del método LSB restantes.

Saludos a todos.

PD. El código fuente (en matlab) de los métodos explicados en esta entrada se enlistan continuación:
1. Método LSB que oculta un mensaje periódico en una imagen bmp (descrito en la entrada anterior).
2. Método LSB que oculta un texto en una imagen bmp.
3. Método LSB que oculta un texto aleatoriamente en una imagen bmp.