• No se han encontrado resultados

Rediseño de la arquitectura de la plataforma alasGRATO.

N/A
N/A
Protected

Academic year: 2023

Share "Rediseño de la arquitectura de la plataforma alasGRATO."

Copied!
76
0
0

Texto completo

(1)

Título: Rediseño de la arquitectura de la Plataforma alasGRATO.

Trabajo de Diploma para optar por el título de Ingeniero en Ciencias Informáticas.

Autor(es):

Edelquis Guillermo Geigel Echavarria.

Dayán Sabido Roque.

Tutor(es):

Msc. Aurelio Antelo Collado.

Ing. Yadira Marrero López.

Ing. Julio Antonio Villaverde Martínez.

Ciudad de la Habana, Junio de 2010

―Año 52 de la Revolución‖

(2)

“Lo fundamental es que seamos capaces de hacer cada día

algo que perfeccione lo que hicimos el día anterior.”

(3)

DECLARACIÓN DE AUTORÍA

Declaramos ser autores de la presente tesis y reconocemos a la Universidad de las Ciencias Informáticas los derechos patrimoniales de la misma, con carácter exclusivo.

Para que así conste firmo la presente a los ____ días del mes de ________ del año ________.

Dayán Sabido Roque Edelquis Guillermo Geigel Echavarría

Firma del Autor Firma del Autor

Ing. Yadira Marrero López Ing. Julio Antonio Villaverde Martínez

Firma del Tutor Firma del Tutor

Msc. Aurelio Antelo Collado

Firma del Tutor

(4)

DATOS DE CONTACTO

Tutores:

Aurelio Antelo Collado.

Ingeniero Industrial.

Máster en Matemática Aplicada.

Email: aantelo@uci.cu

Yadira Marrero López.

Ingeniero en Ciencias Informáticas.

Email: ymlopes@uci.cu

Julio Antonio Villaverde Martínez.

Ingeniero en Ciencias Informáticas.

Email: jvillaverde@uci.cu

(5)

I AGRADECIMIENTOS

A nuestro Comandante en Jefe Fidel Castro Ruz por ser el autor intelectual de la Universidad de las Ciencias Informáticas.

A nuestros tutores, por ser personas preparadas que nos supieron guiar y dar su confianza para poder terminar la tesis. Por su paciencia y ayuda de forma incondicional.

A Julio Omar y Andrés Miguel por su desinteresada ayuda.

A nuestros compañeros y amigos por todos los momentos agradables que hemos pasado en especial a la "familia" ellos saben quienes son, nunca los olvidaremos.

A todos nuestros familiares que siempre nos han brindado su apoyo y ayuda incondicional.

A todas las personas que hicieron posible la realización de esta tesis y creyeron en nosotros.

(6)

II DEDICATORIA

Dayán:

A mis padres por su comprensión, ayuda y su incansable empeño en hacerme un hombre de bien, a ellos por prepararme para mi futuro como profesional.

A toda mi familia por apoyarme, creer y confiar en mí.

A mi hermanito Yordán que se que me quiere muchísimo y siempre me esta dando ánimo para que continúe hacia delante.

A mi novia Danay por apoyarme, ayudarme, soportarme durante todo este tiempo y por su comprensión y paciencia.

A mi compañero de tesis.

Edelquis:

A mis padres y a mi hermano por su enorme sacrificio, amor y por confiar siempre en mí.

A Manuel Beltrán al cual considero un padre.

A mi familia en general.

A Raiza mi novia por su cariño y compañía.

A mi compañero de tesis.

(7)

III RESUMEN

La investigación surge en el marco de trabajo del proyecto alasGRATO (Plataforma Inteligente para la Predicción de Actividad Biológica de Compuestos Orgánicos) de la Universidad de las Ciencias Informáticas (UCI). La plataforma cuenta actualmente con una arquitectura bien definida, la misma presenta una serie de vulnerabilidades ya que no cumple con algunos atributos de calidad tales como seguridad, confidencialidad y disponibilidad exigidos para un producto informático, por lo que se decidió rediseñar la arquitectura de la plataforma para darle cumplimiento a estos atributos mediante la utilización de mecanismos y herramientas. La solución diseñada proporciona seguridad, confidencialidad y disponibilidad a la información que se utiliza en la plataforma y a las estaciones de trabajo que utilizan los especialistas químicos para interactuar con la misma. La solución está basada en la concepción del uso de herramientas libres. Se hizo una evaluación de la solución, obteniendo resultados satisfactorios.

PALABRAS CLAVES

Arquitectura de software, Atributo de calidad, Firma digital, Réplica de datos, Control de acceso, ARID.

(8)

IV TABLA DE CONTENIDOS

AGRADECIMIENTOS ... I DEDICATORIA ... II RESUMEN... III

INTRODUCCIÓN... 1

CAPÍTULO 1: FUNDAMENTACIÓN TEÓRICA ... 4

1.1 Arquitectura de software ... 4

1.2 Atributos de Calidad ... 6

1.2.1 Atributos de calidad seleccionados ... 6

1.2.2 Atributo de calidad Disponibilidad ... 7

1.2.3 Atributo de calidad Seguridad ... 12

1.2.4 Atributo de calidad Confidencialidad ... 14

1.3 Arquitectura de la Plataforma alasGRATO ... 16

1.4 Vulnerabilidades de la plataforma alasGRATO ... 17

1.5 Herramientas y tecnologías utilizadas ... 17

1.5.1 Metodología: OpenUP ... 17

1.5.2 Lenguaje de modelado: UML ... 18

1.5.3 Herramientas CASE: Visual Paradigm ... 19

1.5.4 Lenguaje de programación: Java ... 20

1.5.5 Entornos de desarrollo: Eclipse ... 20

1.5.6 Servidor de aplicaciones: Tomcat ... 21

1.5.7 Gestor de Base de Datos: MySql ... 21

1.5.8 Herramienta KEYTOOL y JARSIGNER ... 22

1.6 Conclusiones parciales del capítulo ... 23

CAPÍTULO 2: DISEÑO DE LA SOLUCIÓN... 24

2.1 Aplicación del mecanismo utilizado en el atributo Seguridad ... 24

2.1.1 Firma de los plug-ins ... 25

2.1.2 Verificación de los plug- ins firmados ... 26

2.1.3 Firma de los Servicios ... 26

2.2 Aplicación del mecanismo utilizado en el atributo Confidencialidad ... 31

2.3 Aplicación del mecanismo utilizado en el atributo Disponibilidad ... 35

2.4 Conclusiones parciales del capítulo ... 44

CAPÍTULO 3: EVALUACIÓN DE LA SOLUCIÓN... 45

3.1 Evaluación de los atributos seleccionados ... 45

3.2 Conclusiones parciales del capítulo ... 60

(9)

V

CONCLUSIONES GENERALES ... 61

RECOMENDACIONES ... 62

REFERENCIAS BIBLIOGRÁFICAS ... 63

BIBLIOGRAFÍA... 65

GLOSARIO DE TÉRMINOS ... 66

(10)

1 INTRODUCCIÓN

Las técnicas metodológicas desarrolladas con el fin de facilitar la programación de software se engloban dentro de la llamada Arquitectura de Software o Arquitectura lógica. Se refiere a un grupo de abstracciones y patrones de la Arquitectura de software(AS) que brindan un esquema de referencia útil para guiar el desarrollo de software. La arquitectura del software nos proporciona una visión global del sistema a construir. Describe la estructura y la organización de los componentes del software, sus propiedades y las conexiones entre ellos. Los componentes del software incluyen módulos de programas y varias representaciones de datos que son manipulados por el programa.

La arquitectura para ser segura necesita una serie de atributos de calidad. La seguridad, la disponibilidad y la confidencialidad son algunos de ellos.

