BANCO DE PRUEBAS PARA ALGORITMOS DE CRIPTOGRAFÍA … · Los algoritmos se añadirán al programa...

160
- 0 1. PROYECTO FIN DE CARRERA BANCO DE PRUEBAS PARA ALGORITMOS DE CRIPTOGRAFÍA GRÁFICA AUTORA: Susana López Lumbierres MADRID, Septiembre 2006 UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN INFORMÁTICA

Transcript of BANCO DE PRUEBAS PARA ALGORITMOS DE CRIPTOGRAFÍA … · Los algoritmos se añadirán al programa...

- 0

1.

PROYECTO FIN DE CARRERA

BANCO DE PRUEBAS PARA

ALGORITMOS DE CRIPTOGRAFÍA

GRÁFICA

AUTORA: Susana López Lumbierres

MADRID, Septiembre 2006

UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)

INGENIERO EN INFORMÁTICA

1

Autorizada la entrega del proyecto al alumno:

Susana López Lumbierres

EL DIRECTOR DEL PROYECTO

Gonzalo Álvarez Marañón

Fdo: Fecha:

Vº Bº del Coordinador de Proyectos

Miguel Ángel Sanz Bobi

Fdo: Fecha:

- I

RESUMEN

La criptografía gráfica tiene como objetivo el diseño, desarrollo e

implementación de criptosistemas para el cifrado/descifrado de imágenes

digitalizadas, así como de protocolos orientados al reparto de imágenes secretas,

entre otros.

Los procesos de cifrado/descifrado permiten hacer ilegible el

contenido de una imagen para cualquiera que no esté autorizado a conocer su

contenido; mientras que los esquemas para compartir imágenes secretas permiten

repartir una imagen entre varios participantes de modo que sólo determinados

subconjuntos de participantes cualificados pueden recuperar la imagen secreta

original.

Actualmente existe un vacío de herramientas integradas para el estudio

y análisis de la seguridad de algoritmos de criptografía gráfica. Este proyecto,

Banco de Pruebas para Algoritmos de Criptografía con Imágenes (BPACI),

pretende llenar este vacío mediante su entorno integrado de manipulación de

imágenes con la novedosa posibilidad de añadir algoritmos criptográficos en la

forma de plug-ins escritos en cualquier lenguaje de programación orientado a

objetos. De esta manera, se separa la labor criptográfica de crear los algoritmos de

la labor criptoanalítica de evaluar su seguridad.

El objetivo general de BPACI es contribuir al estudio de la seguridad

de los algoritmos de criptografía gráfica.

II

Para ello, los objetivos que este proyecto debe cumplir son:

- Desarrollo de un entorno integrado para la manipulación de

imágenes

- Definición de interfaces de relación con plug-ins criptográficos en

los que se programe los algoritmos de cifrado o reparto secreto para imágenes.

- Desarrollo de tests de análisis de seguridad de algoritmos de

criptografía gráfica.

- Desarrollo de diversas herramientas de ayuda al cifrado o al

estudio de la seguridad.

El resultado de este proyecto es que, a partir de unas plantillas

diseñadas, cualquier persona sin necesidad de tener grandes conocimientos de

informática (bastará con saber programar el algoritmo), podrá procesar imágenes

digitalmente con los algoritmos que él haya implementado.

Los algoritmos se añadirán al programa como archivos DLLs. El

motivo de usar este tipo de archivos en el proyecto, es que se pretende que

personas ajenas a esta aplicación puedan utilizarla para fines de criptografía

gráfica, es decir, que la aplicación se adapte a las necesidades de cada uno, sin

necesidad de retocar el código propio de BPACI. Esto es posible ya que al

desarrollar una DLL se tratará como archivo independiente, pudiendo añadir o

eliminar archivos, funciones internas a estas DLLs sin necesidad de volver a

compilar y ejecutar BPACI siempre y cuando que se respeten las plantillas

diseñadas

III

SUMMARY

The aim of graphical cryptography is the design, the development ant

the implementation of cryptosystems for coding and decoding digitalized images,

as well as protocols for the sharing of secret images.

Both processes, code and decode, allow to make the content of an

illegible image for any person who is not authorized to know its content; whereas

the schemes for share secret images allow to distribute an image among several

participants so that only certain subsets of qualified participants can recover the

secret original image.

Nowadays there exists an emptiness of integrated tools for the study

and analysis of the safety of algorithms of graphical cryptography. This project, “

TESTING BENCH FOR ALGORITHMS OF GRAPHICAL CRYPTOGRAPHY

” , (BPACI), tries to fill this emptiness through its integrated environment of

manipulation of images with the new possibility of adding algorithms as plug-ins

written in any language of programming orientated to objects. This way, the work

of developing algorithms is separated from the work of evaluating the safety of

the algorithms.

The main aim or BPACI is to contribute to the study of the study of

the safety of the algorithms of graphical cryptography.

So, the aims that this project must fulfil are:

- Development of an environment integrated for the manipulation of

images.

IV

- Define interfaces to connect with plug-ins of cryptography where

algorithms of coding have been programmed.

- Development of tests to analyse the security of the algorithms of

graphical cryptography.

- Development of some tools of help to the coding or the study of the

safety.

Beginning from some patterns developed, any person without great

knowledge of computer science, (it will be enough to be able to programme the

algorithm), will be able to process images digitally with the algorithm that he has

implemented.

The algorithms will be added to the application as DLL files. The

reason to use this kind of files to the project is due to the fact that there is claimed

that foreign people can use this application to graphical cryptography purposes. It

means, the application has to adapt to the needs of users, without the need to

rewrite the code of BPACI. This is possible because of the files DLL; they will be

treated as independent files, so we can add or remove files, and also retouch

internal function from them without compiling and executing the project. All of

this, it is possible, as long as the patterns developed are respected.

ÍNDICE

1. INTRODUCCIÓN ……………………………………………. 5

2. DEFINICIÓN DEL PROBLEMA Y OBJETIVOS …………... 6

3. ANÁLISIS DE REQUISITOS ………………………………... 8

3.1 Menú Archivo ………………………………………….. 10

3.2 Menú Edición …………………………………………... 13

3.3 Menú Ver ………………………………………………. 14

3.4 Menú Ayuda ……………………………………………. 16

3.5 Menú Ventana ………………………………………….. 17

3.6 Menú Colores …………………………………………... 18

3.7 Menú Tests ……………………………………………... 19

3.8. Menú Utilidades ………………………………………... 20

3.9 Menú criptografía ………………………………………. 21

3.10 Gestión de excepciones ………………………………... 23

4. ARQUITECTURA DEL SISTEMA. ………………………... 25

5. DISEÑO DE BAJO NIVEL …………………………………. 28

5.1 Diagramas de Flujos de Datos ….………………………….. 29

5.1.1 Diagrama de contexto …………………………. 29

5.1.2 Diagrama de primer nivel ……………………... 31

5.1.3 Diagrama Menú Archivo ……………………… 33

5.1.3.1 Diagrama Abrir ………………………... 35

5.1.3.2 Diagrama Guardar como ……………… 37

5.1.4 Diagrama Menú Edición ………………………. 39

5.1.5 Diagrama Menú Ver …………………………... 41

5.1.6 Diagrama Menú Criptografía ………………….. 43

5.1.6.1 Diagrama Aplicar Algoritmo ………….. 45

5.1.7 Diagrama Menú Colores ………………………. 47

5.1.8 Diagrama Menú Utilidades ……………………. 49

5.1.9 Diagrama Menú Ventana ……………………… 51

5.1.10 Diagrama Menú Tests ………………………… 53

6. PROGRAMACIÓN …………………………………………. 55

7. PRUEBAS DEL SISTEMA ……………………………...….. 56

7.1 Tipos de pruebas ………………………………………... 57

8. ACCESO A LOS ALGORITMOS DE CRIPTOGRAFÍA

CON IMÁGENES ……………..………………………………. 58

9. LIBRERÍAS DE ENLACE DINÁMICO ………………….... 64

10. PLANTILLAS PARA LAS DLLS ………………………… 66

11. OTRAS PLANTILLAS ……………………………………. 69

12. COMPILACIÓN DE LAS DLLs ……………………...…… 70

13. REQUISITOS HARDWARE ……………………...………. 77

14. INSTALACIÓN …………………………………………..... 80

15. CONCLUSIONES ………………………………………..... 85

15.1 Aportaciones …………………………………………... 85

15.2 Sugerencias de trabajo futuro ………………………….. 87

16. PLANIFICACIÓN DEL PROYECTO …………………...... 88

16.1 Definición de tareas …………………………………… 88

16.2 Dependencia entre tareas ……………………………… 89

16.3 Recursos ……………………………………………….. 90

16.4 Planificación …………………………………………... 90

17. PRESUPUESTO DEL PROYECTO ……………………… 91

18. BIBLIOGRAFÍA …………………………………………... 92

ANEXOS ………………………………………………………. 93

ANEXO A. Plantillas para DLLs ………………………………. 94

ANEXO B. Otras plantillas …………………………………… 113

ANEXO C. Manual de usuario ……………………………….. 116

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 5

1.- INTRODUCCIÓN

La criptografía gráfica tiene como objeto el diseño, desarrollo e

implementación de criptosistemas para el cifrado/descifrado de imágenes

digitalizadas, así como de protocolos orientados al reparto de imágenes secretas,

entre otros.

Los procesos de cifrado/descifrado permiten hacer ilegible el

contenido de una imagen para cualquiera que no esté autorizado a conocer su

contenido; mientras que los esquemas para compartir imágenes secretas permiten

repartir una imagen entre varios participantes de modo que sólo determinados

subconjuntos de participantes cualificados pueden recuperar la imagen secreta

original.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 6

2. DEFINICIÓN DEL PROBLEMA Y

OBJETIVOS

Actualmente existe un vacío de herramientas integradas para el estudio

y análisis de la seguridad de algoritmos de criptografía gráfica.

Este proyecto, Banco de Pruebas para Algoritmos de Criptografía con

Imágenes (BPACI), pretende llenar este vacío mediante su entorno integrado de

manipulación de imágenes con la novedosa posibilidad de añadir algoritmos

criptográficos en la forma de plug-ins escritos en cualquier lenguaje de

programación orientado a objetos. De esta manera, se separa la labor criptográfica

de crear los algoritmos de la labor criptoanalítica de evaluar su seguridad.

El objetivo general de BPACI es contribuir al estudio de la seguridad

de los algoritmos de criptografía gráfica.

Para ello, los objetivos que este proyecto debe cumplir son:

- Desarrollo de un entorno integrado para la manipulación de

imágenes

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 7

Este proyecto debe ser una aplicación consistente y completa

por sí misma y deberá tener todo aquellos recursos que necesite para su

ejecución.

- Definición de interfaces de relación con plug-ins criptográficos

en los que se programe los algoritmos de cifrado o reparto secreto para

imágenes.

Se van a desarrollar interfaces con bibliotecas dinámicas de

manera que el entorno pueda cargar distintos algoritmos a los que se les

proporciones imágenes y de los que reciba las imágenes procesadas.

- Desarrollo de tests de análisis de seguridad de algoritmos de

criptografía gráfica.

- Desarrollo de diversas herramientas de ayuda al cifrado o al

estudio de la seguridad.

Utilidades adicionales que le hemos dado a la aplicación, como

por ejemplo, la posibilidad de generar claves pseudos-aleatorioas o

funcionalidades de manipulación de imágenes, como zoom, información sobre

un píxel o cambio de color de píxeles.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 8

3.- ANÁLISIS DE REQUISITOS

Con este proyecto se pretende ofrecer al usuario una aplicación

