heidi alicia chaves jimÉnezbibliotecadigital.usbcali.edu.co/bitstream/10819/2948/1/... · 2016. 6....

111
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

Upload: others

Post on 10-Feb-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

  • DISEÑO E IMPLEMENTACIÓN DE UN SOFTWARE MULTIMEDIA P ARA 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 P ARA 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.

  • v

    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 MARCO DE REFERENCIA 19 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

  • vi

    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 METODOLOGÍA 42 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

  • vii

    3.6.2 Variables dependientes. 43 4 DESARROLLO INGENIERÍL 44 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

  • viii

    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. Aplicación del caso de uso crear docente 45 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

  • ix

    Figura 21. Diseño de la Base de Datos 58 Figura 22. Mapa de navegación 64

  • x

    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

  • xi

    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

  • 12

    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).

  • 13

    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ñanza-aprendizaje 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,

  • 14

    1 PLANTEAMIENTO DEL PROBLEMA

    1.1 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.

  • 15

    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.

  • 16

    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

  • 17

    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.

  • 18

    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.

  • 19

    2 MARCO DE REFERENCIA 2.1 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

  • 20

    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íta la. 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.

  • 21

    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ám ica 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

  • 22

    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 b c d e B f g h i j k C l m n o p D q r s t u E v w x y 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 b c d e 2 f g h i j k 3 l m n o p 4 q r s t u 5 v w x y z 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.

    6AGUIRRE, J Ramiro. Op. cit., p.18

  • 23

    2.1.3 Método Criptográfico por Sustitución Monoalfa bé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 A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z Ci D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z A B C 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 8 AGUIRRE, J Ramiro. Op. cit., p. 45 9 AGUIRRE, J Ramiro. Op. cit., p. 87.

  • 24

    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 claro

    C I F R A D O D E V I G E N E R E

    Clave P R U E B A P R U E B A P R U E B Cifrado R Z Z V B D D U Y Z J G T E Y V 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

  • 25

    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. ⋅ 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.

    10 Fuente: http://www.24flotilla.com/A11/otros/Historia%2520criptografia.pdf. 23 de Junio 2008 a las 2:15pm

  • 26

    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).

  • 27

    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.

  • 28

    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

  • 29

    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

    Metodología El Modelo RAD Modelo de

    Procesos Evolutivos

    Modelo Lineal Secuencial

    Modelo de construcción de

    prototipos o método de prototipo sucesivo

    Fases ⋅ Análisis ⋅ Diseño ⋅ Implementación ⋅ Prueba

    ⋅ Análisis ⋅ Diseño ⋅ Implementación ⋅ Prueba

    ⋅ 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 de realimentación del modelo de prototipos.

    Modelo en Cascada.

    Bucle de realimentación del modelo lineal secuencial (cascada).

    Propiedades ⋅ Proceso lineal secuencial

    ⋅ División del

    ⋅ Creación de versiones incrementales del producto.

    ⋅ Modelo de aplicaciones fuertemente estructuradas y

    ⋅ Detecta deficiencias.

    ⋅ Establece

    13 RUIZ, Alfonso. Metodología de Desarrollo de Aplicaciones Multimedia, Universidad de León, 2004.p.76

  • 30

    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.

    ⋅ Versión producida del producto final.

    ⋅ Complejidad del producto.

    ⋅ Recursos de que se dispone para su desarrollo.

    ⋅ Uno o dos desarrolladores.

    requisitos definidos.

    ⋅ Maneja proyectos de poca envergadura

    nuevos requisitos.

    ⋅ Define medios. ⋅ Versión

    incompleta del producto final.

    Tiempo Más corto posible.

    Poco tiempo, pocos medios

    Corto plazo Largo 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,

  • 31

    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.

    14Ibid.,p. 83

  • 32

    2.3 Herramientas de Desarrollo

    2.3.1 Comparación de bases de datos 15 Tabla 9. Comparativo entre Bases de Datos

    Firebird Ingres r3 Max BD MySQL PostgreSQL Access SQL Oracle

    Licencia

    Interbase Public License (PL)

    Computer Associates

    Trusted Open

    Source License

    MySQL Dual Licensing

    Model

    MySQL Dual Licensing

    Model(Libre)

    BSD License

    No libre

    No libre

    No libre

    LIMITES POR BASE DE DATOS

    Max.

    Numero de tablas

    32767

    67108863

    Ilimitado

    Ilimitado

    Ilimitado

    32768

    Ilimitado

    Máximo tamaño de DB

    Limite

    Teórico

    Ilimitado

    32TB (con paginas de

    8KB)

    Ilimitado

    Ilimitado

    15 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, 2004-

    2005, Formato PDF (69 páginas)

  • 33

    7TB Máximo tamaño

    de página

    16384 bytes

    65536 bytes

    Data 518MB-8GB

    Log 16TB

    64TB

    Ilimitado

    LIMITES POR TABLAS

    Máximo número de filas

    por tabla

    429496729

    6 (232)

    429469081

    6

    Limitado por el tamaño de la

    DB

    Limitado por el tamaño

    máximo de la tabla (64TB)

    Ilimitado

    255

    1024

    1000

    Máximo tamaño

    de fila por tabla

    64 KB

    32KB

    8088 bytes

    8000 bytes

    1.6TB

    2000bytes

    8036 bytes

    255000

    Máximo número

    de campos por tabla

    1024

    Con llave 1024 Sin llave 1023

    1000

    250-1600 dependiendo de tipo de campos

    255

    8000

    4000

    Máximo número

    de índices por tabla

    256

    Ilimitado

    255

    64

    Ilimitado

    32

    Soporte Unicode

    Unicode_FSS

    UTF-8 UTF-16

    USC-2

    De acuerdo a

    ISO 10646

    UCS-2 UTF-8 con un

    límite de 3 bytes por carácter

    UTF-8

    MÁXIMA COMPLEJIDAD DE QUERIES

    Tamaño máximo

    de un enunciad

    o SQL

    64KB

    Incluso mayor a

    64KB

    ≥16KB valor

    por defecto 64KB

    1GB, 16 MB por defecto

    No hay información disponible

    Aprox 64000

    65536* por tamaño del paquete de

    red (4KB, por defecto)

    Máximo # de

    miembros en un IN

    1499 No se

    encontró limite

    2041

    No se

    encontró limite

    No se encontró

    limite

  • 34

    list Máximo número de unión de tablas

    255

    126

    64

    61

    No se encontró

    limite

    32

    256

    Máximo # de

    operadores lógicos en una

    clausula

    Where 255 O Ilimitado

    Where 1023

    And 1023 OR 1617

    511

    No se

    encontró límite

    No se encontró

    limite

    99

    Enlaces de bases de datos

    No soporta

    No soporta

    No soporta

    No soporta

    No es invisible al usuario

    Estándar de

    complacencia

    Alto

    Medio

    Medio

    Medio

    Alto

    Velocidad Media/Alta Media/Alta Media/Alta Media/Alta Estabilida

    d Alta Media/Alta Alta/Muy Alta Media Media/Alta Media Media

    Seguridad Alta Media Alta Media/Alta Baja Alta Alta Procedimi

    entos almacena

    dos

    Si Si Si Si(≥5.0) Si No soportados Microsoft T-

    SQL

    Si

    Soporte

    de triggers

    Si

    Si

    Si

    Si(≥5.0

    rudimentario)

    Si

    No

    soportados

    after triggers, instead of triggers

    Si

    Programación de

    interfaces

    ODBC, JDBC, C/C++, PHP,

    Python, Perl, Kylix,

    Delphi, .NET/Mono

    , ADO

    ODBC, JDBC, C/C++,

    .NET, Perl, Python, PHP,

    Cobol, Fortran

    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

    ODBC, JDBC

    ODBC, JDBC

    ODBC, JDBC

  • 35

    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.

  • 36

    2.3.2 Comparativo de herramientas para desarrollo W EB16 : Tabla 10. Comparativo entre herramientas de desarrollo web

    ASP JSP PHP

    Diseñador Rasmus Lerdorf Desarrollador Microsoft Sun

    Microsystems PHP

    Surgió en: 1996 1997 1995 Última versión: ASP. Net 5.2.5

    Portabilidad en los servidores Apache Windows No Si Si

    Linux No si si ISS Windows Si No si

    Linux No No No Tomcat Windows No Si No

    Linux no si No OneASP(Módulo) Windows no No No

    Linux Si No No Requerimientos mínimos

    Sistema Operativo Linux y Windows

    Linux y Windows

    Linux y Windows

    Servidor IIS Tomcat y Glassfish

    Apache

    Memoria 128 o más 256 o más 128 o más Calidad de fallas detectadas

    Hay error + ubicación 55% 95% 90% Tipo de errores 46% 93% 15%

    Integridad de la base de datos Windows 47% 46% 88% Linux 45% 49% 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. 16DALADIER 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

  • 37

    2.3.3 Comparación de Servidores web 17 Tabla 11. Comparativo entre servidores web

    JBoss 4.2 Geronimo 2 Tomcat 6 GlassFish 2

    Java EE 5 compliance

    Parcial Si No Si

    EJB 3.0 capable Si Si Disponible Si JSP 2.1 and 2.5 capable

    Si Si Si Si

    JavaServer Faces 1.2 support

    Si Si Disponible Si

    Custom plug-in support

    Si Si No Si

    Business-rules engine support

    Disponible Disponible Disponible Disponible

    Hibernate 3.x support

    Si Disponible Disponible Si

    JBoss Seam support

    Si Si Disponible Si

    Clustering support

    Si Si Parcial Si

    Eclipse IDE connector support

    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

  • 38

    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.

  • 39

    2.4.2 Estándares de la Organización Internacional d e 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 Estándar de Cifrado de Datos (DES) FIPS 180-2 Algoritmo de Hashing SHA-1, SHA-256 FIPS 186 Estándar de Firma Digital (DSA) Triple DES CBC Simétrico FIPS 197 Estándar de Cifrado Avanzado (AES)

  • 40

    ISO 27001 Metodología, Transferencia del Conocimiento y Servicio

    ISO 15408 Tecnología de la Información — Criterios de Evaluación de Técnicas de Seguridad para TI

    ISO/IEC TR13335

    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.

    PKCS#1 Estándar de Criptografía RSA: define la criptografía RSA

    PKCS#3 Estándar de Acuerdo de Clave Diffie-Hellman

    PKCS#5 Estándar de Criptografía basada en Contraseña: define cómo cifrar y descifrar datos usando contraseñas

    PKCS#7

    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

    PKCS#8

    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

    PKCS#9

    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

    PKCS#10

    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

  • 41

    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+ Requisitos de Seguridad para Módulos Criptográficos: hardware y firmware

    Validación FIPS 140-2 Requisitos de Seguridad para Módulos Criptográficos: hardware y firmware

    Compatibilidad ISO 7816 1-5

    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

  • 42

    3 METODOLOGÍA 3.1 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 FACU LTAD/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.

  • 43

    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.

  • 44

    4 DESARROLLO INGENIERÍL

    4.1 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.

  • 45

    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 Data Recieved Data Effects Administrador Website Docente Docente Website BD CriptoClass Docente Docente

  • 46

    Tabla 8. Documentación del caso de crear docente

    NOMBRE DEL CASO DE U SO Crear Docente ACTORES Administrador PRECONDICIÓN O CONDICIONES

    INÍCIALES:

    No debe existir en la base de datos el docente

    registrado

    PROPÓSITO Registrar docente TIPO Básico DESCRIPCIÓN

    � 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

    DE SALIDA:

    ⋅ Ingresar a la página de registro

    Leer Docente:

    Figura 10. Aplicación del caso de uso leer docente

    Llamadas Data Sent Data Recieved Data Effects Administrador Website Docente Docente Docente Website Docente Docente

  • 47

    Tabla 9. Documentación del caso de leer docente NOMBRE DEL CASO DE U SO Leer Docente ACTORES Administrador, docente PRECONDICIÓN O CONDICIONES

    INÍCIALES:

    Los usuarios deben estar registrados

    PROPÓSITO Llevar un registro de la navegación del docente en el aplicativo web

    TIPO Básico DESCRIPCIÓN

    � El administrador ingresa al aplicativo, con el fin de mirar cómo se desempeña el docente.

    � EXCEPCIONES AL CASO DE USO: � El usuario no se encuentra registrado en la

    base de datos. POST-CONDICIÓN O CONDICIONES

    DE SALIDA:

    Ninguna

    Actualizar Docente:

    Figura 11. Aplicación del caso de uso actualizar docente

    Llamadas Data Sent Data Recieved

    Data Effects

    Administrador Actualizar WebsiteDocente Docente Docente Website Docente Docente Website BD CriptoClass Docente Docente

  • 48

    Tabla 10. Documentación del caso de actualizar docente

    NOMBRE DEL CASO DE USO Actualizar Docente ACTORES Administrador, docente PRECONDICIÓN O CONDICIONES

    INÍCIALES:

    No debe existir en la base de datos el docente

    registrado

    PROPÓSITO Actualizar los datos del docente TIPO Básico DESCRIPCIÓN

    � 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

    DE SALIDA:

    ⋅ Ingresar al aplicativo

    Crear Estudiante:

    Figura 12. Aplicación del caso de uso crear estudiante

    Llamadas Data Sent Data Recieved

    Data Effects

    Administrador Actualizar WebsiteEstudiante Estudiante Estudiante Website Estudiante Estudiante

  • 49

    Website BD CriptoClass Estudiante Estudiante

    Tabla 11. Documentación del caso de crear estudiante NOMBRE DEL CASO DE U SO Crear Estudiante ACTORES Administrador PRECONDICIÓN O CONDICIONES

    INÍCIALES:

    No debe existir en la base de datos el

    estudiante registrado

    PROPÓSITO Registrar estudiante TIPO Básico DESCRIPCIÓN

    � 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

    DE SALIDA:

    ⋅ Ingresar a la página de registro

    Leer Estudiante: Figura 13. Aplicación del caso de uso leer estudiante

    Llamadas Data Sent Data Recieved Administrador Website Estudiante Estudiante Estudiante Website Estudiante Estudiante

  • 50

    Tabla 12. Documentación del caso de leer estudiante

    NOMBRE DEL CASO DE U SO Leer Estudiante ACTORES Administrador, estudiante PRECONDICIÓN O CONDICIONES

    INÍCIALES:

    Los usuarios deben estar registrados

    PROPÓSITO Llevar un registro de la navegación del estudiante en el aplicativo web

    TIPO Básico DESCRIPCIÓN

    � El administrador ingresa al aplicativo, con el fin de mirar cómo se desempeña el estudiante.

    � EXCEPCIONES AL CASO DE USO: � El usuario no se encuentra registrado en la

    base de datos. POST-CONDICIÓN O CONDICIONES

    DE SALIDA:

    Ninguna

    Actualizar Estudiante: Figura 14. Aplicación del caso de uso actualizar estudiante

    Llamadas Data Sent Data Recieved Administrador Website Estudiante Estudiante Estudiante Website Estudiante Estudiante Website BD CriptoClass Estudiante Estudiante

  • 51

    Tabla 13. Documentación del caso de uso de actualizar estudiante

    NOMBRE DEL CASO DE U SO Actualizar Estudiante ACTORES Administrador, estudiante PRECONDICIÓN O CONDICIONES

    INÍCIALES:

    No debe existir en la base de datos el docente

    registrado

    PROPÓSITO Actualizar los datos del estudiante TIPO Básico DESCRIPCIÓN

    � 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

    DE SALIDA:

    ⋅ Ingresar al aplicativo

    Validar usuario:

    Figura 15. Aplicación del caso de uso validar usuario.

    Llamadas: Data Sent Data Recieved Data Effects

    Administrador Validar WebsiteEstudianteEstudiante-Docente

    Estudiante Website Estudiante Estudiante Docente Website Docente

  • 52

    Website BD CriptoClass Estudiante Estudiante-Docente

    Tabla 14. Documentación del caso de uso de validación

    NOMBRE DEL CASO DE U SO Validar usuarios ACTORES Administrador, docente y estudiante PRECONDICIÓN O CONDICIONES

    INÍCIALES:

    Los usuarios deben estar registrados

    PROPÓSITO El usuario aprenderá las diferentes formas de encriptar un mensaje.

    TIPO Básico DESCRIPCIÓN

    � 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.

    EXCEPCIONES AL CASO DE USO: � El usuario no se encuentra registrado en la base de datos.

    POST-CONDICIÓN O CONDICIONES

    DE SALIDA:

    ⋅ Ingresar a la página principal.

    Crear Histórico: Figura 16. Aplicación del caso de uso crear histórico

    Llamadas: Data Sent Data Recieved

    Data Effects

    Estudiante Website Estudiante Estudiante-website

    Web Crear histórico BD Criptoclass Website BD

  • 53

    NOMBRE DEL CASO DE U SO Crear historial ACTORES Estudiante PRECONDICIÓN O CONDICIONES

    INÍCIALES:

    El estudiante debe estar registrado

    PROPÓSITO El estudiante al ser evaluado a través de unas pruebas de conocimiento, internamente se está creando el historial.

    TIPO Básico DESCRIPCIÓN

    � 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. EXCEPCIONES AL CASO DE USO: � El usuario no se encuentra registrado en la

    base de datos. O se encuentra inhabilitado POST-CONDICIÓN O CONDICIONES

    DE SALIDA:

    ⋅ 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 Sent Data Recieved Data Effects

    Estudiante BD CriptoClass Estudiante Estudiante-BD CriptoClass

    BD CriptoClass leer respuesta web site

    BD CriptoClass Estudiante

  • 54

    NOMBRE DEL CASO DE U SO Crear historial ACTORES Estudiante PRECONDICIÓN O CONDICIONES

    INÍCIALES:

    El estudiante debe estar registrado

    PROPÓSITO El estudiante al ser evaluado a través de unas pruebas de conocimiento, internamente se está creando el historial.

    TIPO Básico DESCRIPCIÓN

    � A través de un query la base de datos muestra al estudiante la cantidad de preguntas buenas y malas.

    EXCEPCIONES AL CASO DE USO: � El usuario no se encuentra registrado en la base de datos. O se encuentra inhabilitado

    POST-CONDICIÓN O CONDICIONES

    DE SALIDA:

    ⋅ 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 Data Effects

    Docente website docente Estudiante-Docente

    Estudiante website Docente Estudiante Webside leer BD CriptoClass Website Docente

  • 55

    NOMBRE DEL CASO DE U SO Leer historial ACTORES Docente y estudiante PRECONDICIÓN O CONDICIONES

    INÍCIALES:

    Los usuarios deben estar registrados

    PROPÓSITO El estudiante será evaluado a través de unas pruebas de conocimiento

    TIPO Básico DESCRIPCIÓN

    � 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.

    EXCEPCIONES AL CASO DE USO: � El usuario no se encuentra registrado en la base de datos. O se encuentra inhabilitado

    POST-CONDICIÓN O CONDICIONES

    DE SALIDA:

    ⋅ Ingresar a la página principal y practicar con cada uno de los métodos criptográficos clásicos.

  • 56

    4.2.2 Modelo Conceptual de la Base de Datos. Figura 19. Modelo conceptual de la Base de Datos

  • 57

    4.2.3 Modelo Lógico de la Base de Datos. Figura 20. Modelo lógico de la Base de Datos

  • 58

    4.2.4 Diseño de la base de datos. Figura 21. Diseño de la Base de Datos

  • 59

    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 Long. Observación

    Id_Tipo X Int Auto numérico

    Tipo_Usuario Varchar 50 Descripción del atributo

    Id_Tipo Número de identificación del tipo de usuario seleccionado Tipo_Usuario 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

    Dato Long. Observación

    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 atribut o 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

  • 60

    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

    Dato Long. Observación

    fecha X timestamp Id_Documento X X Int Tabla usuario Id_Preguntas X X Int Tabla

    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

    Dato Long. Observación

    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

    Dato Long. Observación

    Id_respuestas X Int Auto numérico

    Id_preguntas X X Int Tabla preguntas

  • 61

    respuestasR Varchar 250 Coor_incorr boolean True or false

    Descripción del atributo Id_respuestas El número de identificación de la respuesta Id_preguntas El número de identificación de la pregunta respuestasR Muestra las respuestas correspondientes Coor_incorr 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 Long. Observación

    Id_tema X Int Auto numérico

    tema Varchar 20 Descri pción del atributo

    Id_tema Número de identificación del tema tema Tema al que pertenece

    Tabla: Docente Descripción: Almacena información respecto al docente Atributo PK FK DF CK NULL Tipo de

    Dato Long. Observación

    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

  • 62

    Tabla: Estudiante Descripción: Almacena información respecto al estudiante Atributo PK FK DF CK NULL Tipo de

    Dato Long. Observación

    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: Items Descripción: Almacena el ítem de usuario Atributo PK FK DF CK NULL Tipo de

    Dato Long. Observación

    Id_Items X Int Auto numérico

    Ruta Varchar 250 Nombrecaracter Varchar 250 Descripcioncaracter 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 Long. Observación

    Id_Items X Int Auto numérico

    Id_Documento X Int 50 Fecha_Ingreso TimeStamp

    Descripción del atributo Id_Items Número de identificación del ítem de usuario seleccionado

  • 63

    Id_Documento Número de identificación del usuario correspondiente ya sea docente o estudiante

    Fecha_Ingreso La fecha en la que ingreso al sistema Docente Control de acceso Crear Leer Actualizar Borrar Condición Administrador X X X Docente X X

    Estudiante Control de acceso Crear Leer Actualizar Borrar Condición Administrador X X X Estudiante X X

    Usuario Control de acceso Crear Leer Actualizar Borrar Condición Administrador X X X Docente X X Estudiante X X

  • 64

    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.

  • 65

    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:

  • 66

    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:

  • 67

    Design.

    En Design se diseña la parte visual y se insertan botones, textareas, checkbox, entre otros.

    JSP

    JSP es el XML del diseño presentado anteriormente.

    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.

  • 68

    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).

  • 69

    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:

  • 70

    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

  • 71

    Llame a cesara[j] = inicializar y tener en cuenta que es un string de 26 caracteres;

    Para cada j=0 donde j

  • 72

    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

  • 73

    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

  • 74

    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;

  • 75

    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

  • 76

    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 = res y res < cítalas - 1 y arraysize == arraytam y (res > 0))

  • 77

    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);

  • 78

    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];

  • 79

    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

  • 80

    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:

  • 81

    ⋅ 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.

  • 82

    5 PRESENTACIÓN Y ANÁLISIS DE RESULTADOS

    Por medio d