Búscalo aquí:

Encriptación de Imágenes RGB

Introducción
En la presente entrada se muestra una experiencia al adaptar un método de cifrado de clave pública, como es el RSA, para lograr el cifrado de una imagen buscando la mejor manera de que la imagen cifrada sea totalmente ilegible a la vista común. El proceso de descifrar así mismo debe garantizar la obtención de una imagen totalmente idéntica a la original.

En esta entrada se presenta la descripción de la adaptación del método RSA para el cifrado de imágenes, sin embargo, este tipo de cifrado ha sido evaluado con otros métodos de clave pública como el Goldwasser-Micali y Blum-Goldwasser, en todoas estas pruebas se obtuvieron diversos tiempos para el cifrado (los cuales eran muy similares para el descifrado),a demás los resultados de encriptación tomaron diversos matices con cada uno de los diferentes algoritmos.

Sin embargo, una característica común en todas las pruebas fue el alto coste de tiempo que se requiere para lograr el cifrado-descifrado de imágenes, pero tal costo es compensado con el casi 100% de ilegibilidad de las imágenes cifradas y con el 100% de recuperación de la imagen original al realizarse el descifrado. En este experimento se tomo como prevalencia estos factores, aunque aún hace falta fortalecer la seguridad en el aspecto del tratamiento de claves.



Criptosistema RSA
Este criptosistema fue inventado en 1977 por Ron Rivest, Adi Shamir y Leonard Adleman, se basa en criptografía de clave pública con las siguientes características

  • Cada usuario obtiene un par de claves, una pública y una privada.
  • La clave pública de cada persona será difundida de tal manera que puede ser difundida por cualquiera. Un usuario A que desee enviar un mensaje a un usuario B utilizará la clave pública de B para cifrar el mensaje que desea enviarle además de su propia clave privada (la de A)
  • La clave privada se mantiene en secreto por los propietarios de la misma. Con esta clave se podrán descifrar los mensajes que lleguen. Así, en el contexto del ejemplo anterior, B utilizaría la clave pública de A y su propia clave privada para descifrar el mensaje enviado por A.
  • De esta manera se pueda observar que únicamente las claves públicas serán difundidas y podrán ser conocidas por cualquiera. Las claves privadas no son transmitidas o compartidas.
  • La base de este criptosistema está en que no se puede obtener la clave privada del usuario receptor a partir de su clave pública.

Cifrado y Descifrado de Imágenes usando RSA
El objetivo que se busca con el cifrado de imágenes es obtener una imagen totalmente distinta a la original y de esta manera ocultar lo mejor posible la información contenida en ella. Sin embargo, al cifrar imágenes mediante el método de RSA se han presentado algunos inconvenientes, los cuales son:

  • Debido a que los tonos de intensidad de los píxeles de una imagen se encuentran entre 0 y 255, el espacio de trabajo n se ve enormemente reducido. Además se encuentra el hecho de que el posible mayor espacio de trabajo es 255 y éste número no es el resultado del producto de dos primos.
  • Por este mismo motivo, la clave pública e y la clave privada d también se verán reducidas.


La reducción del espacio de trabajo es un serio problema, puesto que de él dependerá la fortaleza que el criptosistema tiene para soportar posibles ataques. Sin embargo, como medida de solución se ha planteado la siguiente estrategia:

  • Se ha construido un método que se encarga de generar dos primos p y q diferentes, y que además, el producto de estos sea un número que abarque la mayor cantidad de tonos de intensidad de los píxeles. Esto con la intensión de maximizar en lo posible el ya reducido espacio de trabajo n. Después de realizar las pruebas pertinentes se ha notado que el método arrojaba en la totalidad de dichas pruebas valores de p y q únicos, estos valores son p=23 y q=11 , lo que nos indica que el verdadero espacio de trabajo esta en: n=pq, n=253 . Esto significa que solo los píxeles que se encuentren entre 0 y n-1 podrán ser cifrados, por tanto, la estrategia planteada resuelve el problema dejando de cifrar los píxeles 253, 254 y 255, que representan los tonos más blancos.


Una vez que se ha determinado el espacio de trabajo se procede a generar, a partir de los factores de ella, la clave pública y privada.