independiente para su uso particular, y que cumpla con los objetivos detallados

anteriormente, incluida la novedad de poder interactuar con algoritmos

programados independientemente al proyecto.

Además de conseguir una aplicación para el uso de algoritmos de

criptografía no debemos olvidar el aspecto gráfico que debe contener ests

aplicación para que podamos tratar las imágenes antes y después de ser

procesadas.

En esta fase, además de conseguir un conocimiento suficiente del

sistema, se ha especificado también de qué manera se han resuelto dichos

requisitos.

La organización de esta etapa, está siguiendo la ventana principal de la

aplicación, que se muestra en el manual de usuario en el Anexo C.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 9

Los principales requisitos funcionales que debe cumplir este proyecto

son los siguientes:

- Formatos de archivo de entrada: bmp, gif, tiff, jpg, texto.

- Formatos de archivo de salida: bmp, gif, tiff, jpg, texto.

- Configuración en archivo xml

- Información de la imagen: color, ancho, altura, nivel de zoom,

fecha..

- Panelado de imágenes: en cascada, ordenado horizontalmente y

verticalmente.

- Zooming

- Pincel de color

- Instalable

- Gestión de excepciones: mensajes de usuarios descriptivos, log en

sucesos del sistema.

- Generación de claves pseudos aleatorias

Estos requisitos se han organizado en forma de menú y submenús en la

ventana principal junto a otras funcionalidades que se especifican en la figura 1 y

se detallan a continuación.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 10

Figura 1: Funcionalidades de BPACI

3.1 Menú Archivo

Submenús: Nuevo, Abrir, Guardar, Guardar como.., Propiedades, Salir

Opción de abrir y guardar imágenes en los formatos de archivo

más utilizados: bmp, gif, tiff, jpg, texto.

Nuevo Abrir Guardar

Propiedades Salir

Archivo Edición

CortarCopiar Pegar Voltear Horizontalmente Girar 180º

Ver

Barra de estado Barra de herramientas Imagen completa Imagen real Procesar Zoom

Ventana

CascadaOrdenar horizontal Ordenar vertical

Ayuda

Acerca de..

Colores

Modificar color pixel Datos pixel

Utilidades

Generar

Tests

HistogramaCorrelación Todos los tests

BPACI

Criptografía

Añadir algoritmo [Algoritmos añadidos]

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 11

Al guardar una imagen como texto, obtendremos todos los valores

numéricos de los píxeles. Al abrir este archivo .txt el resultado se mostrará

en pantalla en forma de imagen.

Para conseguir guardar una imagen como texto, lo primero que se

hace es leer los bytes de la imagen abierta con BinaryReader y

almacenarlos en un array de bytes del mismo tamaño que el fichero.

Hay que tener en cuenta que una foto es una matriz con sus

columnas y filas. Al guardar los datos en formato texto debemos respetar el

final de cada fila de la imagen, que no tiene por qué corresponder con el

final de una línea del archivo de texto. Al llegar a estos puntos, en el archivo

texto se produce un salto de línea. Además el valor de cada píxel se separa

de los adyacentes con un espacio en blanco.

Un ejemplo de lo explicado se muestra en la siguiente figura.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 12

Figura 2: Imagen guardada como archivo de texto

En este menú archivo también podemos obtener la información de

una imagen abierta. Estas propiedades serán información sobre la imagen

abierta, como su ubicación, tamaño, numero de bits por píxel,.. Además

también tenemos la opción de poder obtener metadatos almacenados en este

objeto, como pro ejemplo su fecha.

La opción Salir nos permitirá abandonar la aplicación, y el programa

se cerrará.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 13

3.2 Menú Edición

Submenús: Cortar, Copiar, Pegar, Voltear Horizontalmente, Girar

180º, Voltear Verticalmente

En este menú aparecen las operaciones de cortar, copiar y pegar con

las que podremos exportar imágenes de BPACI a otros programas, y también

importarlas.

Para estas funciones se ha trabajado con la clase Clipboard que

proporciona métodos para colocar los datos en el portapapeles del sistema y

recuperarlos. Estos métodos so:

- SetDataObject que coloca datos en el portapapeles del sistema.

- GetDataObject que recupera los datos actualmente contenidos en el

portapapeles.

Para la función de cortar, una vez que se han copiado los elementos en

el portapapeles, se elimina la función seleccionada en pantalla.

Además con las funciones de Voltear Horizontalmente, Girar 180º y

Voltear verticalmente el usuario podrá encontrar la forma más cómoda de

trabajar con las imágenes en pantalla.

La implementación de estas funciones se ha llevado a cabo a través

de los miembros de la enumeración RotateFlypType del espacio de nombres

System.Drawing. Estos métodos nos permiten elegir la dirección de giro de

una imagen y el eje que se utiliza para voltearla.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 14

3.3 Menú Ver

Submenús: Barra de estado, Barra de herramientas, Imagen

completa, Imagen real, Procesar, Zoom.

Este menú tiene tres zonas diferenciadas y separadas por una línea.

Las dos primeras: barra de estado y barra de herramientas,

permiten al usuario elegir si quieren que en su aplicación aparezca o no

tanto la barra de herramientas, situada arriba de la ventana principal como la

barra de estado que aparece abajo. Cuando estén habilitadas, aparecerá junto

a ellas en el menú un tick de activación. Cuando no estén presentes en la

aplicación, entonces este tick desaparecerá.

La eliminación de estas barras nos puede hacer ganas espacio para la

imagen.

Los dos submenús siguientes: Imagen completa e Imagen real

permiten elegir la forma en que se quiere ver la imagen en pantalla.

Para ello se ha utilizado los miembros de la enumeración

PictureBoxSizeMode del espacio de nombre System.Windows.Forms para

especificar cómo se coloca una imagen dentro de un PictureBox. (Los

PictureBox representan un cuadro de imagen de Windows donde se

muestran las imágenes.)

En un principio, cuando se abre una imagen, esta aparece con

centrada con PictureBoxSizeMode.Normal que coloca la imagen en la

esquina superior izquierda del PictureBox. La imagen se recorta si es más

grande que el PictureBox que la contiene.

Cuando queremos que la imagen aparezca completamente en

pantalla, ya se ajuste al tamaño de ventana que tenemos abierto, se utiliza

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 15

PictureBoxSizeMode.StretchImage para que la imagen situada dentro del

PictureBox se estire o encoja para ajustarse al tamaño. Este método

deformaba la imagen al ajustarse a la ventana abierta, para solucionarlo, se

han calculado las dimensiones relativas y se ajustan el ancho y el alto en la

misma proporción.

Para la otra opción del menú, “Imagen real”, se ha utilizado el

método PictureBoxSizeMode.AutoSize que hace que el tamaño de

PictureBox se ajuste al tamaño de la imagen que la contiene.

En la tercera división de este menú tenemos los submenús de

Procesar y Zoom.

La primera “procesar” nos permitirá aplicar filtros verdes, azules o

verdes a la imagen en pantalla, con lo cual ésta cambiará de color.

Con el submenú Zoom tendremos la posibilidad de acercar o alejar la

imagen en pantalla. Utilizando este menú, únicamente podremos acercar la

imagen hasta 11 veces, y lo mismo al alejar.

Sin embargo, con las funcionalidades añadidas en la barra de

herramientas podremos ir acercando o alejando la imagen poco a poco con

los botones “Ampliar zoom” y “Disminuir Zoom”. También, para lograr el

mismo resultado podremos introcir el nivel de zoom en la casilla en blanco y

tras pulsar el botón “Nivel Zoom” obtendremos el resultado en pantalla.

La implementación del zoom es la misma para las tres formas

diferentes de hacer zoom. La principal diferencia es que con las opciones del

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 16

submenú, el nivel del zoom viene dado al pulsar el botón, y con el resto hay

que calcular en función del nivel de zoom que tenía la imagen antes de hacer

el nuevo.

En la implementación del zoom, se han encontrado varias

dificultades que se han resuelto de la siguiente forma. Para calcular un

nuevo zoom, hay que conseguir las medidas de la imagen y el nivel de zoom

que tiene en ese momento. Se deben calcular las medidas originales de la

imagen, es decir, las medidas de la imagen cuando no tiene aplicado ningún

nivel de zoom y a partir de estas medidas calcular la nuevas multiplicando

en caso de querer acercar la imagen o alejando en el caso de pretender

disminuirla.

Además, otro problema adicional es que el nivel de zoom viene

indicado en el texto de la imagen abierta, ya que puede ser muy útil saber

con qué nivel de zoom se trabaja en cada instante. Al cambiar el nivel de

zoom, hay que cambiar el valor también del texto de la imagen.

3.4 Menú Ayuda

Submenú: Acerce de..

Un típico acerca de... en el que aparece el nombre completo del

proyecto.

Y el nombre de la autora.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 17

3.5 Menú Ventana

Submenú: Cascada, Ordenar horizontal, Ordenar vertical

En este menú podremos seleccionar la forma en que queremos que se

organicen las imágenes abiertas.

Se ha utilizado MdiLayout del espacio de nombres

System.Windows.Forms para especificar el diseño de las ventanas

secundarias de la interfaz de múltiples documentos (MDI) en una ventana

primaria de MDI. En este proyecto, las ventanas secundarias con las

imágenes que el usuario tenga abiertas, y la ventana primaria en la ventana

principal de BPACI.

Para la organización de las ventanas se han utilizado los siguientes

métodos:

- MdiLayout.Cascade para organizar en cascada todas las imágenes

dentro de la ventana principal.

- MdiLayout.TileHorizontal para organizar en mosaico horizontal

todas las imágenes dentro de la ventana principal.

- MdiLayout.TileVertical para organizar en mosaico vertical todas

las imágenes dentro de la ventana principal.

Esta organización solo será válida para las ventanas que incluyan

imágenes, ya que son las únicas que se han diseñado como MDI de la

ventana principal. El resto de las ventanas que forman parte de esta

aplicación, como la ventana de propiedades, las ventanas de tests,.. no se

podrán organizar de esta forma.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 18

3.6 Menú Colores

Submenús: Modificar color píxel, Datos píxel

Este menú está compuesto por dos submenús, ambos relacionados

con el color de los píxeles.

El primero de ellos “Modificar píxel” nos da la opción de cambiar el

color de un píxel.

Nos aparecerá una ventana donde habrá que indicar las coordenadas

del píxel que queremos cambiar. Una vez escritas las coordenadas, al pulsar

sobre el botón color, nos aparecerá una paleta de colores donde podremos

elegir el color deseado.

Cuando tenemos ya toda la información: imagen a cambiar (se

trabaja con bitmap), coordenadas del píxel(x,y) y color, se aplica el siguiente

método para cambiar el píxel de la imagen a ese color:

bitmap.SetPixel(x,y,Color.FromArgb(cd.Color.R, cd.Color.G, cd.Color.B));

Al activar el segundo submenú “Datos píxel”, se marca a la izquierda

con un tick, despareciendo cuando se desactiva.

Lo que se consigue con esto es que cuando movamos el ratón por

encima de una imagen, nos aparezca en el texto de la imagen, información

del píxel sobre el que se pasa: coordenadas y color.

Para obtener el color de un píxel, el método es parecido al anterior:

GetPixel().

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 19

Esta segunda opción puede resultar muy útil, por ejemplo, en el caso

que se quiera cambiar el color de un píxel y no se conozcan sus

coordenadas. Con esta segunda opción activada, pulsando el botón

secundario del ratón, nos aparecerá la pantalla de cambiar color de un píxel,

pero esta vez con los campos de las coordenadas rellenados.

3.7 Menú Tests

Submenús: Histograma, Correlación Vertical, Correlación

