Full text
i Universidad de Zaragoza Centro Politécnico Superior Proyecto Fin de Carrera Ingeniería de Telecomunicación EXTENDED HOME: ACCESO REMOTO A CONTENIDOS DEL HOGAR Autor: Manuel Buil Mur Directora: Marta Bel Martín Ponente: José Ruiz Mas Septiembre 2010 Parque Tecnológico Walqa Telefónica I+D
ii
iii EXTENDED HOME: ACCESO REMOTO A LOS CONTENIDOS DIGITALES DEL HOGAR RESUMEN El presente proyecto fin de carrera se enmarca dentro del proyecto CELTIC Feel@Home, el cual trata de crear una red avanzada de contenidos y servicios multimedia localizados en el hogar que finalmente acabe siendo adoptada por el mercado. Por tanto, está alineado con los últimos desarrollos en el campo de las ―smart homes‖ u hogares inteligentes. Concretamente, este proyecto se centra en la parte técnica, creando una red avanzada de contenidos. El proyecto se divide en varias etapas. La primera de ellas incluye el diseño y desarrollo del escenario local del hogar, el cual permite el control centralizado de todos los dispositivos y servidores multimedia del hogar. De este modo, el usuario consigue descubrir y reproducir en cualquiera de sus dispositivos contenido multimedia, independientemente de dónde se encuentre el servidor y el reproductor. Además, el proyecto incluye una sencilla red social. Ésta permitirá a los usuarios de cada hogar crear listas de amigos o grupos mediante las cuales poder compartir sus contenidos locales y reproducir los que les han sido compartidos. Para ello y para utilizar otras funcionalidades del sistema, se ha desarrollado una compleja aplicación web que ofrece de forma intuitiva los servicios del sistema. La siguiente etapa del proyecto, trata de interconectar todos los hogares. Para ello, desarrolla una red de forma que los contenidos compartidos puedan viajar de un hogar a otro de manera rápida y fiable. A su vez, permite al usuario acceder a los contenidos de su hogar remotamente a través de un dispositivo con acceso a internet. Para crear esta red se hace un estudio de las tecnologías más adecuadas para la interconexión de los hogares, seleccionando una de ellas en base a los requisitos de Feel@Home. Finalmente, el proyecto realiza el diseño e implementación de los elementos necesarios para lograr que el sistema sea interoperable con otra tecnología de interconexión de los hogares. En concreto, el sistema logra interoperar dos sistemas que basan esta interconexión entre hogares en VPN e IMS.
iv
v Índice de Contenidos CAPÍTULO 1 ...................................................................................................................................................... 1 INTRODUCCIÓN ................................................................................................................................................ 1 1.1. PRESENTACIÓN ................................................................................................................................................ 1 1.2. OBJETIVO Y ALCANCE DEL PROYECTO..................................................................................................................... 1 1.3. CONTEXTO ...................................................................................................................................................... 2 1.4. METODOLOGÍA DEL PROYECTO ............................................................................................................................ 2 1.5. ORGANIZACIÓN DE LA MEMORIA .......................................................................................................................... 4 CAPÍTULO 2 ...................................................................................................................................................... 5 ESCENARIOS ..................................................................................................................................................... 5 2.1. INTRODUCCIÓN ................................................................................................................................................ 5 2.2. ACCESO LOCAL A CONTENIDOS DEL HOGAR ............................................................................................................. 5 2.2.1. Objetivo ............................................................................................................................................... 5 2.2.2. Situación inicial .................................................................................................................................... 5 2.2.3. Escenarios ............................................................................................................................................ 5 2.3. ACCESO REMOTO A CONTENIDOS DEL HOGAR ......................................................................................................... 6 2.3.1. Objetivo ............................................................................................................................................... 6 2.3.2. Situación inicial .................................................................................................................................... 6 2.3.3. Escenarios ............................................................................................................................................ 6 2.4. COMPARTICIÓN DE CONTENIDOS ......................................................................................................................... 6 2.4.1. Objetivo ............................................................................................................................................... 6 2.4.2. Situación inicial .................................................................................................................................... 7 2.4.3. Escenarios ............................................................................................................................................ 7 2.5. INTEROPERABILIDAD .......................................................................................................................................... 7 2.5.1. Objetivo ............................................................................................................................................... 7 2.5.2. Escenarios ............................................................................................................................................ 8 CAPÍTULO 3 ...................................................................................................................................................... 9 DISEÑO DEL SISTEMA ....................................................................................................................................... 9 3.1. INTRODUCCIÓN ................................................................................................................................................ 9 3.2. REQUISITOS DEL SISTEMA ................................................................................................................................... 9 3.2.1. Requisitos de acceso a contenido local ................................................................................................ 9 3.2.2. Requisitos de acceso a contenido remoto ........................................................................................... 9 3.2.3. Requisitos de compartición ................................................................................................................ 10 3.2.4. Requisitos de seguridad ..................................................................................................................... 10 3.2.5. Requisitos de interoperabilidad ......................................................................................................... 10 3.3. ARQUITECTURA DEL SISTEMA ............................................................................................................................ 11 3.3.1. Arquitectura local .............................................................................................................................. 11 3.3.2. Arquitectura externa ......................................................................................................................... 14 3.4. DISEÑO DE LA INTEROPERABILIDAD ..................................................................................................................... 15 3.5. INTERACCIÓN DE LOS ELEMENTOS DE LA ARQUITECTURA ......................................................................................... 16 3.5.1. Reproducción de contenido local. ...................................................................................................... 17 3.5.2. Reproducción de contenido remoto ................................................................................................... 18 3.5.3. Acceso remoto al hogar ..................................................................................................................... 19 3.5.4. Compartición de contenidos .............................................................................................................. 20 3.5.5. Interacción entre elementos de la interoperabilidad. ........................................................................ 21 CAPÍTULO 4 .................................................................................................................................................... 23 IMPLEMENTACIÓN ......................................................................................................................................... 23 4.1. INTRODUCCIÓN .............................................................................................................................................. 23 4.2. IMPLEMENTACIÓN ESCENARIO LOCAL .................................................................................................................. 23
vi 4.2.1. Elementos UPnP ................................................................................................................................. 23 4.2.2. Catálogo ............................................................................................................................................ 24 4.2.3. Manager de comunidad .................................................................................................................... 24 4.2.4. Manager de sesiones ......................................................................................................................... 25 4.2.5. Manager de seguridad ...................................................................................................................... 25 4.3. INTERFAZ GRÁFICO DE USUARIO ......................................................................................................................... 25 4.3.1. Introducción ....................................................................................................................................... 25 4.3.2. Uso de la aplicación web ................................................................................................................... 26 4.3.3. Implementación de la aplicación web ............................................................................................... 27 4.3.4. Comunicación entre punto de control y aplicación web: Rest ........................................................... 27 4.4. IMPLEMENTACIÓN DE LA COMUNICACIÓN ENTRE HOGARES ..................................................................................... 28 4.4.1. Servidor Central ................................................................................................................................. 28 4.4.2. Pasarela Residencial .......................................................................................................................... 30 4.4.3. OpenVPN ........................................................................................................................................... 31 4.5. IMPLEMENTACIÓN DE LA COMPARTICIÓN DE CONTENIDO Y SU REPRODUCCIÓN ............................................................ 32 4.5.1. Introducción ....................................................................................................................................... 32 4.5.2. Implementación ................................................................................................................................. 32 4.6. SEGURIDAD EN LAS COMUNICACIONES ................................................................................................................ 33 4.6.1. Introducción ....................................................................................................................................... 33 4.6.2. Autenticación y registro del usuario .................................................................................................. 33 4.6.3. Cifrado ............................................................................................................................................... 34 4.7. INTEROPERABILIDAD ........................................................................................................................................ 34 4.7.1. Introducción ....................................................................................................................................... 34 4.7.2. Módulo de Interoperabilidad ............................................................................................................. 34 CAPÍTULO 5 .................................................................................................................................................... 37 CONCLUSIONES .............................................................................................................................................. 37 5.1. RESUMEN ..................................................................................................................................................... 37 5.2. TAREAS REALIZADAS EN EL PROYECTO ................................................................................................................. 37 5.3. DIFICULTADES ENCONTRADAS ........................................................................................................................... 37 5.4. POSIBLES AMPLIACIONES O MEJORAS .................................................................................................................. 38 ACRÓNIMOS .................................................................................................................................................. 39 BIBLIOGRAFÍA ................................................................................................................................................ 40
iv
v Índice de figuras Figura 1-1: Metodología en Y ........................................................................................ 3 Figura 1-2: Diagrama de Gantt ..................................................................................... 3 Figura 3-1 : Diagrama de entidades ............................................................................ 12 Figura 3-2 : Diagrama de componentes ...................................................................... 13 Figura 3-3 : Esquema de la arquitectura interhogar ................................................. 15 Figura 3-4 : Esquema de la interoperabilidad ............................................................ 16 Figura 3-5 : Diagrama de secuencia de la reproducción de contenido ..................... 17 Figura 3-6 : Diagrama de secuencia reproducción remota ....................................... 18 Figura 3-7 : Diagrama de secuencia del acceso remoto ............................................. 19 Figura 3-8 : Diagrama de secuencia de compartición ................................................ 20 Figura 4-1 : Tablas en la base de datos del hogar ...................................................... 24 Figura 4-2 : Estructura de MVC aplicado a Struts .................................................. 26 Figura 4-3 : Esquema de la comunicación usando Struts ......................................... 28 Figura 4-4 : Elementos que forman el servidor central ............................................. 29 Figura 4-5 : Tablas contenidas en la base de datos central ....................................... 30 Figura 4-6 : Descripción de la pasarela residencial ................................................... 30
Manuel Buil Mur Proyecto Fin de Carrera 6 2.3. Acceso remoto a contenidos del hogar 2.3.1. Objetivo Mediante un dispositivo con conexión a internet, estando fuera del hogar, ser capaz de: Descubrir los elementos multimedia que existen en el hogar. Reproducir los elementos descubiertos en cualquier dispositivo del hogar. Reproducir los elementos descubiertos en el terminal desde el que se conecta al sistema Feel@Home. 2.3.2. Situación inicial El usuario tiene varios dispositivos multimedia distribuidos por su hogar y conectados a una red local. Algunos de estos dispositivos guardan contenido multimedia (música, imágenes…). El usuario, que no se encuentra dentro de su hogar, se conecta a internet a través de un terminal avanzado que permite reproducir contenido. El hogar del usuario está suscrito al sistema Feel@Home. 2.3.3. Escenarios Escenario 1: Acceso remoto desde fuera del sistema Feel@Home El usuario conecta con el sistema Feel@Home desde fuera del hogar y es redireccionado a su hogar. Por tanto, el usuario consigue visualizar el contenido y los dispositivos que existen en ese momento en su hogar. Selecciona un contenido y lo reproduce en el dispositivo a través del cual está accediendo al sistema o en un reproductor de dentro de su hogar. Escenario 2: Acceso remoto desde dentro del sistema Feel@Home El usuario conecta con el sistema Feel@Home desde un hogar que tiene contratado el sistema y es redireccionado a su casa. De nuevo consigue ver el contenido y dispositivos de dentro de su hogar. Selecciona un contenido y lo reproduce bien en ese mismo dispositivo o en un reproductor de dentro del hogar desde el que accede. 2.4. Compartición de contenidos 2.4.1. Objetivo Desde cualquier lugar y a través de un dispositivo con conexión a la red Feel@Home en el hogar o con conexión a internet, ser capaz de: Agregar usuarios del sistema Feel@Home a una lista de amigos.
Manuel Buil Mur Proyecto Fin de Carrera 7 Crear grupos o unirse a grupos de usuarios. Compartir contenido del hogar con otros usuarios del sistema Feel@Home. Reproducir el contenido que le están compartiendo al usuario. 2.4.2. Situación inicial El usuario tiene varios dispositivos multimedia repartidos por su hogar. Al menos un dispositivo guarda contenido multimedia (música, imágenes…). El usuario está suscrito al sistema Feel@Home al igual que, al menos, un usuario conocido. 2.4.3. Escenarios Escenario 1: Compartir contenido con otros usuarios El usuario, a través de su PC, conecta con el sistema Feel@Home de su hogar. Selecciona el contenido que quiere compartir y comprueba que en su lista de contactos aparece la persona a la que quiere compartir. En caso contrario, añade a esta persona a su lista de contactos. Posteriormente, comparte el contenido con este usuario. Escenario 2: Compartir contenido con un grupo El usuario quiere compartir un contenido con un grupo al cual pertenece. Este grupo lo forman usuarios de Feel@Home. El usuario, a través de un dispositivo con conexión al sistema Feel@Home, selecciona el contenido que quiere compartir. Posteriormente, elige el grupo al que quiere compartir el contenido y lo comparte. Escenario 3: Reproducir contenido compartido con el usuario El usuario conecta a través de su móvil de última generación con el sistema Feel@Home. Selecciona un contenido que ha sido compartido con él y lo reproduce. La reproducción se lleva a cabo tal y como si el contenido estuviera en su hogar. 2.5. Interoperabilidad 2.5.1. Objetivo Desde cualquier lugar y a través de un dispositivo con conexión a la red Feel@Home en el hogar o con conexión a internet, ser capaz de: Compartir contenido con un usuario que use IMS (IP Multimedia Subsystem) para la interconexión de los hogares.
Manuel Buil Mur Proyecto Fin de Carrera 8 Reproducir contenido compartido por un usuario que use IMS para la interconexión de los hogares. 2.5.2. Escenarios Los escenarios coinciden con los del apartado 2.4 compartición de contenidos. La única diferencia es que la persona que comparte y la persona a la que le es compartida un contenido, pertenecen a dos sistemas distintos (VPN e IMS).
Manuel Buil Mur Proyecto Fin de Carrera 9 Capítulo 3 Diseño del sistema 3.1. Introducción En este capítulo se tienen en consideración los diferentes escenarios descritos en el capítulo anterior para, a partir de ellos, extraer los requisitos de funcionamiento del sistema. Estos requisitos definen los objetivos que el desarrollador debe marcarse para conseguir que el sistema funcione. Una vez analizados los requisitos y apoyándose en ellos, se lleva a cabo un análisis de la arquitectura necesaria y se examinan las posibles tecnologías que pueden facilitar la implementación. Se hará un pequeño estudio del estado del arte disponible y teniendo en cuenta las condiciones que rodean al proyecto se tomará una decisión razonada sobre la mejor alternativa a usar. 3.2. Requisitos del sistema Los requisitos del sistema son divididos en cinco grupos. La abreviatura que apunta a cada requisito servirá para referenciarlo más adelante: 3.2.1. Requisitos de acceso a contenido local AL01 - Existe un catálogo que incluye los contenidos multimedia presentes en el hogar. AL02 - El usuario es capaz de buscar en el catálogo el contenido que quiere. AL03 - Los contenidos multimedia incluyen imágenes, videos y audio. AL04 - El catálogo debe ser actualizado cuando un nuevo dispositivo aparece, desaparece o modifica su contenido. AL05 - El usuario es capaz de ver los dispositivos dentro de su hogar. AL06 - El usuario es capaz de reproducir un contenido local en un dispositivo local. AL07 - El usuario es capaz de ver las sesiones multimedia que hay en el hogar. AL08 - El usuario es capaz de pausar, continuar o parar una sesión. 3.2.2. Requisitos de acceso a contenido remoto AR01 - El usuario es capaz de ver el contenido que le ha sido compartido AR02 - El usuario es capaz de reproducir y parar un contenido que le ha sido compartido.
Manuel Buil Mur Proyecto Fin de Carrera 10 AR03 - El usuario es capaz de acceder a los contenidos y dispositivos de su hogar desde fuera del sistema Feel@Home. 3.2.3. Requisitos de compartición CM01 - Existe una lista de amigos donde el usuario incluye sus usuarios amigos. CM02 - El usuario es capaz de buscar un amigo en su lista de amigos. CM03 - El usuario es capaz de añadir o eliminar amigos de su lista de amigos. CM04 - Existe una lista de grupos donde aparecen los grupos a los que el usuario pertenece. CM05 - Existe una lista de grupos donde aparecen los grupos que existen en el sistema. CM06 - El usuario puede ver la lista de grupos a los que pertenece y salir de ellos. CM07 - El usuario puede ver la lista de grupos disponibles en el sistema a los cuales no pertenece y unirse a uno de ellos. CM08 - El usuario puede crear un grupo. CM09 - El usuario es capaz de compartir contenido multimedia con su lista de amigos o grupos. CM10 - El usuario es capaz de descompartir contenido multimedia con su lista de amigos o grupos. 3.2.4. Requisitos de seguridad SG01 - El usuario es capaz de autenticarse tanto de manera local como remota en el sistema. SG02 - El usuario es capaz de registrarse en el sistema. SG03 - El hogar del usuario puede autenticarse en el sistema. SG04 - Las comunicaciones a través del sistema son seguras. 3.2.5. Requisitos de interoperabilidad IN01 - El usuario es capaz de compartir contenido con un usuario con un sistema Feel@Home que implementa la interconexión entre hogares con otra tecnología. IN02 - El usuario es capaz de ver el contenido que le ha compartido un usuario con un sistema Feel@Home que implementa la interconexión entre hogares con otra tecnología. IN03 - El usuario es capaz de incluir en su lista de amigos a un usuario con un sistema Feel@Home que implementa la interconexión entre hogares con otra tecnología. IN04 - El usuario es capaz de reproducir, pausar y parar la reproducción de un contenido compartido por un usuario con un sistema Feel@Home que implementa la interconexión entre hogares con otra tecnología.
Manuel Buil Mur Proyecto Fin de Carrera 11 3.3. Arquitectura del sistema 3.3.1. Arquitectura local Basándose en los escenarios y requisitos se extraen las siguientes entidades que deben existir en el sistema para cumplir los objetivos marcados: Administrador de contactos: Esta entidad es la encargada de almacenar todos los usuarios amigos o grupos que tienen relación con el usuario. Administrador de dispositivos: Es el encargado de descubrir y buscar los dispositivos dentro del hogar del usuario. Crea una lista para que el servicio Feel@Home conozca en todo momento los dispositivos disponibles. Administrador de sesión: Este objeto representa varias funcionalidades del sistema. Para empezar, constituye el mecanismo por el cual el usuario consigue enviar el contenido del servidor de contenidos al reproductor para que se reproduzca. Por otra parte, este objeto también es el utilizado para listar las reproducciones que se están ejecutando en el hogar dando la posibilidad de parar, pausar o volver a reproducir un contenido. Catálogo: Este objeto representa la lista de contenido multimedia a la que el usuario puede acceder localmente. El catálogo puede presentar información extra de los contenidos en forma de metadatos. Contenido multimedia: Unidad de datos a la que el servicio da acceso. Se trata de contenido de audio, imagen o video. Credenciales: Datos que permiten al usuario identificarse en el sistema. Dispositivo: Esta entidad representa todos los tipos de dispositivos que pueden encontrarse en el hogar: reproductores, servidores de contenido, terminales de acceso al sistema, etc. Reproductor: Elemento cuya función es la de reproducir el contenido multimedia almacenado en los dispositivos que guarden contenido. Servicio de Compartición: Esta entidad simboliza todos los mecanismos de compartición con otros usuarios que se dan en este sistema. Servicio F@H: Este elemento representa el servicio Feel@Home que el cliente contrata para su hogar. Es un elemento inmaterial. Servicio Remoto: Objeto que engloba los servicios que existen fuera del hogar. Este objeto permite el acceso remoto al hogar o la reproducción de contenido compartido por otros hogares. En la figura 3-1 se representa un diagrama de entidades donde aparecen todos los elementos definidos anteriormente y la relación que se da entre ellos [2].
Manuel Buil Mur Proyecto Fin de Carrera 12 Figura 3-1 : Diagrama de entidades Una vez consideradas las entidades y analizando todos los requisitos descritos para la parte del acceso a contenido local, se puede entrever que la solución deseada para la parte local es un sistema que interconecte de alguna manera todos los dispositivos multimedia del hogar. Asimismo, este sistema debería soportar funcionalidades extra que permitieran cumplir todos los requisitos expuestos, como por ejemplo la reproducción de contenido. Para crear el escenario local se ha elegido la tecnología UPnP (Universal Plug and Play) [3]. UPnP es una arquitectura de red abierta y distribuida que se basa en TCP/IP y en las tecnologías Web para permitir una conexión fluida entre dispositivos. Del mismo modo, proporciona mecanismos de control y transferencia de datos entre los dispositivos conectados mediante una red en el hogar, oficina y espacios públicos. En el mercado conviven con UPnP otras tecnologías que también podrían cubrir los requisitos. Principalmente existe otra arquitectura llamada Bonjour, la cual tiene buena aceptación por parte de usuarios y desarrolladores. La causa de la no elección de Bonjour a favor de UPnP es el hecho de que Bonjour sea una tecnología propietaria, puesto que es una marca comercial de Apple. Además, UPnP es una tecnología mucho más globalizada y asentada en el mercado, ya que los usos de Bonjour se limitan casi totalmente a entornos con dispositivos Apple. La tecnología UPnP define una arquitectura propia, en la cual destacan tres elementos: Punto de Control: El punto de control es el elemento clave dentro de UPnP ya que centraliza todas las comunicaciones que tienen relación con la reproducción de contenido. Sus principales funciones son las de descubrir y controlar los dispositivos UPnP que se encuentran en su red. Servicio F@H Credenciales Usuario Catalogo Servicio Remoto Reproductor Contenido Multimedia Administrador de dispositivos Dispositivos Administrador de sesión Comunica Catálogo del usuario Dispositivos de usuario Buscar Encuentra Envía contenido a Reproduce contenido Se guarda en Está instalado en Define Comprueba Accede Compone Administrador de contactos Crea Servicio de Compartición Utliliza Se basa en Sesiones del usuario
Manuel Buil Mur Proyecto Fin de Carrera 13 Servidor de contenidos: Este dispositivo almacena los contenidos multimedia, los cuales pueden ser de tres tipos: imágenes, audio o video. Para la comunicación con el punto de control ofrece diversos servicios de búsqueda de contenidos. Reproductor: Su función es la de reproducir el contenido multimedia almacenado en los servidores de contenido. Naturalmente, al adoptar UPnP como tecnología, la arquitectura de este proyecto se basa en la de UPnP y por lo tanto estos elementos pasan a formar parte de la arquitectura local del proyecto. Esta arquitectura, se incluye, además, los siguientes componentes: Manager de sesiones: Coincide con la entidad descrita en el apartado anterior llamada administrador de sesiones. Manager de comunidad: Este es el componente que lleva a cabo todas las tareas relacionadas con la compartición de contenido. En particular, almacena los amigos y grupos a los que pertenece el usuario e implementa el mecanismo de compartición de un contenido personal. Manager de seguridad: Cumple dos funciones esenciales para el sistema: el registro de nuevos usuarios y la autenticación del usuario en el sistema. Interfaz de usuario: Es el componente que presenta al usuario los servicios que proporciona el sistema. Al ofrecer todos los servicios disponibles, la interfaz de usuario debe comunicarse con la mayoría de componentes del hogar. En la figura 3-2 se puede observar el diagrama de componentes que refleja la arquitectura local del sistema. Figura 3-2 : Diagrama de componentes Dispositivo de acceso a la interfaz Interfaz de usuario Punto de Control Manager de sesiones Servidor de contenido Reproductor Acceso a la interfaz Comandos de sesiones Catálogo de dispositivos Control del reproductor Catálogo de contenidos Control del servidor Distribución de contenido Comandos de sesiones * Manager de comunidad Buscar amigos o grupos Compartir contenido Manager de seguridad Registro Autenticación * Reproducir, pausar o parar una reproducción.
Manuel Buil Mur Proyecto Fin de Carrera 14 Este sistema local está comunicado con el exterior a través de un servicio de acceso remoto, que será descrito en el siguiente apartado junto a todos los temas relacionados con comunicaciones externas. Llegados a este punto, puede observarse que algunos de los requisitos están ya cubiertos. Los requisitos AL01 y AL02 se cumplen ya que existe un catálogo creado por el punto de control. También los requisitos AL07 y AL08 son cubiertos, esta vez gracias al administrador de sesiones que ofrece los métodos necesarios. El manager de comunidad y el de contactos proporcionan que se cumplan todos los requisitos de compartición (CM01 – CM11). El manager de seguridad, en su caso, permite cubrir los requisitos SG02 y la parte local del SG01. Por otra parte, el hecho de usar la tecnología UPnP hace que se cumplan los requisitos AL03, AL04, AL05, AL06. 3.3.2. Arquitectura externa La arquitectura interhogar es la que permite al usuario acceder remotamente a su hogar y a los hogares comunicarse entre sí. En este caso, esta arquitectura va a seguir un modelo centralizado. Este modelo viene impuesto, ya que se necesita un elemento central en el sistema que desempeñe dos tareas claves. La primera, se trata de que haga de puerta de entrada a los usuarios que se conecten desde fuera del sistema, como se describe en el escenario 1 de acceso remoto a contenidos del hogar. La segunda, una posible tarificación, la cual no se implementa en este proyecto fin de carrera pero que se debería llevar a cabo si este sistema llegara a ser comercializado por Telefónica. Para comunicar los hogares entre sí o con este elemento central es necesario utilizar un componente dentro del hogar que haga de puerta de salida y entrada, el cual se denomina servicio de acceso remoto. El usuario podrá utilizar este componente para buscar y reproducir el contenido que le ha sido compartido y para acceder a los contenidos y dispositivos de su hogar remotamente. De este modo se cumplen los requisitos AR01, AR02 y AR03. Los componentes que compondrán la arquitectura externa serán: Interfaz de usuario: De nuevo es necesaria una interfaz de usuario para los usuarios que se conecten remotamente al sistema. Manager de seguridad: Por temas de seguridad es importante que además del usuario, el hogar deba identificarse en el sistema. Asimismo, el usuario que vaya a utilizar el sistema remotamente debe autenticarse. Manager de comunidad externo: Se trata de la extensión del manager de comunidad explicado en la parte local. Éste, en concreto, realiza dos tareas. La primera corresponde con la gestión de los grupos, la cual necesita ser centralizada, puesto que deben poder ser buscados o creados por todos los usuarios. La segunda corresponde a la compartición. Este componente será el que almacene la información de los usuarios que comparten y el que hará de intermediario en las comunicaciones entre hogares cuando pidan información sobre el contenido compartido.
Manuel Buil Mur Proyecto Fin de Carrera 15 Servicio de acceso remoto: Se trata del componente que permite la comunicación entre los hogares y entre el hogar y el servidor central. Entre sus funciones destaca la reproducción de contenido compartido remotamente entre hogares y el acceso remoto al hogar. Estos cuatro componentes se encuentran en el servidor central y el servicio de acceso remoto, además, estará alojado en un router avanzado llamado pasarela residencial incluido en cada hogar [4]. En la figura 3-3 se muestran los dispositivos la arquitectura interhogar. Figura 3-3 : Esquema de la arquitectura interhogar A partir de estos componentes puede asegurarse que los requisitos SG03 y la parte remota de SG01 se cumplen. Una vez concluido el diseño de la arquitectura del sistema, es el momento de tratar el problema de cómo interconectar todos los hogares entre sí y con el servidor central. El principal escollo a solucionar es qué tecnología se debe usar para comunicar todos los elementos de la arquitectura. Existen varias soluciones que pueden ser aceptables, sin embargo, la elección tomada es interconectar todos los elementos a través de VPN (Virtual Private Network), lo cual permite cubrir el requisito SG04. En el anexo C, se enumeran las diferentes tecnologías que se tuvieron en cuenta, centrándose en la explicación de sus ventajas e inconvenientes. 3.4. Diseño de la interoperabilidad Este proyecto basa la comunicación entre hogares en la tecnología VPN pero existen otras alternativas, tal y como se explica en el anexo C. Este hecho puede significar que quizás en un contexto distinto sea más oportuna la utilización de otra tecnología. Por otra parte, el objetivo del proyecto Feel@Home es conseguir que el mercado adopte este sistema por lo que puede ser una buena idea demostrar que es interoperable con otras tecnologías de comunicación entre hogares. En concreto, en este proyecto, se diseña e implementa la interoperabilidad entre VPN e IMS. La finalidad a cumplir es que todos los usuarios de Feel@Home sean capaces de usar el sistema de la misma forma sin importar la tecnología de conexión de hogares que exista. Por ejemplo, un Pasarela residencial Servidor central Pasarela residencial
Manuel Buil Mur Proyecto Fin de Carrera 22
Manuel Buil Mur Proyecto Fin de Carrera 23 Capítulo 4 Implementación 4.1. Introducción El capítulo de implementación trata de describir la parte más técnica del proyecto. Basándose en el capítulo de diseño, se explica todo el desarrollo hecho a lo largo del proyecto. 4.2. Implementación escenario local Este apartado se ocupa de la implementación del sistema dentro del hogar. Para una mayor claridad, se explica cada uno de los componentes involucrados en el escenario local, los cuales aparecen en la arquitectura ilustrada en la figura 3-2. 4.2.1. Elementos UPnP Tomando en consideración el diseño del escenario local, existen tres elementos UPnP descritos en esa misma parte. Aquí se detalla su implementación: 4.2.1.1. Punto de Control El punto de control sobre el que se va a basar este proyecto fue creado en su momento por David Cordón como Proyecto Fin de Carrera [5]. Este punto de control ofrece unas funcionalidades básicas de control de UPnP, las cuales son limitadas para cubrir todos los requisitos de este proyecto. Por eso, ha sido necesario llevar a cabo un desarrollo adicional, es decir, el punto de control final es una versión extendida del punto de control original. El punto de control está programado en Java y funciona en OSGi [6], por lo que todo el proyecto va a tener que girar en torno a este sistema modular y al lenguaje de programación Java. 4.2.1.2. Reproductor UPnP Se usó el reproductor AV Media Renderer de Intel. El AV Media Renderer de Intel es un reproductor UPnP incluido dentro de un paquete de herramientas UPnP llamado Intel ® Tools for UPnP Technology™ [7]. Estas herramientas son completamente libres y suponen una gran ayuda para comprobar el funcionamiento del sistema UPnP. 4.2.1.3. Servidor UPnP Se utilizó el servidor AV Media Server de Intel, el cual pertenece también al paquete de herramientas Intel Tools for UPnP Technology.
Manuel Buil Mur Proyecto Fin de Carrera 24 4.2.2. Catálogo Este elemento, que aparece en el diagrama de entidades de la figura 3-1, es el encargado de almacenar el contenido multimedia descubierto por el punto de control en la red. Para su implementación se ha usado una base de datos MySQL [8], la cual se divide en cuatro tablas. Tres de ellas guardan contenido: audio, imagen y video; la cuarta almacena las carpetas que son compartidas, como por ejemplo un álbum de música. La figura 4-1 representa un diagrama de bases de datos dónde se describe la base de datos local. El punto de control y el manager de comunidad son los encargados de acceder a estas tablas para buscar un contenido, crear una lista de los contenidos disponibles o compartir un contenido. 4.2.3. Manager de comunidad Este componente tiene dos cometidos. El primero es almacenar los amigos que tienen los usuarios del hogar en el sistema y los grupos a los que pertenecen. Para su implementación, se crearon dos tablas: ―friends‖ y ―groups‖. La tabla ―friends‖, representa la lista de amigos y está añadida dentro de la base de datos MySQL creada en el apartado anterior. Puede observarse en la figura 4-1. La tabla ―groups‖, representa la lista de grupos y se incluye dentro de la base de datos creada en el servidor central. Será explicada en detalle en el apartado de compartición. Figura 4-1 : Tablas en la base de datos del hogar A diferencia del catálogo, la tabla que representa los amigos y grupos no es modificada por el punto de control sino por la interfaz de usuario, ya que no tiene relación con eventos UPnP. El segundo cometido es compartir un contenido. Para lograrlo se programó un método en la interfaz que contacta con el catálogo e inserta en el campo correspondiente el permiso para que el usuario compartido pueda acceder a ese contenido. Music PK Id Title Artist Genre Owner SharedTo Videos PK Id Title Director Actors Genre Owner SharedTo Image PK Id Title Publisher Owner ShaedTo Folder PK Id Name Owner SharedTo Friends Username Friend
Manuel Buil Mur Proyecto Fin de Carrera 25 4.2.4. Manager de sesiones Este componente es el encargado de ejecutar la reproducción y modificarla (pausar o parar). Para su implementación, se ha tenido en cuenta la continua interacción que tiene con el punto de control y se ha implementado dentro de éste. Para crear la reproducción, el manager de sesiones envía una llamada UPnP de reproducción al reproductor en la que se le indican todos los parámetros necesarios sobre la ubicación del contenido. Tras ello, actualiza su lista de sesiones, las cuales están indexadas por un identificador. Cuando el usuario quiera modificar la sesión, el manager de sesiones accederá a esta lista, obtendrá la información necesaria, la actualizará y hará la llamada UPnP correspondiente al reproductor (pausar o parar). 4.2.5. Manager de seguridad Este componente, como se ha visto en la parte de diseño, ofrece dos servicios: registrar a nuevos usuarios y autenticar. Para implementar estos servicios, se ha creado un proyecto de OSGi que contiene dos métodos: registrar y autenticar. Estos, comunican con el servidor central para que compruebe en su tabla de usuarios la identidad del usuario o, en el caso del registro, introduzca una nueva entrada. Este proyecto, se instalará en el framework de OSGi junto con el punto de control. 4.3. Interfaz gráfico de usuario 4.3.1. Introducción Todo el sistema desarrollado no tendría sentido si el usuario no pudiera utilizarlo. El interfaz gráfico es el medio que tiene el usuario para interaccionar con el sistema y poder utilizar sus servicios. En este proyecto, el interfaz consiste en una aplicación web desplegada en un servidor web Tomcat 6.0 [9] que existe en cada hogar y en el servidor central. Para la implementación de esta aplicación web se ha utilizado la herramienta de desarrollo Struts [10], incluida en la plataforma J2EE. Esta herramienta sigue la arquitectura de diseño web Modelo- Vista-Controlador (MVC), la cual diferencia tres partes en una aplicación web: los datos que usa la aplicación (modelo), la interfaz de usuario (vista), y la lógica de control (controlador). La figura 4-2 muestra un esquema de este diseño aplicado a Struts.
Manuel Buil Mur Proyecto Fin de Carrera 26 Figura 4-2 : Estructura de MVC aplicado a Struts [11] 4.3.2. Uso de la aplicación web La aplicación web se divide en tres partes. La primera parte contiene las acciones que el usuario puede ejecutar localmente relacionadas con sus contenidos: Buscar contenido local. Esta opción puede hacerse de dos formas distintas: buscando por tipo de contenido (audio, imagen o video) o a través de las carpetas donde se almacenan en los servidores. Reproducir o compartir videos, imágenes o audio. Si la búsqueda de contenido es por carpetas, también es posible la compartición de carpetas. Pausar, continuar o parar sesiones locales en curso. Buscar información sobre los dispositivos existentes en el hogar. La segunda parte se ocupa de las funciones relacionadas con la compartición de contenidos: Conocer los usuarios que están compartiendo algo con el usuario. Reproducir los contenidos o carpetas compartidas con el usuario. Ver los contenidos o carpetas que se están compartiendo. Eliminar la compartición de contenidos o carpetas con otro usuario. La tercera y última parte permite al usuario utilizar todas las funciones disponibles relacionadas con la red social. En este caso el usuario puede: Añadir un nuevo usuario como amigo. Listar todos los usuarios que tiene como amigos pudiendo eliminarlos de la lista. Crear un grupo. Ver todos los grupos que existen en el sistema y poder unirse a ellos. Acceder a la lista de grupos a los que pertenece el usuario, con la posibilidad de borrarse de ellos.
Manuel Buil Mur Proyecto Fin de Carrera 27 En el anexo A, se extiende la explicación de esta interfaz de usuario a través de un manual de usuario en el cual puede observarse el verdadero potencial de la aplicación web mediante ejemplos concretos e imágenes. 4.3.3. Implementación de la aplicación web Para describir la implementación de la aplicación web, se explica brevemente cómo se desarrollaron las tres partes que existen en el modelo MVC descrito anteriormente. Respecto a la parte de la vista, su desarrollo requirió crear documentos jsp y html. En concreto se programaron 37 documentos jsp y html. Para lograr la representación gráfica deseada, se utilizaron lenguajes como javascript y html ayudados por scriptlets. Además, existe un documento CSS donde se almacenan los estilos a usar y diferentes imágenes e iconos que se insertan en la aplicación web para mejorar su apariencia. La parte del modelo es la más compleja y fue desarrollada íntegramente en Java. En este caso se diferencian dos tipos de clases, los Action y los ActionForm. Los Action son las clases que implementan la interacción del usuario con los elementos del sistema Feel@Home, como por ejemplo añadir un nuevo amigo en el administrador de contactos o realizar la llamada adecuada al punto de control para reproducir un contenido. Los ActionForm, son clases muy sencillas sin ningún método definido pero necesarias para la creación de formularios en Struts. La parte del controlador, está parcialmente definida al crear en Eclipse un proyecto Struts. Simplemente hubo que añadir ciertas entradas en el XML de configuración, el cual define las relaciones entre el modelo y la vista. 4.3.4. Comunicación entre punto de control y aplicación web: Rest Tal y como se ha descrito anteriormente, el punto de control es un módulo de OSGi mientras que la aplicación web se encuentra desplegada en un servidor Tomcat, lo cual impide la comunicación entre ellos. Para lograr esta comunicación se ha utilizado un componente de OSGi llamado Rest. Rest es un estilo de arquitectura de software orientado a la programación web, creado para trabajar en entornos de J2EE. Esta arquitectura define unas clases, llamadas recursos, que implementan métodos HTTP (get, post, delete…). Estos métodos http, a través de OSGi, realizan llamadas a los servicios que ofrece el punto de control (buscar contenido, reproducirlo…). Asimismo, Rest define una URL por cada recurso, de manera que la aplicación web simplemente tiene que llamar a la URL del recurso requerido usando un método HTTP para comunicarse con el punto de control. La figura 4-3 muestra un esquema del funcionamiento del sistema con Rest. Como puede observarse, en la aplicación web se crea un cliente Rest que será el que haga las llamadas HTTP a las URL ofrecidas por el servidor Rest.
Manuel Buil Mur Proyecto Fin de Carrera 28 Figura 4-3 : Esquema de la comunicación usando Struts 4.4. Implementación de la comunicación entre hogares Este apartado trata sobre la implementación de la comunicación de todos los hogares entre sí. En el capítulo de diseño se ha explicado que el sistema se basa en una arquitectura centraliza, por tanto, primero se describirá el elemento central y después el elemento del hogar que permite la comunicación con el exterior. Posteriormente, se especifica la implementación de las VPN. 4.4.1. Servidor Central El servidor central es el elemento central de la arquitectura. A través de él viajan todas las comunicaciones entre los hogares por lo que es un elemento bastante complejo. En un posible despliegue de este sistema, el servidor central sería un nodo dentro la red de internet que Telefónica tiene desplegada. Este nodo, además de disponer de recursos suficientes para no llegar a ser un cuello de botella, debería tener al menos dos interfaces, una para los usuarios de Feel@Home y otra para los usuarios fuera de Feel@Home que requieran acceso remoto a su hogar. Como se ha visto en el capítulo de diseño, está formado por cuatro componentes: manager de seguridad, interfaz de usuario, manager de comunidad externo y servicio de acceso remoto. Además, debe añadirse la parte de interoperabilidad. El manager de seguridad se basa en el software OpenVPN que implementa las VPN como se verá en el apartado de seguridad. El servicio de acceso remoto y el manager de comunidad externo son implementados como servicios web que usan una base de datos central. Estos servicios web están desplegados en un servidor web en el cual se encuentra la interfaz de usuario. En la figura 4-4, se puede ver un esquema de los elementos que forman el servidor central: Aplicacion Web CLIENTE REST MÉTODOS HTTP Servidor REST SERVIDOR HTTPRECURSOS Punto de Control API DEL PUNTO DE CONTROL OSGI
Manuel Buil Mur Proyecto Fin de Carrera 29 Figura 4-4 : Elementos que forman el servidor central 4.4.1.1. Servidor Web Se usa un servidor web Tomcat 6 en el cual están desplegados unos servicios web, un cliente web y la aplicación web que hace de interfaz con el usuario remoto. Los servicios web son el mecanismo que permite la comunicación entre el servidor central y los hogares. El servidor central ofrece unos métodos a través de los servicios web a los hogares, los cuales también ofrecen otros métodos que son consumidos por el cliente web del servidor central. La aplicación web es la que permite a usuarios que se encuentran fuera del sistema Feel@Home interaccionar con su hogar y en definitiva con el sistema. Esta aplicación es igual a la contenida en el hogar y simplemente cambia la comunicación con el punto de control del hogar. 4.4.1.2. Interoperabilidad Este elemento es el que facilita la interoperabilidad con IMS. Como se explicará en el apartado 4.7, este elemento es simplemente un servidor y un cliente Rest. 4.4.1.3. Servidor OpenVPN Este elemento es el que permite la creación de túneles VPN entre el hogar y el servidor central. Tal y como se definió en el capítulo de diseño, el transporte de datos entre hogar y servidor central es a través de VPN. Como se verá en el apartado 4.4.3, para la creación de estos túneles se utiliza un software llamado OpenVPN. Este software se basa en comunicaciones cliente-servidor, por lo que es trivial pensar que el servidor esté instalado en el servidor central. Servidor Central Interfaz Feel@Home Interfaz InternetInterfaz Feel@Home Interfaz Internet Servidor Web Servidor OpenVPN Interoperabilidad Servicios Web Aplicación Web Cliente Web API Interoperabilidad Package1 Base de datos
Manuel Buil Mur Proyecto Fin de Carrera 30 4.4.1.4. Base de datos El servidor central también contiene una base de datos MySQL. Esta base de datos guarda información esencial para los servicios de compartición y seguridad. En concreto contiene tres tablas: ―Share‖, ―Users‖ y ―Groups‖. En la figura 4-5 se pueden observar estas tablas. Figura 4-5 : Tablas contenidas en la base de datos central La tabla ―Users‖ almacena información de todos los usuarios del sistema. Concretamente, guarda el nombre de usuario, que servirá como identificador en el sistema, el nombre del hogar, la dirección IP y el password, que se usa para la autenticación. La tabla ―Groups‖ guarda el nombre, la descripción y los usuarios que se incluyen en los grupos que existen en el sistema. En la tabla ―Share‖ se almacena la información que detalla los usuarios que comparten contenido con otros. 4.4.2. Pasarela Residencial La pasarela residencial es el elemento del hogar que permite la comunicación con el servidor central. Se trata de un router avanzado que permite instalar aplicaciones en él. La pasarela implementa el componente llamado servicio de acceso remoto, el cual, como se ha explicado, comunica con el servidor central a través de servicios web. La figura 4-6 describe la pasarela residencial. Figura 4-6 : Descripción de la pasarela residencial Users PK Username Home Password IP Groups PK Name Description Users Share Owner SharedTo Servidor Central Pasarela Residencial Interfaz Feel@HomeInterfaz Feel@Home Cliente OpenVPNServidor Web Servicios Web Cliente Web Proxy
Manuel Buil Mur Proyecto Fin de Carrera 31 4.4.2.1. Servidor Web Como se ha señalado anteriormente, el servidor central y los hogares se comunican usando servicios web. Consecuentemente, es necesario un servidor web que contenga: Un cliente web que consuma los servicios que ofrece el servidor web del elemento central de la arquitectura. Los servicios web ofertados al elemento central. Además, puesto que la interacción con la aplicación web va a ser constante, se incluye la aplicación web en este servidor. 4.4.2.2. Proxy Este elemento es el que permite la comunicación de los elementos de la arquitectura local con el exterior. Desde el exterior, la única dirección conocida es la IP virtual de la pasarela residencial. Cuando, por ejemplo, se requiera acceder a un contenido, se usará esta IP virtual aunque el contenido no estará allí, si no en un servidor multimedia detrás de la pasarela. La pasarela, a través del proxy, se encarga de redireccionar correctamente esta comunicación de forma transparente para el usuario externo. 4.4.2.3. Cliente OpenVPN Como se ha apuntado previamente, los datos generados en la comunicación vía servicios web, viajan a través de túneles VPN. Todos los hogares cuentan con un cliente OpenVPN instalado en sus respectivas pasarelas residenciales, el cual conecta con el servidor OpenVPN para establecer los túneles. 4.4.3. OpenVPN Para la implementación de las VPN se buscó un software fiable, fácil de usar y que soportara unos protocolos de seguridad adecuados. OpenVPN, además de todas estas características, añade que es un software libre y ampliamente usado, ya que es multiplataforma. OpenVPN se basa en una arquitectura servidor/cliente y permite la creación de redes privadas virtuales con multitud de opciones. En el anexo B se exponen las diferentes opciones de configuración que existen además de una explicación detallada de la seguridad que implementa. En el proyecto, tal como se ha descrito, los clientes OpenVPN son instalados en la pasarela residencial de los hogares mientras que el servidor es instalado en el servidor central. Uno de los puntos fuertes de OpenVPN es la seguridad que implementa, tanto para el cifrado como para la autenticación, los cuales serán comentados en el apartado 4.6.
Manuel Buil Mur Proyecto Fin de Carrera 38 El primero de ellos se trata de las modificaciones hechas al punto de control. Este elemento es clave en UPnP y consecuentemente se trata del elemento más complejo de esta tecnología. Además, debe recordarse que el punto de control se tomó de un Proyecto Fin de Carrera, lo que supuso la necesidad de realizar un estudio en detalle sobre su funcionamiento para después desarrollar las modificaciones. El segundo problema más complejo desde mi punto de vista fue la creación de la aplicación web. Esta aplicación ofrece muchos servicios e interacciona con multitud de datos que deben ser presentados al usuario correctamente. La necesidad de utilizar alguna vez AJAX o JavaScript supuso una dificultad extra a la ya de por sí complicada aplicación web desarrollada. Asimismo, hay que tener en cuenta la variedad de tecnologías empleadas en este proyecto y que no han sido estudiadas en la carrera, lo que ha supuesto una dificultad añadida. 5.4. Posibles ampliaciones o mejoras El sistema resultante es un sistema acabado pero es posible añadir nuevas funcionalidades que mejorarían el sistema en varios aspectos. Por una parte, podría cambiarse el sistema de autenticación de manera que en vez de usar una autenticación por usuario y contraseña el usuario pudiera autenticarse mediante un dispositivo o un sistema biométrico. De esta manera se mejoraría la seguridad del sistema. Respecto a la red social simple que ha sido creada, se podría trabajar en una sincronización con redes sociales mucho más complejas y usadas como son Facebook o Tuenti. El usuario de este modo se beneficiaría de una mayor facilidad para compartir contenido con sus amigos. Otro aspecto que se podría incluir sería el de personalización. Usando este sistema, el usuario podría evaluar los contenidos multimedia que tiene en su hogar o que le comparten. A través de estas evaluaciones, el sistema debería ser capaz de recomendar contenidos al usuario de forma personalizada. Otra mejora que sería beneficiosa para el sistema podría ser la creación de un servidor virtual de contenidos UPnP. Así, el usuario podría reproducir contenido remoto en un reproductor UPnP local.
Manuel Buil Mur Proyecto Fin de Carrera 39 Acrónimos API Application Programming Interface CSS Cascading Style Sheets HMAC Hash-based Message Authentication Code HTML HyperText Markup Language HTTP Hypertext Transfer Protocol IMS IP Multimedia Subsystem IP Internet Protocol J2EE Java Platform Enterprise Edition MVC Modelo-Vista-Controlador NGN Next Generation Networking P2P Peer to Peer SIP Session Initiation Protocol TCP Transmission Control Protocol TLS Transport Layer Security UDP User Datagram Protocol UML Unified Modeling Language UMTS Universal Mobile Telecommunication System UPNP Universal Plug and Play URL Uniform Resource Locator SSL Secure Sockets Layer VPN Virtual Private Network XML Extensible Markup Language
Manuel Buil Mur Proyecto Fin de Carrera 40 Bibliografía 1. Eclipse Foundation. Eclipse 3.5 (Galileo). [En línea] http://www.eclipse.org/. 2. Feel@Home. Specification of the Feel@Home Services. Feel@Home, Deliverable 3.1. 2009. 3. UPnP Forum. UPnP. [En línea] http://www.upnp.org/. 4. Feel@Home. Specification of the framework and interfaces. Feel@Home, Deliverable 3.2. 2009. 5. Cordón Ortega, David. Media Manager Core. PFC Universidad de Zaragoza. 2006. 6. OSGi Alliance. OSGi. [En línea] 2010. http://www.osgi.org/Main/HomePage. 7. Intel. Intel (R) Tools for UPnP Technology (TM) 1.0. [En línea] 2009. http://software.intel.com/en-us/forums/intel-tools-for-upnp-technology/. 8. MySQL AB. MySQL 5.1. [En línea] http://www.mysql.com/. 9. Apache Software Foundation. Apache Tomcat 6.0. [En línea] http://tomcat.apache.org/. 10. —. Apache Struts 2.1. [En línea] Noviembre de 2009. http://struts.apache.org/. 11. Martín, Marta Bel. Personal health center. Una aplicación en un entorno de inteligencia ambiental. PFC Universidad de Zaragoza. 2006. 12. Java Foundation. Java tutorial. [En línea] 2010. http://download.oracle.com/docs/cd/E17409_01/javase/tutorial/. 13. MySQL AB. Tutorial de MySQL. [En línea] http://dev.mysql.com/doc/refman/5.0/en/tutorial.html. 14. [10] Jayson Falkner, Ben Galbraith, Romin Irani, Casey Kochmer, Sathya Narayana, Khrishnaraj Perrumal, John Timney, Meeraj Moidoo Kunnumpurath. Desarrollo Web con JSP. s.l. : ANAYA. 15. Wikidot.com. [En línea] http://kcchao.wikidot.com/security. 16. The OpenSSL Project. OpenSSL 1.0. [En línea] 2009. http://www.openssl.org/. 17. sellitontheweb. [En línea] http://sellitontheweb.com/blog/wpcontent/uploads/2009/06/authentication.gif. 18. Martin E. Hellman, Bailey W. Diffie, and Ralph C. Merkle. Cryptographic apparatus and method. US Patent, 29 de Abril de 1980. #4,200,770. 19. Joan Daemen, Vincent Rijmen. The Design of Rijndael: AES - The Advanced Encryption Standard. s.l. : Springer, 2002. ISBN 3-540-42580-2.
Manuel Buil Mur Proyecto Fin de Carrera 41 20. National Insititute of Standards and Technology. Recommendation for the Triple Dat Encryption Algorithm. 2008. 21. Schneier, Bruce. Description of a New Variable-Length Key, 64-Bit Block Cipher (Blowfish). 1993. 22. 3GPP. TS 23228: IP Multimedia Subsystem (IMS) Stage 2 (Release 7). 2007. 23. IPv6.com. [En línea] 2008. http://www.ipv6.com/articles/general/IP_IMS.htm. 24. Gatica, Heinz Herlitz. P2P y transversabilidad en NAT/FIREWALL. 2005.