3. Idea inicial En la actualidad existen poca variedad de herramientas dedicadas a la enseñanza practica de algoritmos de cifrado de tipo simétrico. En clase de practicas de nuestra asignatura se ven algunos, pero de un modo poco «amigable» dado que para ver estos ejemplos es necesario mediante la consola de comandos ( hoy en día un poco obsoleta) dar una serie de ordenes y modificadores algo engorrosos. Además había que andar modificando archivos y, en definitiva, es un medio obsoleto.
4. Objetivo: requisitos iniciales El proyecto TEAS nace ante la falta de existencia de una aplicación que cubra esa necesidad. Una aplicación con una interfaz actual y multiplataforma, que mediante unas características sencillas, nos permita observar las diferencias de comportamiento de los algoritmos de cifrado simétricos usados en la asignatura SPSI. Luego la aplicación en cuestion debe cumplir: 1.- Interfaz amigable 2.- Uso de los distintos algoritmos simétricos 3.- Distintos paneles donde comparar en un solo vistazo el texto llano y el texto cifrado.
5. Objetivo: requisitos iniciales 4.- Uso de llave en ellos. Un panel que contenga la misma y sea modificable, para observar el efecto que causa su modificación después de cifrar o descifrar. 5.- Debe tener como opción ver distintos tipos de representación de los datos mostrados, ya que no todos los algoritmos se centran en la representación normal «ASCII» sino que también debe ser posible ver su representación binaria o hexadecimal. 6.- Debe medir los tiempos de ejecución para comparar la rapidez de cifrado/descifrado de los algoritmos. 7.- Debe tener opcion de cifrado en distintos modos estudiados: ECB, CBC, CBF, etc. Esta opción queda aplazada, por falta de tiempo.
7. Funcionalidades Puede cifrar y descifrar usando: 1.- Caesar 2.- Vigenere 3.- Rot13 4.- Blowfish 5.- Khufu 6.- Lucifer 7.- Random 8.- Xor 9.- Des 10.- Des con padding 11.- Idea
8.
9. Debilidades y fallos conocidos En este apartado habría que empezar comentando las distintas dificultades que se han encontrado en el desarrollo de la aplicación: 1.- Los algoritmos usados en la aplicación, en su mayoría son los usados en practicas, con el inconveniente de que: a) TODOS han tenido que ser modificados. La manera en la que estaban hechos permitía su compilado y enlazado con un «fuente plantilla» para la creación distintos ejecutables. Aquí se presentaba el problema de que creamos un solo ejecutable, por lo que había muchos problemas de MULTIPLE DEFINICIÓN, ya que utilizaban los mismos nombres de función todos los fuentes
10. Debilidades y fallos conocidos También todos las variables globales y estáticas fueron modificadas. Alg1.c Plantilla.c 1.exe Algn.c n.exe
11. Debilidades y fallos conocidos Mientras que nuestro esquema debía ser distinto: todos los fuentes mas sus cabeceras debían formar parte de un solo ejecutable. Lo que nos lleva al siguiente fallo. b) Prácticamente la totalidad de los fuentes carecían de cabecera. Lo que supone el revisado de todo el fuente y la importación de todas las cabeceras de funciones. c) Algunos algoritmos usaban funciones propias y main propios, que funcionaban en línea de comandos y eran difíciles de trasladar a un entorno con interfaz.
12. Debilidades y fallos conocidos 2.- La gestión de ficheros ha sido especialmente delicada. Los algoritmos usados usan escritura y lectura de ficheros de disco para el cifrado y descifrado del mismo, por lo que daba muchos problemas el uso de caracteres «extraños» ya que un simple carácter de salto de línea como ha dado muchos quebraderos de cabeza. Puede parecer algo sin importancia en algoritmos de cifrado letra a letra como caesar o vigenere, pues solo metería un carácter extraño por otro, pero da verdaderos problemas en algoritmos de flujo como random o rot13 o en algoritmos en bloque como blowfish o khufu. Estas son solo las MÁS IMPORTANTES de las numerosísimas dificultades que fueron surgiendo.
13. Debilidades y fallos conocidos Pasamos a las debilidades y fallos conocidos: 1.- Toda llave debe contener una sola línea de texto. En caso de no ser así, solo se usará la primera línea. Es algo que ya venía impuesto de los fuentes usados de las clases de practicas. 2.- Vigenere usa llave SIN ESPACIOS. 3.- Los algoritmos usan la escritura y lectura de disco para cifrar y descifrar, por lo que lo hacen bastante INEFICIENTE. 4.- El tipo de sistema operativo (que usa hebras) y que influya la escritura en disco, hace que el método usado para medir tiempos no sea del todo fiable, ya que depende del estado de trabajo de la cola de procesos y la posición del cabezal del disco duro.
14. Obtención de Información Dirigirse a: Alberto Rodríguez Frías [email_address] o [email_address] (preferiblemente gmail) Podréis descargar el programa, los fuentes, seguir las modificaciones, etc. en: http://proyectoteas.blogspot.com/