Horizontal, Correlación Diagonal, Todos los tests

En este menú podremos obtener los tests que ayudan a evaluar la

seguridad de un algoritmo.

No hay que olvidar que una imagen bien cifrada tendrá los píxeles

repartidos aleatoriamente por todo el cuadro de la imagen

El histograma es un test que calcula el número de píxeles por color.

Por tanto, el histograma de una imagen bien procesada, tiene que ser una

línea horizontal que nos indicará que el reparto de los píxeles es equitativo.

Los tests de correlación, tanto vertical, horizontal, como diagonal

comparan píxeles adyacentes. Así, el test de una imagen bien procesada

debería aproximarse a la diagonal.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 20

La implementación de los cuatro tipo de tests es muy similar. La

diferencia entre unos y otros, son los píxeles que se comparan. En el caso

del histograma, se calcula el color de cada píxel de la imagen, para la

correlación vertical, se compara un píxel con su píxel adyacente en vertical,

en la correlación vertical, igual pero con el píxel adyacente horizontal y en

la correlación diagonal, con el píxel adyacente que esté en diagonal.

Por otro lado, se tienen tres arrays, uno para coordenada RGB, y

cada vez que se calcula un dato, se añade la componente roja al arrayRojo,

la componente verde al arrayVerde y la componente azul al arrayAzul.

Cuando se termina de recorrer la imagen y se han calculado todos los datos,

se representan estos tres arrays simultáneamente y cada uno se pinta con el

color que representa.

3.8 Menú Utilidades

Submenú: Generar clave

En este menú se ha implementado la función de generar una clave

pseudo aleatoria que sirva para loa algoritmos de cifrado y descifrado.

Para la creación de estas claves, la única información que se le

requiere al usuario es la longitud de la clave que desea generar. A partir, de

aquí, el trabajo es del sistema.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 21

Se utiliza la clase RNGCryptoService del espacio de nombres

System.Security.Cryptography que implementa un generador de números

aleatorios (RNG) criptográfico mediante la implementación proporcionada

por el proveedor de servicios criptográficos (CSP).

Para generar esta clave se parte del abecedario hexadecimal, es decir,

“123456789ABCDEF”. Y estos caracteres se van a mezclar aleatoriamente

generando las nuevas claves.

Existe otra función para obtener datos aleatorios que es la función

Random, pero esta posibilidad se descartó ya que es menos eficaz. Random

puede producir el mismo número random en el mismo segundo, y la

posibilidad de que los números random se repitan en mucho mayor.

Cada algoritmo de cifrado y descifrado llevará su propia interfaz

donde se deberá introducir una clave. Esta clave podrá hacerse

manualmente, pero también podemos generarla automáticamente utilizando

este menú.

3.9 Menú Criptografía

Submenú: Añadir Algoritmo, [Algoritmos añadidos]

En el diseño de la aplicación, el único submenú estático es el de

“Añadir Algoritmo”.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 22

Sin embargo, al ejecutar la aplicación aparecerán como submenús

cada uno de los algoritmos compilados como .dll y que están en una

dirección que se ha leído previamente de un archivo config.xml.

Después de leer el directorio donde se encuentran las DLLs, el

sistema accede a ese directorio y lee los archivos que hay, aquellos que

tienen la extensión .DLL son cargados en BPACI, y aparecen como

submenús del menú Criptografía.

Para cargar estos ensamblados a partir de la ruta se utiliza el método

Assembly.LoadFrom (string direccion) del espacio de nombres

System.Reflection

Si estamos utilizando el programa, y queremos añadir un nuevo

algoritmo como DLL para trabajar con ella, entonces podemos utilizar el

único submenú estático de este menú “Añadir Algoritmo”. En este caso nos

aparecerá un cuadro de diálogo donde seleccionaremos el algoritmo

deseado, y automáticamente este algoritmo se añadirá a la lista de submenús

y se habrá hecho una copia en la dirección indicada en el .xml.

De esta forma, no solo lo tenemos disponible esta vez, sino que la

próxima vez que se cargue el programa aparecerá directamente en la lista.

A partir de ahora si pulsamos sobre cualquiera de los nuevos submenús

se procesaran las imágenes abiertas en nuestra aplicación con los algoritmos

implementados en las DLLs que se acaban de cargar.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 23

Cuando se selecciona una de estas DLLs, la aplicación accede a este

archivo, ya que tiene su dirección, y a partir de ahora comienza la búsqueda en

el interior de la DLL para detectar si tiene algún método que BPACI

reconozca, en cuyo caso comenzaría a procesarse el algoritmo de la DLL. Si

se ha cargado una DLL pero no tiene ningún método reconocido por BPACI,

entonces no se ejecuta ninguna acción.

Tanto los pasos detallados para poder trabajar con estas DLLs, y las

plantillas para poder crear algoritmos con los que procesar imágenes desde la

aplicación se explican a lo largo de la memoria.

3.10 Gestión de errores

Existe un archivo llamado Eventos.log que se encuentra en el

directorio BPACI\EventLogs y que contiene información acerca de la ejecución

de la aplicación.

Para cada ejecución del programa se registrará la hora de ejecución, el

directorio del archivo Eventos.log y las DLLs que se cargan dinámicamente al

comienzo de la ejecución.

A lo largo de la ejecución se registrarán algunos errores que puedan

ocurrir. Si en algún momento se desea, se podrán añadir registros a este archivo

teniendo en cuenta que el método utilizado para ello es el siguiente:

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 24

private void crearLog(string linea)

{ BPACI.EventLogs.ClaseLog clLog= new BPACI.EventLogs.ClaseLog(linea); clLog.sPathLog = this.sDireccLog; clLog.AñadirLinea(); }

El argumento línea es el mensaje que se desea registrar.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 25

4. ARQUITECTURA DEL SISTEMA

Se trata de una aplicación cliente, es decir, que todos los componentes

necesarios para su ejecución, se instalarán en la máquina del cliente.

La arquitectura está diseñada en dos niveles:

1. Lógica de presentación: donde se han diseñado las diferentes

ventanas del programa y con las que el usuario interactúa directamente.

2. Lógica de negocio: que contiene los algoritmos y la carga

más pesada de programación

Además las DLLs que contienen los algoritmos de criptografía y que

son externas a BPACI, se encuentran agrupadas en una carpeta a la que se accede

para interactuar con ellas. Por tanto, BPACI, no solo cuenta con una interfaz para

relacionarse con el usuario, sino que también consta de otra relación con las

DLLs.

La siguiente Figura 3 muestra estas relaciones.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 26

Figura 3: Arquitectura general

Mediante el nivel de lógica de presentación, el usuario interactuará con

BPACI. En el caso de querer utilizar uno de los algoritmos compilados como

DLLs, seleccionará este mediante la interfaz de usuario (1), y la lógica de negocio

Cliente

LÓGICA DE PRESEN_ TACIÓN

LÓGICA DE NEGOCIO

DLL1

DLL2

DLLN

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 27

será la encargada de realizar los procedimientos necesarios para interactuar con la

DLL (2). La DLL mostrará su interfaz, recordemos que cada DLL contiene su

propia interfaz, y el usuario introducirá la clave a utilizar (3). Con los argumentos

pasados desde BPACI, y la clave introducida, se procesará el algoritmo codificado

en la DLL (4), y el resultado se devolverá a la lógica de negocio, que tras analizar

el resultado devuelto (5) lo pasará a la lógica de presentación para que se muestre

al usuario (6).

La explicación gráfica de lo explicado anteriormente, se muestra en la

Figura 4.

Figura 4: Pasos de la arquitectura

LÓGICA DE PRESENTACIÓN

DLLs

LÓGICA DE NEGOCIO

1

6

2

3

4

5

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 28

5. DISEÑO DE BAJO NIVEL

En esta fase diseñaremos los diagramas de flujo del sistema.

La técnica de diagramas de flujo de datos (DFD) nos permite una

representación gráfica del sistema para visualizar el sistema desarrollado como

una red de procesos funcionales, y las conexiones entre ellos.

El propósito de un Diagrama de Flujo de Datos es modelar de manera

precisa las funciones que deberá llevar a cabo el sistema y las interacciones entre

ellas. Otro propósito de este es ser leído y comprendido, no sólo por quién lo

construye el modelo sino también por los usuarios que participan.

El diagrama deberá ser fácilmente entendido, fácilmente asimilado y

placentero a la vista.

Para conseguir tales objetivos se han desarrollado varios DFDs en

diferentes niveles.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 29

5.1 DIAGRAMAS DE FLUJO DE DATOS

5.1.1 DIAGRAMA DE CONTEXTO

Representa la vista de más alto nivel de las principales funciones del

sistema, al igual que sus principales interfaces.

Consta de un único proceso que representa el sistema completo. Los

flujos de datos muestran las interfaces entre el sistema y los terminadores

externos. En este caso, el sistema interactúa:

1.- con el usuario,

2.- con las DLLs. Las DLLs no están desarrolladas dentro del sistema,

pero el sistema será capaz de interactuar con ellas, como se verá más en detalle en

los siguientes DFDs.

El usuario podrá enviar imágenes al sistema, que este será capaz de

transformar, calcular propiedades de estas, realizar tests…

El procedimiento principal de la aplicación, incluye que el sistema,

una vez tenga una o varias imágenes, sea capaz de pasarlas al elemento extero

DLLs y que se transforme según los algoritmos que independientemente a BPACI

se hayan desarrollado, devolviendo de nuevo al sistema una o varias imágenes.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 30

USUARIO

0.

BANCO DE PRUEBAS

PARA ALGORITMOS DE CRIPTOGRAFÍA

CON IMÁGENES

Entrada_nueva

Entrada_nombre_archivo

Imagen_guardada

Imagen guardada como imagen/texto

Imágenes criptar

Long clave

propiedades

Clave generada

Imagen BPACI

test

DLLS

imagenImágenes

a criptar

Img criptadas

Entrada_algoritmo

Nuevo algoritmo

Metodo, objeto

Color, coordenadas

Figura 5: Diagrama de contexto

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 31

5.1.2 DIAGRAMA DE PRIMER NIVEL

Explotando el nivel “0. BANCO DE PRUEBAS PARA ALGORITMOS

DE CRIPTOGRAFÍA CON IMÁGENES”, visto en el diagrama de contexto,

obtenemos una visión global de las funciones del sistema.

Se observa que la mayoría de los procesos requieren tener al menos

una imagen en pantalla. Las imágenes se abren desde el proceso “1.Archivo” y

van añadiéndose al almacén “IMÁGENES ABIERTAS” que nos permitirá

trabajar con aquella que se seleccione en cualquier instante de la ejecución. Una

vez se tenga una imagen abierta, se podrá aplicarse sobre ella cualquiera de los

procesos indicados, sin ningún orden predeterminado establecido.

Sin embargo, también existen procesos que no se aplican sobre

imágenes y por tanto, podrán ejecutarse sin antes tener que abrir una imagen. Es

el caso de generar claves, en el cual con introducir la longitud de clave deseada,

será suficiente para su generación.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 32

1. Archivo

2. Edición

8. Tests

4. Criptografía

3. Ver

7. Ventana

5. Colores

6. Utilidades

IMÁGENES

ABIERTAS

Entrada_nueva Entrada_nombre_archivo

Img guardada como imagen/texto

Imagen guardada

Long clave

Propiedades

imagenImagen copiada

Imagen editada

imagen

Imágenes criptar Img

criptadas Img a criptar

Img criptadas

imagen

Vistas imagen

imagen

Txt_imagen

Txt_modificado

Img_modificada

Clave_generada9. Mostrar usuario

Img_ordenadas

imagentest

Imagen BPACI