La seguridad, la disponibilidad y la confidencialidad son elementos indispensables en cualquier organización, los datos son una parte fundamental ya que cualquier pérdida, transformación o mala manipulación de la información ocasionaría daños económicos y sociales irreparables. En la actualidad se necesita de un buen control de la información y una buena seguridad acorde a las necesidades del sistema, la información debe estar disponible en caso de fallas y que los datos que se consulten sean confiables y seguros. A través de los años las empresas desarrolladoras de software se han encargado de garantizar la seguridad de sus aplicaciones, por ser un aspecto de importancia elevada, pues de esta manera se garantiza la protección de la gestión de la información.

El país no está exento de este gran problema, el desarrollo informático se ha ido incrementado considerablemente en Cuba, pues existe conciencia de la valía y significado en la elevación de la productividad que ello implica, así también de las necesidades de nuevos sistemas que cumplan los requerimientos específicos de los procesos empresariales para un mejor desempeño de las entidades.

Para la informatización del país fue creada la Universidad de las Ciencias Informáticas (UCI), cuya misión es la producción de software e ingenieros en ciencias informáticas. La facultad 6 es una de las que integran la UCI y está vinculada directamente a la producción de software. Uno de estos proyectos es la

―Plataforma Inteligente para la Predicción de Actividad Biológica de Compuestos Orgánicos‖ (alasGRATO).

Esta plataforma constituye una potente herramienta para los especialistas químicos, pues agrupa un conjunto de operaciones que son necesarias para la investigación y elaboración de nuevos fármacos. El sistema permite de manera integrada, la realización de diferentes operaciones, entre las que se encuentran: predicción de actividad biológica por medio de diversas técnicas de Inteligencia Artificial, entre

(11)

2

ellas Lógica Difusa (LD) y Máquinas de Soporte Vectorial (SVM). Además permite la fragmentación y el cálculo de descriptores, visualización y edición de las moléculas, búsqueda de fragmentos de moléculas en dos y tres dimensiones, entre otras. Todas estas operaciones están integradas en un único entorno, y de esta forma permiten un mejor desempeño del usuario, quien realiza todas sus investigaciones en una misma computadora. Aunque el sistema cuenta actualmente con una arquitectura bien definida la misma presenta una serie de vulnerabilidades, uno de los problemas que presenta es que a la hora de utilizar la plataforma cualquier usuario puede acceder a los servicios que brinda la misma aunque no tenga permisos, otro problema es que en caso de fallas (eléctricas, técnicas o de cualquier otro índole) se afecta el acceso a la información contenida en la base de datos lo que puede ocasionar la pérdida de los datos.

Teniendo en cuenta lo antes analizado se plantea el siguiente problema científico: ¿Cómo lograr que la arquitectura de la plataforma alasGRATO desarrollada cumpla con los atributos de calidad exigidos para un producto informático en el campo de la bioinformática?

Para ello se tendrá como Objeto de estudio: Arquitectura de Software. Teniendo como campo de acción:

Atributos de calidad de software en los diseños arquitectónicos. Para resolver el problema planteado se ha propuesto como objetivo general: Rediseñar la arquitectura de la Plataforma alasGRATO para que cumpla con los atributos de calidad exigidos para un producto informático en el campo de la bioinformática.

Para dar cumplimiento al objetivo general se han trazado los siguientes objetivos específicos:

 Estudiar métodos y técnicas que contribuyan a los atributos de calidad.

 Diseñar técnicas para la arquitectura de la Plataforma alasGRATO que garanticen el cumplimiento de los atributos de calidad.

 Implementar las técnicas diseñadas.

 Realizar pruebas para validar el cumplimiento de los atributos de calidad de la arquitectura propuesta para la plataforma alasGRATO.

Para llevar a cabo esta investigación y dar cumplimiento a los objetivos propuestos, se planificaron las siguientes tareas de la investigación:

 Revisión de los atributos de calidad y elección de los que se usarán en el rediseño.

 Estudio de la arquitectura existente de la plataforma alasGRATO.

 Identificación de las vulnerabilidades de la arquitectura actual de la Plataforma alasGRATO.

 Identificación de los métodos a utilizar fundamentación de estos métodos, así como su aplicación.

 Actualización del documento de arquitectura de la plataforma alasGRATO.

(12)

3

 Implementación de las técnicas que se diseñaron en al menos un servicio de la plataforma.

 Aplicación de pruebas para verificar que las técnicas seleccionadas cumplan con la calidad exigida para un producto de software.

Este trabajo de diploma consta de tres capítulos.

Capítulo 1: Fundamentación Teórica.

En este capítulo se presentan definiciones y conceptos relacionados con el objeto de estudio. Se realiza un análisis sobre los atributos de calidad que debe cumplir un producto informático, teniendo en cuenta los mecanismos existentes en cada uno de ellos. Además se detallan las herramientas a utilizar en la propuesta de solución.

Capítulo 2. Diseño de la solución.

En este capítulo se realiza el diseño de la solución propuesta mediante la aplicación de los métodos y herramientas seleccionadas para cumplir con los atributos de calidad exigidos.

Capítulo 3: Evaluación de la solución.

En este capítulo se evalúa la implementación de los atributos escogidos, así como las técnicas seleccionadas para el funcionamiento de los mismos cumpliendo con la calidad exigida para un producto de software.

(13)

4 CAPÍTULO 1: FUNDAMENTACIÓN TEÓRICA

Introducción

En este capítulo se presentan definiciones y conceptos relacionados con el objeto de estudio. Se realiza un análisis sobre los atributos de calidad que debe cumplir un producto informático, teniendo en cuenta los mecanismos existentes en cada uno de ellos. Además se detallan las herramientas a utilizar en la propuesta de solución.

1.1 Arquitectura de software

Cada vez que se narra la historia de la arquitectura de software (o de la ingeniería de software, según el caso), se reconoce que en un principio, hacia 1968, Edsger Dijkstra, de La Universidad Tecnológica de Eindhoven en Holanda y Premio Turing 1972, propuso que se estableciera una estructuración correcta de los sistemas de software antes de lanzarse a programar, escribiendo código de cualquier manera. Dijkstra, sostenía que las ciencias de la computación eran una rama aplicada de las matemáticas y sugería seguir pasos formales para descomponer problemas mayores; aunque Dijkstra no utiliza el término arquitectura para describir el diseño conceptual del software, sus conceptos sientan las bases.

En 1975, Brooks, diseñador del sistema operativo OS/360 y Premio Turing 2000, identificaba y razonaba sobre las estructuras de alto nivel y reconocía la importancia de las decisiones tomadas a ese nivel de diseño. También distinguía entre arquitectura e implementación; mientras la primera decía qué hacer, la implementación se ocupa de cómo.

En la década de 1980, los métodos de desarrollo estructurado demostraron no escalar suficientemente y fueron dejando el lugar a un nuevo paradigma, el de la programación orientada a objetos (POO).

Paralelamente, hacia fines de la década de 1980 y comienzos de la siguiente, la expresión arquitectura de software comienza a aparecer en la literatura para hacer referencia a la configuración morfológica de una aplicación. (1)

El primer estudio en que aparece la expresión ―arquitectura de software‖ en el sentido en que hoy lo conocemos es sin duda el de Perry y Wolf; ocurrió en 1992, aunque el trabajo se fue gestando desde 1989.

En él, los autores proponen concebir la Arquitectura de software(AS) por analogía con la arquitectura de edificios, una analogía de la que luego algunos abusaron, otros encontraron útil y para unos pocos ha devenido inaceptable. (2)

Dando cumplimiento a las profec ías de Perry y Wolf, la década de 1990 fue sin duda la de la consolidación y diseminación de la AS en una escala sin precedentes. Las contribuciones más importantes surgieron en

(14)

5

torno del instituto de ingeniería de la información de la Universidad Carnegie Mellon. En la misma década, demasiado pródiga en acontecimientos, surge también la programación basada en componentes, que en su momento de mayor impacto impulsó a algunos arquitectos a afirmar que la AS promovía un modelo que debía ser más de integración de componentes pre-programados que de programación. (3) Un segundo gran tema de la época fue el surgimiento de los patrones, cristalizada en dos textos fundamentales, el de la Banda de los Cuatro en 1995 (4) y la serie POSA (del inglés Pattern-Oriented Software Architecture) desde 1996. El primero de ellos promueve una expansión de la programación orientada a objetos, mientras que el segundo desenvuelve un marco más ligado a la AS.