Es en este momento en el que se procede a cifrar la imagen. El esquema general que se ha desarrollado consiste en tomar cada matriz R, G, B que componen a la imagen original y haciendo un recorrido de filas por columnas, tomar cada píxel y cifrarlo mediante RSA, de esta manera, cada píxel cifrado es guardado en su posición original, en una nueva matriz R1, G1 y B1, respectivamente, las cuales son unidas para formar una nueva imagen cifrada.

Se debe tener en cuenta que sólo serán cifrados aquellos píxeles que están dentro del espacio de trabajo previamente definido, esto es, si están entre 0 y n-1, los píxeles que no pertenecen al espacio de trabajo pasan a ser copiados a la matriz resultante tal y como se encuentran en la matriz original. Para el descifrado ocurre lo mismo, solo se descifran los píxeles cuyo tono esta entre 0 y , los demás no se descifran pues no fueron cifrados.

Sin embargo, el hecho de no cifrar ciertos tonos de píxeles trae un gran problema el cual se presenta de manera extremadamente notoria en imágenes con fondo blanco o de tonos muy cercanos a ellos, es decir, si los tonos 253, 254 y 255, se encuentran en abundancia y de manera consecutiva. La imagen cifrada arrojaría como resultado una imagen en la que se puede distinguir claramente el contorno de la imagen, lo cual puede ser muy significativo si lo que se pretende es el ocultamiento total de la información contenida en dicha imagen. Este caso puede observarse en la figura 1.

Figura 1. Cifrado de una imágen RGB aplicando RSA. Izq. imagen original, Centro imagen cifrada, Der. imagen descifrada

Otro inconveniente notorio es el que ocurre cuando una imagen contiene gran cantidad de tonos similares o de la misma intensidad, ubicados de manera muy cercana y abundante; entonces al ser cifrados, el resultado dará una imagen con tonos diferentes a los originales pero que también serán similares entre ellos.

Entonces, para dar mayor consistencia al cifrado de las imágenes y corregir de cierta manera los dos inconvenientes antes descritos, se ha creado un método para la partición y distorsión de la imagen. Este método consiste en partir la imagen a cifrar en 4 divisiones de manera vertical y en 3 divisiones de manera horizontal, de esta manera se obtienen 12 sub-imágenes, las cuales luego son alternadas formando una nueva imagen. Esta imagen dividida y alternada pasa a ser cifrada, obteniéndose de esta manera una imagen que oculta mejor la información que contiene, superándose enormemente los inconvenientes identificados. Como un trabajo futuro se puede generalizar éste método y lograr que la imagen sea subdivida en p sub-imágenes. Ver figura 2.

Para el proceso de descifrado, se procede primero a descifrar la imagen cifrada, luego el resultado de este proceso es una imagen que vuelve a ser dividida siguiendo el mismo método descrito anteriormente para finalmente volver cada división a su posición original.

Figura 2. Cifrado de una imágen RGB aplicando subdivisión y alternación de la imagen para luego cifrar mediante RSA. Izq. imagen original, Centro imagen cifrada, Der. imagen descifrada


Conclusiones
El esquema de clave pública RSA ofrece un amplio espacio de claves, además de un tiempo prudente en cifrar/desifrar imágenes RGB, pero además su capacidad de encriptar la imagen puede mejorarse con otros métodos para la redistribución de subáreas de píxeles con fines de mejorar la capacidad de encriptación de las imágenes. Así mismo el proceso de desencriptar la imágen encriptada logra obtener una imágen 100% idéntica a la original, es decir, no se produce pérdida de información.

Sin embargo, debido a la reducción del espacio de trabajo (por adaptación al problema de ifrar/desciffrar imágenes) también se reduce considerblemente el espacio de claves, de manera tal que bastaría con un simple ataque de fuerza bruta para romper rápidamente el sistema y obtener la clave. En este aspecto se esta trabajando la mejor manera para solucionar este problema.

En la figura 3 se muestra la interface de la aplicación implementada en la que se observa el cifrado de una fotografía de Machupicchu.

Figura 3. Interfaz de la aplicación que implementa el algoritmo RSA para el cifrado/descifrado de imágenes RGB. Se observa el cifrado de una imágen de 801 x 600 píxeles y en el descifrado, la imágen idéntica a la original.

Related Posts Plugin for WordPress, Blogger...