Nombre_archivo, imagenimagen

Ventana nueva

imagen

Entrada_algoritmo

Nuevo algoritmo

Metodo, objetoCoordenadas x,y

Color

Coordenadas x,y

Figura 6: Diagrama de Flujo Nivel 1

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 33

5.1.3 DIAGRAMA MENÚ ARCHIVO

Los procesos 1.3, 1.4 y 1.5 estarán disponibles una vez hay en pantalla

una imagen abierta.

Los procesos “1.3 Guardar” y “1.4 Guardar como…” permiten

almacenar la imagen seleccionada con el mismo o distinto nombre que el original

y en la ubicación que elija el usuario.

El proceso “1.5 Propiedades” mostrará alguna de las propiedades de la

imagen seleccionada previamente como: ancho de la foto, alto, ubicación, hora,…

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 34

1.1 Nuevo

1.5 Propiedades1.4 Guardar

como..1.3 Guardar

1.2 Abrir

IMÁGENES

ABIERTAS

Entrada nueva

Ventana nueva

Imagen, nombre_archivo

Propiedades imagen

Entrada nombre_archivo

imagen

imagen

Imagen, nombre_a

rchivo

Imagen guardada

Imagen guardada

como imagen

Imagen guardada

como texto

Figura 7: Diagrama de Flujo Archivo

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 35

5.1.3.1 DIAGRAMA ABRIR

El sistema es capaz de abrir una imagen que previamente ha sido

guardad con cualquier formato de imagen (jpg, bmp, tiff,..).

Pero también será posible abrir una imagen que ha sido guardada como

texto. El sistema leerá este archivo de texto, y tras eliminar la cabecilla donde se

detallan propiedades de la imagen, transformará el texto en una imagen, la cual se

mostrará por pantalla.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 36

1.2.1 Determinar extension

Entrada nombre_archivo

1.2.2 Abrir imagen

1.2.2 Leer texto

Archivo_texto

Archivo_imagen

1.2.3 Eliminar cabecilla

1.2.4 Transformar a bytes

1.2.5 Transformar bytes a imagen

Texto archivo

Texto sin cabecilla

Texto_en_bytes

imagen

imagen

imagen

Figura 8: Diagrama de Flujo de Datos de Archivo->Abrir

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 37

5.1.3.2 DIAGRAMA GUARDAR COMO..

Se detalla el proceso inverso al mencionado en el último DFD. Si antes

se explicaba como abrir una imagen a partir de una archivo de texto, ahora se

pretende guardar una imagen abierta en un archivo de texto. Para ello la imagen

será leida por el sistema y se guardará cada uno de los pixeles de la imagen con su

valor correspondiente en un archivo de texto.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 38

1.4.6 Guardar imagen como

texto

1.4.5 Transformar a texto

1.4.3 Calcular datos cabecilla

1.4.4 Transformar imagen en array

de bytes

1.4.2 Guardar imagen como

imagen

1.4.1 Calcular direccion, formato

Direcc_imagen, formato Direcc_texto,

imagen

Direcc_texto, imagen

Imagen en

bytes

cabecilla

Texto_imagen

Imagen guardada como texto

Imagen guardada

como imagen

imagen

Figura 9: Diagrama de Flujo de Datos de Archivo->Guardar como..

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 39

5.1.4. DIAGRAMA MENU EDICION

Posibilidad de cortar y copiar cualquiera de las imágenes abiertas en

BPACI. También existe la posibilidad de pegar imágenes que previamente hayan

sido colocadas en el portapapeles.

Con los procesos “2.4 Voltear horizontalmente”, “2.5 Girar 180º” y

“2.6 Voltear verticalmente” se consigue que la imagen seleccionada entre las

imágenes abiertas realice uno de estos cambios y se muestre en pantalla el

resultado.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 40

2.1 Cortar

2.5 Girar 180º

2.4 Voltear Horizontal_

mente

2.6 Voltear Verticalmente

2.3 Pegar

2.2 Copiar

IMÁGENES

ABIERTAS

Imagen copiada

Imagen a pegar

Imagen cortada

PORTAPAPELES

Imagen cortada

Imagen copiada

Imagen a pegar

Imagen Imagen

Imagen

Img volteada

horizontal_mente

Img volteada

verticalmen_te

Imggirada

Figura 10: Diagrama de Flujo de Datos de Edición

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 41

5.1.4 DIAGRAMA MENÚ VER

Con los dos primeros procesos “3.1 Barra de estado” y “3.2 Barra de

herramientas” podemos cambiar la vista del usuario, quitando o añadiendo tales

barras de la interfaz, e indicando estos hechos con un tic a la izquierda de los

submenús.

El resto de procesos nos permiten ver la imagen a tamaño completo, es

decir, ver toda la imagen en la pantalla en el ordenado o a tamaño real. También

podremos ver la imagen procesada que será aplicándole filtros de colores y

aparece también el proceso “3.6 Zoom”, la posibilidad de acercar o alejar la

imagen seleccionada en pantalla.

El almacén “Imágenes abiertas” pertenece a un nivel superior pero

aparece aquí indicado, para aclaración del lector.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 42

3.3 Procesar

3.2 Imagen real

3.4 Zoom

3.1 Imagen completa

IMÁGENES

ABIERTAS

Imagen completa

Imagen real

Imagenprocesada

Imagen con

zoom

imagen

imagen

imagenimagen

Figura 11: Diagrama de Flujo de Datos de Ver

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 43

5.1.5 DIAGRAMA MENÚ CRIPTOGRAFÍA

El proceso “4.1 Añadir algoritmo” nos permitirá añadir una DLL que

no se haya cargado al inicio del programa. El usuario indicará la DLL a añadir y

ésta se añadirá en la dirección indicada en el archivo .xml para las DLLs.

En el proceso “4.2 Selección algoritmo”, se selección la DLL con la

que se quiere trabajar, se le pasará la imagen abierta u otras imágenes que no lo

estén, y éstas serán tratadas según el algoritmo de criptografía que se haya

seleccionado. Tras esta transformación, la imagen o imágenes resultantes se

mostrarán por pantalla al usuario.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 44

4.1 Añadir Algoritmo

4.2 Aplicar algoritmo

Nuevo algoritmo

IMÁGENES

ABIERTAS

Img criptadas

Imágenes a criptar

Img criptadas

Entrada_algoritmo

imagen

Imágenes criptar

imagen

Metodo, objeto

Figura 12: Diagrama de Flujo de datos de Menú Criptografía

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 45

5.1.6.1 DIAGRAMA APLICAR ALGORITMO

Lo primero necesario para poder acceder a una DLL independiente de

BPACI, es crear el assembly que se hará a partir de la dirección completa donde

se encuentra la DLL que queremos ejecutar. Una vez creado el assembly,

buscaremos los métodos de las clases que buscamos, y una vez detectado el

método, le pasaremos al terminador externo DLLs el objeto donde se debe

invocar, el método que se quiere invocar y la imagen o las imágenes que proceda

en cada caso. Con estos datos, se accederá a la DLL especificada, se tratará la

imagen o imágenes con el algoritmo codificado en su interior y se devolverán una

o varias imágenes, según el caso. Las imágenes devueltas, pasarán pro el proceso

“4.2.7 Mostrar Img criptadas”, que transformará las imágenes devueltas para

mostrarlas en pantalla.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 46

4.2.1 Calcular direcc DLL

imagen

4.2.2 Crear assembly

Direcc_DLL

4.2.6 Actuar con DLL tipo

N a N

4.2.5 Actuar con DLL tipo

1 a N

4.2.3 Recuperar

objetos devueltos

assembly

4.2.4 actuar con DLL tipo

1 a 1

imagen

Metodo, objeto

Imágenes criptar

Metodo, objeto,imagen

Metodo, objeto

Metodo, objeto,imagen

Metodo, objeto,imágenes

a criptar

4.2.7 Mostrar Img criptadas

Img criptadas

Img criptadas

Metodo, objeto

Figura 13: Diagrama de Flujo de Datos Criptografia-> Algoritmo

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 47

5.1.7 DIAGRAMA MENÚ COLORES

Partiendo de una imagen seleccionada de las que están abiertas en el

programa, podremos cambiar el color de uno de sus píxeles de dos maneras: una

de ellas introduciendo las coordinas del píxel a mano y eligiendo el color en una

paleta de colores; la otra forma, pasar antes por el proceso “4.2 Datos píxel” que

modifica el texto de la imagen, añadiendo las coordenadas y los colores RGB de

cada píxel por los que pasa el ratón al moverse. Si partimos de este punto, no hará

falta introducir las coordenadas, ya que el propio sistema será capaz de

reconocerlas, y solo habrá que seleccionar el color de la paleta de colores.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 48

5.1 Modificar color pixel

5.2 Datos de cada pixel

IMÁGENES ABIERTAS

imagen

Imagen modificada

Texto imagen

Texto modificado

Coordena_da X Coordena_

da YColor

Coordenadas X, Y

5.3 Rellenar coordenadas

Figura 14: Diagrama de Flujo de Datos de Menú Colores

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 49

5.1.8 DIAGRAMA MENÚ UTILIDADES

Es una de las pocas funcionalidades de BPACI que no requieren tener

alguna imagen abierta.

Al hacer clic en Generar clave aparecerá una ventana donde el usuario

tendrá que introducir la longitud de clave que desea obtener y el sistema generará

una clave hexadecimal de esa longitud. Sólo se podrá tener una de estas imágenes

abiertas, pero se tiene la posibilidad de calcular varias claves, gracias al botón

RESET que aparecerá en pantalla.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 50

5.1 Generar clave

Entrada longitud

claveClave

generada

Figura 15: Diagrama de Flujo de Datos de Menú Utilidades

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 51

5.1.9 DIAGRAMA MENÚ VENTANA

Todas las ventanas de imágenes abiertas en un instante de la ejecución

pueden ser ordenadas en forma de cascada, horizontal o verticalmente según las

exigencias del usuario.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 52

7.1 Cascada

7.3 Ordenar verticalmente

7.2 Ordenar horizontalmen

te

IMÁGENES ABIERTAS

Img en cascasa

Img en horizontal

Img en vertical

Figura 16: Diagrama de Flujo de Datos de Menú Ventana

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 53

5.1.10 DIAGRAMA MENÚ TESTS

A partir de una imagen seleccionada, existe la posibilidad de realizar

diversos tests que nos permitirán evaluar la calidad de criptografía de una imagen.

Podremos realizar un test de histograma, de correlación vertical, de correlación

horizontal o de correlación diagonal. El proceso 8.5 calcula los cuatro tests al

mismo tiempo y los mostrará los cuatro en una única ventana al usuario.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 54

8.1 Histograma

8.3 Correlación horizontal

8.4 Correlación

diagonal

8.2 Correlación

vertical

IMÁGENES

ABIERTAS

8.5 Todos los tests

8.6 Mostrar test

test

histograma

Correlación vertical Correlación

horizontal

Correlación diagonal

Todos los tests

imagen

imagen

imagen

imagenimagen

Figura 17: Diagrama de Flujo de Datos de Menú Tests

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 55

6. PROGRAMACIÓN

El objetivo de esta etapa es alcanzar la transformación del sistema en

un conjunto de programas que puedan ser ejecutados correctamente, bajo criterios

de calidad. La dificultad estriba en cómo realizar esta transformación de la mejor

manera posible, ya que va a depender de factores como el lenguaje de

programación a utilizar, herramientas y utilidades de software disponible, y

equipo de programación.

El lenguaje utilizado para este proyecto ha sido C# bajo la

plataforma.NET.

La elección de este lenguaje se debe a que es un lenguaje sencillo y