La AS de este período realizó su trabajo de homogenización de la terminología, desarrolló la tipificación de los estilos arquitectónicos y elaboró lenguajes de descripción de arquitectura.

En el siglo XXI, la AS aparece dominada por estrategias orientadas a líneas de produc tos y por establecer modalidades de análisis, diseño, verificación, refinamiento, recuperación, diseño basado en escenarios, estudios de casos y hasta justificación económica, redefiniendo todas las metodologías ligadas al ciclo de vida en términos arquitectónicos. Todo lo que se ha hecho en ingeniería debe formularse de nuevo, integrando la AS en el conjunto.

Definiciones de Arquitectura de software

La arquitectura del software proporciona una visión global del sistema a construir. Describe la estructura y la organización de los componentes del software, sus propiedades y las conexiones entre ellos. Los componentes del software incluyen módulos de programas y varias representaciones de datos que son manipulados por el programa. Además, el diseño de datos es una parte integral para la derivación de la arquitectura del software. La arquitectura marca decisiones de diseño tempranas y proporciona el

mecanismo para evaluar los beneficios de las estructuras de sistema alternativas. (5) Se han propuesto muchas definiciones de arquitectura de software, a continuación se hace referencia a las

que se consideran las más acertadas.

Según Len Bass, Paul Clements y Rick Kazman:

―La arquitectura de software de un sistema de programa o computación es la estructura de las estructuras del sistema, la cual comprende los componentes del software, las propiedades de esos componentes visibles externamente, y las relaciones entre ellos.‖ (6)

Philippe Kruchten plantea:

―La arquitectura de software, tiene que ver con el diseño y la implementación de estructuras de software de

(15)

6

alto nivel. Es el resultado de ensamblar un cierto número de elementos arquitectónicos de forma adecuada para satisfacer la mayor funcionalidad y requerimientos de desempeño de un sistema, así como requerimientos no funcionales, como la confiabilidad, escalabilidad, portabilidad, y disponibilidad.‖ (7) La definición que se ha acordado como oficial es la provista por el documento de lEEE Std 1471-2000, que expresa:

―La Arquitectura del Software es la organización fundamental de un sistema formada por sus componentes, las relaciones entre ellos y el contexto en el que se implantarán, y los principios que orientan su diseño y evolución‖.

Ninguna definición de la AS es respaldada unánimemente por la totalidad de los arquitectos;

independientemente de las discrepancias entre las diversas definiciones, es común entre todos los autores el concepto de la arquitectura como un punto de vista que concierne a un alto nivel de abstracción. El concepto de abstracción es tomado en el sentido de extraer las propiedades esenciales o examinar selectivamente ciertos aspectos de un problema, posponiendo o ignorando los detalles menos sustanciales o irrelevantes.

La arquitectura no es el software operacional. Es la representación que capacita al ingeniero del software para: analizar la efectividad del diseño para la consecución de los requisitos fijados, considerar las alternativas arquitectónicas en una etapa en la cual hacer cambios en el diseño es relativamente fácil y reducir los riesgos asociados a la construcción del software. (5)

1.2 Atributos de Calidad

Los atributos de calidad son los aspectos del sistema, que en general, no afectan directamente a la funcionalidad necesaria, sino que definen la calidad y las características que el sistema debe soportar.

Estas características o atributos se conocen con el nombre de atributos de calidad, los cuales se definen como las propiedades de un servicio que presta el sistema a sus usuarios. (8)

1.2.1 Atributos de calidad seleccionados

En el proyecto se realizó la evaluación del diseño arquitectónico de la plataforma mediante el método de Revisiones Activas para Diseños Intermedios (ARID), como parte de la evaluación se seleccionaron los siguientes atributos: Disponibilidad, Seguridad y Confidencialidad, por ser estos los que garantizan la seguridad de la plataforma. Este método arroja además un listado de escenarios asociados a los atributos seleccionados los cuales se mencionan en el epígrafe relacionado con las vulnerabilidades de la plataforma.

(16)

7

La información de la plataforma es sensible y es importante que cuando existan fallas en el sistema, este se pueda restaurar de forma rápida y eficiente.

A continuación se analizarán cada uno de estos atributos.

1.2.2 Atributo de calidad Disponibilidad

Define la proporción del tiempo que el sistema es funcional y trabaja. Puede ser medido como un porcentaje del tiempo total en que el sistema estuvo caído en un periodo predefinido. Es el grado en que un dato está en el lugar, momento y forma en que es requerido por el usuario autorizado. (9)

Significa que el sistema informático, se mantiene funcionando eficientemente y que puede recuperarse rápidamente en caso de fallo, por errores del sistema, problemas de infraestructura, ataques o carga del sistema, de lo contrario significa denegación del servicio, de hecho muchos ataques de virus existentes consiste no en el borrado de la información sino en el bloqueo de esta. (10)

Mecanismos de disponibilidad

Los mecanismos de disponibilidad son aquellos mecanismos que copian los datos en tiempo real del servidor de la aplicación de producción a un servidor independiente, asegurando que una copia secundaria de la base de datos esté siempre disponible.

La interfaz intuitiva de usuario permite a los administradores programar rápidamente que las tareas de replicación se realicen de forma continua, mientras los archivos se crean o se modifican. Si el servidor principal falla, los administradores pueden colocar el servidor independiente en línea rápidamente o copiar la réplica de la base de datos a un nuevo servidor de aplicación. (10)

 Réplica de datos

Este mecanismo lo que hace es que se duplican los datos por lo que aumentan su confiabilidad.

Cuando falla una computadora, se pueden obtener los datos extraídos de otras computadoras. Los usuarios no dependen de la disponibilidad de una sola fuente para sus datos. Una tercera ventaja, es que los sistemas distribuidos pueden variar su tamaño de un modo más sencillo.

Se pueden agregar computadoras adicionales a la red conforme aumentan el número de usuarios y su carga de procesamiento. A menudo es más fácil y más barato agregar una nueva computadora más pequeña que actualizar una computadora única y centralizada, lo cual logra una mejor disponibilidad ya que de todo objeto estará disponible por lo menos una copia, al menos para propósito de recuperación.

(17)

8

Después, si la carga de trabajo se reduce, el tamaño de la red también puede reducirse una mejor disponibilidad ya que de todo objeto estará disponible por lo menos una copia, al menos para propósito de recuperación. (10)

Los modelos de replicación son la forma en que se han llevado a la práctica el enfoque de replicación de datos por distintas empresas y entidades que los han adoptado. Se describen como un mecanismo que permite mantener copias actualizadas automáticamente (si fuese el caso) de los datos de un servidor de bases de datos en otros, los mismos servirán como base de la investigación a partir de los elementos más importantes identificados en cada uno de ellos. Existen dos modelos: Sincrónico y Asincrónico

Encontrándose asociados a ellos dos entornos:

Multi-Maestro Maestro-Esclavo

Figura 1: Réplica de datos.

Estos modelos y entornos, son utilizados en pares y asociativos, es decir, el modelo sincrónico o el asincrónico, con uno de los dos entornos: multi-maestro o el maestro-esclavo. Esencialmente surge el término de modelo de réplica para sincrónico y asincrónico, aplicados a los entornos de réplica para multi-maestro y maestro-esclavo.

Sincrónico

El término sincrónico, proviene de sincronía, que se entiende como un término que se refiere a coincidencia en el tiempo o simultaneidad de hechos o fenómenos. Otro significado que puede atribuírsele es el de ser simultáneo, que ocurre o se desarrolla a la vez que otra cosa.

El modelo de replicación sincrónico, también conocido como la réplica en tiempo real, surge a mediados de los años 80 y aplica cualquier cambio o ejecuta cualquier procedimiento reproducido en todos los sitios que participan en el ambiente de réplica como parte de una sola transacción. Si

(18)

9

