DISEÑO E IMPLEMENTACIÓN DE UN SOFTWARE MULTIMEDIA PARA EL APRENDIZAJE DE LA CRIPTOGRAFÍA HEIDI ALICIA CHAVES JIMÉNEZ UNIVERSIDAD SAN BUENAVENTURA FACULTAD DE INGENIERÍA INGENIERÍA DE SISTEMAS BOGOTÁ D.C. 2008 DISEÑO E IMPLEMENTACIÓN DE UN SOFTWARE MULTIMEDIA PARA EL APRENDIZAJE DE LA CRIPTOGRAFÍA HEIDI ALICIA CHAVES JIMÉNEZ Proyecto de Grado para optar al título de Ingeniera de Sistemas Asesor: Nelson Forero Ingeniero de Sistemas UNIVERSIDAD SAN BUENAVENTURA FACULTAD DE INGENIERÍA INGENIERÍA DE SISTEMAS BOGOTÁ D.C. 2008 Nota de aceptación: ____________________________ ____________________________ ____________________________ ____________________________ ____________________________ ____________________________ ____________________________ Firma Presidente del Jurado ____________________________ Firma del Jurado ____________________________ Firma del Jurado Bogotá D.C., 11 de Noviembre de 2008 AGRADECIMIENTOS Agradezco a Dios todo poderoso por haberme dado paciencia, sabiduría, resistencia e inteligencia para la culminación del proyecto, a mis padres por todo su apoyo moral y económico, a mi mejor amigo colaborador y colega por su apoyo incondicional, a los docentes que contribuyeron en el proceso de mi formación profesional y en especial a mi tutor y director Nelson Forero por haber confiado en mí y haberme apoyado en todo momento. A la Facultad de Ingeniería de Sistemas por haber entendido mi posición laboral y haber recibido con gusto a mi madre quien se encargó de entregar las correcciones finales del trabajo de grado. Todas las personas aquí mencionadas y las que faltaron hicieron posible la finalización de este proyecto, para optar el titulo de Ingeniera de Sistemas. CONTENIDO Pág. AGRADECIMIENTOS iv CONTENIDO v INTRODUCCIÓN 12 1 PLANTEAMIENTO DEL PROBLEMA 14 1.1 ANTECEDENTES 14 1.2 DESCRIPCIÓN Y FORMULACIóN DEL PROBLEMA 16 1.3 JUSTIFICACIóN 17 1.4 OBJETIVOS 17 1.4.1 Objetivo General 17 1.4.2 Objetivos Específicos 17 1.5 ALCANCES Y LIMITACIONES 18 1.5.1 Alcances 18 1.5.2 Limitaciones 18 2 19 MARCO DE REFERENCIA 2.1 MARCO TEÓRICO – CONCEPTUAL 19 2.1.1 Método Criptográfico por Transposición Escítala. 20 2.1.2 Método Criptográfico por Sustitución Monográmica Polybios. 21 2.1.3 Método Criptográfico por Sustitución Monoalfabético Cesar. 23 2.1.4 Método de Sustitución Polialfabética Vigeneré 23 2.1.5 Cifrador de Albertini. 25 v 2.1.6 Criptografía Simétrica. 28 2.1.7 Criptografía Asimétrica. 28 2.2 Metodologías de desarrollo de aplicaciones web. 29 2.2.1 El modelo lineal secuencial 30 2.3 Herramientas de Desarrollo 32 2.3.1 Comparación de bases de datos 32 2.3.2 Comparativo de herramientas para desarrollo WEB 36 2.3.3 Comparación de Servidores web 37 2.4 MARCO LEGAL O NORMATIVO 38 2.4.1 Jurisprudencia Colombiana. 38 2.4.2 Estándares de la Organización Internacional de Estándares (ISO) 39 3 42 METODOLOGÍA 3.1 ENFOQUE DE LA INVESTIGACIÓN 42 3.2 LÍNEA DE INVESTIGACIÓN DE USB/SUB-LÍNEA DE FACULTAD/CAMPO TEMÁTICO DEL PROGRAMA 42 3.2.1 Línea de investigación. 42 3.2.2 Sublínea de investigación. 42 3.2.3 Campo Temático del Programa. 42 3.3 TÉCNICA DE RECOLECCIÓN DE INFORMACIÓN 42 3.4 POBLACIÓN Y MUESTRA 43 3.5 HIPÓTESIS 43 3.6 VARIABLES 43 3.6.1 Variables Independientes. 43 vi 3.6.2 Variables dependientes. 43 4 44 DESARROLLO INGENIERÍL 4.1 ANÁLISIS DE LA APLICACIÓN 44 4.2 DISEÑO DE LA APLICACIÓN 45 4.2.1 Casos de Uso 45 4.2.2 Modelo Conceptual de la Base de Datos. 56 4.2.3 Modelo Lógico de la Base de Datos. 57 4.2.4 Diseño de la base de datos. 58 4.2.5 Diccionario de datos de la base de datos 59 4.2.6 Mapa de Navegación 64 4.3 IMPLEMENTACIÓN O DESARROLLO DE LA APLICACIÓN 65 4.3.1 Creación del Enterprise 66 4.3.2 Creación del Javaclass 66 4.3.3 Pseudocódigo 69 4.4 PRUEBAS: 79 5 PRESENTACIÓN Y ANÁLISIS DE RESULTADOS 82 6 CONCLUSIONES 86 7 RECOMENDACIONES 87 GLOSARIO 88 BIBLIOGRAFÍA 91 vii LISTA DE FIGURAS Pág. Figura 1. Mecanismos de seguridad informática 15 Figura 2. Fallas de seguridad informática. 16 Figura 3. Cifrado mediante sistema de escítala. 21 Figura 4. Cifrador de Albertini 25 Figura 5. Rueda de Jefferson 26 Figura 6. Disco de Wheatstone 26 Figura 7. Maquina Hagelin 27 Figura 8. Modelo Lineal Secuencial 30 Figura 9. 45 Aplicación del caso de uso crear docente Figura 10. Aplicación del caso de uso leer docente 46 Figura 11. Aplicación del caso de uso actualizar docente 47 Figura 12. Aplicación del caso de uso crear estudiante 48 Figura 13. Aplicación del caso de uso leer estudiante 49 Figura 14. Aplicación del caso de uso actualizar estudiante 50 Figura 15. Aplicación del caso de uso validar usuario. 51 Figura 16. Aplicación del caso de uso crear histórico 52 Figura 17. Aplicación del caso de uso leer historial 53 Figura 18. Aplicación del caso de uso leer historial 54 Figura 19. Modelo conceptual de la Base de Datos 56 Figura 20. Modelo lógico de la Base de Datos 57 viii Figura 21. Diseño de la Base de Datos 58 Figura 22. Mapa de navegación 64 ix LISTA DE TABLAS Pág. Tabla 1. Métodos de Cifra Clásicos. 20 Tabla 2. Tabla de cifrar de Polybios en letras 22 Tabla 3. Tabla de cifrar de Polybios en números 22 Tabla 4. Tabla de cifrar del Cesar 23 Tabla 5. Tabla de Vigeneré 24 Tabla 6. Ejemplo de un texto cifrado bajo Vigeneré 24 Tabla 7. Comparativo entre metodologías 29 Tabla 8. Documentación del caso de crear docente 46 Tabla 9. Documentación del caso de leer docente 47 Tabla 10. Documentación del caso de actualizar docente 48 Tabla 11. Documentación del caso de crear estudiante 49 Tabla 12. Documentación del caso de leer estudiante 50 Tabla 13. Documentación del caso de uso de actualizar estudiante 51 Tabla 14. Documentación del caso de uso de validación 52 Tabla 15. Diccionario de datos 59 x LISTA DE ANEXO Anexo 1. Encuesta a estudiantes. 92 Anexo 2. Prueba a estudiantes de la funcionabilidad del software. 94 Anexo 3. Manual del usuario. 96 Anexo 4. Tutorial de desarrollo. 107 xi INTRODUCCIÓN La criptografía proviene del griego Kryptos (oculto) y gráphein, (escritura), por lo tanto la criptografía es la técnica, ciencia o arte de la escritura secreta1 en este proceso al mensaje oculto se le llama cifrado, y leer el mensaje confidencial recibe el nombre de descifrar, este método se ha utilizado a lo largo de la historia para proteger los secretos de la humanidad. David Kahn, en su libro sobre el criptoanálisis, The Codebreakers, identifica el uso de la criptografía en Egipto en 1900 antes de Cristo, en Mesopotamia en 1500 antes de Cristo y en las escrituras sagradas en el año 500 antes de Cristo. El objetivo de la criptografía es proteger la información de las personas que entran en comunicación de una manera segura. Uno de los primeros practicantes de la criptografía fue Julio César, que desarrollo una clave conocida como cifra de César, basada en una rotación fija de las letras del alfabeto. Posteriormente la criptografía se siguió utilizando en Europa, Oriente medio y Norte de África. La criptografía fue básica para conseguir victorias militares durante la primera guerra mundial los británicos descodificaban mensajes para poder interceptar al enemigo y, a comienzos del siglo XX el uso de este sistema cobra gran importancia con la segunda guerra mundial, haciéndose evidente en las maquinas de cifrar como la Enigma, con ellas la informática toma el protagonismo en los sistemas de cifrar y cambia el rumbo de la historia. Históricamente la clasificación de los Sistemas Clásicos se da por Transposición y Sustitución de caracteres con clave o sin clave, estos basan su seguridad en el algoritmo de cifrar, que convierten un texto plano en uno cifrado. Para el desarrollo de la criptografía moderna se hace uso de lo anterior y se le suma propiedades matemáticas como el cálculo del algoritmo, representación binaria, factorización de números cuantiosos, actualmente se utilizan los algoritmos de clave secreta DES, las curvas elípticas y la criptografía cuántica. Debido a la popularidad de la Web y a los medios electrónicos la tecnología de la encriptación llega al consumidor promedio, para garantizar la seguridad de las transacciones financieras, servicio en línea e información al cliente. Teniendo presente esta información, el presente proyecto pretende extraer de la historia algunas formas de encriptar un mensaje, de una manera sencilla a través de fundamentos teóricos y ejercicios prácticos con algunos de los algoritmos de cifrado clásico, con la intención de buscar el acercamiento de los estudiantes de ingeniería de sistemas de los primeros semestres a ahondar en el tema. 1 ÁNGEL, Ángel José de Jesús. Criptografía para principiantes. Mayo 2000, formato PDF (59 páginas). 12 La intención de la tecnología interactiva en la enseñanza sirve como soporte a la interacción humana que es la más importante y enriquecedora que debe tener el docente con sus estudiantes. La calidad de este proceso educativo va a depender el que los estudiantes aprendan a utilizar los medios interactivos para dar un mayor rendimiento en el aréa designada. La formación basada en la web comparte los mismos principios pedagógicos que otro tipo de formación menos tecnificada y por ende el proceso enseñanzaaprendizaje ha de estar orientado y organizado para lograr el objetivo educativo propuesto en este proyecto por el autor. El producto final de este proyecto es la aplicación de un software con intención educativa para prácticas en la ingeniería específica referente al plan de estudios de la Universidad de San Buenaventura, 13 1 1.1 PLANTEAMIENTO DEL PROBLEMA ANTECEDENTES A nivel internacional más específicamente en España, los criptosistemas forman parte de las Tesis Doctorales. En la Facultad de Ingeniería de Sistemas de la Universidad Politécnica de Madrid se desarrollaron los Proyectos de Grado “Criptosistemas Modernos de Clave Privada y Pública (software de aplicación)”, “Estudio e Implementación de Criptosistemas Basados en el Problema de la Mochila”, “Estudio y Seguimiento de los Algoritmos de Funciones Hash: MD5 y SHA-1”, “Implementación de Software Didáctico de Clave Privada”, “Software de Simulación de la Fortaleza de Cifrados”. Todos estos proyectos dan a conocer la fortaleza que tienen los algoritmos para práctica de cifrados, adicional a la teoría, se implementa un software para prácticas de laboratorio correspondientes a la asignatura de Seguridad Informática. En internet aparece un aplicativo que recibe el nombre de cryptool que es un software destinado a facilitar el aprendizaje de la Criptología, que viene siendo desarrollado desde 1998 por Bernhard Esslinger, aunque tras el proyecto están Deutsche Bank, la Universidad de Siegen y TU Darmstadt. Es software libre, pero de momento sólo funciona bajo Windows, aunque ya se trabaja en una nueva versión 2.0 basada en Java y que por lo tanto será multiplataforma. No obstante, existe también Cryptoolinux, un port para Linux, basado en QT4. El software está disponible en inglés, alemán y polaco. Dispone de ayuda interactiva y abundantes presentaciones 3D sobre Criptología clásica y moderna y, teoría de números. En la Escuela Militar de Ingenieros (México) se elaboró una Tesis titulada “Diseño de Un Dispositivo que Proporcione Seguridad Criptográfica a la Red Telefónica Militar“, 2001, esta tesis aporta información básica del algoritmo DES. Es importante destacar que en la Universidad de San Buenaventura se encontró un Trabajo de Grado que recibe el nombre de “Desarrollo de un Algoritmo de Cifrado Simétrico de Resumen”, con el objetivo de volver más seguro algunos algoritmos ya existentes, y en la misma línea un texto escrito por el Docente Héctor Manuel Vega, titulado Lógica y Algoritmos “Programación en Matlab Aplicada a la Ingeniería”, este texto se creó con la intención que el usuario pueda desarrollar cualquier programa de ingeniería con el lenguaje de Matlab incluyendo ayudas para los maestros de la cátedra de programación. 14 Por ello es primordial que los usuarios de la Universidad de San Buenaventura encuentren soporte y herramientas adecuadas que faciliten su tarea profesional y sus proyectos a corto plazo. Actualmente las estadísticas muestran un marcado interés por las herramientas de cifrado de datos y los firewalls de aplicaciones web como mecanismos de seguridad de la información. Las estadísticas que se presentan a continuación fueron generadas por la Asociación Colombiana de Ingenieros de Sistemas. “Estas estadísticas están basadas en una encuesta de manera interactiva a través de una página web, dispuesta por la ACIS”2. Figura 1. Mecanismos de seguridad informática Fuente: CANO, J Jeimy, Encuesta Nacional de Seguridad Informática, ACIS 2 Cano J Jeimy, Encuesta Nacional de Seguridad Informática, ACIS. 15 Figura 2. Fallas de seguridad informática. Fuente: ACIS, Encuesta Nacional de Seguridad Informática 2008 Este proyecto presenta de forma clara y resumida las diferentes formas de encriptar un mensaje por medio de algunos algoritmos clásicos, sin descuidar los conceptos teóricos fundamentales para la gestión del proyecto, también resulta muy adecuado para profesionales informáticos que deseen ampliar y perfeccionar sus conocimientos. 1.2 DESCRIPCIÓN Y FORMULACIÓN DEL PROBLEMA El interés por los criptosistemas se hace cada vez más fuerte en el mundo de la informática destacando la escancia de los “Sistemas de Curvas Elípticas” y la “Criptografía Cuántica” que son las más utilizadas en la seguridad de la Información. Desde el mismo momento que hay conexión a Internet se está expuesta a una serie de amenazas concernientes a la privacidad y la seguridad de los datos personales y al buen funcionamiento de la PC, por ello hay aspectos de la seguridad que se deben revisar y ampliar. Actualmente la Universidad de San Buenaventura no posee un software que muestre el proceso de encriptación de un mensaje como inicio a la seguridad de la 16 información en los estudiantes de los primeros semestres de Ingeniería de Sistemas como soporte a los requerimientos que solicita el mundo laboral. De ahí la importancia de preguntarse: ¿Cómo diseñar e implementar un aplicativo de software que muestre las diferentes formas de encriptar un mensaje? 1.3 JUSTIFICACIÓN La criptografía es un componente básico de una solución de seguridad, por ello es importante destacar la enseñanza de algoritmos clásicos de criptografía, ya que hoy día la gente busca más seguridad y confiabilidad en la sociedad de la información. En los últimos años el software está presente en la mayor parte de los sistemas y resultan vitales para el funcionamiento y progreso de las sociedades modernas. Desde esta panorámica el presente proyecto es creado con la intención de conocer los fundamentos teóricos de la criptografía clásica, y exponer de forma práctica como encriptar un mensaje. 1.4 OBJETIVOS 1.4.1 Objetivo General Diseñar e implementar un aplicativo multimedial que enseñe las diferentes formas de encriptar un mensaje por medio de algunos algoritmos clásicos. 1.4.2 Objetivos Específicos ⋅ ⋅ ⋅ Analizar métodos criptográficos clásicos a través de la investigación empírico analítica para implementar un aplicativo de software multimedia. Diseñar el aplicativo que permita el aprendizaje del proceso de encriptación mediante la utilización de herramientas de programación. Implementar el software como herramienta de soporte en la ingeniería específica referente al plan de estudios de la Universidad. 17 1.5 ALCANCES Y LIMITACIONES 1.5.1 Alcances La implementación del software transmitirá conocimientos sobre algunos métodos clásicos de encriptación (Cesar, Polybios, Escitala y Vigeneré). 1.5.2 Limitaciones Este aplicativo no pretende dar conocimiento sobre las técnicas criptográficas básicas simétricas y asimétricas, ni tampoco sobre curvas elípticas y criptografía cuántica. 18 2 2.1 MARCO DE REFERENCIA MARCO TEÓRICO – CONCEPTUAL La información se ha convertido en el activo más importante del desarrollo de un país, por eso con el impulso de internet y la introducción de dispositivos informáticos cada vez más personales (ordenadores, portátiles, tabletPC y PDA) se crean nuevos escenarios que permitan proteger la información. “Por ejemplo: • • Conexiones cifradas y autenticación segura para la banca on-line PC. • Comunicación cifrada en redes de telefonía móvil • Comunicación cifrada y vinculada vía correo electrónico • Alternativas electrónicas a la firma manuscrita • Protección electrónica de la propiedad (intelectual) (DVD, TV de pago) • • Sistemas de protección antirrobo para coches (inmovilizador) Red inalámbrica.”3 Todas estas tecnologías hacen que los usuarios demanden con mayor frecuencia unas comunicaciones de datos flexibles, cómodas y lo más importante seguras. Es por ello que surgió la idea de transformar un mensaje por una línea de comunicación segura para el receptor, esta ha impactado la mente del ser humano desde inicio de la evolución, hasta nuestros días. Desde el punto de vista histórico en este proyecto se utilizarán algunos métodos de cifra clásicos para enseñar las diferentes maneras de encriptar un mensaje a partir de algoritmos como: “La Escítala, el cifrador de Polybios, el cifrador de César y cifrador de Vigénere” a continuación (ver tabla 1). 3 Fuente: http://www.cryptool.com. Septiembre 26 de 2008 a las 6:34pm 19 Tabla 1. Métodos de Cifra Clásicos. En la tabla 1 se muestra una clasificación de los métodos de cifrar clásicos divididos en transposición y sustitución. Los Cifradores de transposición saltan de forma desordenada y las letras mantienen sus identidades pero pierden su posición. En cambio los cifradores de sustitución las letras del texto en claro se remplazan por otras letras, números o símbolos, perdiendo sus identidades pero manteniendo su posición. Los métodos clásicos son aquellos “que dieron origen al proceso de cifrar la información, utilizando por separado técnicas de sustitución y transposición aplicada a los caracteres del texto en claro”4 las técnicas de criptografía utilizadas están orientadas a sistemas de clave secreta, teniendo guardado el secreto del algoritmo. La operación de cifra se realiza sobre caracteres alfanuméricos. A continuación se explicaran los métodos de cifrado de mayor relevancia para el presente proyecto. 2.1.1 Método Criptográfico por Transposición Escítala. Los primeros métodos criptográficos dan inicio en la guerra entre Atenas y Esparta, aquí surge el cifrado de escítala que se “basa en la alteración del mensaje original mediante la inclusión de símbolos innecesarios que desaparecían al enrollar el mensaje en un rodillo llamado escítala de longitud y grosor 4 AGUIRRE, J Ramiro. Criptografía clásica. Madrid: Universidad Politécnica de Madrid, 2005.p.17. 20 prefijados siendo este la clave del sistema, solamente el receptor que poseía una copia de este podía leer el texto”5 (ver figura 3). Figura 3. Cifrado mediante sistema de escítala. Fuente: KAHN, David, The Code Breakers, p.86 Al desenrollar la cinta, esta se vería: Mensaje M= ASÍ CIFRABAN CON LA ESCITALA Criptograma C= AACSNIICTCOAINLFLARAAEBS. En la figura 3 no existe modificación alguna del mensaje, sino que este se mezcla siendo así un cifrado por transposición o permutación de caracteres, este método consiste en reordenar los caracteres del texto en claro, utilizando columnas, series o filas si se requiere. El mundo le debe su primer texto de instrucción sobre las comunicaciones de seguridad a los griegos. A la ciencia militar, sobre la defensa en la primera y segunda guerra mundial. 2.1.2 Método Criptográfico por Sustitución Monográmica Polybios. Cuyo nombre procede del creador, ideó un sistema de señalización que se ha adoptado como un método criptográfico. Es el cifrador por sustitución más antiguo “consistía en hacer corresponder a cada letra del alfabeto un par de letras que indicaban la fila y la columna en la cual aquella se 5 Fuente: http://www.24flotilla.com/a11/otros/historia%2520criptografia.pdf. 22 de Junio de 2008 a las 4:12pm 21 encontraba, en un recuadro de 5x5=25 caracteres, transmitiéndose el mensaje como un criptograma”6 (tabla 2 y 3). Tabla 2. Tabla de cifrar de Polybios en letras A B C D E A a f l q v B b g m r w C c h n s x D d ij o t y E e k p u z 4 d ij o t y 5 e k p u z Mensaje M= “Criptografía”, Criptograma C= “ACDBBDCEDDCDBBDBAABABDAA”. Tabla 3. Tabla de cifrar de Polybios en números 1 2 3 4 5 1 a f l q v 2 b g m r w 3 c h n s x Mensaje M= “Criptografía” Criptograma C= “134224354434224211212411”. En las tablas 2 y 3, se muestra el cifrado de Polybios en letras y en números, la operación de cifra del Polybios se realiza por monogramas. Polybios sugiere que estos números se transmitan por medio de antorchas, una antorcha en la mano derecha y cinco en la mano izquierda utilizando este método como señal de mensaje a través de larga distancia. Sin embargo, criptógrafos modernos han encontrado varias características de la plaza Polybios, o tablero, como se le llama comúnmente. Polybios se utilizó en los asuntos militares que proceden de los romanos. 6 AGUIRRE, J Ramiro. Op. cit., p.18 22 2.1.3 Método Criptográfico por Sustitución Monoalfabético Cesar. Cincuenta años después aparece en la historia el cifrado de cesar en honor a Julio César “el algoritmo consiste en el desplazamiento de tres espacios hacia la derecha al texto en claro, siendo el alfabeto de cifrado igual al alfabeto del texto en claro es un cifrador por sustitución monográmico monoalfabetico”7, en la tabla 4 se muestra el alfabeto y la transformación que utiliza este cifrador. Tabla 4. Tabla de cifrar del Cesar Mi Ci ABCDEFGHIJKLMNÑOPQRSTUVWXYZ DEFGHIJKLMNÑOPQRSTUVWXYZABC Mensaje M= tu también, Brutus? Criptograma C= wx wdoelhp euxwxv? Un cifrado por sustitución consiste en sustituir cada carácter del texto en claro por otro carácter del criptograma, los cifrados por sustitución se clasifican en: sustitución monográmico polialfabético, sustitución monográmico monoalfabético y sustitución poligrámica. El cifrado de Julio Cesar corresponde al sistema por “sustitución monográmico monoalfabético, se desarrolla mediante un algoritmo que hace corresponder una letra del texto en claro a una única letra del criptograma, (monogramas)”8 utilizando para ello un único alfabeto de cifrado. Con el cifrado de Julio Cesar termina lo que se denominaría historia antigua. La criptografía aparece espontáneamente, con la culminación de una cultura, las múltiples necesidades humanas y los deseos que demanda la intimidad entre dos o más personas en medio de la vida social debe conducir al proceso de encriptar un mensaje donde prosperan los hombres y donde la importancia de escribir surge de la necesidad de estar distanciados y aislados. 2.1.4 Método de Sustitución Polialfabética Vigeneré Es un sistema polialfabético de sustitución múltiple, denominado así en honor al criptólogo francés Blaise de Vigenére (1523-1596)”9, el principal elemento de este sistema es la tabla de Vigenére, una matriz de carácter que se verá a continuación. 7 LAURENCE, Dwight Smith. Cryptography the Science of Secret Writing. Dover Publications, 1943, p 164 AGUIRRE, J Ramiro. Op. cit., p. 45 9 AGUIRRE, J Ramiro. Op. cit., p. 87. 8 23 Tabla 5. Tabla de Vigeneré Para un cifrador polialfabético como Vigeneré la distancia del mensaje a cifrar viene dada por el número total de combinaciones usadas para hacer sustituciones simples, su deber es descomponerse en letras del mismo tamaño de la clave y aplicar sucesivamente la clave empleada a cada uno de estos bloques. A continuación se enuncia un ejemplo que utiliza como clave la palabra “prueba” y como mensaje en claro “cifrado de vigenére”: Tabla 6. Ejemplo de un texto cifrado bajo Vigeneré Texto C claro Clave P Cifrado R I F R A D O D E V I G E N E R E R Z U Z E V B B A D P D R U U Y E Z B J A G P T R E U Y E V B F Para cifrar un texto utilizando la tabla de vigenére, se procede de la siguiente manera: Se comparan dos alfabetos normales de la A-Z y se selecciona cada palabra del texto normal contra cada palabra de la clave, el tercer elemento será la 24 letra de la retícula de intersección entre la fila y la columna sacando como resultado el nuevo texto cifrado. 2.1.5 Cifrador de Albertini. “León Battista Albertini presenta un manuscrito en el que se describe un disco cifrador con el que es posible cifrar textos sin que exista una correspondencia única entre el alfabeto del mensaje y el alfabeto de cifrado”10. Figura 4. Cifrador de Albertini Fuente: KAHN, David, The Code Breakers, p. 97 La innovación de este sistema está en que el alfabeto de sustitución puede ser cambiado durante el proceso de cifrado y su método empleaba varios abecedarios. A continuación se enunciará alguna de las maquinas posteriores al disco de Albertini, las cuales utilizaban su propio sistema de cifrado, destacándose la rueda de Jefferson y el disco de Wheatstone, la Máquina Enigma, Máquina de Hagelin, Máquina M-325. ⋅ 10 Rueda de Jefferson: fue inventado por tomas Jefferson y consiste en una serie de discos que giran libremente alrededor de un mismo eje y lleva impresa las letras del alfabeto escritas en cada disco en diferente orden. Fuente: http://www.24flotilla.com/A11/otros/Historia%2520criptografia.pdf. 23 de Junio 2008 a las 2:15pm 25 Figura 5. Rueda de Jefferson Ibid., ⋅ Disco de Wheatstone: este sistema consiste en hacer girar la aguja en el sentido de las manecillas del reloj, hasta que coincida la letra del texto con la letra del disco. Figura 6. Disco de Wheatstone Ibid., ⋅ Máquina Enigma: inventada por Arthur Scherbius en 1923, consiste en un banco de motores montado sobre un eje, fue utilizada en la Segunda Guerra Mundial por el ejército alemán. ⋅ Máquina Hagelin: inventada por el criptólogo sueco Boris Hagelin entre 1920 y 1930, esta máquina utilizaba el sistema de cifra Beaufort. (ver Figura 7). 26 Figura 7. Maquina Hagelin Ibid., ⋅ Máquina M-325: implantada por Frederick Friedman esta se basa en rotores que realizan una sustitución polialfabético. Después de la segunda guerra mundial aparecen los computadores electrónicos, aquí la criptografía llega a su “edad adulta” entendiéndose por criptografía el arte de escribir con clave secreta o de un modo enigmático11, pero hace años la criptografía dejo de ser un arte para convertirse en una técnica, cuyo objetivo es solucionar el problema de seguridad en las comunicaciones y en los sistemas informáticos por medio de la privacidad, la integridad, la autenticidad y el no rechazo de la información. La privacidad. Hace referencia a que la información que se recibe solo puede ser leída por la persona autorizada, y que además no ha sido alterada. La integridad. Certifica que la información enviada desde afuera no puede ser alterada por intrusos. La autenticidad. Es importante asegurarse de que el mensaje recibido en la computadora es el que se esperaba, o el remitente es quien dice ser. El no rechazo. Hace referencia a negar la autoría sobre el mensaje enviado. 11 LUCENA, López Manuel J. Criptografía y Seguridad en Computadores. España: Creative Commons, Cuarta Edición. 27 La criptografía se divide en dos grandes ramas: la criptografía de clave privada o simétrica a la cual pertenece el algoritmo DES y la criptografía de clave pública o asimétrica que lleva el algoritmo RSA. Para entender un poco más de criptografía se definirá cada una de ellas de manera sencilla para comprensión del usuario. 2.1.6 Criptografía Simétrica. Es la que usa una misma clave para cifrar y para descifrar mensajes12 este tipo de criptografía también recibe el nombre de criptografía de clave privada o criptografía de llave privada. La criptografía simétrica es la más conocida, y se utiliza en las aplicaciones de telefonía móvil, cifrado de documentos en ofimática, cifrado de datos en aplicaciones de bases de datos; se caracteriza por utilizar la misma clave para cifrar y descifrar, por ser rápida y segura, y tiene como falencia que no cumple con el requerimiento de aceptación o no repudio. La criptografía se ocupa del análisis y diseño del algoritmo para cifrar y el criptoanálisis se encarga de romper esos algoritmos. El algoritmo más utilizado en la criptografía simétrica es el DES (Data Encryption Standard) DES utiliza la misma clave para cifrar el mensaje en el origen y para descifrarlo en el receptor de igual manera se basa en un sistema monoalfabetico, este cifrado consiste en la aplicación sucesiva de varias permutaciones y sustituciones. Inicialmente el texto a cifrar se somete a una permutación con bloque de entrada de 64 bits o múltiplo de 64, para ser sometido a la acción de dos funciones principales, una de permutación con entrada de 8 bits y la otra de sustitución con entrada de 5 bits, en un proceso que consta de 16 etapas de cifrado. DES utiliza una clave simétrica de 64 bits de los cuales 56 son utilizados para la encriptación, mientras que los 8 restantes son de paridad, y se usan para la detención de errores en el proceso. DES se pudo romper en enero de 1999 por medio de la fuerza bruta debido a la escasa longitud que emplea en su clave. TDES consiste en aplicar tres veces DES, para este sistema se utiliza una clave de 168 bits, y se puede romper por medio de una fuerza bruta. Teniendo como punto de referencia esta debilidad los matemáticos Diffie y Hellman propusieron un mecanismo de cifrado basado en dos claves: una pública y otra privada definiéndose así la criptografía asimétrica. 2.1.7 Criptografía Asimétrica. Es la que utiliza dos claves diferentes para cada usuario, la clave pública se le puede entregar a cualquier usuario y la privada la 12 Fuente: Wikipedia. http://www.wikipedia.org, 24 de Agosto de 2007 03:00 p.m. 11 de Julio de 2008 a las 5:00pm 28 posee el propietario de esta. La función de la clave privada es descifrar el mensaje enviado por el emisor. Las características de la criptografía asimétrica se basan en que no utiliza la misma clave para cifrar y descifrar documentos, el cifrado asimétrico es lento pero de igual forma seguro, esta criptografía cumple con el requerimiento de aceptación no repudio complementado con los certificados digitales, posee como debilidad que expande el texto cifrado cada vez que se cifra. Actualmente la criptografía asimétrica es muy usada y posee dos principales aplicaciones, la clave privada y la firma digital. Los fundamentos de la criptografía asimétrica pertenecen a la teoría de números. A partir de estos algoritmos surge la criptografía cuántica y las curvas elípticas. 2.2 Metodologías de desarrollo de aplicaciones web. “Es una estrategia de desarrollo que acompaña el proceso, así como un conjunto de métodos técnicos para completar las etapas a través de las cuales el proyecto va creciendo para llegar a convertirse en el producto final”13. Posterior a esto se realizara una comparación entre las metodologías (ver tabla 7) que aportaran a este proyecto los pasos para el desarrollo ingenieril del software y se selecciona la más adecuada para la implementación del mismo. Tabla 7. Comparativo entre metodologías Criterio o El Modelo RAD Modelo de Metodología Procesos Evolutivos Fases ⋅ ⋅ ⋅ ⋅ Análisis Diseño Implementación Prueba ⋅ ⋅ ⋅ ⋅ Modelo Lineal Secuencial Análisis Diseño Implementación Prueba ⋅ ⋅ ⋅ ⋅ Análisis Diseño Implementación Prueba Modelo de Ciclo de Vida Adaptación a alta velocidad del modelo en cascada. Bucle realimentación modelo prototipos. Propiedades ⋅ Proceso lineal secuencial ⋅ División del ⋅ Creación de ⋅ Modelo de versiones aplicaciones incrementales fuertemente del producto. estructuradas y 13 de del de Modelo Cascada. en ⋅ ⋅ ⋅ ⋅ Modelo de construcción de prototipos o método de prototipo sucesivo Análisis Diseño Implementación prueba Bucle de realimentación del modelo lineal secuencial (cascada). ⋅ Detecta deficiencias. ⋅ Establece RUIZ, Alfonso. Metodología de Desarrollo de Aplicaciones Multimedia, Universidad de León, 2004.p.76 29 Tiempo proyecto en módulos independientes, reutilización de componentes. ⋅ Apropiado para aplicaciones multimedia de poca complejidad y bajo nivel de interactividad. ⋅ Es aplicable en los casos en que se conoce el requisito. Más corto posible. requisitos ⋅ Versión definidos. producida del producto final. ⋅ Maneja proyectos de poca ⋅ Complejidad del envergadura producto. ⋅ Recursos de que se dispone para su desarrollo. ⋅ Uno o dos desarrolladores. nuevos requisitos. ⋅ Define medios. ⋅ Versión incompleta del producto final. Poco tiempo, pocos medios Largo plazo Corto plazo De acuerdo a la tabla anterior y al análisis realizado en el levantamiento de la información se considero el modelo lineal secuencial como el más apropiado para el desarrollo del proyecto, es por ello que a continuación se explicara en detalle: 2.2.1 El modelo lineal secuencial: Figura 8. Modelo Lineal Secuencial “El modelo lineal secuencial, también conocido como el modelo en Cascada o Ciclo de Vida Básico, tiene como objetivo minimizar los costos que involucran el sobre exceso de trabajo, desarrollado por medio de las etapas de análisis, diseño, implementación y prueba de forma secuencial. Este modelo es útil en un número limitado de proyectos de nuevos desarrollos sólo en el caso de aplicaciones fuertemente estructuradas, cuyos requisitos y medios estén completamente definidos al inicio del proceso de desarrollo, lo cual es poco común. Por otro lado es un método poco complejo y fácil de llevar a la práctica, 30 pero por lo general es poco recomendable, especialmente en proyectos de cierta envergadura”14. ⋅ Fase de Análisis: Es la fase en la cual se reúnen todos los requisitos que debe cumplir el software para el buen funcionamiento del mismo, teniendo en cuenta las necesidades del usuario. ⋅ Fase de Diseño: Es una etapa dirigida hacia la conceptualización lógica de la base de datos, la arquitectura del software, (casos de uso, el reporte y su aplicación) las representaciones de la interfaz y el detalle procedimental (algoritmo). En forma general se hace un esbozo de lo solicitado y se documenta siendo esto parte del software. ⋅ Fase de Implementación: Abarca la estructura del programa que se crea durante la etapa del diseño siendo esta viable para las necesidades del cliente. ⋅ Fase de Pruebas: Esta etapa se centra en los procesos lógicos internos del software. Asegurando que todas las sentencias se han comprobado, y en la detección de errores. 14 Ibid.,p. 83 31 2.3 Herramientas de Desarrollo 2.3.1 Comparación de bases de datos15 Tabla 9. Comparativo entre Bases de Datos Firebird Licencia Interbase Public License (PL) Ingres r3 Max BD MySQL PostgreSQL Access SQL Oracle Computer Associates Trusted Open Source License MySQL Dual Licensing Model MySQL Dual Licensing Model(Libre) BSD License No libre No libre No libre 32768 Ilimitado LIMITES POR BASE DE DATOS Max. Numero de tablas Máximo tamaño de DB 15 32767 67108863 Ilimitado Ilimitado Ilimitado Limite Teórico Ilimitado 32TB (con paginas de 8KB) Ilimitado Ilimitado Fuentes: ⋅ http://www.devx.com/dbzone/Article/29480/0/page/3 24 Agosto 2007 a las 1:32pm ⋅ http://www.postgresonline.com/journal/index.php?/archives/51-Cross-Compare-of-SQL-Server,-MySQL,-and-PostgreSQL.html 25 Agosto 2007 a las 8:00am ⋅ http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems 25 Agosto 2007 a las 10:27 am ⋅ FALLMANN, Daniel. Comparison of the Enterprise Functionalities of Open Source Database Management Systems. Fabalabs Software GmbH, 20042005, Formato PDF (69 páginas) 32 7TB Máximo tamaño de página Máximo número de filas por tabla Máximo tamaño de fila por tabla Máximo número de campos por tabla Máximo número de índices por tabla Soporte Unicode 65536 bytes Data 518MB8GB Log 16TB 429496729 32 6 (2 ) 429469081 6 Limitado por el tamaño de la DB 64 KB 32KB 8088 bytes 8000 bytes 1024 Con llave 1024 Sin llave 1023 Ilimitado 255 USC-2 De acuerdo a ISO 10646 16384 bytes 256 Unicode_F SS UTF-8 UTF-16 64TB Ilimitado LIMITES POR TABLAS Limitado por el tamaño Ilimitado máximo de la tabla (64TB) 255 1024 1000 1.6TB 2000bytes 8036 bytes 255000 1000 250-1600 dependiendo de tipo de campos 255 8000 4000 64 Ilimitado 32 UCS-2 UTF-8 con un límite de 3 bytes por carácter UTF-8 MÁXIMA COMPLEJIDAD DE QUERIES ≥16KB valor Tamaño máximo de un enunciad o SQL Máximo # de miembros en un IN 64KB Incluso mayor a 64KB por defecto 64KB 1GB, 16 MB por defecto No hay información disponible No se encontró limite 2041 No se encontró limite No se encontró limite 1499 33 Aprox 64000 65536* por tamaño del paquete de red (4KB, por defecto) list Máximo número de unión de tablas Máximo # de operadore s lógicos en una clausula Enlaces de bases de datos Estándar de complace ncia Velocidad Estabilida d Seguridad Procedimi entos almacena dos Soporte de triggers Programa ción de interfaces 255 126 64 61 No se encontró limite 32 Where 255 O Ilimitado Where 1023 And 1023 OR 1617 511 No se encontró límite No se encontró limite 99 No soporta No soporta No soporta No soporta No es invisible al usuario Alto Medio Medio Medio Alto Media/Alta Alta Media/Alta Media/Alta Media/Alta Alta/Muy Alta Media/Alta Media Media Si Alta Si(≥5.0) Media/Alta Si Si Si ODBC, JDBC, C/C++, PHP, Python, Perl, Kylix, Delphi, .NET/Mono , ADO Alta Si Si ODBC, JDBC, C/C++, .NET, Perl, Python, PHP, Cobol, Fortran Si Si(≥5.0 rudimentario) Si ODBC ,JDBC, C/C++, Precompiler (Embedded SQL), Perl, Python, PHP ODBC, JDBC, C/C++, .NET/Mono, ADO.Net, OLEDB, Delphi, Perl, Python, PHP ODBC, JDBC, C/C++, Embeded SQL (in C), Tcl/Tk, Perl, Python, PHP, JSP, JSF 34 256 Media/Alta Media Media Baja No soportados Alta Alta Microsoft TSQL Si No soportados after triggers, instead of triggers ODBC, JDBC ODBC, JDBC Si ODBC, JDBC De acuerdo al comparativo realizado entre Bases de Datos, se obtienen los siguientes resultados: ⋅ ⋅ ⋅ ⋅ Las bases de datos se dividen en dos grandes ramas, las licenciadas y las Libres. Dentro de las libres se encuentran Firebird, Ingres r3, Max BD, MySQL y PostgreSQL. Se comparan los aplicativos de BD por los limites en bases de datos y se obtiene un resultado óptimo entre MySQL y PostgreSQL Se evidencia mayor robustez y consistencia en PostgreSQL para la creación de tablas en cada base de datos. PostgreSQL tiene mayor compatibilidad con nuevas herramientas de desarrollo como Java Server Faces. Basada en el levantamiento de la información se concluye que PostgreSQL es una de las bases de datos más óptima para el desarrollo de este proyecto por las características que presenta. 35 2.3.2 Comparativo de herramientas para desarrollo WEB16 : Tabla 10. Comparativo entre herramientas de desarrollo web ASP JSP PHP Diseñador Desarrollador Rasmus Lerdorf PHP Surgió en: Última versión: Apache ISS Tomcat OneASP(Módulo) Sistema Operativo Servidor Memoria Hay error + ubicación Tipo de errores Windows Linux Microsoft Sun Microsystems 1997 1996 ASP. Net Portabilidad en los servidores Windows No Si Linux No si Windows Si No Linux No No Windows No Si Linux no si Windows no No Linux Si No Requerimientos mínimos Linux y Linux y Windows Windows IIS Tomcat y Glassfish 128 o más 256 o más Calidad de fallas detectadas 55% 95% 46% 93% Integridad de la base de datos 47% 46% 45% 49% 1995 5.2.5 Si si si No No No No No Linux y Windows Apache 128 o más 90% 15% 88% 94% Basada en esta información se concluye que el lenguaje de programación más viable para el desarrollo del software es JSP por ser compatible con Java Server Faces, en la cual su margen de error es del 90% y en estos momentos es una de las herramientas web más novedosas y utilizadas para la aplicación del software. 16 DALADIER Jabba Molinares. Análisis comparativo de las herramientas de programación Web: PHP, ASP y JSP, bajo los sistemas operativos Linux y Windows. Universidad del Norte 2004, p 12 36 2.3.3 Comparación de Servidores web17 Tabla 11. Comparativo entre servidores web JBoss 4.2 Java EE 5 compliance EJB 3.0 capable JSP 2.1 and 2.5 capable JavaServer Faces 1.2 support Custom plug-in support Business-rules engine support Hibernate 3.x support JBoss Seam support Clustering support Eclipse IDE connector support Geronimo 2 Tomcat 6 GlassFish 2 Parcial Si No Si Si Si Si Si Disponible Si Si Si Si Si Disponible Si Si Si No Si Disponible Disponible Disponible Disponible Si Disponible Disponible Si Si Si Disponible Si Si Si Parcial Si Si Si Si Si Se concluye que todos los servidores son viables para la elaboración del proyecto, pero al emplear NetBeans en el desarrollo del software cuya función me permite la unión entre JSP y JSF, GlassFish es el servidor web que cumple el mayor número de características, siendo está la más consistente y novedosa para que el software corra sin ningún inconveniente. 17 Fuente: http://weblogs.java.net/blog/kalali/archive/2007/12/four_open_sourc.html. 7 Septiembre de 2008 37 2.4 MARCO LEGAL O NORMATIVO 2.4.1 Jurisprudencia Colombiana. En la petición de propuestas, el NIST solicitó un algoritmo de cifrado en bloque que fuera utilizable tanto en entornos gubernamentales como en entornos comerciales. Se especificó que tendría que soportar los modos estándar CBC, CFB, OFB, que tendría que ser “significativamente” más eficiente que el triple DES, y que la clave tendría que ser de longitud variable (128, 192 ó 256 bits, como mínimo), y los bloques de cifrado, de longitud 128 bits. El 2 de octubre de 2000 el NIST hizo pública la decisión de seleccionar el criptosistema Rijndael como Advanced Encryption Standard. Los motivos que el NIST dio para seleccionar el AES fueron su combinación de seguridad, rendimiento, eficiencia, facilidad de implementación y flexibilidad. En particular, destacaron su eficiencia, tanto en implementaciones en hardware como en software. El 26 de mayo de 2002 el FIPS anunció la aprobación del Advanced Encryption Standard bajo el código FIPS-197. Este estándar establece el Rijndael como algoritmo simétrico de cifrado que las organizaciones del gobierno de Estados Unidos (y otros) pueden utilizar para proteger información sensible. Certificados X.509 El formato de certificados más ampliamente aceptado en infraestructura de clave pública viene definido por el ISO/IEC JTC1 SC21 y se conoce con la denominación X.509v3. El formato de los certificados X.509 ha evolucionado a partir de tres versiones en diferentes ediciones del estándar. La primera versión apareció en 1988. En 1993 se revisó y se obtuvo la versión 2, a la que se añadieron dos campos opcionales de identificación única. En junio de 1996 apareció la versión 3 del certificado, que incluye la posibilidad de tener campos de ampliación. Los certificados X.509, al igual que las otras estructuras definidas para PKIX, están especificadas en lenguaje ASN.1 (Abstract Syntax Notation One). Licencia Pública General de GNU (o GPL, General Public License), también se aplica para todos los programas y herramientas software. 38 2.4.2 Estándares de la Organización Internacional de Estándares (ISO) ISO/IEC 7813 Tecnología de la información. ISO/IEC 7816 Comando inter industria para lenguaje estructurado de consulta de tarjetas SQL, Aplicación de la información criptográfica. ISO/IEC 9796 Tecnología de Información, Mecanismo basado en algoritmos discretos. ISO/IEC 9797 Tecnología de información ISO/IEC 9979 Tecnología de información - Técnicas seguras - Procedimiento para el registro de algoritmos criptográficos. ISO/IEC 14496: Tecnología de información, Parte 1: Referencia de Software. Parte 2: Estructura de entrega de integración multimedia (DMIF). Parte 7: Referencia de software optimizado. Parte 8: Referencia de Hardware. Parte 9: Descripción de escena y motor de aplicación. SISTEMAS DE GESTIÓN DE LA SEGURIDAD DE LA INFORMACIÓN (SGSI), Norma Técnica Colombiana NTC-BS-7799-2 (ICONTEC) CÓDIGO DE LAS BUENAS PRÁCTICAS PARA LA GESTIÓN DE LA SEGURIDAD DE LA INFORMACIÓN, Norma Técnica Colombia NTC-ISO/IEC 17799 (ICONTEC) Estándar Asimétrico RSA ANSI x3.09 Parte 1 RSA 1024/2048 bits Soporte para capacidades de longitud de Clave FIPS 46 FIPS 180-2 FIPS 186 Triple DES FIPS 197 Estándar de Cifrado de Datos (DES) Algoritmo de Hashing SHA-1, SHA-256 Estándar de Firma Digital (DSA) CBC Simétrico Estándar de Cifrado Avanzado (AES) 39 ISO 27001 ISO 15408 ISO/IEC TR13335 PKCS#1 PKCS#3 PKCS#5 PKCS#7 PKCS#8 PKCS#9 PKCS#10 Metodología, Transferencia del Conocimiento y Servicio Tecnología de la Información — Criterios de Evaluación de Técnicas de Seguridad para TI Tecnología de la Información — Guías para la gestión de la Seguridad TI — Directrices respecto al tipo de controles que deben ser implementados y deben ser especificados por una EC. Estándar de Criptografía RSA: define la criptografía RSA Estándar de Acuerdo de Clave DiffieHellman Estándar de Criptografía basada en Contraseña: define cómo cifrar y descifrar datos usando contraseñas Estándar de Sintaxis de Mensaje Criptográfico: describe una sintaxis general para datos que puedan tener criptografía aplicada en sí mismos, tales como firmas digitales y sobres digitales Estándar de Sintaxis de Información de Clave Privada: describe una sintaxis para información de clave privada donde ésta incluye una clave privada para algún algoritmo de clave pública y un conjunto de atributos Clases de Objetos Seleccionados y Tipos de Atributos: define dos nuevas clases de objetos auxiliares, pkcsEntity y naturalPerson, y también tipos de atributos para usarse con estas clases Estándar de Sintaxis de Solicitud de Certificación: describe la sintaxis para una solicitud de certificación donde ésta consista de un nombre distinguido, una clave pública y, opcionalmente, un conjunto de atributos, firmados colectivamente por la entidad que solicita la certificación 40 PKCS#11 Estándar de Interfaz de Token Criptográfico: especifica una interfaz de programación de aplicación (API), denominada “Cryptoki”, para dispositivos que contengan información criptográfica y realicen funciones criptográficas FIPS 140 Requisitos de Seguridad para Módulos Criptográficos: hardware y firmware EAL4+ Validación FIPS 140-2 Compatibilidad ISO 7816 1-5 Requisitos de Seguridad para Módulos Criptográficos: hardware y firmware Requisitos de Seguridad para Módulos Criptográficos: hardware y firmware Micro controlador y Unidad de Procesamiento Numérico (NPU) suplementario capaces de calcular operaciones criptográficas acordes con PKCS #11 y PKCS #15, de conformidad con los requisitos del ISO/IEC 7816-1 al 7816-5 Referencia Descripción Soporte para algoritmo DES Algoritmo Simétrico Soporte para algoritmo 3DES Algoritmo Simétrico Software CSP Proveedor de Servicios Criptográficos [CSP] en el SO del chip capaz de ejecutar funciones criptográficas 41 3 3.1 METODOLOGÍA ENFOQUE DE LA INVESTIGACIÓN El enfoque de investigación empírico analítico cuyo interés se basa en orientar teóricamente la información de manera que los modelos matemáticos y sus simulaciones sean utilizados en la praxis. 3.2 LÍNEA DE INVESTIGACIÓN DE USB/SUB-LÍNEA DE FACULTAD/CAMPO TEMÁTICO DEL PROGRAMA 3.2.1 Línea de investigación. Tecnologías Actuales y Sociedad. 3.2.2 Sublínea de investigación. Sistema de información y comunicación. 3.2.3 Campo Temático del Programa. Desarrollo de Software (Algoritmos). 3.3 TÉCNICA DE RECOLECCIÓN DE INFORMACIÓN Para el desarrollo del proyecto de grado la recolección de la información se realizó mediante las páginas Web correspondientes al tema, internacionalmente (www.criptored.com), electrónicamente se utilizó información escrita de libros publicados en la web. A nivel nacional se realizará un sondeo universitario en tesis y libros de algoritmos que amplíen el conocimiento con relación a la criptografía, sus algoritmos y su enseñanza. 42 3.4 POBLACIÓN Y MUESTRA Para el desarrollo de este proyecto se tendrá en cuenta los estudiantes de ingeniería de sistemas de los primeros semestres de la Universidad San Buenaventura. 3.5 HIPÓTESIS El Software permitirá conocer la importancia de la Criptografía Clásica, sus diferentes maneras de utilizarla y la elaboración de sus correspondientes algoritmos de parte de los estudiantes de los primeros semestres de Ingeniería de Sistemas de la Universidad de San Buenaventura. 3.6 VARIABLES 3.6.1 Variables Independientes. Selección de algoritmos clásicos para la aplicación de software, lenguaje de programación. 3.6.2 Variables dependientes. Estudiantes de Ingeniería de Sistemas de los primeros semestres de la Universidad San Buenaventura. 43 4 4.1 DESARROLLO INGENIERÍL ANÁLISIS DE LA APLICACIÓN Una computadora es una máquina que no entiende el lenguaje humano. Por eso para que la máquina realice una tarea específica hay que darle una serie de instrucciones y estas deben ser suministradas de forma que la máquina pueda entender, a esto se le llama programación. Para programar se requiere de un lenguaje y un lenguaje de programación, es el conjunto de reglas y elementos gramaticales de los que un programador dispone para que haya comunicación entre el usuario/máquina. El proyecto se inicia con el levantamiento de la información por medio de la encuesta a estudiantes de Ingeniería de Sistemas de segundo semestre de la Universidad de San Buenaventura. De acuerdo al levantamiento de la información se procede a seleccionar los métodos de encriptación clásicos más representativos que el autor considera para el presente proyecto, como son: Escitala, Polybios, Cesar y Vigeneré (ver marco teórico). Para el análisis de los métodos criptográficos se tiene en cuenta la concepción teórica de David Kahn en su libro “The Codebreakers” el método Escitala fue el primer método criptográfico en la historia de la criptografía, es decir con este método se da inicio al cifrado de la información. El cifrado de Cesar fue el más representativo en la historia debido a las batallas que en ese momento surgieron. El cifrado de Vigeneré es la evolución del César y es el último de los algoritmos clásicos, y Polybios es el método criptográfico por sustitución más antiguo conocido en la historia y fue la base de uno de los algoritmos de la criptografía moderna. Posteriormente se procede a seleccionar la metodología para el desarrollo del aplicativo quedando la lineal secuencial, que significa hacer una cosa tras de otras (ver figura 8). Un programa debe tener un lenguaje de programación y para este aplicativo se selecciona Java, este lenguaje permite la interactividad con el usuario final y le da dinamismo a la página web. 44 4.2 DISEÑO DE LA APLICACIÓN Actualmente existe en el mercado aplicativos educativos de criptografía a nivel general (criptografía clásica, moderna, actual) los procesos de estos aplicativos orientan la enseñanza de la criptografía y el criptoanálisis. A partir del análisis se plantea el siguiente diseño presentado en casos de uso, modelo lógico y conceptual de la base de datos para desarrollar el aplicativo. 4.2.1 Casos de Uso Crear docente: Figura 9. Aplicación del caso de uso crear docente Llamadas Data Sent Administrador Website Docente Website BD Docente CriptoClass 45 Data Recieved Docente Docente Data Effects Tabla 8. Documentación del caso de crear docente NOMBRE DEL CASO DE USO Crear Docente ACTORES Administrador PRECONDICIÓN O CONDICIONES No debe existir en la base de datos el docente INÍCIALES: registrado PROPÓSITO TIPO DESCRIPCIÓN Registrar docente Básico El administrador entra a la sección de registro incluida en el aplicativo web. El administrador ingresa todos los datos personales solicitados. El aplicativo web se comunica con la base de datos para almacenar la información. EXCEPCIONES AL CASO DE USO: Ninguna POST-CONDICIÓN O CONDICIONES ⋅ Ingresar a la página de registro DE SALIDA: Leer Docente: Figura 10. Aplicación del caso de uso leer docente Llamadas Data Sent Administrador Website Docente Docente Website Docente Data Recieved Docente Docente 46 Data Effects Tabla 9. Documentación del caso de leer docente NOMBRE DEL CASO DE USO Leer Docente ACTORES Administrador, docente PRECONDICIÓN O CONDICIONES Los usuarios deben estar registrados INÍCIALES: PROPÓSITO TIPO DESCRIPCIÓN EXCEPCIONES AL CASO DE USO: POST-CONDICIÓN O CONDICIONES Llevar un registro de la navegación del docente en el aplicativo web Básico El administrador ingresa al aplicativo, con el fin de mirar cómo se desempeña el docente. El usuario no se encuentra registrado en la base de datos. Ninguna DE SALIDA: Actualizar Docente: Figura 11. Aplicación del caso de uso actualizar docente Data Sent Administrador Actualizar Website Docente Docente Website Docente Website BD CriptoClass Docente Llamadas 47 Data Recieved Docente Docente Docente Data Effects Tabla 10. Documentación del caso de actualizar docente NOMBRE DEL CASO DE USO Actualizar Docente ACTORES Administrador, docente PRECONDICIÓN O CONDICIONES No debe existir en la base de datos el docente INÍCIALES: registrado PROPÓSITO TIPO DESCRIPCIÓN Actualizar los datos del docente Básico El docente entran al aplicativo web. El docente se dirigen a la opción de actualización de datos. El docente actualiza sus datos. El aplicativo se comunica con la bd. La bd actualiza los datos. El administrador ingresa por la opción de registro, donde se encuentra un menú más detallado de la actualización de los datos del docente El administrador actualiza los datos. El aplicativo se comunica con la bd. La bd actualiza los datos. EXCEPCIONES AL CASO DE USO: No se encuentre registrado el docente POST-CONDICIÓN O CONDICIONES ⋅ Ingresar al aplicativo DE SALIDA: Crear Estudiante: Figura 12. Aplicación del caso de uso crear estudiante Data Recieved Administrador Actualizar Website Estudiante Estudiante Estudiante Website Estudiante Estudiante Llamadas Data Sent 48 Data Effects Website BD CriptoClass Estudiante Estudiante Tabla 11. Documentación del caso de crear estudiante NOMBRE DEL CASO DE USO Crear Estudiante ACTORES Administrador PRECONDICIÓN O CONDICIONES No debe existir en la base de datos el INÍCIALES: estudiante registrado PROPÓSITO TIPO DESCRIPCIÓN Registrar estudiante Básico El administrador entra a la sección de registro incluida en el aplicativo web. El administrador ingresa todos los datos personales solicitados. El aplicativo web se comunica con la base de datos para almacenar la información. EXCEPCIONES AL CASO DE USO: Ninguna POST-CONDICIÓN O CONDICIONES ⋅ Ingresar a la página de registro DE SALIDA: Leer Estudiante: Figura 13. Aplicación del caso de uso leer estudiante Llamadas Data Sent Administrador Website Estudiante Estudiante Website Estudiante Data Recieved Estudiante Estudiante 49 Tabla 12. Documentación del caso de leer estudiante NOMBRE DEL CASO DE USO Leer Estudiante ACTORES Administrador, estudiante PRECONDICIÓN O CONDICIONES Los usuarios deben estar registrados INÍCIALES: PROPÓSITO TIPO DESCRIPCIÓN EXCEPCIONES AL CASO DE USO: POST-CONDICIÓN O CONDICIONES Llevar un registro de la navegación del estudiante en el aplicativo web Básico El administrador ingresa al aplicativo, con el fin de mirar cómo se desempeña el estudiante. El usuario no se encuentra registrado en la base de datos. Ninguna DE SALIDA: Actualizar Estudiante: Figura 14. Aplicación del caso de uso actualizar estudiante Llamadas Administrador Website Estudiante Website Website BD CriptoClass Data Sent Estudiante Estudiante Estudiante 50 Data Recieved Estudiante Estudiante Estudiante Tabla 13. Documentación del caso de uso de actualizar estudiante NOMBRE DEL CASO DE USO Actualizar Estudiante ACTORES Administrador, estudiante PRECONDICIÓN O CONDICIONES No debe existir en la base de datos el docente INÍCIALES: registrado PROPÓSITO TIPO DESCRIPCIÓN Actualizar los datos del estudiante Básico El estudiante entran al aplicativo web. El estudiante se dirigen a la opción de actualización de datos. El estudiante actualiza sus datos. El aplicativo se comunica con la bd. La bd actualiza los datos. El administrador ingresa por la opción de registro, donde se encuentra un menú más detallado de la actualización de los datos del estudiante El administrador actualiza los datos. El aplicativo se comunica con la bd. La bd actualiza los datos. EXCEPCIONES AL CASO DE USO: No se encuentre registrado el estudiante POST-CONDICIÓN O CONDICIONES ⋅ Ingresar al aplicativo DE SALIDA: Validar usuario: Figura 15. Aplicación del caso de uso validar usuario. Llamadas: Data Sent Data Recieved EstudianteDocente Estudiante Estudiante Docente Administrador Validar Website Estudiante Estudiante Website Docente Website 51 Data Effects Website BD CriptoClass Estudiante EstudianteDocente Tabla 14. Documentación del caso de uso de validación NOMBRE DEL CASO DE USO Validar usuarios ACTORES Administrador, docente y estudiante PRECONDICIÓN O CONDICIONES Los usuarios deben estar registrados INÍCIALES: PROPÓSITO TIPO DESCRIPCIÓN EXCEPCIONES AL CASO DE USO: POST-CONDICIÓN O CONDICIONES El usuario aprenderá las diferentes formas de encriptar un mensaje. Básico El usuario debe ingresar su código y su contraseña para ser validados. Internamente la página web se comunica con la base de datos. En la base de datos se verifica que el usuario se encuentre registrado. La base de datos confirma la validación de los usuarios y los acepta. El usuario no se encuentra registrado en la base de datos. ⋅ Ingresar a la página principal. DE SALIDA: Crear Histórico: Figura 16. Aplicación del caso de uso crear histórico Data Recieved EstudianteEstudiante Website Estudiante website Web Crear histórico BD Criptoclass Website BD Llamadas: Data Sent 52 Data Effects NOMBRE DEL CASO DE USO ACTORES PRECONDICIÓN O CONDICIONES Crear historial Estudiante El estudiante debe estar registrado INÍCIALES: PROPÓSITO TIPO DESCRIPCIÓN EXCEPCIONES AL CASO DE USO: POST-CONDICIÓN O CONDICIONES DE SALIDA: El estudiante al ser evaluado a través de unas pruebas de conocimiento, internamente se está creando el historial. Básico El estudiante tendrá una serie de preguntas de forma aleatoria. El estudiante analizara el problema. El estudiante seleccionara la respuesta que vea correcta. Luego guarda esa información Internamente esa información se almacena en la base de datos. El usuario no se encuentra registrado en la base de datos. O se encuentra inhabilitado ⋅ Ingresar a la página principal y practicar con cada uno de los métodos criptográficos clásicos. Leer respuestas: Figura 17. Aplicación del caso de uso leer historial Llamadas: Data Data Recieved Effects EstudianteEstudiante BD CriptoClass BD Estudiante CriptoClass Data Sent Estudiante BD CriptoClass BD CriptoClass leer respuesta web site 53 NOMBRE DEL CASO DE USO ACTORES PRECONDICIÓN O CONDICIONES Crear historial Estudiante El estudiante debe estar registrado INÍCIALES: PROPÓSITO TIPO DESCRIPCIÓN EXCEPCIONES AL CASO DE USO: POST-CONDICIÓN O CONDICIONES DE SALIDA: El estudiante al ser evaluado a través de unas pruebas de conocimiento, internamente se está creando el historial. Básico A través de un query la base de datos muestra al estudiante la cantidad de preguntas buenas y malas. El usuario no se encuentra registrado en la base de datos. O se encuentra inhabilitado ⋅ Ingresar a la página principal y practicar con cada uno de los métodos criptográficos clásicos. Leer Historial: Figura 18. Aplicación del caso de uso leer historial Llamadas: Data Sent Data Recieved EstudianteDocente Estudiante website Docente Estudiante Webside leer BD CriptoClass Website Docente Docente website docente 54 Data Effects NOMBRE DEL CASO DE USO ACTORES PRECONDICIÓN O CONDICIONES Leer historial Docente y estudiante Los usuarios deben estar registrados INÍCIALES: PROPÓSITO TIPO DESCRIPCIÓN EXCEPCIONES AL CASO DE USO: POST-CONDICIÓN O CONDICIONES DE SALIDA: El estudiante será evaluado a través de unas pruebas de conocimiento Básico El docente entra al menú principal y selecciona resultados Internamente el software solicita los datos en la base de datos a través de un query La información que el docente verá es la siguiente: nombres y apellidos del estudiante, código del estudiante, última fecha de ingreso, cantidad de respuestas totales, respuestas correctas, respuestas incorrectas y sección en la que el estudiante se quedo. El usuario no se encuentra registrado en la base de datos. O se encuentra inhabilitado ⋅ Ingresar a la página principal y practicar con cada uno de los métodos criptográficos clásicos. 55 4.2.2 Modelo Conceptual de la Base de Datos. Figura 19. Modelo conceptual de la Base de Datos 56 4.2.3 Modelo Lógico de la Base de Datos. Figura 20. Modelo lógico de la Base de Datos 57 4.2.4 Diseño de la base de datos. Figura 21. Diseño de la Base de Datos 58 4.2.5 Diccionario de datos de la base de datos Tabla 15. Diccionario de datos Tabla: Tipo Descripción: Almacena el tipo de usuario Atributo PK FK DF CK NULL Tipo de Dato Id_Tipo X Int Tipo_Usuario Id_Tipo Tipo_Usuario Long. Observación Auto numérico Varchar 50 Descripción del atributo Número de identificación del tipo de usuario seleccionado Nombre al usuario correspondiente ya sea docente o estudiante Tabla: Usuario Descripción: Almacena información respecto al docente o estudiante Atributo PK FK DF CK NULL Tipo de Long. Observación Dato Id_Documento X Int Id_Tipo X Int Tabla Tipo Nombre Varchar 50 Apellido Varchar 50 Dirección Varchar 50 Teléfono Int Email X Varchar 50 Contraseña Varchar 50 Descripción del atributo Id_Documento Número de identificación del docente o estudiante Id_Tipo Número de identificación del tipo de usuario seleccionado Nombre Nombre del estudiante o docente Apellido Apellido del estudiante o docente Dirección Dirección de residencia del estudiante o docente Teléfono Teléfono estudiante o docente Email Correo electrónico del estudiante o docente Contraseña Contraseña del estudiante o docente 59 Tabla: Histórico Descripción: Almacena la selección del usuario según las preguntas y las respuestas Atributo PK FK DF CK NULL Tipo de Long. Observación Dato fecha X timestamp Id_Documento X X Int Tabla usuario Id_Preguntas X Int Tabla X preguntas RespuestasH X Boolean True or false Descripción del atributo fecha La fecha en la que realizó el cuestionario de preguntas Id_Documento El documento de identificación del usuario Id_Preguntas La identificación de la pregunta según RespuestasH Se almacenan todas las preguntas y respuestas y se selecciona cuales fueron las correctas y cuáles fueron las falsas Tabla: Preguntas Descripción: Almacena la pregunta y a que tema pertenece Atributo PK FK DF CK NULL Tipo de Long. Observación Dato Id_preguntas X Int Auto numérico Pregunta Varchar 250 Publicar Boolean true Id_tema X Int Descripción del atributo Id_preguntas El número de identificación de la pregunta Pregunta El planteamiento de la pregunta Publicar Muestra las preguntas según el tema Id_tema El número de identificación del tema al que pertenece Tabla: Respuestas Descripción: Almacena puntaje del estudiante o docente Atributo PK FK DF CK NULL Tipo de Long. Observación Dato Id_respuestas X Int Auto numérico Id_preguntas X X Int Tabla preguntas 60 respuestasR Coor_incorr Id_respuestas Id_preguntas respuestasR Coor_incorr Varchar 250 boolean True or false Descripción del atributo El número de identificación de la respuesta El número de identificación de la pregunta Muestra las respuestas correspondientes Muestra las respuestas correctas o incorrectas Tabla: Tema Descripción: Almacena el tema al que pertenece Atributo PK FK DF CK NULL Tipo de Dato Id_tema X Int tema Id_tema tema Varchar Descripción del atributo Número de identificación del tema Tema al que pertenece Long. Observación Auto numérico 20 Tabla: Docente Descripción: Almacena información respecto al docente Atributo PK FK DF CK NULL Tipo de Long. Observación Dato Id_Documento X Int Nombre Varchar 50 Apellido Varchar 50 Dirección Varchar 50 Teléfono Int Email X Varchar 50 Descripción del atributo Id_Documento Número de identificación del docente Nombre Nombre del docente Apellido Apellido del docente Dirección Dirección de residencia del docente Teléfono Teléfono docente Email Correo electrónico del docente 61 Tabla: Estudiante Descripción: Almacena información respecto al estudiante Atributo PK FK DF CK NULL Tipo de Long. Observación Dato Id_Documento X Int Nombre Varchar 50 Apellido Varchar 50 Dirección Varchar 50 Teléfono Int Email X Varchar 50 Descripción del atributo Id_Documento Número de identificación del estudiante Nombre Nombre del estudiante Apellido Apellido del estudiante Dirección Dirección de residencia del estudiante Teléfono Teléfono estudiante Email Correo electrónico del estudiante Tabla: Descripción: Atributo Id_Items Items Almacena el ítem de usuario PK FK DF CK NULL Tipo de Dato X Int Long. Observación Auto numérico Ruta Nombrecaracter Descripcioncaracter Varchar 250 Varchar 250 Varchar 250 Descripción del atributo Id_Items Número de identificación del ítem de usuario seleccionado Ruta Ruta o path de acceso de las páginas del aplicativo web Nombrecaracter Nombre del carácter al que pertenece (practica o teórica) Descripcioncaracter Descripción de cada página web del aplicativo Tabla: Items_Usuario Descripción: Almacena el ítem de usuario Atributo PK FK DF CK NULL Tipo de Dato Id_Items X Int Id_Documento Fecha_Ingreso Id_Items X Long. Observación Auto numérico Int 50 TimeStamp Descripción del atributo Número de identificación del ítem de usuario seleccionado 62 Id_Documento Fecha_Ingreso Número de identificación del usuario correspondiente ya sea docente o estudiante La fecha en la que ingreso al sistema Docente Control de acceso Administrador Docente Crear X Leer X X Actualizar X X Borrar Condición Crear X Leer X X Actualizar X X Borrar Condición Crear X Leer X X X Actualizar X X X Borrar Condición Estudiante Control de acceso Administrador Estudiante Usuario Control de acceso Administrador Docente Estudiante 63 4.2.6 Mapa de Navegación Figura 22. Mapa de navegación ⋅ ⋅ El administrador se encarga de consultar y registrar docentes y estudiantes. El docente al igual que el estudiante tiene las opciones de ver los dos videos, ver la explicación de los métodos criptográficos clásicos, hacer las ejercicios y actualizar algunos datos como son: dirección, contraseña, teléfono y correo electrónico, pero adicionalmente el docente tiene la opción de ver los resultados de los estudiantes. 64 4.3 IMPLEMENTACIÓN O DESARROLLO DE LA APLICACIÓN Para el desarrollo de la aplicación se tuvo en cuenta el sistema de Bases de Datos seleccionado, este cumple la función de almacenar el proceso que el usuario lleva con la intención de hacer un seguimiento a la enseñanza/aprendizaje. Para el desarrollo se procede a instalar el software NetBeans IDE 6.1, para crear un proyecto Enterprise con el que se inicia el proceso de programación de los algoritmos seleccionados. El Enterprise se divide en EJB que sirve para hacer la conexión a la base de datos con el lenguaje java y el WAR que es donde se crea, compila y ejecuta cada algoritmo programado. A continuación una presentación de la creación del Enterprise donde se pueden crear módulos EJB y aplicaciones web: 65 4.3.1 Creación del Enterprise El WAR es una aplicación estándar de un proyecto IDE que genera un script constructor donde compila y corre el proyecto, para la elaboración de este proyecto en el WAR se despliega la carpeta Source Package y se crea un paquete de java y alterno a él un javaclass. 4.3.2 Creación del Javaclass Este javaclass es una librería de java SE que se ejecuta dentro de un paquete, aquí se está generando código para que encripte y desencripte el texto plano correspondiente a cada algoritmo. En la carpeta Web Pages se crea un nuevo Visual Web JSP Page que a su vez se subdivide en: 66 Design. JSP En Design se diseña la parte visual y se insertan botones, textareas, checkbox, entre otros. JSP es el XML anteriormente. del diseño presentado Java Java es un lenguaje complejo de programación orientado a objetos, independiente de plataforma y su sintaxis se asemeja mucho a C++; necesita una variedad de compiladores y de archivos de soporte para funcionar. Este recibe las órdenes de lo que debe ejecutar cada objeto (ver manual del usuario). Para el desarrollo de la parte visual del trabajo se tuvo en cuenta Corel Draw que es un programa estándar que permite desarrollar cualquier pieza sin limitar la creatividad del diseñador, por ser la herramienta más amable en su mecánica de trabajo. 67 Alterno a este se empleó adobe photoshop por su funcionabilidad y practicidad y por que posee múltiples posibilidades artísticas para utilizar las imágenes, se montó en Macromedia Flash que es una de las herramientas más potentes y usadas para añadir a un sitio web conservando un buen manejo visual. La presentación se exportó en un archivo de formato swf y para hacerlo compatible con el resto de la presentación se montó en una plantilla de HTML, (Hyper Text Markup Language), este es un lenguaje de programación para crear documentos interactivos. El lenguaje HTML está basado en comandos que se insertan en lugares estratégicos. Un comando HTML viene definido por un conjunto de palabras entre signos > y < (ver tutorial de desarrollo). 68 Para este último paso se utilizó Macromedia Dreamweaver que es una de las herramientas de maquetación web, estas ofrecen un mejor desempeño en cuando a calidad y usabilidad del producto final. 4.3.3 Pseudocódigo A continuación se explica el desarrollo del código fuente perteneciente al software CriptoClass: 69 Javaclass: Cripto.java; Llama al paquete útil; Creación de la clase Cripto para encriptar o desencriptar algoritmos según selección; Constantes de tipo string: normal, polyletra, polynum; Variables de tipo string: cesar, comodin, escitala; Identificación del algoritmo: 1. Normal; 2. Cesar; 3. Polybiosnum; 4. Polybiosletra; 5. Escitala; Método ordenarArreglo (arreglo temporal) Si método == 1 entonces normal; Si método == 2 entonces cesar; Si método == 3 entonces polybiosnum; Si método == 4 entonces polybiosletra; Si método == 5 entonces escitala; Entero x= corrimiento; String cesara [] = new String[26]; Para cada j=0 donde j<26 y j++ 70 Llame a cesara[j] = inicializar y tener en cuenta que es un string de 26 caracteres; Para cada j=0 donde j<comodin.length y j++ Y si j+x < comodin.length Cesara[j] = comodin[j + x]; Sino Cesara[j] = comodin[j + x - comodin.length]; Donde cesar = cesara; Retorna a cesara; Método encriptar (tiene un metodoent, un metodosal, y una palabra) Palabra = palabra.toUpperCase (pasar a mayúsculas); Palabra = this.sinEspacios(quitar espacios); Carácter letra[] = palabra.toCharArray(arreglo de palabras); Palabra=""; limpia en memoria para empezar a llenar; Si ((metodoent == 3 || metodoent == 4)) entonces String dupla = ""; limpia en memoria para empezar a llenar; Para cada j = 0; donde j < letra.length; j = j + 2 Dupla = valor del String en(letra[j]) + valor del String(letra[j + 1]); Entero temp = asigna una posición de arreglo (metodoent, dupla); Si temp == 9 entonces Palabra = palabra + "(" + this.letraArray(metodosal, 8) + this.letraArray(metodosal, temp) + ")"; Sino Palabra = palabra + this.letraArray(metodosal, temp); Si (metodoent == 1 || metodoent == 2) { Entero tam = letra.length; Para cada j = 0; donde j < tam; j++ 71 Entero temp=this.posicionArray(metodoent, String.valueOf(letra[j])); Palabra = palabra + this.letraArray(metodosal, temp); Retorne palabra; Método sinEspacios(palabra) String tem[]; Tem= palabra.split(" "); /*split: convierte todos los caracteres String en minúscula usando las reglas de Locale, basado en la versión estándar Unicode que esta especificada por el {@link java.lang.Character Character}*/ Palabra=""; limpia en memoria para empezar a llenar; Para cada j = 0; donde j<tem.length; j++ haga Palabra=palabra+tem[j]; String temp[]; Temp = palabra.split("\u000B"); /*Estándar Unicode*/ Palabra=""; limpia en memoria para empezar a llenar; Para cada t j=0; donde j<temp.length; j++ Palabra=palabra+temp[j]; Retorne palabra; 72 Método encriptarCesar(metodoent, corrimiento, palabra) this.ordenarArreglo(corrimiento); Palabra = palabra.toUpperCase (pasar a mayúsculas); Palabra = this.sinEspacios(quitar espacios); Carácter letra[] = palabra.toCharArray(arreglo de palabras); Palabra=""; limpia en memoria para empezar a llenar; Entero tam = letra.length; /*concatenación*/ Si(metodoent == 1 || metodoent == 5) Para cada j = 0; donde j < tam; j++ Entero temp = this.posicionArray(this.NORMAL, String.valueOf(letra[j])); /*asigna al arreglo la normal*/ Palabra = palabra + this.letraArray(this.CESAR, temp);/*el otro arreglo lo convierte en cesar*/ Si (metodoent == 3 || metodoent == 4) Para cada j = 0; donde j<tam ; j= j+2 String dupla = string.valorde (letra[j])+string.valorde(letra[j+1]); Entero temp = this.posicionArray(metodoent, dupla); Palabra = palabra + this.letraArray(this.CESAR, temp); Retorne palabra; 73 Método desencriptarCesar(metodosal, corrimiento, palabra) this.ordenarArreglo(corrimiento); Palabra = palabra.toUpperCase (pasar a mayúsculas); Palabra = this.sinEspacios(quitar espacios); Carácter letra[] = palabra.toCharArray(arreglo de palabras); Palabra=""; limpia en memoria para empezar a llenar; Entero tam = letra.length; /*concatenación*/ Para cada j = 0; donde j < tam; j++ Entero temp = this.posicionArray(this.CESAR, String.valueOf(letra[j])); Palabra = palabra + this.letraArray(metodosal, temp); Retorno palabra; 74 Método encriptarEscitala(cítalas, palabra) Palabra = palabra.toUpperCase (pasar a mayúsculas); Carácter letra[] = palabra.toCharArray(arreglo de palabras); String palabras[] = new String[cítalas+1]; Palabra=""; limpia en memoria para empezar a llenar; Entero res = letra.length % cítalas;/*coge tamaño del arreglo y saca residuo*/ Entero arraytam = letra.length / cítalas; Si(res != 0) entonces Arraytam = arraytam + 1; Entero x = 0; /*contador*/ String arrays[][] = new String[cítalas][arraytam]; Para cadaj = 0; donde j < letra.length; j = j + cítalas Para cada k = 0; donde k < cítalas; k++ Si (j + k < letra.length) Arrays[k][x] = String.valorde (letra[j + k]); Sino Arrays[k][x] = ""; x++; para cada j=0; donde j<cítalas; j++ palabras[j]=""; /*para no null. inicializa el String como vacio*/ para cada j = 0; donde j < cítalas; j++ para cada k = 0; donde k<arraytam; k++ palabras[j] = palabras[j]+arrays[j][k]; //imprime el arreglo palabra=""; limpia en memoria para empezar a llenar; para cada k = 0; donde k < cítalas; k++ para cada i = 0; donde i < arraytam; i++ palabra = palabra + arrays[k][i]; palabras[cítalas]=palabra; retorna palabras; 75 Método desencriptarEscitala(cítalas, palabra) palabra = palabra.toUpperCase (pasar a mayúsculas); carácter letra[] = palabra.toCharArray(arreglo de palabras); String palabras[] = new String[cítalas+1]; palabra=""; limpia en memoria para empezar a llenar; entero res = letra.length % cítalas;/*coge tamaño del arreglo y saca residuo*/ Entero arraytam = letra.length / cítalas; si(res != 0) entonces arraytam = arraytam + 1; entero arraytam = arraysize; String arrays[][] = new String[cítalas][arraysize]; Para cada j = 0; donde j <= cítalas; j++ palabra [j]=""; limpia en memoria para empezar a llenar; para cada j = 0; donde j < cítalas; j++ para cada k = 0; donde k < arraysize; k++ arrays[j][k] = ""; limpia en memoria para empezar a llenar; Entero i = 0; /* Contador */ para cada j = 0; donde j < letra.length; j = j + arraysize si (i >= res y res < cítalas - 1 y arraysize == arraytam y (res > 0)) 76 arraysize = arraysize - 1; para cada k = 0; donde k < arraysize; k++ si (j + k < letra.length) arrays[i][k] = String.valueOf(letra[j + k]); sino arrays[i][k] = ""; limpia en memoria para empezar a llenar; i++; para cada j = 0; donde j < cítalas; j++ para cada k = 0; donde k < arraytam; k++ palabras[j] = palabras[j] + arrays[j][k]; palabra = ""; limpia en memoria para empezar a llenar; para cada j = 0; donde j < arraytam; j++ para cada k = 0; donde k < cítalas; k++ palabra = palabra + arrays[k][j]; palabras[cítalas] = palabra; retorna palabras; Método encriptarVigenereCompleto(palabra, clave) String palabras[]; String finali = ""; limpia en memoria para empezar a llenar; palabras = this.conEspacios(palabra); Entero i = palabras.length; String palabraanidada = ""; limpia en memoria para empezar a llenar; Integer tam[] = new Integer[i]; Para cada j = 0; donde j < i; j++ Integer x = palabras[j].length(); tam[j] = x; palabraanidada = palabraanidada + palabras[j]; String palabra2 = this.encriptarVigenere(clave, palabraanidada); 77 Integer var1 = 0, var2 = 0; Para cada j = 0; donde j < i; j++ String word = ""; limpia en memoria para empezar a llenar; var2 = var2 + tam[j]; word = palabra2.substring(var1, var2); var1 = var1 + tam[j]; palabras[j] = word; finali = this.unirPalabra(palabras); retorna finali; Método desencriptarVigenereCompleto(palabra, clave) String palabras[]; String finali = ""; limpia en memoria para empezar a llenar; palabras = this.conEspacios(palabra); Entero i = palabras.length; String palabraanidada = ""; limpia en memoria para empezar a llenar; Integer tam[] = new Integer[i]; Para cada j = 0; donde j < i; j++ Integer x = palabras[j].length(); tam[j] = x; palabraanidada = palabraanidada + palabras[j]; String palabra2 = this.desencriptarVigenerex(palabraanidada,clave); Integer var1 = 0, var2 = 0; Para cada j = 0; donde j < i; j++ String word = ""; limpia en memoria para empezar a llenar; var2 = var2 + tam[j]; word = palabra2.substring(var1, var2); var1 = var1 + tam[j]; 78 palabras[j] = word; finali = this.unirPalabra(palabras); retorne finali; 4.4 PRUEBAS: Entre los diferentes procesos encaminados a la mejora de la calidad en el desarrollo del software se realizaron pruebas de caja negra que se basa en la especificación funcional del software, mediante el uso de dos herramientas llamadas Threat Analysis and Modeling y W3AF. Con la herramienta Threat Analysis and Modeling18, se identificaron los siguientes riesgos, posibles ataques y contramedidas del aplicativo: Riesgos: ⋅ ⋅ ⋅ Confidencialidad: accesos no autorizados a usuarios sin permisos de administrador. Integridad: ejecución ilegal de la aplicación por terceros. Disponibilidad: ejecución no efectiva de la aplicación del administrador. 18 Aplicación de Modelamiento de riesgos desarrollada por Microsoft disponible en: http://msdn2.microsoft.com/es-ar/security/aa570412.aspx Visitada 21 de Febrero de 2008 1:30 pm 79 Ataques: ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ Inyección de la base de datos: nivel de validación de las entradas a la base de datos de una aplicación. Ataque de fuerza bruta contra password: procesos automáticos de prueba y error para usuarios no validos. Ataque por medio de un hijacking: utilización de la fuerza bruta atacando códigos y contraseñas hasta encontrar la correcta. Troyano: virus que puede destruir la información. Denegación de servicios: el usuario principal es el que fortalece la seguridad del sistema. Ataque de criptoanálisis: buscas el reconocimiento de la información cifrada para sacar un nuevo modo de texto. Forzar el browser: bloqueo del software por mal manejo. Robo de sesiones: es el ataque al servidor. Basado en lo anterior se establecen y prueban las siguientes contramedidas, que arroja el mismo software previniendo a futuro posibles errores cuando se quiera continuar con el desarrollo del mismo. Contramedidas: ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ Forzar la complejidad de la clave. Utilizar mayúsculas y minúsculas combinado con números. Usar claves largas. Usar claves mayores a diez caracteres. Usar un buen cifrado para las claves. Agregar un algoritmo de cifrado más seguro que el base64. Autenticar al cliente y al servidor. Asegurar el almacenamiento de las claves. Para poder entrar a la base de datos, primero hay que validarse a través de un usuario y una contraseña. Forzar requerimiento limite del tamaño. Además de la prueba que conciernen a toda la plataforma y la configuración, la aplicación está diseñada con especial atención a la seguridad, aquí se probó la validez de datos en el servidor y la protección ante vulnerabilidades como “la inyección de código SQL”, mediante la herramienta W3AF (Web Application Attack and Audit Framework) que mide el marco del ataque y la intervención del uso del web, arrojando los siguientes resultados: 80 ⋅ ⋅ ⋅ ⋅ Un porcentaje mínimo de vulnerabilidad en las calves cifradas de cada usuario. La funcionabilidad del software en cuanto a ataques se encuentra en un 90% de confiabilidad. Posee un buen uso de la web. La navegabilidad y facilidad de uso de la web está acorde con el perfil del usuario. 81 5 PRESENTACIÓN Y ANÁLISIS DE RESULTADOS Por medio de un cuestionario a estudiantes se evalúa la funcionabilidad del software CriptoClass teniendo en cuenta los siguientes ítems: Amigabilidad: Aquí se evalúa la capacidad de interacción que tiene el usuario con el sistema. Se evalúo por medio de las preguntas ¿la interacción del usuario con el software es? Y ¿El uso de los componentes usados en el software son?: ⋅ ⋅ ⋅ ⋅ Fácil Moderado Difícil Muy difícil ⋅ La interacción del usuario con el software resultó de fácil manejo en un 50% de la población encuestada. 82 Consistencia: Aquí los elementos relacionados deben tener presente los iconos, los menús, botones e imágenes, estos deben ser acordes con lo que representa el software. A continuación se muestran los resultados obtenidos en la encuesta por medio de la pregunta ¿Cómo le parece el diseño empleado dentro del software?, califique cada ítem de 1 a 3, siendo 1 no conveniente, 2 aceptable y 3 adecuado. ⋅ El 40% de la población encuestada opinó que los colores son adecuados, y el 60% de la población encuestada opinó que las fuentes, botones e imágenes son aceptables. Usabilidad: Es la motivación que el software ofrece para ser utilizado. Se realizo por medio de la siguiente pregunta. ¿Considera que el software realizó la tarea esperada? ⋅ ⋅ ⋅ Si No ¿Por qué? 83 Los resultados a la pregunta fueron si el 70% y no 30%, argumentado en el ¿Por qué? : Desde el primer momento de la interacción con el software el estudiante siente confianza y encuentra cierta facilidad para llegar al proceso de encriptación. Capacidad de aprendizaje: La capacidad de aprendizaje se mide cuando el estudiante hace una asimilación y acomodación de la información que posteriormente lo llevará a ejecutar un trabajo sin necesidad de ayuda teórica. Se realizó por medio de las preguntas ¿Considera que el contenido teórico es claro para entender el proceso práctico?, ¿utilizaría el software para la realización de otros ejercicios de encriptación? ⋅ ⋅ ⋅ Si No ¿Por qué? 84 El 60% de la población encuestada respondió que sí, porque la explicación es breve, clara y posee un ejemplo y el 40% respondió que no, porque sus conocimientos en criptografía no son claros, no poseen información o porque consideran que hacen falta más ejercicios de aplicación. Con base a la información recaudada se concluye que la interacción del usuario con el software resulto de fácil manejo por tener claridad en su menú de inicio, y poseer una navegación aleatoria. Dado el impacto de los colores, botones, imágenes e información teórica el diseño fue considerado por la población educativa como aceptable. Para responder al objetivo final del software se considero pertinente su teoría, ya que muestra de manera clara y sencilla el proceso de encriptación de los algoritmos seleccionados por el autor del proyecto. El software CriptoClass posee un sinnúmero de ejercicios aleatorios que le dan la oportunidad al estudiante de evaluarse en cuanto al proceso de aprendizaje, de una forma concreta, rápida y segura. 85 6 CONCLUSIONES La criptografía clásica permite a los estudiantes iniciarse en el proceso de encriptación de la información de una forma versátil, amena, pero ante todo practica. Se logro determinar que la mejor herramienta para la transferencia de conocimientos de docentes a estudiantes y su respectiva retroalimentación es un software interactivo. Considerando la reacción, actitud y respuesta de la encuesta de los estudiantes de segundo semestre al momento de realizar las pruebas del software, se observó como las herramientas facilitan y estimulan a los estudiantes a adquirir habilidades y conocimientos en nuevas áreas que antes no habían considerado y en esta misma línea a interesarse en la criptografía. 86 7 RECOMENDACIONES Crear un semillero de investigación que trabaje en el área de criptografía, en la creación de una bibliografía abundante y que continúen con el desarrollo de este software. Considerar dentro del currículo del programa de Ingeniería de Sistemas la enseñanza de la criptografía o al menos sus conceptos básicos. Integrar dentro de las asignaturas existentes actualmente la enseñanza o implementación de temas de criptografía dentro de los contenidos temáticos. Fusionar Diseño Gráfico con Ingeniería de Sistemas para la optimización y mejoramiento del programa. Implementar más ejercicios de aplicación. 87 GLOSARIO AUTENTICIDAD: hace referencia a estar seguro de la identidad de una entidad, ya sea mensaje, persona, servidor, entre otros. CIFRADORES CLÁSICOS: se clasifican en sustitución y transposición. CIFRADO POR SUSTITUCIÓN: como su nombre lo indica consiste en sustituir caracteres del texto en claro por otros caracteres del mismo alfabeto o de otros alfabetos, se clasifican en tres grupos: Sustitución monográmico monoalfabetico, sustitución monográmico polialfabetico, y sustitución poligrámica. CIFRADORES POR SUSTITUCIÓN MONOGRÁMICO MONOALFABÉTICO: el cifrado se realiza mediante un algoritmo que hace corresponder una letra del texto en claro a una única letra del criptograma, cifrando monogramas, utilizando para ello un único alfabeto de cifrado. CIFRADORES POR SUSTITUCIÓN MONOGRÁMICO POLIALFABÉTICO: se realiza carácter a carácter, de forma monográmico. CIFRADORES POR SUSTITUCIÓN POLIGRÁMICA: tratan el mensaje en bloque de dos o más caracteres sobre los que se aplica la transformación del criptosistema en cuestión, sustituyendo cualquier numero de gramas del mensaje por n gramas del texto cifrado. CIFRADORES POR TRANSPOSICIÓN: utilizan la permutación de los mismos caracteres del texto en claro realizando permutaciones del alfabeto por grupos, columnas, filas y series. CIFRAR O ENCRIPTAR: es la acción que produce un texto cifrado (ilegible) a partir de un texto original. CÓDIGO FUENTE: texto de un programa antes de ser compilado, el código fuente se utiliza para describir programas y sus componentes han de ser lo más legibles y comprensibles posibles. 88 COMPILACIÓN: proceso de traducción de un lenguaje de programación de alto nivel a un lenguaje de programación a un bajo nivel. CLAVE PRIVADA: es la clave secreta que se usa en la criptografía asimétrica. CLAVE PÚBLICA: es la clave públicamente conocida, que se usa en la criptografía asimétrica. CLAVE SIMÉTRICA: es la clave secreta que tiene ambos lados de una comunicación en la criptografía simétrica. CRIPTOGRAFÍA ASIMÉTRICA: es el conjunto de métodos que permite establecer comunicación cifrada, donde una de las claves es pública y la otra es privada. CRIPTOGRAFÍA SIMÉTRICA: es el conjunto de métodos que permite establecer comunicación cifrada, con la propiedad de que ambos lados de la comunicación tienen la misma clave, y ésta es secreta. CRIPTOGRAFÍA: es el conjunto de técnicas (entre algoritmos y métodos matemáticos) que resuelve los problemas de autenticidad, privacidad, integridad, y no rechazo de la transmisión de la información. DESCIFRAR O DESCENCRIPTAR: es la acción inversa de cifrar, convierte un texto cifrado a otro legible (texto original). DISEÑO: actividad de definir cómo se debe estructurar e implementar un programa. HTML: lenguaje de script o de marcas para diseñar página web. IMPLEMENTACIÓN: actividad de escribir, compilar, probar y depurar el código de un programa. 89 LENGUAJE DE PROGRAMACIÓN: notación utilizada por los programadores para escribir programas. MÁQUINAS DE CIFRAR: corresponde a sistemas implantados en equipos electromecánicos entre los que cabe destacar las maquinas a rotor como: el enigma y Hagelin, utilizadas para cifrar mensaje durante la segunda guerra mundial. MENSAJE: una petición enviada a un objeto que solicita ejecutar una operación determinada. NO RECHAZO: se refiere a no poder negar la autoridad de un mensaje o de una transacción. PAR DE CLAVES: se refiere al par de claves una privada y la otra publica usadas en la criptografía asimétrica. PRIVACIDAD: hace referencia a tener control en el acceso de la información y solo permitirlo a personas autorizadas. TEXTO CIFRADO: es un documento que ha sido cifrado. TEXTO ORIGINAL: es el documento antes de ser cifrado. 90 BIBLIOGRAFÍA CARVAJAL Armando, Tecnologías Globales para la Seguridad de la Informática, Versión 2, Colombia, 2007. CANO, Jeimy, VII Encuesta de Seguridad Nacional Informática. 2007. DWIGHT Smith, Laurence, Cryptography Science of Secret Writing, Dover, 1971. LUCENA López, Manuel J, Criptografía y Seguridad en Computadores, cuarta Edición, Creative Commons, España. INSTITUTO COLOMBIANO DE NORMAS TÉCNICAS. Norma Técnica Colombiana NTC-ISO 9000. Bogotá D.C.: ICONTEC, 2000. 42p. QUIROGA, Milton, Una Introducción a las Técnicas Criptográficas, Panorámica de la Seguridad Informática en Colombia, 2003 ECHAVARRÍA, Isabel Cristina. Contribución a la Validación de Certificados en Arquitecturas de Autenticación y Autorización. Computer disk; 3 ¼ mm. PDF format HOYOS, Juan Carlos y Valle Leopoldo Luis. Nuevas Tendencias de la Prueba Ley Colombiana de Comercio Electrónico. Computer disk; 3 ¼ mm. PDF format Disponible en nternet:http://www.recercat.net/bitstream/2072/4377/1/Castejón.pdf> de Agosto de 2007 03:00 p.m. Disponible en Internet: < http://www.textoscientificos.com/criptografia/privada> Agosto de 2007 03:00 p.m. visitada 24 visitada 24 de Disponible en Internet: < http:// www.acis.org.co> visitada 30 de Agosto de 2007 03:30 p.m. Disponible en Internet: < http:// www.criptored.upm.es> visitada 27 de Agosto de 2007 03:00 p.m. Disponible en Internet: < http:// www.kriptopolis.org > visitada 30 de Agosto de 2007 91 ANEXO 1 ENCUESTA A ESTUDIANTES 1. Califique de 1-5 su interés por la criptografía, siendo 1 el menor interés y 5 el mayor interés. 1 2 3 4 5 2. Califique de 1-5 el conocimiento que tenga sobre el tema de criptografía, siendo 1 el menor interés y 5 el mayor interés. 1 2 3 4 5 3. Califique de 1-5 su interés por prender del tema de criptografía, siendo 1 el menor interés y 5 el mayor interés. 1 2 3 4 5 4. Marque con una x que tipo de criptografía conoce: Criptografía Clásica Criptografía Moderna Criptografía Actual Ninguna de las anteriores 5. Conoce algún software que enseñe sobre el tema de criptografía: Si No 92 Si su respuesta es afirmativa, indique cual: 6. De los siguientes medios cual sería su favorito para aprender sobre el tema: Libro Físico Libro Digital Software Interactivo Video Si su respuesta es otros, indique cual: 7. Ha visto en alguna de sus materias el tema de criptografía Si No Si su respuesta es afirmativa, indique cual: 93 Otros ANEXO 2 CUESTIONARIO A ESTUDIANTES PARA EVALUAR EL SOFTWARE MULTIMEDIAL CRIPTOCLASS Esta prueba está destinada a evaluar la funcionalidad del software CriptoClass diseñado por la estudiante Heidi Chaves de décimo semestre para optar por el titulo de Ingeniera de Sistemas de la Univ. San Buenaventura. De antemano agradezco responder objetivamente esta prueba para seguir contribuyendo con la evolución del programa. Amabilidad 1. La interacción del usuario con el software es: Fácil Moderado Difícil Muy difícil 2. El uso de los componentes usados en el software son: Fácil Moderado Difícil Muy difícil Consistencia 3. Como le parece el diseño empleado dentro del software. Califique cada ítem de 1-3, siendo: 1 No conveniente 2 Aceptable 3 Adecuado 1 2 Colores Fuentes Botones Imágenes 94 3 Usabilidad 4. ¿considera que el software realizó la tarea esperada? Si No ¿Por qué? Capacidad de aprendizaje 5. ¿Cree usted que el contenido teórico es claro para entender el proceso práctico? Si No ¿Por qué? 6. Utilizaría el software para la realización de otros ejercicios de encriptación? Si No ¿Por qué? 95 96 ESTUDIANTE 1. Etapa: Inicio del Software El manual explica la estructura y administración del software multimedial CriptoClass, la navegación permite la interacción del estudiante con el software. 2. Etapa: Validación del Usuario En esta página el estudiante se valida ingresando su código estudiantil y su contraseña. Internamente la base de datos reconoce al usuario si este ya se ha registrado y le da acceso de continuidad. En la presentación aparece una página inicial que es la introducción al software. 97 Actualizar Datos: 3. Etapa: Menú Principal El menú principal da acceso a la navegación del software ya que posee tres entradas: El estudiante solo tendrá la opción de actualizar los siguientes datos: ⋅ Contraseña. ⋅ Dirección. ⋅ Teléfono. ⋅ Email 1. Actualizar datos 2. Explicación 3. Practica Libre. Cuando se entra a explicación, el estudiante tiene la posibilidad de interactuar con el sistema de manera aleatoria con la posibilidad de seleccionar cualquier algoritmo, de leer su contenido teórico, ir a un ejercicio práctico de descifrado de la información y a la explicación del mismo algoritmo. La intención de esta página es q el estudiante se familiarice con la criptografía y se documente. ⋅ 98 Explicación: a. b. c. d. Esta página muestra la explicación de los algoritmos clásicos seleccionados para el proyecto. El estudiante tiene la posibilidad de interactuar con el sistema de manera aleatoria seleccionando uno de los algoritmos, una vez seleccionado el algoritmo puede acceder a la historia y documentarse sobre el proceso de encriptación. Posteriormente pasa a la explicación del proceso y de ahí va a un ejercicio práctico de desencriptación. Este proceso lo puede hacer con cualquiera de los 4 algoritmos. 99 4. Etapa: Práctica Libre 5. Etapa: Ejercicios Una vez adquirido el conocimiento en la explicación, el estudiante accede a la práctica libre. Después de haber cumplido con el proceso de todos los algoritmos, el estudiante llega a la etapa de ejercicios. Aquí el estudiante crea un texto plano y ejecuta el proceso de encriptación del algoritmo presentado. En esta misma línea puede descencriptar la misma información y verificar en la tabla su resultado. Aquí hay una interacción directa con los ejercicios sin la explicación teórica, se mezclan unos algoritmos con otros, para darle dificultad al aprendizaje, con la intención que el estudiante adquiera algún puntaje que le servirá al docente para medir el proceso del conocimiento. La posibilidad de hacer por lo menos un ejercicio, le da la viabilidad de pasar a la siguiente etapa. 100 DOCENTE 1. Etapa: Inicio del Software Validación del docente por medio de su código y contraseña. 101 2. Etapa: Resultados Luego en el menú principal se le despliega otra opción que se llama resultados, con esta opción el docente puede ver cómo va progresando el estudiante y cuáles han sido sus calificaciones. De igual manera el docente también tendrá la opción mirar las explicaciones, también de realizar la práctica libre y realizar la fase de pruebas. 102 ADMINISTRADOR 1. Etapa: Inicio del Software Validación del administrador por medio de su código y contraseña. 103 2. Etapa: Registro de Usuarios Inserción de datos Esta es la parte del administrador que se encarga de crear docentes y estudiantes, el administrador selecciona que tipo de usuario va a crear. En este ejemplo él crea un estudiante. La información solicitada del estudiante es: ⋅ Documento estudiantil. ⋅ Nombre. ⋅ Apellidos. ⋅ Contraseña. ⋅ Dirección. ⋅ Teléfono. ⋅ Email. ⋅ Selección del habilitado: esta opción le permitirá saber al administrador si el estudiante está activo o no dentro de la Universidad. Si el estudiante no está activo, este como tal no tendrá acceso al software al menos que el administrador lo disponga. 104 3. Etapa: Consulta de Usuarios Aquí el administrador se encarga de consultar docentes y estudiantes, también selecciona el tipo de usuario que va a consultar. Esta misma consulta muestra los estudiantes almacenados en la Base de Datos 105 4. Etapa: Actualizar y editar información En esta opción, el administrador podrá cambiar cualquier dato del estudiante. Con el botón editar, el administrador confirma a la base de datos que la información ya fue cambiada. 106 107 108 109 110 111