moderno orientado a objetos y con seguridad de tipos.

Visual C#.NET es la herramienta de desarrollo de C# de Microsoft que

incluye un entorno de desarrollo interactivo , diseñadores visuales para generar

aplicaciones para Windows y Web, un compilador y un depurador. Visual

C#.NET forma parte de un conjunto de productos denominado Visual

Studio.NET.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 56

7. PRUEBAS DEL SISTEMA

Cada vez que se va implementando algo, lo ideal es hacer la prueba

unitaria, para comprobar que todo funciona correctamente. Si no fuese así, se debe

corregir en el instante y no dejar que el error se propague, lo cual puede llevar a

consecuencias muy negativas.

Estas pruebas deben hacerse a lo largo de todo el proyecto.

7.1 TIPOS DE PRUEBAS

Algunas de las pruebas que se han llevado a cabo en este prioyecto se

mencionan a continuación.

7.1.1 Pruebas unitarias

Se realizan pruebas de cada funcionalidad, para comprobara su

validez. Se realizan durante la fase de programación y las realiza el programador

que está a cargo de tales funcionalidades.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 57

7.1.2 Pruebas del sistema

Van dirigidas al estudio de rendimientos, volúmenes y

viabilidad del sistema en producción. Se realizan en un entorno de pruebas y

constan de una serie de pruebas.

7.1.3 Pruebas de usabilidad del sistema

Determinan el manejo de la aplicación. Se realizan desde el

punto de vista técnico: normas y estándares.

7.1.4 Pruebas de aceptación del usuario

Las realiza el usuario para validar su aplicación, desde el punto

de vista funcional y operativo. Se realizan en entorno similar a producción.

7.1.5 Pruebas de implantación

Las realiza el personal encargado de la implantación y

garantizan la correcta generación del software, su distribución y explotación.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 58

8. ACCESO A LOS ALGORITMOS DE

CRIPTOGRAFÍA CON IMÁGENES

Como se ha visto en la arquitectura, estos algoritmos se encuentran

compilados en DLLs ubicadas en una dirección especificada en el archivo

config.xml.

En este apartado explicaremos que mecanismos se han utilizado para

poder acceder a tales algoritmos.

El espacio de nombres imprescindible para el acceso es Reflection, que

nos permitirá recuperar información de los metadatos de los ensamblados

cargados. En este proyecto se ha utilizado este mecanismo para recuperar

información acerca de los métodos de las clases implementados en las DLLs.

Para acceder a los metadatos de cualquier ensamblado se utilizan las

clases del espacio de nombres System.Reflection.

Una vez obtenido el objeto que representa a un ensamblado (1) pueden

obtenerse los objetos Type que representan a sus tipos a través de su método

Type[] GetTypes[] (2).

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 59

A partir del objeto Type que representa un tipo puede obtenerse los

objetos MemberInfo[] que representan a sus miembros a través de su método

MemberInfo[] GetMembers[] (3).

Una vez obtenido un objeto MemberInfo, a través de sus métodos

GetMethods[], GetEvents[], GetProperties(), … podemos obtener la información

que deseemos. En nuestro caso, el método utilizado aquí ha sido GetMethods[]

(4), ya que los diferente tipos de DLLs se van a diferenciar por los argumentos

que se pasan y se devuelven a los métodos.

Estas relaciones vienen explicadas en la Figura 4. Los números indican

el orden de ejecución.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 60

Figura 18: Arquitectura detallada

Tras haber seleccionado la DLL con la que se quiere trabajar, estos son

los pasos que se realizan en la lógica de negocio para acceder a la DLL y pasarle

los argumentos que requiere.

1. Con la dirección de la DLL, se crea un objeto ensamblado. Assembly sysAssem;

sysAssem = Assembly.LoadFrom(sDireccAlgoritmo);

REFLECTION

ENSAMBLADO

1..*

1..* 1..*

1..*

MÉTODOS

BPACI TIPOS

MIEMBROS

PROPIEDAD

1

2

3

……

4

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 61

2. Se obtienen los tipos definidos en este ensamblado. Type[] sysTypes; sysTypes = sysAssem.GetTypes();

3. Devuelve todos los miembros públicos del objeto Type actual

como MemberInfo.

4. Obtiene todos los metodos del objeto de la clase utilizado para

obtener esta instancia de MemberInfo.

Para cada método, se busca si devuelve uno de los siguientes tipos:

a) System.Drawing.Bitmap

b) System.Object

c) System.Object[]

Si se da el caso a), la DLL requiere que se le pase una imagen, que

será aquella que está abierta, y devolverá también una imagen.

El caso b) obligará a pasar varias imágenes, y devolverá una sola

imagen.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 62

Por último el caso c), necesitará que se le pasen varias imágenes, y

también se devolverán varias imágenes.

Una vez, detectado el tipo devuelto, el procedimiento desarrollado para

cada caso es similar.

Llegados a este punto, tenemos identificados ya los siguientes datos: el

ensamblado(sysAssem), el objeto Type (objType), el objeto

MemberInfo(objMemberInfo) y el metodo.

Ya podemos interactuar con el algoritmo codificado en la DLL.

5. Creamos una instancia del ensamblado. object oMyObject;

oMyObject =

sysAssem.CreateInstance(objType.ReflectedType.ToString());

6. Convertimos la imagen o imágens a object[]. (object[] img)

7. Se invoca al miembro especificado, que nos devolverá la

imagen o imágenes una vez tratadas con el algoritmo específico de la DLL. object oReturn; // para los casos a) y b)

object[] oReturn; // para el caso c)

oReturn= oMyObject.GetType().InvokeMember(objMemberInfo,

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 63

BindingFlags.InvokeMethod, null ,oMyObject,img);

8. Las imágenes son recibidas como objetos, por tanto, habrá que

convertirlas a bitmap para poder mostrarlas por pantalla.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 64

9. LIBRERÍAS DE ENLACE DINÁMICO

En este proyecto, como ya se ha comentado en repetidas ocasiones, los

algoritmos de criptografía gráfica se añaden en forma de DLLs.

En este apartado se pretende explicar el por qué de la elección de la

vinculación dinámica.

Algunas de las ventajas de los archivos DLL:

1.- Ahorra espacio en disco. Varias aplicaciones pueden compartir una

única copia de un archivo DLL en disco.

2.- Ahorra memoria y reduce el intercambio de páginas. Muchos

procesos pueden utilizar simultáneamente un mismo archivo DLL, compartiendo

una sola copia del mismo en la memoria.

3. Es más fácil actualizar archivos DLL. Cuando cambien las

funciones de un archivo DLL, no será necesario volver a compilar y vincular las

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 65

aplicaciones que las utilizan si no cambian los argumentos de la función y los

valores devueltos.

El motivo de usar este tipo de archivos en el proyecto, es que se

pretende que personas ajenas a esta aplicación puedan utilizarla para fines de

criptografía gráfica, es decir, que la aplicación se adapte a las necesidades de cada

uno, sin necesidad de retocar el código propio de BPACI. Esto es posible ya que

al desarrollar una DLL se tratará como archivo independiente, pudiendo añadir o

eliminar archivos, funciones internas a estas DLLs sin necesidad de volver a

compilar y ejecutar BPACI siempre que no cambien los argumentos de las

funciones y los valores devueltos.

Para ello conviene seguir los pasos de creación de una DLL para

BPACI indicados en el punto siguiente “10. Plantillas para las DLLs”.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 66

10. PLANTILLAS PARA LAS DLLs

La novedad de esta aplicación es poder añadir al programa algoritmos

de criptografía en forma de DLLs, y que el sistema sea capaz de interactuar con

ellas.

Para esto, es necesario seguir estos pasos y utilizar las plantillas que se

detallan a continuación.

Los tres tipos de algoritmos de criptografía con imágenes que el

sistema reconoce son:

Plantilla 1: Recibe 1 imagen como argumento y devuelve una imagen

procesada

Plantilla 2: Recibe varias imágenes como argumento y devuelve una

sola imagen.

Plantilla 3: Recibe varias imágenes como argumento y devuelve

también varias imágenes.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 67

Figura 19: Interacción BPACI con DLLs

Como se puede comprobar a continuación, las tres plantillas tienen

características comunes:

- Los nombres de los métodos y de los argumentos

pueden ser modificados, pero no puede serlo el tipo de valor devuelto,

ni el tipo de los argumentos.

- En las tres plantillas, es necesario incluir una interfaz

donde el usuario pueda introducir la clave con la que desea cifrar o

descifrar la imagen o imágenes. Esta ventana puede variar según el

gusto del usuario y las necesidades de cada algoritmo.

Plantilla 1

Plantilla 2

Plantilla 3

11

N1

NN

BPACI

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 68

En el anexo A, se muestra el código para una ventana común, que es la

que se ha llamado form1 en las plantillas. Este código debe ir incluido en:

En este anexo A se detalla también la programación de las tres

plantillas.

Figura 20: Posible interfaz de los algoritmos

Los ejemplos donde se usan estas plantillas, están reflejados en el

Anexo C-Manual de Usuario en las Figuras 52-59.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 69

11. OTRAS PLANTILLAS

En este apartado se pretende optimizar el uso de lo que se ha

programado para la utilización de los algoritmos de criptografía.

El objetivo del código implementado en la aplicación era que BPACI

fuese capaz de reconocer las DLLs añadidas dinámicamente en el programa y que

pudiese interactuar con ellas, tal y como se detalla en el capítulo 10 de esta

memoria.

Otra utilidad derivada de esta interacción BPACI DLLs, es la

posibilidad de añadir funciones para procesar imágenes en forma de DLLs.

El ejemplo que se muestra en el anexo B consiste en aplicar un filtro

rojo a una imagen abierta en pantalla.

El procedimiento para añadir esta DLL dinámicamente será el mismo

que el utilizado para los algoritmos.

Ver Anexo B.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 70

12. COMPILAR LAS DLLs

Una vez creado y guardado el algoritmo de criptografía tendremos un

archivo .cs. Este archivo hay que convertirlo a DLL para que BPACI lo reconozca

como tal, y pueda trabajar con él.

El modo de conseguir el archivo DLL se explica a continuación.

1.- Se necesitará abrir el símbolo del sistema de Visual Studio.NET

2003. Lo encontraremos siguiendo estos pasos:

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 71

Figura 21: Abrir ventana para compilar DLL

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 72

Pulsando sobre “Símbolo del sistema de Visual Studio.NET 2003”,

nos aparecerá una ventana como la de la Figura 21.

Figura 22: Pantalla para compilar DLL

2.- Una vez en esta pantalla, mediante los comandos necesarios,

debemos indicar la dirección donde se encuentra almacenado nuestro algoritmo.

En este ejemplo, le hemos llamado “MiCifrado.cs”, y se encuentra en

“C:\Documents and Settings\BPACI”.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 73

Figura 23: comandos ventana

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 74

3.- La línea de comando para compilar el archivo “MiCifrado.cs” y

obtener la DLL “MiCifrado.DLL”.

csc /target:library /out:MiCifrado.DLL MiCifrado.cs

Figura 24: línea de comando para compilar una DLL

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 75

4.- En la dirección donde antes teníamos “MiCifrado.cs”, ahora

aparecerá también el archivo “MiCifrado.DLL”

Figura 25: DLL compilada

5.- El último paso necesario para que el programe cargue

“MiCifrado.DLL” al inicio de la ejecución, es colocar el archivo en la dirección

que se indica en el archivo config.xml.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 76

Otra solución, puede ser ejecutar el programa, y en el menú

Criptografia, pulsar “Añadir Algoritmo” o la tecla F5. Se buscará el archivo y se

hará una copia en la dirección config.xml. La próxima vez que se ejecute el

