Contenidos

A. Objetivos

  • Describir la tecnologías de transmisión de Datos y sus implicaciones en la seguridad de la información.
  • Identificar las amenazas y conocer los potenciales ataques que pueden sufrir las aplicaciones distribuidas funcionando en Red.
  • Construir la infraestructura de seguridad necesaria en servicios y aplicaciones (certificados electrónicos, almacenes de seguridad, listas de revocación de certificados, etc).
  • Diseñar e implementar aplicaciones distribuidas con mecanismos de seguridad utilizando herramientas o plataformas abiertas como OpenSSL, Keytool, Java o Android.

B. Contenidos

Tema 1: Arquitecturas de Seguridad

El primer tema está estructurado en dos módulos. El primer módulo “Seguridad en las Tecnologías de Transmisión de Datos” es un módulo introductorio que mediante el análisis de las tecnologías de transmisión nos va a permitir entender que aspectos de estas tecnologías van a tener implicaciones en la seguridad de los datos.

En un segundo módulo, “Elementos de las Arquitecturas de Seguridad”, analizaremos en detalle qué es una Arquitectura de seguridad y de qué elementos consta. De forma simplificada podemos decir que una Arquitectura de Seguridad es una Arquitectura estructurada de Comunicaciones que incorpora en uno o varios de sus niveles mecanismos, funciones y protocolos de seguridad con el objetivo de ofrecer servicios de seguridad a las aplicaciones distribuidas.

Un concepto importante es el de protocolo de seguridad: Un protocolo de seguridad (o protocolo criptográfico) es un algoritmo distribuido definido por una secuencia de estados que especifican las acciones necesarias para que dos entidades alcancen un objetivo de seguridad.

Tema 2: Modelos de Seguridad en Red

La incorporación de servicios de seguridad en las redes de datos da lugar a varias soluciones concretas en Internet. Estas soluciones las llamamos Modelos de seguridad en Web.

Estas diferentes soluciones de seguridad consisten en implementar los servicios de seguridad en niveles ya existentes de la arquitectura TCP/IP, o bien, crear un nuevo nivel para implementar estos servicios. Una última alternativa, es implementar los servicios directamente en nuestra aplicaciones.

La primera solución proporciona seguridad en el mismo nivel IP de la arquitectura TCP/IP. Las aplicaciones de usuario estarán protegidas mediante servicios de seguridad que se implementa en el mismo nivel IP mediante cabecera adicionales del paquete IPv4 o cabeceras opcionales de los paquetes IPV6. Ejemplo de amplio uso serían los túneles de cifrado utilizados a nivel corporativo para comunicar de forma segura dos sucursales de la misma organización remotamente distantes.

Una segunda solución de seguridad es utilizar una capa adicional dentro de la arquitectura TCP/IP como es TLS (Transport Layer Security). Esta capa adicional permite a las aplicaciones de usuario obtener servicios de seguridad (canal confidencial, autenticación de usuario, integridad etc). Ejemplos claros son el acceso a servicios como Banca electrónica ..

Una última solución es implementar los servicios de seguridad en las propias aplicaciones de usuario y no utilizar (aunque no es excluyente) los dos modelos anteriores. Este sería el caso de aplicaciones de correo electrónico seguro.

Tema 3: Desarrollo de Aplicaciones con Servicios de Seguridad

En este tema eminentemente práctico se realizarán diferentes ejercicios prácticos en los que se van a manejar plataformas, herramientas y librerías de desarrollo de aplicaciones para la incorporación de servicios de seguridad: OpenSSL, Keytool, JCE (Java Cryptography Extension), JSSE (Java Secure Sockets Extension.

Las librerías de OpenSSL se utilizarán para crear la infraestructura de una CA (Certification AuThority). Utilizando esta herramienta crearemos certificados firmado por la CA, una base de datos certificados firmados, una lista de revocación de certificados etc).

La Herramienta Keytool de java se utilizará en combinación con OpenSSL para crear almacenes de seguridad en Java para implementar el protocolo TLS (Transport Layer Security). En este contexto se utilizará la extensión de  java denominada JSSE, Java Secure Sockets Extension. El API de JSSE define un conjunto de clases utilizadas para ejecutar las operaciones necesarias para invocar el protocolo SSL desde el código fuente de java.  Estas clases serán una extensión de las conocidas clases de sockets tradicionales.

La extensión de  java denominada JCE (Java Cryptography Extension) se utilizará para crear mecanismos de de cifrado simétrico y asimétrico, resúmenes (funciones hash), mecanismo de firma  y gestión de claves.

Todas las herramientas anteriores nos permitirán crear aplicaciones de seguridad en entornos java y Android como clientes/servidores TLS para utilizar en aplicaciones de comercio electrónico, aplicaciones de firma y validación de documentos o aplicaciones de acceso a Bases de datos con servicios de seguridad

D. Índice

  1.  Arquitecturas de Seguridad

1.1 Seguridad en las Tecnologías de Transmisión de Datos

1.2 Elementos de las Arquitecturas de Seguridad: Servicios, Mecanismos y Protocolos de Seguridad

  1. Modelos de Seguridad en Red

2.1  Nivel de Transporte Seguro (TLS, Transport Layer Security)

2.2 Aplicaciones Seguras: Comercio electrónico seguro, correo electrónico seguro s/mime, seguridad en aplicaciones Android

  1. Desarrollo de aplicaciones con servicios de seguridad

3.1 Plataformas, herramientas y librerías de desarrollo de aplicaciones: OpenSSL, Keytool, JCE (Java Cryptography Extension), JSSE (Java Secure Sockets Extension)

3.2 Gestión de Certificados y almacenes de seguridad

3.3 Código Manejo certificados

3.4 Protocolos de seguridad

3.5 Conexiones TLS (autenticación de cliente, certificados autofirmados/ firmados por una CA, configuración parámetros del protocolo)

3.6 Aplicaciones de Firma/verificación electrónica

3.7 Aplicaciones de comercio electrónico

3.8 Acceso confidencial y autenticado a Bases de Datos

3.9 Aplicaciones seguras en Android