el procedimiento falla en cualquier sitio, entonces la transacción entera se anula. La réplica sincrónica asegura la consistencia de datos en todos los sitios en tiempo real.

Algunas características que presenta este modelo son:

 Actualiza ―almacenes‖ de datos al mismo tiempo. Cada transacción solamente es aceptada si todos los sistemas implicados en la réplica están conectados y listos para recibirla, Si alguno falla, todo el proceso es anulado.

 Muy fiable e ideal para recuperarse ante desastres.

 Obviamente: alto impacto en la red. Poco escalable y caro Asincrónico

La replicación asincrónica, a menudo llamada almacena-y-reenvía o Descarga y Recarga, captura cualquier cambio local, los almacena en una cola y a intervalos regulares, propaga y aplic a estos cambios en sitios remotos. Con esta forma de réplica, hay un período de tiempo antes de que todos los sitios alcancen la convergencia de datos.

Este modelo consiste también en hacer un volcado de los datos, copiar la salva para un dispositivo de almacenamiento para luego distribuir la salva por los demás servidores. Esta técnica presenta el inconveniente de que en la mayoría de las ocasiones se consultan datos que tienen semanas de des-actualización, además de que el proceso se realiza de forma manual. Este modelo presenta otras características como son:

 Las escrituras se hacen en un ―maestro‖ y con el tiempo se propagan a varios ―esclavos‖.

 Económico, escalable y flexible.

 Mayor probabilidad de pérdida de datos.

Se puede combinar perfectamente con los entornos de réplica, de acuerdo a los intereses de quien lo utilice, teniendo en cuenta los problemas que surgen una vez compuestos. Estos no dependen explícitamente del entorno, sino del modelo como tal, en este caso el asincrónico, llegando a sur gir más inconvenientes que en el sincrónico.

Funciones principales:

 Proporciona protección de datos continua y permanente para aplicaciones SQL y Exchange, lo que minimiza el tiempo sin funcionamiento o la pérdida de datos debido a pérdida o falla del servidor.

(19)

10

 Reduce significativamente el impacto de la pérdida del servidor en las operaciones comerciales al asegurar que las aplicaciones SQL y Exchange cuenten con copias de respaldo y operen con el mínimo tiempo sin funcionamiento.

 Ayuda a los administradores a hacer más con menos al mejorar la protección de las aplicaciones SQL y Exchange, así como los niveles de servicio, sin aumentar la carga laboral. (10)

 Recuperación en caso de fallas

Debido a que los archivos se mantienen tanto en memoria principal como en el disco, se debe asegurar que un fallo del sistema no dé por resultado la perdida de datos o inconsistencia en los mismos.

Una técnica muy usada para asegurar la disponibilidad de los datos es realizar respaldos periódicos. Hacer con regularidad una o más copias de los archivos y colocarlas en lugar seguro.

También existe la posibilidad del respaldo incremental:

 Durante una sesión de trabajo los archivos modificados quedan marcados.

 Cuando un usuario se retira del sistema (deja de trabajar), un proceso del sistema efectúa el respaldo de los archivos marcados.

Se debe tener presente que es muy difícil garantizar una seguridad absoluta de los archivos.

El método correcto de manejar fallos consiste básicamente en detectarlos a tiempo y de forma correcta. La inclusión de equipos de test en el sistema es esencial para mantener esta capacidad de monitorización.

En cualquier caso, la caída total o parcial del sistema se puede subsanar en parte si hay puntos de restauración del sistema. Esta posibilidad aumenta la disponibilidad de recuperación en caso de fallos. (11)

 Copia de seguridad

Este mecanismo funciona mediante la realización de copias sistemáticas que asegura la disponibilidad de los datos del sistema pero no los protege de los errores cometidos por los usuarios, ni de desastres naturales, tales como incendios, inundaciones o incluso terremotos.

Independientemente del daño que se produzca, es fundamental que el mecanismo de copia de seguridad implementado esté diseñado para asegurar la continuidad y recuperación de todos los datos importantes de una compañía, sin interrumpir el funcionamiento del sistema informático. Por lo tanto, lo aconsejable es diseñar estratégicamente un mecanismo de copia de seguridad,

(20)

11

indicando de qué datos se hará copia y con qué frecuencia para restablecer el funcionamiento normal en el caso de que surja algún problema.

Además, un mecanismo de copia de seguridad también se puede utilizar para almacenar archivos, es decir, para guardar datos en un estado que corresponda a una cierta fecha.

 Tipos de copia de seguridad

Existen distintos tipos de copias de seguridad, por lo general, se dividen en las siguientes categorías:

 Copia de seguridad completa

 Copia de seguridad diferencial

 Copia de seguridad incremental

 Copia de seguridad delta Copia de seguridad completa

El propósito de una copia de seguridad completa es realizar una copia fiel de los datos en un medio aparte. Aún as í, en grandes volúmenes de datos, la copia de seguridad completa puede ser lenta (si los datos se modifican durante este proceso) y puede causar problemas de disponibilidad ya que crea discos de acceso pesados, grandes, e incluso costosos, teniendo en cuenta la capacidad que se necesita. Por otra parte, la copia de seguridad completa proporciona una imagen fiable de los datos a través del tiempo.

La copia de seguridad diferencial

Se centra específicamente en los archivos que han sido modificados desde la última c opia de seguridad completa, lo que hace que esta copia de seguridad sea más lenta y costosa en cuanto a espacio de almacenamiento que la copia de seguridad incremental pero a su vez es más fiable ya que en la copia de seguridad completa se necesita restaurar los datos copiados.

Copia de seguridad incremental

La copia de seguridad incremental consiste en copiar todos los elementos que han sido modificados desde la copia de seguridad anterior. Este tipo de copia es más eficaz que una copia de seguridad completa porque se centra específicamente en los archivos modificados y requiere menos espacio de almacenamiento. Pero, por otro lado, es necesario contar con las copias de seguridad anteriores para restaurar la copia de seguridad completa.

Copia de seguridad delta

(21)

12

La copia de seguridad delta consiste en una copia de seguridad incremental de elementos de los datos con gran detalle de datos, es decir, se guardan bloques de datos en lugar de archivos individuales. (12)

1.2.3 Atributo de calidad Seguridad

Seguridad informática es un conjunto de medidas ( administrativas, organizativas, físicas, técnicas legales y educativas) dirigidas a prevenir, detectar y responder a las acciones que pongan en riesgo la integridad, confidencialidad y disponibilidad, de la informatización que se procesa, intercambie, reproduzca o conserve a través de las tecnologías de la información. (13)

El término seguridad informática es una generalización para un conjunto de tecnologías que ejecutan ciertas tareas relativas a la seguridad de los datos. ISO, en su norma 7498, define la seguridad informática como una serie de mecanismos que minimizan la vulnerabilidad de bienes y recursos, donde un bien se define como algo de valor y la vulnerabilidad se define como la debilidad que se puede explotar para violar un sistema o la información que contiene. El bien más preciado por cualquier institución es la información y de ahí que se han desarrollado protocolos y mecanismos adecuados, para preservar su seguridad.

La seguridad informática, son técnicas desarrolladas para proteger los equipos informáticos individuales y conectados en una red frente a daños accidentales o intencionados. Estos daños incluyen el mal funcionamiento del hardware, la pérdida física de datos y el acceso a bases de datos por personas no autorizadas. Diversas técnicas sencillas pueden dificultar la delincuencia informática. (14)

A la hora de desarrollar una aplicación, generalmente se centran más en la funcionalidad que en la seguridad. Lo que trae como consecuencia que los atacantes se aprovechen de esto y atenten contra cualquiera de estos cuatro aspectos. En la seguridad de apl icaciones juegan un papel fundamental los procesos de autenticación y autorización, ya que permiten un mejor control en el acceso a la información.

Estos principios deben formar parte de la política de seguridad de la institución. La política se refleja en una serie de normas, reglamentos y protocolos a seguir, donde se definen las distintas medidas a tomar para proteger la seguridad del sistema, las funciones y responsabilidades de los distintos componentes de la organización y los mecanismos para controlar su correcto funcionamiento.

