Páginas

lunes, 5 de enero de 2009

Imágenes robadas (IV)

Clase: Insecta
Orden: Lepidoptera
Familia: Hesperiidae


Segunda Parte: La Solución Imposible IIIMétodos Criptográficos

Esta entrada es la continuación de Imágenes robadas, Imágenes robadas (II) e Imágenes robadas (III).

Decía que todos los métodos cuyo objetivo es impedir la descarga de imágenes exhibidas en Internet están condenados al fracaso (y si no que se lo pregunten a los de la SGAE), y que por tanto, en lugar de intentar impedir que nuestras imágenes sean robadas, tal vez sería más inteligente dedicar los esfuerzos a buscar métodos que llegado el caso nos permitan demostrar que nosotros somos los autores de esas fotografías.

Uno de estos métodos es firmar la foto mediante una marca de agua más o menos visible, pero ya se discutieron los inconvenientes y debilidad de este método: estropea la foto y la firma puede ser eliminada.

Pero... ¿y si la firma fuera invisible?

Es posible usar un programa (existen muchos) para ocultar una información determinada en un archivo informático de modo que resulte invisible. La información se suele cifrar, de modo que sea necesaria una clave para poder descifrarla, y entonces se oculta en un archivo. En principio sirve cualquier archivo, pero en nuestro caso nos centraremos en las fotografías.

El método más usado es el del bit menos significativo. Generalmente, en una fotografía digital el color de cada píxel está descrito por tres números entre 0 y 255 que representan los 256 valores posibles de los canales rojo, verde y azul (RGB, iniciales de Red, Green y Blue). Así, los valores 255,0,0 representarían el color rojo puro. Los ordenadores solo pueden manejar ceros y unos así que la representación en binario del rojo puro será

R=11111111
G=00000000
B=00000000

es decir, ocho bits para representar el valor de cada canal.

La cosa es que si modificamos el bit de la derecha de cualquier canal, el llamado bit menos significativo, el color resultante no es el mismo, pero es tan parecido que nuestro ojo es incapaz de diferenciarlos.

A continuación se muestra el color rojo puro y el resultado de modificar el bit menos significativo de cada uno de los canales:


R=11111111
G=00000000
B=00000000
R=11111110
G=00000000
B=00000000
R=11111111
G=00000001
B=00000000
R=11111111
G=00000000
B=00000001

Para nuestro ojo las diferencia es tan sutil que no somos capaces de distinguir los colores, mucho menos si se tratara de un diminuto píxel en mitad de una fotografía, pero para el ordenador, que no ve los colores sino los unos y ceros que los representan, la diferencia es clarísima.

Podemos coger un mensaje, por ejemplo nuestra firma, codificarlo mediante una clave, y escribirlo en los bits menos significativos de los valores RGB de los píxeles de una fotografía. Cuanto mayor sea el número de píxeles de la fotografía (mayor resolución) y mayor la profundidad de color de esta (mayor número de bits sean usados para representar el valor de cada canal), más información podremos ocultar sin que se note.

Como digo arriba existen muchos programas que permiten ocultar información en una imagen y recuperarla conociendo las claves, y no es muy difícil automatizar la tarea para grandes cantidades de fotos.

Si la firma es pequeña (en terminos de bits) y la fotografía grande, podemos insertar la firma repetidas veces a lo largo de toda la foto, de modo que si la foto es dividida o muy recortada, cada trozo resultante seguiría conteniendo la firma.

Este método no es inviolable. La firma puede ser eliminada. Basta con sobreescribir con ceros todos los bits menos significativos de la foto. De nuevo los colores de cada píxel (y por tanto la foto) no variarian significativamente, y cualquier información oculta que pudiera contener la imagen en los LSB sería eliminada. Pero como es imposible saber si una imagen contiene o no información oculta (recordemos que se encuentra cifrada), el que quisiera eliminar este tipo de firma se vería obligado a sobreescribir con ceros los LSB de todas las imagenes que descargara de internet, ya que le es imposible saber cuales están firmadas y cuales no.

Más de uno pensará que es mucho lío para firmar las fotos, y seguramente tiene razón, pero para quien le guste jugar con ordenadores puede ser divertido subir las fotos a las red con una firma secreta e indetectable que puede demostrar nuestra autoría llegado el caso.

Y puestos a demostrar la autoría de una foto, mucha gente cree que siendo el RAW un negativo digital, su posesión es prueba de que se es el autor de la foto. Ultimamente ha creado polémica la facilidad con la que se puede manipular el contenido de una fotografía. En muchos concursos han empezado a exigir el archivo RAW como prueba de que la imagen no ha sido creada en un editor. Pero ¿realmente el RAW es un negativo digital? y ¿de verdad el RAW no se puede modificar?. Esto merece ser analizado en una futura entrada.

7 comentarios:

  1. Muy bueno Javier, pero efectivamente todo es crackeable con mayor o menor esfuerzo, sin duda contra más esfuerzo exija mayor será el éxito de que se aburra el que quiera romper la clave.
    Una buena idea sí.
    Saludos.

    ResponderEliminar
  2. Está muy bien esto que comentas...
    ¿Podrías decir el nombre de alguno de estos programas?

    Un saludo.

    ResponderEliminar
  3. Hay muchos, algunos ejemplos GNU/Gratuitos encontrados en 0,27 segundos usando Google:

    Para ocultar información

    OpenStego

    Camouflage

    Steghide


    Para detectar archivos que contengan información oculta:

    StegSecret

    No son programas para el gran público, así que muchos ni siquiera tienen interfaz de usuario (GUI), hay que manejarlos desde la línea de comandos y escribiendo algún script, o si te manejas programando escribirte tú una GUI. Algunos tienen limitaciones sobre el tipo de formatos que soportan o detalles por pulir. Supongo que habrá programas comerciales más 'terminados'. No lo sé, la verdad. Pero seguro que Google tiene la respuesta...

    Saludos.

    ResponderEliminar
  4. Genial, muchas gracias.
    No te preocupes, soy programador y uso linux ;)

    Un saludo.

    ResponderEliminar
  5. En una vida anterior yo usaba Debian... pero con las ventanas KDE que usaban no sé qué librerías propietarias para horror de los fundamentalistas del software libre... todavía tengo un 486 funcional con un linux instalado sin interfaz gráfica... tiene ese botoncito del TURBO y los númeritos verdes... qué nostalgia...

    ResponderEliminar
  6. Jajaja, me acuerdo del boton de turbo de esos, cuando iba a clases de informática en el colegio.
    Yo uso Ubuntu ahora, la parte gráfica está genial.
    Un saludo.

    ResponderEliminar
  7. Hola,
    estuve probando el steghide, pero en cuanto cambies un pelín la foto con Gimp, por ejemplo, ya no puede extraer el fichero oculto. Eso si, es más discreto que la firma escrita sobre la foto.

    Un saludo y gracias.

    ResponderEliminar