programa, “MiCifrado.DLL” se cargará automáticamente.

Figura 26: Añadir la DLL a BPACI

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 77

13. REQUISITOS HARDWARE

La herramienta utilizada para el desarrollo de este proyecto ha sido

Visual Studio.NET 2003 y la edición empleada la Professional.

Los requisitos mínimos del sistema para ejecutar esta herramienta vienen

determinados en la tabla siguiente.

Visual Studio.NET 2003 (todas las ediciones)

Procesador

Procesador Pentium II a 450 MHz

Se recomienda Pentium III a 600 MHZ

Sistema

operativo

Visual Studio.NET 2003 se pueden instalar en cualquiera de los

siguientes sistemas:

Microsoft Windows® Server 2003

Windows XP Professional

Windows XP Home Edition1

Windows 2000 Professional

Windows 2000 Server

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 78

Las aplicaciones se pueden implementar en los siguientes

sistemas2

Windows Server 2003

Windows XP Professional

Windows XP Home Edition

Windows 2000 (se recomienda Service Pack)

Windows Millenium Edition (Windows Me)

Windows 98

Microsoft Windows NT® 4.0 (se precisa Service Pack 6a)

Windows 95 (utilizando Microsoft Visual C++®.NET)

Memoria

Windows Server 2003: 160 MB de memoria RAM

Windows XP Professional: 160 MB de memoria RAM

Windows XP Home Edition: 96 MB de memoria RAM

Windows 2000 Professional: 96 MB de memoria RAM

Windows 2000 Server: 192 MB de memoria RAM

Disco duro

900 MB de espacio disponible en la unidad del sistema; 3,3 GB de

espacio disponible en la unidad de instalación

1,9 GB de espacio adicional disponible para la documentación de

MSDN Librería opcional

Unidad de

disco

Unidad de CD-ROM o DVD-ROM

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 79

Monitor

Resolución Super VGA (1024 x 768) o superior con 256 colores

Mouse

Microsoft Mouse o compatible

1 Funcionalidad limitada. Visual Studio .NET 2003 no admite la creación de aplicaciones

Web ASP.NET ni servicios Web, XML ASP.NET cuando se utiliza XP Home Edition.

2 Sólo se pueden alojar aplicaciones Web y servicios Web XML ASP.NET en Windows

XP Professional, Windows 2000 y Windows Server 2003.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 80

14. INSTALACIÓN

Se pretende que esta aplicación pueda ejecutarse desde cualquier

ordenador. Para ello se ha creado una instalacion, con el nombre de

SetupBPACI que contiene lo siguiente.

Figura 27: Archivos del instalable

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 81

En la carpeta Debug encontraremos el Setup .exe para instalar BPACI.

Figura 28: Setup.exe de BPACI

Pulsando este elemento se ejecutará el programa de instalación donde

tendremos que indicar la dirección donde queremos que se instale.

Una vez terminada la instalación, los elementos que aparecerán en

nuestro ordenador serán los siguientes:

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 82

Figura 29: Los archivos instalados en el usuario

MyLibrary: Se encuentran las DLLs necesarias para la ejecuín de

BPACI

Plantillas: Aquí se encuentran las plantillas que podremos utilizar

para la creación de nuevos algoritmos de criptografía gráfica.

Estas plantillas están en formato .cs y explicadas en este

documento en el apartado 9.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 83

GestionErrores: Contiene un archivo GestionErrores.log donde se

guardará información de la ejecución actual como la hora de comienzo, las DLLs

que se cargan, asi como algunos errores importantes.

DLLs: En el momento de la instalación está vacía, pero para

comodidad del usuario se recomienda que se copien aquí las DLLs con las que se

quiere trabajar.

Config.xml: Este archivo es el que contiene las direcciones del

archivo de gestion de errores y de la carpeta de las DLLs que queremos que se

ejecuten nada má iniciar la aplicación.

Lo primero que se debe hacer es abrir este archivo

Figura 30: Abrir config.xml

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 84

Al abrir el archivo tenemos

Figura 31: contenido del archivo .xml

Tenemos que escribir las direcciones que nos vayan bien como

usuario.

Así, la primera dirección nos indica la carpeta de las DLLs que se

cargarán al inicio, por tanto, debemos indicar las dirección de la carpeta.

En la segunda dirección, se indicará el archivo de Gestión de errores.

Si seguimos las instrucciones dadas hasta ahora, y dejamos el archivo

GestionErrores.log de la carpeta GestionErrores para este fin, la dirección a

escribir será:

@usuario\BPACI\GestionErrores\GestionErrores.log

BPACI.exe: una vez realizados los cambios en config,xml, ya

podemos ejecutar la aplicación pulsando BPACI.exe

1

2

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 85

15. CONCLUSIONES

Como conclusión al proyecto realizado, me gustaría comentar en este

apartado, las aportaciones realizadas con este proyecto, las dificultades con las que me

he enfrentado y algunas sugerencias de trabajo futuro.

15.1 APORTACIONES

El objetivo de este proyecto era conseguir un entorno integrado de

manipulación de imágenes con la posibilidad de añadir algoritmos de criptografía

en forma de plug-ins.

El resultado de este proyecto es que utilizando las plantillas generadas

y detalladas en el anexo A, cualquier persona sin necesidad de tener grandes

conocimientos de informática (bastará con saber programar el algoritmo), podrá

procesar imágenes digitalmente con los algoritmos que él haya implementado.

Los algoritmos se añadirán al programa como archivos DLLs. El

motivo de usar este tipo de archivos en el proyecto, es que se pretende que

personas ajenas a esta aplicación puedan utilizarla para fines de criptografía

gráfica, es decir, que la aplicación se adapte a las necesidades de cada uno, sin

necesidad de retocar el código propio de BPACI. Esto es posible ya que al

desarrollar una DLL se tratará como archivo independiente, pudiendo añadir o

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 86

eliminar archivos, funciones internas a estas DLLs sin necesidad de volver a

compilar y ejecutar BPACI siempre que se respeten las plantillas diseñadas.

Tal y como indica el nombre del proyecto “Banco de Pruebas Para

Algoritmos de Criptografía Gráfica” esta aplicación es un banco de pruebas donde

se podrán probar distintos algoritmos. Cada usuario puede usar y probar los suyos,

ya que la dirección desde donde se cargan los archivos DLL es variable, y cada

usuario podrá introducir la que en ese momento desee.

Esto permite ampliar el campo de trabajo sobre la criptografía de

imágenes y que mayor número de gente sea capaz de contribuir al estudio de la

seguridad.

Dificultades

Las dificultades mayores con las que nos hemos enfrentado en este

proyecto, ha sido el poder llamar dinámicamente archivos y el poder interactuar

con ellos. Para conseguir esto han sido imprescindibles los espacios de nombres

System.Reflection y System,InteropServices que nos han proporcionado los

métodos necesarios para obtener información sobre objetos en tiempo de

ejecución.

Otra de las complicaciones con las que hemos tenido que tratar, están

relacionadas con el trabajo con imágenes. Ya que es muy diferente a trabajar con

un archivo de texto. Tenemos que tener en cuenta, que una imagen es una matriz

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 87

bidimensional, con columnas y filas, con sus tamaños correspondientes. Un

pequeño descuido en uno de los elementos o tamaños de la matriz, ofrece

resultados incorrectos.

15.2 SUGERENCIAS DE TRABAJO FUTURO

Las futuras mejoras estarían más dedicadas al aspecto gráfico de la

aplicación, es decir, a la implementación de más funcionalidades para BPACI.

Actualmente lo que se ha conseguido es un entorno lo suficientemente integrado

para la manipulación de imágenes que nos permite realizar las funciones más

conocidas e indispensables para la ejecución de un programa de imágenes.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 88

16. PLANIFICACIÓN DEL PROYECTO

En esta fase se pretende diferencias las subtareas ealizadas para llevar

a cabo el proyecto final. También planificar las dependencias entre estas tareas, y

los recursos necesarios para cada etapa. Finalmente aparecerá el grñafico de las

tareas distribuido en el tiempo.

16.1 DEFINICIÓN DE TAREAS

Subtarea 1 (S1)

Fase de diseño: definir los requisitos funcionales, no funcionales,

arquitectura del sistema

Subtarea 2 (S2)

Desarrollar el entorno integrado de manipulación de imágenes de

BPACI.

Subtarea 3 (S3)

Desarrollo de los interfaces con bibliotecas dinámicas de manera que

el entorno pueda cargar distintos algoritmos de criptografía gráfica.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 89

Subtarea 4 (S4)

Adición de utilidades a BPACI.

Subtarea 5 (S5)

Programación de diversos tests estadísticos para evolución de la

seguridad.

Subtarea 6 (S6)

Pruebas de usuarios

Subtarea 7 (S7)

Pruebas del sistema

Subtarea 8 (S8)

Redacción del manual de usuarios

16.2 DEPENDENCIAS ENTRE TAREAS

Hasta que la primera subtarea no finalizó, no se pudó comenzar el resto, ya

que en esta etapa, se definía el alcance del proyecto, y se hacía un diseño de cómo

será la aplicación que se desarrollaría en las siguientes subtareas.

Las pruebas del sistema se han ido realizando a lo largo de todo el desarrollo

del proyecto para ir comprobando el comportamiento correcto de la aplicación.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 90

16.3 RECURSOS

En la subtarea 1, el objetivo era hacerse una idea general del proyecto y de las

tareas que debían llevarse a cabo, cómo realizarlas y cuándo.

A partir de la subtarea 2 hasta el final de la subtarea 7, se comienza a

programar. El proyecto se ha desarrollado en C# en la plataforma .NET.

El software requerido ha sido Visual Studio.NET.

El hardware requerido un ordenador que pudiese soportar el software.

16.4 PLANIFICACIÓN

Figura 32: Planificación del proyecto

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 91

17. PRESUPUESTO DEL PROYECTO

En el presupuesto del proyecto se procede a realizar una valoración

económica de los costes tangibles asociados al desarrollo del proyecto.

Según lo visto en el apartado anterior, lo único necesario para

desarrollar esta aplicación, es comprar la licencia del Microsoft Visual Studio

.NET Professional y un ordenador donde se pueda ejecutar este programa.

El coste final del proyecto se valorará a partir del precio del software y

del coste hora de los programadores, en este caso, un único programador. No se

calculan costes de implantación, ya que la interfaz desarrollada es bastante

intuitiva y bastará con el manual de usuario que se encuentra en el Anexo C.

Las horas calculadas para la elaboración de este proyecto han sido 600

horas. Con un precio de 30€/h, el coste de desarrollo quedaría en 18000€.

El precio de Visual Studio.NET Professional puede variar alrededor de

un precio de 475€.

Coste total: 18000 + 475 = 18475€ / proyecto

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 92

18. BIBLIOGRAFÍA

[WRIG03] Wright, Charles, “Superutilidades para C# ”,

McGrawHill 2003

[BARR01] Barranco de Areba, Jesús, “ Metodología del

Análisis estructurado ”, Publicaciones de la

Universidad Pontificia Comillas, Madrid 2001

[BRAV99] Bravo Montero, Joaquin,

http://programacion.net/html/xml , “ Tutorial

de XML” en castellano 1999

[DEVE05] Developer Center Microsoft Visual C#

http://msdn.microsoft.com/vcsharp/

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 93

ANEXOS

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 94

ANEXO A

PLANTILLAS PARA LAS DLLs

La interfaz que se muestra en la fugura siguiente es la interfaz diseñada para

las plantillas. Se hara referencia a ella como form1.

Figura 33: Posible interfaz de los algoritmos

El código viene implementado a continuación

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 95