Mecanismos de Seguridad

No existe un único mecanismo capaz de proveer todos los servicios anteriormente citados, pero la mayoría de ellos hacen uso de técnicas criptográficas basadas en el cifrado de la información. Los más importantes son los siguientes:

(22)

13

 Autenticación: requiere una identificación correcta del origen del mensaje, asegurando que la entidad no es falsa. Se distinguen dos tipos: de entidad, que asegura la identidad de las entidades participantes en la comunicación, mediante biométrica (huellas dactilares, identificación de iris, etc.), tarjetas de banda magnética, contraseñas, o procedimientos similares; y de origen de información, que asegura que una unidad de información proviene de cierta entidad, siendo la firma digital el mecanismo más extendido.

 Cifrado: garantiza que la información no es inteligible para individuos, entidades o procesos no autorizados (confidencialidad). Consiste en transformar un texto en claro mediante un proceso de cifrado en un texto cifrado, gracias a una información secreta o clave de cifrado. Cuando se emplea la misma clave en las operaciones de cifrado y descifrado, se dice que el criptosistema es simétrico.

Estos sistemas son mucho más rápidos que los de clave pública, resultando apropiados para funciones de cifrado de grandes volúmenes de datos. Se pueden dividir en dos categorías:

cifradores de bloque, que cifran los datos en bloques de tamaño fijo (típicamente bloques de 64 bits), (15) y cifradores en flujo, que trabajan sobre flujos continuos de bits. Cuando se utiliza una pareja de claves para separar los procesos de cifrado y descifrado, se dice que el criptosistema es asimétrico o de clave pública. Una clave, la privada, se mantiene secreta, mientras que la segunda clave, la pública, puede ser conocida por todos. De forma general, las claves públicas se utilizan para cifrar y las privadas, para descifrar. El sistema tiene la propiedad de que a partir del conocimiento de la clave pública no es posible determinar la clave privada. Los criptosistemas de clave pública, aunque más lentos que los simétricos, resultan adecuados para las funciones de autenticación, distribución de claves y firmas digitales. (16)

 Integridad de datos: este mecanismo implica el cifrado de una cadena comprimida de datos a transmitir, llamada generalmente valor de comprobación de integridad. Este mensaje se envía al receptor junto con los datos ordinarios. El receptor repite la compresión y el cifrado posterior de los datos y compara el resultado obtenido con el que le llega, para verificar que los datos no han s ido modificados. (17)

 Firma digital: Una firma digital es un conjunto de datos asociados a un mensaje que permite asegurar la identidad del firmante y la integridad del mensaje. La firma digital no implica que el mensaje esté encriptado, es decir, que este no pueda ser leído por otras personas; al igual que cuando se firma un documento holográficamente este sí puede ser visualizado por otras personas,

(23)

14

este mecanismo implica el cifrado, por medio de la clave secreta del emisor, de una cadena comprimida de datos que se va a transferir. La firma digital se envía junto con los datos ordinarios.

Este mensaje se procesa en el receptor, para verificar su integridad. Juega un papel esencial en el servicio de no repudio.

La firma digital es el resultado de un procedimiento realizado con una clave numérica llamada clave privada la cual es creada por un algoritmo de generación de claves el cual se encarga de generar junto con la clave privada una segunda clave denominada clave pública que funciona como complemento de esta clave privada, el firmante genera mediante una función matemática una huella digital del mensaje. Esta huella digital se encripta con la clave privada del firmante, la cual el firmante debe mantener bajo su exclusivo control y el resultado es lo que se denomina firma digital la cual se enviará adjunta al mensaje original. De esta manera el firmante va a estar adjuntando al documento una marca que es única para ese documento y que sólo él es capaz de producir.

El receptor del mensaje podrá comprobar que el mensaje no fue modificado desde su creación y que el firmante es quién dice serlo a través del siguiente procedimiento: en primer término generará la huella digital del mensaje recibido, luego desencriptará la firma digital del mensaje utilizando la clave pública del firmante y obtendrá de esa forma la huella digital del mensaje original; si ambas huellas digitales coinciden, significa que el mensaje no fue alterado y que el firmante es quien dice serlo.

¿Cómo se ve una firma digital?

A la vista, una firma digital se representa por una extensa e indescifrable cadena de caracteres, esta cadena representa en realidad un número el cual es el resultado de aplicar cierto algoritmo matemático, denominado función hash, a su contenido. (18)

1.2.4 Atributo de calidad Confidencialidad

La confidencialidad es un atributo de calidad indispensable porque asegura que la información no pueda estar disponible para personas, usuarios o procesos no autorizados. La confidencialidad asegura la protección de los datos e información contra cualquier persona que no deba acceder a estos recursos, lo que es lo mismo decir: documentos internos sobre estrategias que requieren que la información sea accesible únicamente por los usuarios autorizados. La confidencialidad de datos se aplica a todos los datos intercambiados por los usuarios autorizadas o tal vez a sólo porciones o segmentos seleccionados de los datos, por ejemplo mediante cifrado.

(24)

15

La confidencialidad de flujo de tráfico protege la identidad del origen y destino(s) del mensaje, por ejemplo enviando los datos confidenciales a muchos destinos además del verdadero, así como el volumen y el momento de tráfico intercambiado, por ejemplo produciendo una cantidad de tráfico constante al añadir tráfico espurio al significativo, de forma que sean indistinguibles para un intruso. La desventaja de estos métodos es que incrementan drásticamente el volumen de tráfico intercambiado, repercutiendo negativamente en la disponibilidad del ancho de banda bajo demanda. (19)

Algunas de las características que se utilizan para medir que un sistema sea confiable es que tienen que ser:

 Resistente: El sistema seguirá proporcionando al usuario un servicio si se produce una interrupción interna o externa.

 Recuperable: Tras una interrupción por parte del usuario o del sistema, el sistema se puede restaurar fácilmente, mediante la instrumentación y el diagnóstico, a un estado conocido anteriormente sin pérdida de datos.

 Controlado: Proporciona un servicio preciso y oportuno siempre que se necesita.

 Ininterrumpible: Los cambios necesarios y las actualizaciones no interrumpen el servicio que proporciona el sistema.

 Preparado para la producción: Al ponerse en servicio, el sistema contiene errores mínimos, lo que requiere un número limitado de actualizaciones previsibles.

 Predecible: Funciona del modo previsto o prometido, y tal como funcionaba antes lo hace ahora.

(20)

Mecanismos de Confidencialidad

 Control de acceso: mecanismo que se utiliza para que sólo aquellos usuarios autorizados accedan a los recursos del sistema o a la red, como por ejemplo mediante las contraseñas de acceso. Este mecanismo lo que plantea es que solo tenga acceso a la información el personal que está autorizado a utilizarla, el que no tenga ese permiso o acceso no puede acceder a la misma. El mecanismo de control de acceso se usa en el acceso a los objetos e indica la forma en que puede llevarse a cabo. Los componentes básicos de estos mecanismos son entidades, objetos y derechos de acceso. Los derechos de acceso delimitan los privilegios, las condiciones y la manera como las entidades pueden acceder a los objetos. Por norma general, los sistemas actuales disponen de las

(25)

16

herramientas necesarias para determinar estos derechos de acceso, aunque por razones prácticas suele generalizarse el acceso por agrupaciones de objetos.

En las agrupaciones se crean grupos de entidades y objetos, y se asigna al grupo unos derechos de acceso determinados. De este modo el derecho de acceso se basa en la pertenencia a un grupo. Es posible que una entidad o un objeto pertenezcan a más de un grupo. Las listas de acceso se asocian a los objetos e identifican a las entidades que tienen derechos de acceso. La lista puede incluir, además, el tipo de acceso que se otorga a cada entidad. Similares a las anteriores las listas de capacitación asocian a cada entidad una lista en la que se relacionan los objetos a los que tiene acceso, y el modo en que lo tienen. Por último, los mecanismos de bloqueo asignan a cada objeto una clave que cada entidad debe demostrar que conoce para poder acceder a él. (21)

