Caso de Estudio: Sistema de Distribución de Información Correo Electrónico Universidad de Los Andes PARTE II. Análisis de Necesidades de Seguridad en Transacciones Asistente Graduado: Víctor Guana ([email protected]). Universidad de Los Andes Departamento de Ingeniería de Sistemas y Computación Infraestructura Computacional ISIS 2203 (C1) Caso 2 Análisis de Necesidades de Seguridad en Transacciones Preparado por: Asistente Graduado Víctor Guana. Objetivos: Identificar los requerimientos de seguridad de las transacciones involucrados en la infraestructura tecnológica del sistema de recepción y envío de correo electrónico de la Universidad de los Andes y plantear soluciones a los mismos Construir un prototipo a escala del sistema que permita enfrentar algunos de los requerimientos de seguridad detectados. Descripción General: En la primera parte del caso se presentó el sistema de recepción y envío de correos electrónicos de la Universidad de Los Andes, adicionalmente usted como consultor dimensionó la infraestructura que consideró necesaria dadas sus características y requerimientos. Sin embargo se dejó de lado la evaluación de los requerimientos de seguridad que se involucran en la construcción de la solución. En esta segunda parte del caso se desarrollará esta temática, desde el punto de vista de las necesidades de la infraestructura computacional, hasta parte de la arquitectura de la solución. Problemática: Como se observó en el caso anterior la principal tarea del sistema de correo es interactuar con sistemas y usuarios externos, entre estos servidores de intercambio de otras organizaciones (siendo estas abiertas o cerradas en términos organizacionales, o si se prefiere públicas o privadas), en general el sistema de correo tiene que interactuar con 4 agentes para sus funciones fundamentales. 1. Recepción y envío de correo externo relacionados con el dominio @uniandes.edu.co, 2. Recepción y envío de correo interno del dominio respectivo, 3. Recuperación de correos y retribución de los mismos a clientes web, 4. Recuperación de correos y retribución de los mismos a clientes de escritorio. Dado lo anterior es evidente que surgen diversos problemas de seguridad en cada una de las transacciones que entran y salen del sistema, en este orden de ideas es necesaria una evaluación de la seguridad en las transacciones para mitigar vulnerabilidades y amenazas que configuran riesgos tales como: Repudio de transacciones. Espionaje de transacciones. Suplantación de identidad en la realización de transacciones. Integridad de información dentro de las transacciones. Su tarea en este caso es actuar como consultor para analizar, desde el punto de vista de la seguridad, las transacciones que pasan a través de la infraestructura computacional que usted diseñó en la resolución del Caso I. Para este fin usted necesitará tener el Caso I totalmente desarrollado, en especial el punto A del mismo y realizar las tareas que se presentan a continuación. Tareas: A. Análisis y Entendimiento del Problema. 1. Dadas cada una de las transacciones caracterizadas en la primera parte del caso, y suponiendo que el sistema no tiene previsto ningún mecanismo de protección: - Identifique las amenazas del sistema anterior. - Identifique las vulnerabilidades del sistema anterior, teniendo en cuenta únicamente aspectos técnicos (no organizacionales o de procesos). Identifique vulnerabilidades no sólo en lo relacionado con la comunicación sino también con el almacenamiento de los datos (cómo se almacenan, en dónde, cómo se cargan en memoria, entre otros). Tanto en el caso de las amenazas como de las vulnerabilidades tenga en cuenta solamente aspectos relacionados con: Repudio Espionaje Suplantación de identidad Falta de integridad de la información Explique clara y detalladamente sus respuestas 2. Modele un escenario de riesgo para cada ítem del punto 1 para cada transacción. El escenario debe tener los siguientes elementos: Fuente de Amenaza, Fuente de vulnerabilidad, Consolidación del Riesgo, y Ambiente. B. Propuesta de Soluciones. 3. Proponga mecanismos de mitigación (vulnerabilidades o amenazas) con el fin de impedir la consolidación del riesgo. Establezca en cada uno de los casos identificados en los puntos 1 y 2 mecanismo(os) específico(os) y justifique (los mecanismos propuestos deben ser detallados). Tenga en cuenta aspectos relacionados con: - Eficacia - Costo - Eficiencia - Flexibilidad - Aspectos prácticos - Otros que considere conveniente considerar Evalúe si con el plan de mitigación los riesgos se consolidan a pesar de la vulnerabilidad y amenaza que los conforman (si se mitigan explique cómo, retome los escenarios planteados en el punto anterior). 4. Analice el impacto que las soluciones planteadas agregan al sistema y la infraestructura en términos de necesidades infraestructurales y transacciones (adicionales a las planteadas en el caso 1). Replantee el diagrama de infraestructura según dichas necesidades (¿se necesitan máquinas adicionales para responder a requerimientos funcionales de su solución?, ¿es necesaria la introducción de elementos de infraestructura adicionales para responder a atributos de calidad (tiempos de respuesta, consumo de recursos, entre otros) generados por su solución? C. Análisis e Implementación de Prototipo. 1. Su tarea consiste en construir un cliente de correo electrónico de escritorio (bajo la tecnología JAVA SE) que sepa entenderse con un servidor de correo externo, en este caso usaremos Gmail (mail.google.com). Es pre-requisito que usted cuente con al menos dos cuentas de correo dentro de este proveedor. El cliente a construir deberá, 1. Ser capaz de enviar mensajes mediante el protocolo SMTP, 2. Ser capaz de recuperar los mensajes al cliente dado su cuenta mediante el protocolo POP3/IMAP. Hay que tener en cuenta que la comunicación con dicho sistema de correo usa SSL y su cliente debe ser construido para soportarlo. (Su solución deberá estar documentada con diagramas de clases y arquitectura, deberá tener una interfaz de usuario GUI basada en Java Swing, las funcionalidades del sistema desarrollado deberán ser distribuidas en entidades lógicas con bajo acoplamiento y alta cohesión) 2. Al cliente de correo realizado en el punto anterior se le van a agregar las siguientes funcionalidades: - A pesar de que servidores como el de Gmail utilizan SSL, y por lo tanto tienen protección contra el espionaje, hay algunos servidores que no lo usan. Se va entonces a agregar al cliente de correo la posibilidad de encriptar los mensajes enviados y desencriptar los recibidos. Lo que debe hacer entonces es agregar al cliente de correo desarrollado en el punto 1. la posibilidad de encriptar/desencriptar los mensajes. (a este nivel se deberá implementar un mecanismo de encripción así este sea redundante al canal de conexión SSL) Para poder desarrollar el punto anterior debe primero definir los siguientes aspectos: - ¿Qué tipo de encripción conviene usar, la simétrica o la asimétrica? Justifique. - ¿Qué mecanismo usar para que el emisor de un mensaje y el receptor puedan ponerse de acuerdo sobre la(s) llave(s) que se va(n) a usar para encriptar / desencriptar los mensajes? Justifique. - Se desea que los mensajes enviados puedan ser firmados y que se puedan verificar las firmas de los mensajes recibidos. Agregue al cliente de correo desarrollado en los puntos 1. Y 2. La posibilidad de firmar y verificar los mensajes enviados. Para poder desarrollar el punto anterior debe primero definir los siguientes aspectos: - ¿Qué mecanismo usar para que el emisor de un mensaje y el respectivo receptor puedan ponerse de acuerdo sobre las llaves que se van a usar para firmar y verificar las firmas? Justifique. - Para autenticar al emisor de un mensaje se van a usar el mecanismo HMAC1. El emisor de un mensaje debe entonces generar el HMAC correspondiente y el receptor debe entonces hacer la verificación correspondiente para autenticar al emisor. Para poder desarrollar el punto anterior debe primero definir los siguientes aspectos: ¿Qué mecanismo usar para que el emisor de un mensaje y el receptor puedan ponerse de acuerdo sobre la llave que se va a usar para generar / verificar el HMAC? 1 Hash-Based Message Authentication Code D. Pruebas 1. Realice un plan de pruebas para verificar el funcionamiento de su aplicación a nivel funcional y no funcional (para este fin es recomendable seguir el siguiente estándar, simplifíquelo y adáptelo para su solución IEEE 829 Standard for Software Test Documentation, recuerde, este estándar es una guía) 2. En una sesión adicional su sistema asegurado será entregada a otra pareja del curso con el fin de que este intente vulnerarla. Referencias: Web security, a step by step reference guide, Ed. Addison Wesley, 1998, Caps 2, 3, 4. Cryptography and network security, W. Stallings, Ed. Prentice Hall, 2003. Computer Networks 4ta Edición. Andrew S. Tanenbaum. Prentice Hall 2003, Caps 7, 8. Hardening Linux, James Turnbull, 2005, capítulo 8. Professional Windows Desktop and Server Hardening (Programmer to Programmer), Roger A. Grimes 2006, capítulo 11.