Código de la figura 19

#region Código generado por el Diseñador de Windows Forms

/// <summary> /// Método necesario para admitir el Diseñador. No se puede modificar

/// el contenido del método con el editor de código. /// </summary>

private void InitializeComponent() {

form1= new Form();

btCifrar = new System.Windows.Forms.Button(); btDescifrar = new System.Windows.Forms.Button();

textBoxClave = new System.Windows.Forms.TextBox(); labelClave = new System.Windows.Forms.Label();

form1.SuspendLayout(); //

// btCifrar //

btCifrar.Location = new System.Drawing.Point(128, 120);

btCifrar.Name = “btCifrar”; btCifrar.Size = new System.Drawing.Size(112, 32);

btCifrar.TabIndex = 0;

btCifrar.Text = “Cifrar”;

this.btCifrar.Click += new

System.EventHandler(this.btCifrar_Click);

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 96

//

// btDescifrar //

btDescifrar.Location = new System.Drawing.Point(336, 120);

btDescifrar.Name = “btDescifrar”;

btDescifrar.Size = new System.Drawing.Size(112, 32);

btDescifrar.TabIndex = 1;

btDescifrar.Text = “Descifrar”;

btDescifrar.Click += new System.EventHandler(btDescifrar_Click); //

// textBoxClave //

textBoxClave.Location = new System.Drawing.Point(152, 50);

textBoxClave.Name = “textBoxClave”;

textBoxClave.Size = new System.Drawing.Size(416, 20);

textBoxClave.TabIndex = 2;

textBoxClave.Text = “”; //

// labelClave //

labelClave.Location = new System.Drawing.Point(40, 48); labelClave.Name = “labelClave”;

labelClave.Size = new System.Drawing.Size(88, 24);

labelClave.TabIndex = 3;

labelClave.Text = “ Clave”;

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 97

//

// Clave

//

form1.AutoScaleBaseSize = new System.Drawing.Size(5, 13);

form1.ClientSize = new System.Drawing.Size(576, 182);

form1.Controls.Add(labelClave);

form1.Controls.Add(textBoxClave);

form1.Controls.Add(btDescifrar);

form1.Controls.Add(btCifrar);

form1.Name = “Clave”;

form1.Text = “Clave”;

form1.ResumeLayout(false);

}

#endregion

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 98

PLANTILLA 1: Recibe 1 imagen como argumento y devuelve una imagen procesada.

using System;

using System.Drawing;

using System.Windows.Forms;

namespace nombre_namespace