1.3 Arquitectura de la Plataforma alasGRATO

La arquitectura de la plataforma alasGRATO presenta una arquitectura basada en componentes bien definida. En la figura siguiente se muestra una vista global de la misma. Figura 2 (22)

Figura 2: Visión global de la arquitectura.

Como se observa, el sistema contará con un servidor donde se coordinarán las peticiones realizadas por los clientes. Estas peticiones serán realizadas por las computadoras (PC) clientes a través del protocolo

(26)

17

SOAP. Desde el servidor se realizará la conexión a la BD, extrayendo los datos para realizar el trabajo.

Una vez obtenida la información, el servidor se encargará de enviar el trabajo al conjunto de

PC que componen el cálculo distribuido bioGRATO. Concluidas estas operaciones, el servidor elabora la respuesta que es enviada a la PC del usuario, esta la visualiza y así termina el proceso.

En caso de que la petición realizada por el cliente requiera gran capacidad de cálculo, el trabajo se enviará a una GRID externa, donde se procesará la información.

1.4 Vulnerabilidades de la plataforma alasGRATO

A pesar que la arquitectura de la plataforma está bien definida y estable, la misma presenta un conjunto de vulnerabilidades como se mencionó anteriormente, uno de los problemas que presenta es que a la hora de utilizar la plataforma cualquier usuario puede acceder a los servicios que brinda la misma aunque no tenga permisos, otro problema es que en caso de fallas (eléctricas, técnicas o de cualquier otro índole) se afecta el acceso a la información contenida en la base de datos.

1.5 Herramientas y tecnologías utilizadas

El presente trabajo está enmarcado dentro del proyecto ―Plataforma para la predicción de actividad biológica de compuestos orgánicos‖, el cual tiene su arquitectura definida en trabajos anteriores. (22) Es por ello que en este epígrafe sólo se abordarán las herramientas y las tecnologías ya definidas.

1.5.1 Metodología: OpenUP

Como metodología de desarrollo se utilizará OpenUP por ser un proceso ágil y ligero que promueve el desarrollo del software a través de las mejores prácticas, haciéndolo un proceso pequeño y extensible (si es necesario). Debido a sus características y a que se utiliza para proyectos pequeños, fue decisión del polo de Bioinformática utilizar esta metodología. A continuación se muestran un conjunto de características de esta metodología.

OpenUP es un proceso de desarrollo de software de código abierto que aplica propuestas iterativas e incrementales dentro del ciclo de vida, tratando de ser manejable en relación con el RUP. Se valora la colaboración y el aporte de los stakeholders sobre los entregables y la formalidad innecesarios. OpenUP está organizado dentro de cuatro áreas principales de contenido: Comunicación y Colaboración, Intención, Solución, y Administración. OpenUP se caracteriza por cuatro principios básicos que se soportan mutuamente:

(27)

18

 Colaboración para alinear los intereses y un entendimiento compartido: el software es creado por personas con diferentes intereses y habilidades quienes trabajan juntos para crear software eficientemente.

Hay que desarrollar prácticas que fomenten un ambiente de equipo saludable que permita la colaboración efectiva, lo cual encuadra los intereses de los participantes del proyecto (equipo de desarrollo, aseguramiento de la calidad, stakeholders del producto, clientes) y ayude a los participantes del proyecto a desarrollar un entendimiento compartido del proyecto.

 Balance para confrontar las prioridades (necesidades y costos técnicos) para maximizar el valor para los stakeholders: los participantes del proyecto y los stakeholders deben colaborar para desarrollar una solución que maximice el beneficio y cumpla con las restricciones planteadas en el proyecto. Lograr un balance es un proceso dinámico porque si los stakeholders y los participantes del proyecto aprenden más acerca del sistema, entonces sus prioridades y restricciones cambian.

 Enfoque en articular la arquitectura para facilitar la colaboración técnica, reducir los riesgos y minimizar excesos y trabajo extra: sin un fundamento arquitectónico, un sistema evolucionará en una forma ineficiente y casual. Tal sistema frecuentemente presenta dificultades para evolucionar, reutilizarse o integrarse sin una reconstrucción sustancial. Esto también dificulta organizar el equipo o comunicar las ideas sin el enfoque técnico común que la arquitectura proporciona.

Hay que usar la arquitectura como un punto focal para que los desarrolladores alineen sus intereses e ideas, articulando las decisiones técnicas esenciales a través de una arquitectura creciente.

 Evolución continúa para reducir riesgos, demostrar resultados y obtener retroalimentación de los clientes: usualmente no es posible conocer todas las necesidades de los stakeholders, ser consciente de todos los riesgos, comprender todas las tecnologías del proyecto, o saber como trabajar en equipo. Aún si fuese posible conocer todas estas cosas, es probable que cambien durante la vida del proyecto.

Se dividirá el proyecto en proyectos más pequeños, iteraciones enmarcadas en tiempo para demostrar valor incremental y obtener retroalimentación temprana y continua. (22)

1.5.2 Lenguaje de modelado: UML

El Lenguaje de Modelado Unificado (UML - Unified Modeling Language) es un lenguaje que permite modelar, construir y documentar los elementos que forman un producto de software que responde a un enfoque orientado a objetos. Este lenguaje fue creado por un grupo de estudiosos de la Ingeniería de

(28)

19

Software formado por: Ivar Jacobson, Grady Booch y James Rumbaugh en el año 1995. Desde entonces, se ha convertido en el estándar internacional para definir, organizar y visualizar los elementos que configuran la arquitectura de una aplicación orientada a objetos. UML no es un lenguaje de programación, sino un lenguaje de propósito general para el modelado orientado a objetos. También puede considerarse como un lenguaje de modelado visual que permite una abstracción del sistema y sus componentes. (22) 1.5.3 Herramientas CASE: Visual Paradigm

Como herramienta CASE se empleó Visual Paradigm. Es una herramienta UML profesional que soporta el ciclo de vida completo del desarrollo de software: análisis y diseño orientados a objetos, construcción, pruebas y despliegue. El software de modelado UML ayuda a una más rápida construcción de aplicaciones de calidad, mejores y a un menor coste. Permite dibujar todos los tipos de diagramas de clases, código inverso, generar código desde diagramas y generar documentación. La herramienta UML CASE también proporciona abundantes tutoriales de UML, demostraciones interactivas de UML y proyectos UML.

Se caracteriza por lo siguiente:

 Visual Paradigm es una Herramienta Case que soporta las últimas versiones del mismo, (Lenguaje de Modelado Unificado) y la Notación y Modelado de Procesos de Negocios. Desde un Grupo Administrador de Objetos.

 En adición al soporte de Modelado UML esta herramienta provee el modelado de procesos de negocios, además de un generador de mapeo de objetos -relacionales para los lenguajes de programación Java .NET y PHP.

 Se integra con las siguientes herramientas Java:

Eclipse/IBM WebSphere

JBuilder

NetBeans IDE

Oracle JDeveloper

BEA Weblogic

Visual Paradigm para UML es apoyado por un conjunto de idiomas tanto en la generación del código como en la Ingeniería Inversa por mencionar algunos ejemplos los cuales tiene la capacidad de soporte podríamos hablar de Java, C + +, CORBA IDL, PHP, XML Schema, Ada y Python. Además, apoya la generación del código C #, VB. NET, Object Definition Language (ODL), Flash ActionScript, Delphi, Perl, C - Objetivo, y Ruby. (22)

(29)

20

1.5.4 Lenguaje de programación: Java

El lenguaje de programación Java es un lenguaje de propósito general, concurrente, basado en clases y orientado a objetos. Su diseño fue concebido para que los programadores puedan lograr fluidez con el lenguaje.

Java ofrece toda la funcionalidad de un lenguaje potente, pero sin las características menos usadas y más confusas de éstos. C++ es un lenguaje que adolece de falta de seguridad, pero C y C++ son lenguajes más difundidos, por ello, Java se diseñó para ser parecido a C++ y así facilitar un rápido y fácil aprendizaje, además, el mismo elimina muchas de las características de otros lenguajes como C++, para mantener reducidas las especificaciones del lenguaje y añadir características muy útiles como el gárbage collector (reciclador de memoria dinámica o recolector de basura). No es necesario preocuparse de liberar memoria, el reciclador se encarga de ello y como es un thread (hilo) de baja prioridad, cuando entra en acción, permite liberar bloques de memoria muy grandes, lo que reduce la fragmentación de esta. Una de las características más importante de Java es que posee una arquitectura neutral, es decir el compilador Java compila su código a un fichero objeto de formato independiente de la arquitectura de la máquina en que se ejecutará. Cualquier máquina que tenga el sistema de ejecución (run-time) puede ejecutar ese código objeto, sin importar en modo alguno la máquina en que ha sido generado.

Actualmente existen sistemas run-time para Solaris 2.x, SunOs 4.1.x, Windows 95, Windows NT, Linux, Irix, Aix, Mac, Apple y probablemente haya grupos de desarrollo trabajando para la portabilidad a otras plataformas.

Más allá de la portabilidad básica por ser de arquitectura independiente, Java implementa otros estándares de portabilidad para facilitar el desarrollo. Los enteros son siempre enteros y además, enteros de 32 bits en complemento a 2. Java, además, construye sus interfaces de usuario a través de un sistema abstracto de ventanas, de forma que ellas puedan ser implantadas en entornos Unix, PC o Mac. (22)

1.5.5 Entornos de desarrollo: Eclipse

Eclipse es un poderoso entorno integrado de desarrollo (IDE) que permite la construcción de aplicaciones en Java. Admite la incorporación de otros plug-ins para obtener un mayor número de funcionalidades.

Tiene, además, los beneficios siguientes:

 Es una herramienta de código abierto.

 Soporta herramientas que manipulan diferentes tipos de lenguajes, como por ejemplo Java, C, C++, PHP entre otros.

(30)

21

 Corre en una gran cantidad de sistemas operativos incluyendo Windows y Linux.

 Provee a los desarrolladores, herramientas (ej.- PDE) que facilitan la creación de plug-ins.

A las características señaladas se suman: la capacidad de ser soportado para distintas arquitecturas, control de versiones con cvs o con subversión, resaltado de sintaxis, autocompletado, tabulador de un bloque de código seleccionado, asistentes (wizards): para la creación, exportación e importación de proyectos; para generar esqueletos de códigos (templates), permite la integración con la herramienta CASE (Computer Aided Software Engineering, Ingeniería de Software Asistida por computadoras) Visual Paradigm.

Por todas estas razones fue seleccionado Eclipse como IDE para el desarrollo de la solución a implementar. (22)

1.5.6 Servidor de aplicaciones: Tomcat

Tomcat (también llamado Jakarta Tomcat o Apache Tomcat) funciona como un contenedor de servlets desarrollado bajo el proyecto Jakarta en la Apache Software Foundation. Tomcat implementa las especificaciones de los servlets y de JavaServer Pages (JSP) de Sun Microsystems. Es un servidor de aplicaciones que implementa las tecnologías Java para servlets y páginas JSP. Un servidor de aplicaciones, a diferencia de un servidor Web, como es Apache, incluye un contenedor Web que permite servir páginas dinámicas.

El servidor Tomcat es más liviano en el sentido que ocupa menos memoria y se puede levantar y bajar más rápidamente. Dado que Tomcat fue escrito en Java, funciona en cualquier sistema operativo que disponga de la máquina virtual Java. Tomcat no funciona con cualquier servidor web con soporte para servlets y JSPs. Tomcat incluye el compilador Jasper, que compila JSPs convirtiéndolas en servlets. El motor de servlets del Tomcat a menudo se presenta en combinación con el servidor web Apache. Se seleccionó el Tomcat como servidor de aplicaciones pues entre otras características, puede funcionar como servidor Web por sí mismo. Este consume menos recursos que otros servidores de aplicaciones; es gratis y cuenta con un gran número de usuarios y soporte en la comunidad mundial. (22)

1.5.7 Gestor de Base de Datos: MySql

MySql es un sistema de gestión de bases de datos relacional, fue creada por la empresa sueca MySql AB, la cual tiene el copyright del código fuente del servidor SQL, así como también de la marca.

MySql es un software de código abierto, licenciado bajo la GPL de la GNU, aunque MySql AB distribuye una versión comercial, en lo único que se diferencia de la versión libre, es en el soporte técnico que se

(31)

22

ofrece, y la posibilidad de integrar este gestor en un software propietario, ya que de otra manera, se vulneraría la licencia GPL.

El lenguaje de programación que utiliza MySql es Structured Query Language (SQL) que fue desarrollado por IBM en 1981 y desde entonces es utilizado de forma generalizada en las bases de datos relacionales.

(23)

Características principales

Inicialmente, MySql carecía de algunos elementos esenciales en las bases de datos relacionales, tales como integridad referencial y transacciones. A pesar de esto, atrajo a los desarrolladores de páginas web con contenido dinámico, debido a su simplicidad, de tal manera que los elementos faltantes fueron complementados por la vía de las aplicaciones que la utilizan. Poco a poco estos elementos faltantes, están siendo incorporados tanto por desarrolladores internos, como por desarrolladores de software libre.

En las últimas versiones se pueden destacar las siguientes características principales:

 El principal objetivo de MySql es velocidad y robustez.

 Soporta gran cantidad de tipos de datos para las columnas.

 Gran portabilidad entre sistemas, puede trabajar en distintas plataformas y sistemas operativos.

 Cada base de datos cuenta con 3 archivos: Uno de estructura, uno de datos y uno de índice y soporta hasta 32 índices por tabla.

 Aprovecha la potencia de sistemas multiproceso, gracias a su implementación multihilo.

 Flexible sistema de contraseñas (passwords) y gestión de usuarios, con un muy buen nivel de seguridad en los datos.

 El servidor soporta mensajes de error en distintas lenguas. (23) 1.5.8 Herramienta KEYTOOL y JARSIGNER

La herramienta keytool crea pares de claves públicas y privadas, certificados autoafirmados, y gestiona almacenes de claves. La herramienta keytool permite a los usuarios administrar sus propias claves públicas y privadas, así como certificados correspondientes para su uso en la autenticación (donde el usuario se autentica a s í mismo a otros usuarios / servicios) o de integridad de datos y servicios de autenticación mediante firmas digitales, la integridad de los datos. Lo cual significa que los datos no ha sido modificado o alterado y que los datos proviene de quien dice haber creado y firmado.

La herramienta de jarsigner utiliza la información de un almacén de claves para generar o verificar la firma digital para Java Archive (JAR), (los paquetes de archivos JAR son clases de archivos, imágenes,

(32)

23

sonidos, y / o otros datos digitales en un solo archivo). Jarsigner verifica la firma digital de un archivo JAR, con el certificado que lo acompaña (que está incluido en el bloque de firma de archivo del archivo JAR), y, a continuación, comprueba si la clave pública de este certificado es "de confianza", es decir, figura en el almacén de claves especificado.

Las herramientas keytool y jarsigner reemplazan completamente la herramienta javakey previstas en el JDK 1.1. Estas nuevas herramientas ofrecen más ventajas que javakey, incluyendo la capacidad para proteger el almacén de claves y claves privadas con contraseñas, y la capacidad de verificar las firmas, además de generarlas. (24)

1.6 Conclusiones parciales del capítulo

En este capítulo se han abordado temas relacionados con la arquitectura de software, atributos de calidad y herramientas de desarrollo, con el objetivo de brindar a la Plataforma alasGRATO seguridad interna y externa, disponibilidad y confidencialidad a sus datos. Después de haber realizado un estudio de estos temas y teniendo en cuenta las vulnerabilidades de la plataforma se llega a la siguiente conclusión.

Para lograr la disponibilidad de los datos y evitar la pérdida de la información debido a fallas de cualquier tipo se escogen los mecanismos de réplica de datos (sincrónica) y copias de seguridad (completa), los cuales proporcionan protección de datos, minimizando el tiempo sin funcionamiento o la pérdida de datos del servidor en caso de imprevistos, reduce significativamente el impacto de la pérdida del servidor en las operaciones al asegurar que las aplicaciones de base de datos cuenten con copias de respaldo y operen con el mínimo tiempo sin funcionamiento.