{

/// <summary>

/// Descripción breve de Cifrado.

/// </summary>

public class Plantilla1

{

// Formulario diseñado para introducir la clave

Form form1;

//imagen que se devolvera a BPACI

Bitmap bmpFin;

public Button btCifrar;

public Button btDescifrar;

public TextBox textBoxClave;

public Label labelClave;

string sClave="";

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 99

/// <summary>

/// Constructor

/// </summary>

public Plantilla1()

{

InitializeComponent();

}

// CÓDIGO FIGURA 19

private void btCifrar_Click(object sender, System.EventArgs e)

{

this.sClave= textBoxClave.Text;

if(this.sClave!= "")

{

form1.Dispose();

}

else

{

MessageBox.Show("ESCRIBA LA CLAVE PARA

CIFRAR");

}

}

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 100

public static Bitmap ImagenCifrado(Image imImagen)

{

Plantilla1 plantilla= new Plantilla1();

// Mostrar la ventana diseñada para introducir la clave

plantilla.form1.ShowDialog();

Bitmap bmpInicio= null;

// Almacenar la imagen recibida de BPACI en la variable

// imagen

try

{

bmpInicio = (Bitmap)imImagen;

}

catch(Exception)

{

throw;

}

// Las medidas de la imagen final, en este caso,

// son iguales que las medidas de la imagen inicial

plantilla.bmpFin= new Bitmap(bmpInicio.Width,

bmpInicio.Height);

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 101

// ALGORITMO DE CRIPTOGRAFÍA

// En este ejemplo se recorre cada uno de los píxeles de la

// imagen

// y los píxeles que tengan la coordenada j par y la g impar se

// colorean en negro, el resto en blanco.

// Se ha trabajado a partir de colores.

//

// Puede ser útil el trabajar a partir de números

// Sin modificar mucho este código bastará con utilizar

// el siguiente método

// Color c= Color.FromArgb(int valorRojo,int valorVerde,int

// valorAzul);

//

Color color;

byte rojo;

byte verde;

byte azul;

for(int g=0; g<bmpInicio.Height; g++)

{

for(int j=0; j<bmpInicio.Width; j++)

{

color= bmpInicio.GetPixel(j,g);

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 102

if(j%2==0 && g%2!=0)

{

rojo= Color.Black.R;

verde = Color.Black.G;

azul= Color.Black.B;

}

else

{

rojo= Color.White.R;

verde= Color.White.G;

azul= Color.White.B;

}

// color del pixel (j,g) en la imagen final

plantilla.bmpFin.SetPixel(j,g,

Color.FromArgb(rojo,verde,azul));

}

}

// Imagen que se mostrará por pantalla

return plantilla.bmpFin;

}

}

}

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 103

PLANTILLA 2 Recibe varias imagines com argumento y devulee una sola imagen.

using System;

using System.Drawing;

using System.Windows.Forms;

namespace nombre_namespace

{

/// <summary>

/// Descripción breve de RepartoImagenes.

/// </summary>

public class Plantilla2

{

object y;

Form form1;

public Button btCifrar;

public Button btDescifrar;

public TextBox textBoxClave;

public Label labelClave;

string sClave="";

Bitmap imagen;

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 104

public Plantilla2()

{

InitializeComponent();

}

// CÓDIGO FIGURA 19

private void btCifrar_Click(object sender, System.EventArgs e)

{

this.sClave= textBoxClave.Text;

if(this.sClave!= "")

{

form1.Dispose();

}

else

{

MessageBox.Show("ESCRIBA LA CLAVE PARA

CIFRAR");

}

}

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 105

public object ImagenCifrado(Image[] arrayImg)

{

// Se calcula el número de imágenes con las que hay que

// trabajar

int numImg= arrayImg.Length;

byte azul;

byte rojo;

byte verde;

// Transformar todas las imágenes en Bitmap

Bitmap[] bmArray = new Bitmap[numImg];

for (int i=0; i<numImg; i++)

{

bmArray[i] =(Bitmap)arrayImg[i];

}

Plantilla2 plantilla= new Plantilla2();

// Mostrar la ventana donde introducir la clave

plantilla.form1.ShowDialog();

// Tomar una imagen como referencia

plantilla.imagen= bmArray[0];

Image imagen2= bmArray[0];

Image original= arrayImg[0];

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 106

// Ancho y alto de la imagen tomada como referencia

int Hmenor= bmArray[0].Height;

int Wmenor= bmArray[0].Width;

// Calcular las medidas de la imagen final

for(int j=1; j<numImg; j++)

{

if(Hmenor < bmArray[j].Height)

{

Hmenor= Hmenor;

}

else

{

Hmenor= bmArray[j].Height;

}

if(Wmenor < bmArray[j].Width)

{

Wmenor = Wmenor;

}

else

{

Wmenor= bmArray[j].Width;

}

}

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 107

// Ajustar todas las imágenes a las medidas de la imagen final

Bitmap[] bmArrayRedimensionado= new Bitmap[numImg];

for(int k=0; k<numImg; k++)

{

bmArrayRedimensionado[k]= new Bitmap(bmArray[k],

Wmenor, Hmenor);

}

plantilla.imagen=bmArrayRedimensionado[0];

// ALGORITMO DE CRIPTOGRAFÍA

// En este ejemplo se elige un pixel de cada imagen para

// ir rellenando la imagen final. El resultado es la

// superposición de todas las fotos.

int resto;

for(int g=0; g<Hmenor; g++)

{

for(int j=0; j<Wmenor; j++)

{

resto = j%numImg;

rojo=

bmArrayRedimensionado[resto].GetPixel(j,g).R;

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 108

verde=

bmArrayRedimensionado[resto].GetPixel(j,g).G;

azul=

bmArrayRedimensionado[resto].GetPixel(j,g).B;

// Pintar el pixel (j,g) como el pixel de la imagen

// elegida

plantilla.imagen.SetPixel(j,g,

Color.FromArgb(rojo,verde,azul));

}

}

y= (object)plantilla.imagen;

return y;

}

}

}

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 109

PLANTILLA 3

Recibe varias imagines como argumento y devuelve también varias

imágenes.

using System;

using System.Drawing;

using System.Windows.Forms;

using System.Collections;

using System.ComponentModel;

using System.Drawing.Imaging;

namespace nombre_namespace

{

/// <summary>

/// Descripción breve de RepartoImagenes.

/// </summary>

public class Plantilla3

{

// array que se devolverá a BPACI

object[] objFin;

Form form1;

public Button btCifrar;

public Button btDescifrar;

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 110

public TextBox textBoxClave;

public Label labelClave;

string sClave="";

public Plantilla3()

{

InitializeComponent();

}

// CÓDIGO FIGURA 19

private void btCifrar_Click(object sender, System.EventArgs e)

{

this.sClave= textBoxClave.Text;

if(this.sClave!= "")

{

form1.Dispose();

}

else

{

MessageBox.Show("ESCRIBA LA CLAVE PARA

CIFRAR");

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 111

}

}

public object[] ImagenCifrado(Image[] arrayImg)

{

// array de imágenes

Image[] im;

// Numero de imagenes que llegan

int numImg;

Plantilla3 plantilla= new Plantilla3();

// Mostrar la ventana para introducir la clave

plantilla.form1.ShowDialog();

numImg= arrayImg.Length;

im= new Image[numImg];

for(int j=0; j<numImg; j++)

{

im[j] = arrayImg[j];

}

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 112

// ALGORITMO DE CRIPTOGRAFÍA

// Aquí simplemente se devuelven las imágenes

// tal y como entraron, pero por supuesto, se pueden modificar

// las imágenes ahora almacenadas en el array im

// como se ha explicado en las dos plantillas anteriores

// Transformar las imagenes a bitmap

plantilla.objFin= new object[numImg];

for(int i=0; i<numImg; i++)

{

plantilla.objFin[i]= (object)(im[i]);

}

return plantilla.objFin;

}

}

}

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 113

ANEXO B

OTRAS PLANTILLAS

Puede ser interesante también la opción de añadir funciones en

archivos DLL para procesar imágenes. Esto nos permitiría repartir el peso de la

apliación. El código para esta implementación es más sencillo que el empleado

para las plantillas de algoritmos de criptografía.

En este código, lo que se hace es aplicar a la imagen un filtro rojo.

using System;

using System.Drawing;

namespace Algoritmos

{

/// <summary>

/// Descripción breve de Class1.

/// </summary>

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 114

public class FiltroRojo

{

/// <summary>

/// Punto de entrada principal de la aplicación.

/// </summary>

public static Bitmap Alg1(Image abImagen)

{

// Imagen que se recibe como argumento

Bitmap imagen = (Bitmap)abImagen;

// Medidas de la imagen

int ancho, alto;

// Color del pixel

Color c;

ancho= imagen.Width;

alto= imagen.Height;

Bitmap bmp= new Bitmap(ancho, alto);

for(int y=0; y<imagen.Height; y++)

{

for(int x=0; x<imagen.Width; x++)

{

c= imagen.GetPixel(x,y);

bmp.SetPixel(x,y,Color.FromArgb(c.R,0,0));

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 115

}

}

return bmp;

}

}

}

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 116

ANEXO C

MANUAL DE USUARIO

En este manual se explicarán cada unas de las funciones del Banco de

Pruebas para Algoritmos de Criptografía con Imágenes.

Cuando se ejecuta la aplicación, antes de que aparezca la ventana

principal, el sistema lanza una serie de mensaje como el siguiente, indicando las

DLLs que se están añadiendo automáticamente a nuestra aplicación.

Figura 34: Información de los algoritmos añadidos inicialmente

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 117

Una vez aceptadas todas las DLLs, se abre la ventana principal, con la

siguiente apariencia.

Figura 35: Ventana principal

Observamos que consta de un menú con las opciones de Archivo,

Edición, Ver, Criptografía, Colores, Utilidades, Ventana, Tests y Ayuda

Cada uno de estos menús, tiene a su vez submenús que se irán

explicando a lo largo de este manual.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 118

La aplicación también contiene una barra de herramientas, que nos

permitirán acceder más rápidamente a las acciones de Nuevo, Abrir, Guardar,

Acerca de.., Propiedades, Ampliar Zoom, Disminuir zoom, Actualizar, y también

elegir el nivel de zoom que deseemos.

Empezaremos a explicar cada una de las funcionalidades, siguiendo el

orden del menú.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 119

MENÚ ARCHIVO

Figura 36: Menú Archivo

Nuevo: Aparecerá una nueva ventana sin ninguna imagen.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 120

Figura 37: Ventana nueva

Abrir: Seleccionaremos la imagen que queremos que aparezca, y se

mostrará en una nueva ventana.

Las imágenes pueden estar en cualquiera de los formatos, .jpg, .jpeg,

.gif, .tiff, .bmp, .txte

Al abrir un archivo .txt, este si corresponde a una imagen que se ha

guardado como texto, se mostrará en pantalla en forma de imagen, y no

como texto.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 121

Figura 38: Abrir ventana

En caso de abrir un archivo texto, que no corresponda a una imagen o

un archivo que haya sufrido modificaciones y ya no permita transformarse

en imagen, se mostrará alguno de los avisos mostrados en la Figura 30.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 122

Figura 39: Error al guardar imagen

Guardar: Guardar la imagen en el mismo sitio donde se abrió.

Guardar como: Guardar la imagen abierta en cualquier otro lugar, o en un

formato distinto al que se abrió.

Se podrá guardar la imagen abierta en tipo texto, guardando en este

caso el valor numérico de cada píxel.

Propiedades: Se muestran en una nueva ventana modal que aprecerá en

pantalla las propiedades de la imagen seleccionada en ese instante.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 123

Figura 40: Propiedades

Salir: Para abandonar la aplicación.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 124

MENU EDICION

Figura 41: Menú Edición

Cortar: Cortará la imagen que está en pantalla.

Copiar: Hará una copia de la imagen seleccionada en pantalla.

Pegar: Pegará la imagen que se encuentre en el portapapeles en la ventana

seleccionada de nuestra aplicación.

Voltear Horizontalmente: Volteará la imagen seleccionada en la aplicación

horizontalmente.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 125

Girar 180º: Girará la imagen seleccionad en la aplicación 180ª.

Voltear Verticalmente: Volteará la imagen seleccionada en la aplicación

horizontalmente.

Figura 42: Imagen abierta sin cambios

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 126

Figura 43: Figura 33 volteada horizontalmente

Figura 44: Figura 33 volteada verticalmente

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 127

MENÚ VER

Figura 45: Menú Ver

Barra de estado: Mostrar o no la barra de estado en la ventana principal.

Cuando ésta aparezca en pantalla, se marcará como se muestra en la imagen.

Barra de herramientas: Mostrar o no la barra de herramientas. Cuando ésta

aparezca en pantalla, se marcará como se muestra en la imagen.

Imagen completa: Nos permitirá ver la imagen ajustada al tamaño de la

pantalla.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 128

Imagen real: Se mostrará con sus dimensiones reales, ajustando en cada

caso los scrollbars que nos permitirán desplazarnos por toda la imagen

Procesar: Tendremos la opción de aplicar a la imagen seleccionada en

pantalla un filtro de color azul, rojo y/o verde.

Zoom: Alejar o acercar la imagen indicando el nivel que queramos.

Utilizando el submenú Zoom podremos hacer un zoom máximo de 11.

Figura 46: Menú Ver->Zoom

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 129

Tenemos para hacer zoom, otras opciones que aparecen directamente

en la barra de herramientas.

Figura 47: Ampliar y Disminuir zoom en barra de herramientas

Ampliar zoom: Pulsando este botón la imagen se irá acercando poco a poco.

Disminuir zoom: Pulsando este botón la imagen se irá alejando poco a poco.

Cuando la imagen no pueda ampliarse más, se mostrará un mensaje

como este en pantalla.

Figura 48: Límite del zoom

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 130

Otra opción para aplicar el zoom a la imagen seleccionada en pantalla,

es escribir el nivel de zoom que se quiera aplicar directamente en la caja de

texto y pulsar el botón “Nivel Zoom”.

Figura 49: Nivel zoom en la barra de herramientas

Si este nivel no puede aplicarse directamente por conseguir imágenes

demasiado grandes, entonces se mostrará el siguiente mensaje por pantalla

que nos informará de tal situación.

Figura 50: Error de límite en el nivel de zoom

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 131

MENÚ CRIPTOGRAFÍA

Figura 51: Menú Criptografía

Los submenús que se cargan en el menú Criptografía, se cargan

automáticamente al iniciar el programa. Las DLLs que se añaden son

únicamente aquellas que se encuentran en la dirección especificada en el

archivo config.xml.

Algoritmo nuevo: Si queremos añadir un algoritmo nuevo, damos a

“Algoritmo nuevo” y buscamos la DLL que queremos añadir. La DLL se

carga directamente en el programa y se hace una copia en la misma

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 132

dirección desde donde se han cargado el resto. Así, no será necesario

reiniciar el programa cuando se quiera añadir un algoritmo nuevo, y además

la próxima vez que se cargue, esta última DLL, si no se ha eliminado, se

cargará al principio de la ejecución.

Para trabajar con cualquiera de los algoritmos añadidos, basta con

seleccionarlo. A partir de ahora se realizarán las operaciones implementadas

en el algoritmo.

En los siguientes ejemplos, vamos a distinguir los tres casos para los

cuales se han diseñado las plantillas.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 133

CASO 1: Se pasa una imagen y se recibe esa imagen procesada.

Figura 52: Imagen que se va a procesar

Seleccionamos el algoritmo que queremos utilizar

Figura 53: Selección del algoritmo

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 134

Inmediatamente después, nos aparecerá la interfaz diseñada para la

DLL seleccionada. En este ejemplo, es una ventana sencilla donde se debe

introducir la clave de cifrado que se desee.

Figura 54: Clave para el algoritmo

El resultado de la imagen abierta antes cifrada con la clave indicada, es

el siguiente. El texto que aparece en la imagen procesada es el nombre de la

DLL que se ha utilizado, en este caso “cifrado con BYN.DLL##Zoom1” y el

nivel de zoom.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 135

La comparación de la imagen antes y después del cifrado

Figura 55: Imagen procesada

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 136

CASO 2: Se pasan varias imágenes y se recibe una sola imagen procesada.

El procedimiento comienza igual que en el caso 1.

Pero al seleccionar el algoritmo, el sistema nos informa que tenemos

que seleccionar las imágenes que deseamos procesar. Cada vez que escojamos

una, el sistema nos pregunta si queremos incluir algunas más. Cuando el

usuario responde No, el sistema devuelve entonces la imagen resultante que se

ha procesado a partir de las anteriores.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 137

Figura 56: Pasar varias imágenes a procesar

En este ejemplo, las imágenes que se han pasado han sido 3, que se

muestran en la Figura 57:

Figura 57: Imágenes a procesar

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 138

El resultado es:

Figura 58: Imagen procesada en el caso 2

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 139

CASO 3: Se pasan varias imágenes y se reciben varias imágenes procesadas.

El procedimiento y las ventanas que aparecen al usuario son las

mismas que en el caso 2. La diferencia está en que ahora se reciben varias

imágenes procesadas y no sólo una como en el caso anterior

EL resultado debe ser algo similar a lo mostrado en la Figura 59.

Figura 59: Imágenes procesadas en el caso 3

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 140

En cada texto de la imagen, aparece el nombre del cifrado con que se han

procesado las imágenes y además se indica el número de copia.

En el ejemplo anterior, se han devuelto tres imágenes, y por tanto, los títulos

serán:

- cifrado con de NaN.DLL_Copia1##Zoom:1

- cifrado con de NaN.DLL_Copia2##Zoom:1

- cifrado con de NaN.DLL_Copia2##Zoom:1

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 141

MENÚ COLORES

Figura 60: Menú Colores

Modificar color píxel: Para cambiar el color de un píxel. Aparecerá una

ventana como la siguiente.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 142

Figura 61: Cambiar color píxel

Habrá que rellenar las coordenadas del píxel que se quiere cambiar,

línea y columna. Dando al botón Calcular, se rellenará el texto anterior con

el color actual de ese píxel. Y con el botón Color, aparecerá una paleta de

colores, donde podremos elegir el color al que deseamos cambiar.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 143

Figura 62: Paleta de colores

El píxel cambiará automáticamente de color. Si no ocurriese así, habrá

que darle al botón Actualizar de la barra de herramientas de la ventana

principal, para que se produzca tal cambio. Figura 46.

Figura 63: Actualizar

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 144

Datos píxel: Cuando se active esta opción, se nos informará de la ubicación

(línea y columna) y de los colores ARGB de cada uno de los píxeles por los

que pase el ratón cuando se encuentre sobre la imagen seleccionada.

Figura 64: Información de cada píxel

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 145

Si ahora, se quiere cambiar el color de un píxel, basta con presionar el

botón derecho sobre el píxel que se quiera. Elegimos la única opción que

aparece “Modificar píxel”.

Figura 65: Cambiar color píxel con información del píxel activada

Al presionar esta opción , nos aparecerá la misma ventana que aparecía

con “Modifica píxel”, pero esta vez con los campos de línea y columna

rellenados. (Figura 49)

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 146

Figura 66: Cambiar color píxel después de Figura 48

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 147

MENÚ UTILIDADES

Figura 67: Menú Utilidades

Generar clave: Genera claves hexadecimales, a partir de la longitud

introducida por el usuario.

La ventana utilizada para ello es la siguiente.

Figura 68: Generar clave

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 148

MENÚ VENTANA

Figura 69: Menú ventana

Al abrir imágenes el menú ya presenta la apariencia siguiente.

Figura 70: Menú ventana con imágenes abiertas

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 149

Cascada: Organiza las ventanas de imágenes abiertas en forma de cascada.

Figura 71: Imágenes en cascada

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 150

Ordenar horizontal: Organiza las imágenes abiertas horizontalmente.

Figura 72: Imágenes ordenadas horizontalmente

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 151

Ordenar vertical: Organizar las imágenes abiertas en vertical.

Figura 73: Imágenes ordenadas verticalmente

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 152

MENÚ TESTS

Figura 74: Menú Tests

Esta ventana nos permitirá hacer tests sobre una imagen seleccionada

en pantalla.

Se tiene la posibilidad de realizar un histograma, un test de correlación

vertical, horizontal, o diagonal.

Todos los tests: Se realizarán los cuatro tipo de tests y se mostrarán en una

sola pantalla.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 153

Figura 75: Histograma, Correlación vertical, horizontal y diagonal.

Banco de Pruebas para Algoritmos de Criptografía con Imágenes

Susana López Lumbierres Página 154

MENÚ AYUDA

Figura 76: Menú Ayuda

Figura 77: Acerca de..