Para asegurar la autenticidad de los usuarios que interactúan con la plataforma y permitir el acceso de los mismos a los servicios se utilizarán los mecanismos de control de acceso, el cual protege al sistema de usos no autorizados o manipulación de servicios no disponibles para todos los niveles de acceso, y la firma digital la cual se transmite junto a los datos lo que permite verificar la autenticidad e integridad de los mismos.

(33)

24 CAPÍTULO 2: DISEÑO DE LA SOLUCIÓN

Introducción

En este capítulo se realiza el diseño de la solución propuesta mediante la aplicación de los métodos y herramientas seleccionadas para cumplir con los atributos de calidad exigidos.

También se muestra cómo utilizar las herramientas keytool y jarsigner, como crear almacenes de claves (keystore) y claves (key). Además como configurar el servidor de aplicaciones Tomcat para el uso de las mismas, así como las ventajas de utilizar firewall y antivirus en la PC donde esta desplegado el servidor.

Además de cómo como realizar las réplicas de datos y las copias de seguridad de la información que se encuentra en el servidor de base de datos.

2.1 Aplicación del mecanismo utilizado en el atributo Seguridad

La aplicación del mecanismo firma digital para garantizar la seguridad de la plataforma se realizará firmando los plug-ins que utiliza la plataforma alasGRATO para garantizar que los mismos fueron desarrollados por el equipo de desarrollo de alasGRATO, esto va ser de gran utilidad ya que permite al usuario verificar que el plug-ins que va a utilizar es auténtico y no ha sido modificado, de esta forma se verifica la integridad y autenticidad de este.

Para lograr una mayor seguridad de la plataforma alasGRATO también se firmarán los servicios desplegados en el servidor de aplicaciones, esto va ser de gran utilidad porque le permite al usuario verificar que el servicio que va a utilizar es auténtico y no ha sido modificado, esto ocurre gracias al ambiente de ejecución de JAVA que permite determinar cuando un servicio no tiene el acceso a los recursos del sistema del usuario, no puede por ejemplo tener acceso al disco duro, ya sea para guardar, eliminar o leer alguna información. Al estar firmado el servicio, es decir el archivo .WAR se verifica la integridad y la autenticidad del mismo el cual por determinación del usuario puede dar o no el acceso a los recursos del sistema.

Con la firma de los plug-ins y los servicios se logra la protección de los recursos e información que se encuentren en la PC cliente ya que pueden haber sido manipulado o modificado por algún atacante y este haber incluido en alguno de estos archivos código maligno que pueda afectar la información que se encuentra en la PC cliente.

En los epígrafes siguientes se describen los pasos a seguir para realizar estos procedimientos.

(34)

25

2.1.1 Firma de los plug-ins

La firma digital de los plug-ins que utiliza la plataforma alasGRATO se realizará con la aplicación Signer.

Esta aplicación utiliza, del par de llaves (pública y privada generados por la clase KeyPairGenerator del paquete java.security para el algoritmo DSA), la llave privada se usa para realizar la firma digital y a su vez la llave pública para la verificación. Utiliza además una instancia de la clase Signature la cual se encuentra en el paquete java.security. La firma se realiza con el algoritmo SHA1withDSA, al cual se accede a través de la instancia que se crea de la clase Signature.

La firma consiste en obtener el contenido del archivo MANIFEST.MF del plug-in a firmar. Este contenido es firmado utilizando la llave privada y la instancia de Signature que se tiene y es guardado en un archivo llamado SIGN.SG. Este archivo SIGN.SG, es incluido sin comprimir dentro del plug-in en el momento de su creación.

Se escogió el archivo MANIFEST.MF porque el plug-in al ser un archivo .jar tiene que tenerlo pues de no ser así no se podría utilizar como plug-in. También se tuvo en cuenta que este archivo es diferente para cada archivo .jar por lo que ninguna firma coincide con otra.

La aplicación Signer contiene tres input files como muestra la figura 3, en el primero se busca la dirección del plug-in a firmar, en el segundo la dirección de la clave privada con la que se procederá a firmar el archivo SING.SG y finalmente en el tercer input files la dirección del archivo SING.SG. Luego se da clic en el botón crear y queda firmado el archivo SING.SG que posteriormente se incluirá en el plug-in sin comprimir.

(35)

26

Figura 3: Aplicación Signer.

2.1.2 Verificación de los plug-ins firmados

La verificación es realizada con la llave pública del par generado en la firma del plug-in (ver epígrafe anterior) y una instancia de Signature la cual se encuentra en el paquete java.security. Con esta instancia accedemos al algoritmo SHA1withDSA con el cual se realizó la firma y con el se realiza también la verificación.

Para verificar se accede al contenido del archivo SIGN.SG el cual se encuentra en el plug-in firmado y contiene la firma del mismo y utilizando la instancia de Signature y la llave pública es realizada la verificación del mismo.

2.1.3 Firma de los Servicios

Para realizar la firma de los servicios se propone el uso de las herramientas keytool y jarsigner. Estas son dos herramientas de línea de comandos y una interfaz gráfica de usuario basada en la herramienta denominada Policy Tool que hace uso de herramientas de las implementaciones de almacén de claves (Keystore).

A continuación se muestra una serie de comandos utilizados para el uso de estas herramientas.

 Crear las variables de entorno

Para la utilización de las herramientas keytool y jarsigner de java es necesario la creación de variables de entorno. Para ello se siguen los siguientes pasos:

Paso 1: Se ubica el jdk o jre en la PC. Figura 4

Figura 4: Ubicación del jdk o jre en la PC.

Paso 2: Clic derecho sobre Mi PC Propiedades, luego se entra en la pestaña de Opciones Avanzadas y finalmente se da clic en el botón Variables de entorno. Figura 5

(36)

27

Figura 5: Ubicación de las variables de entorno.

Paso 3: Se creará una variable de entorno llamada: JAVA_HOME y el valor para esta variable será:

―C:\Archivos de programa\Java\jdk1.6.0_03\bin‖ y finalmente se acepta. Figura 6

Figura 6: Creación de la variable de entorno JAVA_HOME.

(37)

28

Paso 4: Ahora se modifica la variable ―PATH‖ agregando el siguiente valor: ―%JAVA_HOME%‖ y se termina aceptando las ventanas. Figura 7

Figura 7: Creación de la variable de entorno PATH.

Paso 5: Para comprobar si ya se han extendido los comandos se introduce el siguiente comando de java: ―java –versión‖ en la ventana de comandos de Windows y se debe mostrar el siguiente resultado: Figura 8

Referencias

Documento similar

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

Sanz (Universidad Carlos III-IUNE): "El papel de las fuentes de datos en los ranking nacionales de universidades".. Reuniones científicas 75 Los días 12 y 13 de noviembre

(Banco de España) Mancebo, Pascual (U. de Alicante) Marco, Mariluz (U. de València) Marhuenda, Francisco (U. de Alicante) Marhuenda, Joaquín (U. de Alicante) Marquerie,

6 Para la pervivencia de la tradición clásica y la mitología en la poesía machadiana, véase: Lasso de la Vega, José, “El mito clásico en la literatura española

d) que haya «identidad de órgano» (con identidad de Sala y Sección); e) que haya alteridad, es decir, que las sentencias aportadas sean de persona distinta a la recurrente, e) que

De hecho, este sometimiento periódico al voto, esta decisión periódica de los electores sobre la gestión ha sido uno de los componentes teóricos más interesantes de la

La siguiente y última ampliación en la Sala de Millones fue a finales de los años sesenta cuando Carlos III habilitó la sexta plaza para las ciudades con voto en Cortes de

Las manifestaciones musicales y su organización institucional a lo largo de los siglos XVI al XVIII son aspectos poco conocidos de la cultura alicantina. Analizar el alcance y