1. estudio e implementación de un framework de
desarrollo de aplicaciones con funciones de
seguridad y privacidad para móviles
Adrià Navarro Martin
2. agenda
‣ La empresa Safelayer
‣ Estado del arte
‣ Motivación
‣ Objetivos
Contexto
Seguridad Informática
Cross-Platform Tools
El framework desarrollado
Conclusiones
Probando el framework
Planificación y ejecución
3. Contexto
Desarrollo de aplicaciones PKI
Dos productos principales
KeyOne
TrustedX
LA EMPRESA SAFELAYER SECURE COMMUNICATIONS S.A.
Privacy-aware Accountability for a Trustworthy Future Internet
5. Dar un framework multiplataforma móvil que permita
desarrollar de forma sencilla aplicaciones orientadas a la
seguridad basada en tecnología PKI en general y a la
firma electrónica en particular.
MOTIVACIÓN
CONTEXTO
CONTEXTO
6. OBJETIVOS
CONTEXTO
CONTEXTO
Desarrollo
Aplicación demostradora
Desarrollo
Aplicación demostradora
Diseño e implementación
Framework multiplataforma
Diseño e implementación
Framework multiplataforma
Estudio PKIEstudio PKI
Elaboración informe
comparativo
Herramientasdesarrollo móvilmultiplataforma
Elaboración informe
comparativo
Herramientasdesarrollo móvilmultiplataforma
Google
Drive
Google
Drive
Trusted
X
Trusted
X
7. agenda
‣ Preocupaciones
‣ Infraestructura de Clave Pública
Contexto
Seguridad Informática
Cross-Platform Tools
El framework desarrollado
Conclusiones
Probando el framework
Planificación y ejecución
Contexto
10. Conjunto de tecnologías para securizar las comunicaciones
Se basa en la confianza
Amplia adaptación en Internet, gobiernos, bancos y otras
entidades.
INFRAESTRUCTURA DE CLAVE PÚBLICA
CONCEPTOS BÁSICOS
11. INFRAESTRUCTURA DE CLAVE PÚBLICA
ELEMENTOS DE LA PKI
Certificado digital Firma electrónicaCifrado
Autoridad de Certificación
Autoridad de Validación
Autoridad de Sellado de Tiempo
Autoridad de
Registro
Claves
Públicas
Claves Privadas
Criptografía Asimétrica
Políticas de Gestión
Procesos de Renovación
12. agenda
‣ Problemática actual
‣ La solución
‣ Clasificación
‣ La herramienta escogida
Contexto
Seguridad Informática
Cross-Platform Tools
El framework desarrollado
Conclusiones
Probando el framework
Planificación y ejecución
Seguridad Informática
13. Fragmentación en el mercado
de los Smartphone
Gran inversión de tiempo y recursos
para llegar a todas las plataformas
PROBLEMÁTICA ACTUAL
CROSS-PLATFORM TOOLS
CROSS-PLATFORM TOOLS
15. Web Apps Nativas Híbridas
Intérprete web
Sin acceso a
recursos
No publicable
Ejecución nativa
Con acceso a
recursos
Publicable
Intérprete web
Con acceso a
recursos
Publicable
CLASIFICACIÓN
CROSS-PLATFORM TOOLS
CROSS-PLATFORM TOOLS
16. ‣ Reutilización de código
‣ Alta aceptación
‣ Acceso a recursos nativos
‣ Coste 0
‣ Posibilidad de ampliación
LA HERRAMIENTA ESCOGIDA
CROSS-PLATFORM TOOLS
CROSS-PLATFORM TOOLS
17. agenda
‣ ¿En qué consiste?
‣ Extendiendo PhoneGap
‣ Dificultades
Contexto
Seguridad Informática
Cross-Platform Tools
El framework desarrollado
Conclusiones
Probando el framework
Planificación y ejecución
Cross-Platform Tools
18. El framework desarrollado
‣ Ofrecer funcionalidades de
PKI en general y firma
electrónica en particular al
desarrollador
‣ Integración en PhoneGap
como un plug-in
‣ Sencilla API JavaScript
sensors
contacts
camera
notification
digital signature
¿EN QUÉ CONSISTE?
19. ‣ Plugins en las plataformas iOS y
Android
‣ Desarrollo en lenguajes nativos
‣ Creación de la API JavaScript
Objective-C Java
EXTENDIENDO PHONEGAP
EL FRAMEWORK
DESARROLLADO
EL FRAMEWORK
DESARROLLADO
20. Estudiar y analizar las herramientas multiplataforma más
usadas en el mercado
Aprendizaje de PhoneGap y el desarrollo de plugins
Aprendizaje de tecnologías de desarrollo nativo iOS
Aprendizaje de las tecnologías de desarrollo web
Implementar las mismas funcionalidades en dos
plataformas diferentes
DIFICULTADES
EL FRAMEWORK
DESARROLLADO
EL FRAMEWORK
DESARROLLADO
21. agenda
Contexto
Seguridad Informática
Cross-Platform Tools
El framework desarrollado
Conclusiones
‣ Visión general
‣ Arquitectura
‣ Funcionalidades
‣ Tecnologías
‣ Dificultades
‣ Demo
Probando el framework
Planificación y ejecución
El framework desarrollado
23. probando el framework
visión general
visión general
Aplicación PhoneGap que hace uso del framework
‣ Firmar documentos PDF
‣ Integración con servicios en la nube
✦ Almacenar los documentos
✦ Firma remota y
autenticación
25. Autenticarse usando TrustedX como
proveedor de identidad
Mostrar los documentos del usuario
en Google Drive
Mostrar selector con los certificados
de firma del dispositivo y del usuario
en TrustedX
Firmar utilizando la clave
seleccionada (del dispositivo o
TrustedX)
º
FUNCIONALIDADES DE LA APLICACIÓN MÓVIL
PROBANDO EL FRAMEWORK
PROBANDO EL FRAMEWORK
26. Almacenar los tokens de
autenticación OAuth de los
usuarios
Componer los documentos PDF
firmados
Descargar y subir los
documentos en Google Drive
FUNCIONALIDADES DEL SERVIDOR
PROBANDO EL FRAMEWORK
PROBANDO EL FRAMEWORK
28. Aprendizaje e integración de la plataformaTrustedX
Aprendizaje del protocolo OAuth 2.0
Aprendizaje e integración de Google Drive
Aprendizaje e integración del framework iText
DIFICULTADES
PROBANDO EL FRAMEWORK
PROBANDO EL FRAMEWORK
29. demo
Para ver esta película, debe
disponer de QuickTime™ y de
un descompresor H.264.
DEMO
31. planificación y ejecución
• Proyecto iniciado el 16/04/2012
• Finalizado el 22/03/2013
• Duración: 11 meses a jornada de 35h/sem. con periodos de
vacaciones y compaginación con otras tareas de la empresa
DURACIÓN DEL PROYECTO
Planificación respetada con ciertos desajustes internos
35. conclusiones
La Infraestructura de Clave Pública es un conjunto de
tecnologías muy complicado para ser utilizado con facilidad
por los desarrolladores.
Las tecnologías móviles carecen de muchas funcionalidades de
seguridad.
El uso de Cross-Platform Tools permite desarrollar con
facilidad para diferentes plataformas.
Todo el ecosistema admite muchas mejoras en el ámbito de la
seguridad.
...DEL PROYECTO
36. El proyecto en Safelayer Secure Communications S.A.
Oportunidad de trabajar en ambiente profesional.
Aprendizaje de metodologías de trabajo, seguimiento y
gestión de proyectos.
Aprendizaje de nuevas tecnologías del mercado
...PERSONALES
CONCLUSIONES
CONCLUSIONES
37. líneas futuras
Aplicación demostradora
Añadir más servicios de almacenamiento.
Creación de un SDK para móviles orientado a clientes
reales
Eliminar servidor intermedio.
Añadir más funcionalidades de PKI e integración con
otros servicios.
38. Gracias por su atención
Adrià Navarro Martín
adria.navarro-martin@est.fib.upc.edu
Notas del editor
Hola a todos. Soy Adrià Navarro y a continuación realizaré al defensa de mi proyecto ESTUDIO E IMPLEMENTACIÓN DE UN FRAMEWORK DE DESARROLLO DE APLICACIONES CON FUNCIONES DE SEGURIDAD Y PRIVACIDAD PARA MÓVILES. El proyecto es el resultado de un convenio de cooperación educativa entre la UPC y la empresa Safelayer.
Empezamos viendo las principales secciones en las que se estructurará la presentación:
- Primero especificaré en qué contexto se ha realizado el proyecto.
- Después introduciré algunos conceptos de seguridad informática importantes para comprender los aspectos clave de las funcionalidades.
- Qué són las herramientas de desarrollo multiplataforma
- Luego entraremos en las secciones de implementación:
El framework desarrollado y
la aplicación que se ha creado para validar su funcionamiento (en esta seccion veremos una pequeña demo).
- Para acabar daré detalles sobre la planificación y
- Unas conclusiones
En el contexto se explicarán estos puntos
La empresa Safelayer.. con la que se ha realizado en convenio está especializada en el desarrollo de productos software que utilizan la tecnología PKI (que explicaré en breve).
Sus dos líneas de productos principales son Keyone y TrustedX (una plataforma de firma electrónica)
El proyecto se emmarca dentro del plan avanza del ministerio de industria, y concretamente dentro del marco privacy...
El estado del arte de los terminales móviles es que existe una gran presencia de dispositivos móviles inteligentes o smartphones pero sin embargo en el campo de la seguridad se encuentran bastante limitados y carentes de funcionalidades, tanto para los usuarios como los desarrolladores.
Esto es justamente lo que motiva este proyecto, y por eso se quiere dar un framework multiplataforma que facilite a los desarrolladores crear aplicaciones con funcionalidades de seguridad. En concreto se ha creado un framework que permite la firma electrónica.
Los objetivos, pues, son los siguientes:
- Primero estudiar a fondo las tecnologías PKI, vitales para crear el framework.
- Segundo estudiar las herramientas de desarrollo multiplataforma más usadas en el mercado actual.
- Tercero desarrollar el framework de firma electronica incorporandolo a una de las herramientas anteriores
- Cuarto desarrollar una aplicacion que utilice el framework creado y valide su correcto funcionamiento
- Y por ultimo añadir algunas otras funcionalidades a la aplicación, concretamente integrarlo con servicios en la nube Google Drive y TrustedX.
Ahora introduciré algunos conceptos de seguridad informática para facilitar la comprensión del proyecto.
En cualquier comunicación entre dos personas o entidades a través de internet donde la seguridad puede estar comprometida se plantean las dudas de si realmente el mensaje se procede del que afirma ser el autor o de si una tercera persona puede haber modificado el mensaje original.
Existe una manera de garantizar la seguridad digital de las comunicaciones mensajes y documentos. La infraestructura de clave publica, llamada PKI en inglés.
La PKI es un conjunto de varias tecnologías que consigue securizar las comunicaciones. Entre ellas se encuentra la criptografía.
Se basa en la confianza, es decir, existen una estructura de entidades que permiten garantizar la autenticidad de los autores de mensajes o documentos. Para poder validar esa autenticidad hay que confiar en ellas.
Podemos encontrar PKI tanto en sitios de comercio electrónico, las principales entidades bancárias y gubernamentales, por ejemplo, el DNI electrónico utiliza tecnología PKI
Qué elementos podemos encontrar? Los más conocidos sean quizas los certificados digitales, el cifrado o la firma electrónica. Pero todos ellos se apoyan en otros muchos elementos, lo que convierte a la PKI en una tecnología muy complicada. Lo que busca este proyecto es intentar facilitar la tarea de integración en los móviles de esta tecnología.
Ahora veremos que son las herramientas multiplataforma, que provlema solventan y cual es la herramienta que se ha utilizado en este proyecto para integrar el framework.
Si nos paramos a ver la oferta de móviles en el mercado es fácil observar que existen multitud de plataformas diferentes,algunas mas populares que otras, como apple android blackberry symbian o samsung bada...
Esto implica que los desarrolladores tengan que invertir una gran cantidad de tiempo y recursos para alcanzar el mayor número de público posible. Ya que generalmente una aplicación se implementará de forma diferente para cada una de las plataformas.
Las CPT son frameworks que permiten que una misma implementación funcione en diferentes plataformas.
Siguen el principio write once run anywhere. Es decir, los desarrolladores únicamente tienen que escribir un código y éste código tiene que funcionar igual en varios dispositivos móviles, por ejemplo en un iOS como en un android como en un blackberry.
Las webapps, que basicamente son páginas web adaptadas a los dispositivos móviles. Esto es multiplataforma porque basta con que el móvil disponga de una navegador web para ejecutar el código.
Sin embargo esto impide que la aplicación se distribuya en los mercados oficiales (google play app store) porque no se puede INSTALAR.
Las CPT nativas permiten escribir en lugar de usando código web, utilizando lenguajes nativos, por ejemplo C#. Para convertir esto en un codigo multiplataforma algunas CPT utilizan traductores de codigo fuente o runtimes (una capa intermedia entre el programador y el desarrollador). Esta aplicaciones se pueden distribuir en los mercados ya que se pueden instalar.
Por ultimo las aplicaciones híbridas permiten crear apps con codigo web y que a su vez se puedan instalar, por lo tanto son distribuibles y monetizables.
Después de un estudio exhaustivo se decidió utilizar PhoneGap. Ya que es híbrido por lo que permite crear aplicaciones monetizables. Tiene un coste 0 y se puede extender fácilmente, cosa que permite añadir el framework de firma como una funcionalidad más de PhoneGap
A continuación explicaré qué framework se ha desarrollado, como se ha integrado con PhoneGap y las dificultades que me ha supuesto.
La funcionalidad del framework es permitir la firma electrónica en el dispositivo móvil, mediante las claves de firma que almacena.
Como ya he comentado, PhoneGap dispone de una API que permite acceder a los recursos nativos del telefono, como la camara los contactos o los sensores. El framework que se ha desarrollado se incorpora a esta API como un plugin más.
Esto permite que el desarrollador pueda acceder a las funcionalidades de firma desarrolladas mediante una sencilla llamada JavaScript.
En cuanto a el desarrollo de los plugins, se han hecho dos versiones: una para iOS y otra para Android, dado que son las plataformas que dominan el mercado.
A pesar de que luego el desarrollador acceda a ellos mediante código web, para implementar los plugins se ha tenido que desarrollar con el lenguaje nativo de cada plataforma: Objective-C para iOS y Java para Android.
Después se ha tenido que crear una API JavaScript que encapsule las llamadas a las funcionalidades nativas. Ésta es la API a la que accederá el desarrollador, independientemente de si está haciendo una app para iOS o para Android, para el es exactamente lo mismo.
En cuanto a las dificultades:
Tuve que invertir bastante tiempo en realizar un estudio de las CPT más usadas del mercado para finalmente escoger PhoneGap.
Una vez escogido tuve que aprender a utilizarlo y más importante, a añadir a extenderlo con funcionalidades extra.
Para realizar el plugin para iOS tuve que aprender a desarrollar con el lenguaje Objective-C y el framework Cocoa Touch. Para el plugin de Android no hizo falta una inversión tan grande ya que ya tenia experiencias previas.
Con lo que no tenia tantas experiencias previas fue con el desarrollo web, necesario para implementar la API JavaScript así que tuve que familiarizarme con ellas.
Y por ultimo tuve que hacer que ambas versiones del plugin se comportaran de la misma forma para ambas plataformas: Android y iOS.
Una vez desarrollado el framework, hubo que probarlo para validar su funcionamiento. Ahora veremos como se probó, la arquitectura del sistema sus funcionalidades, que dificultades presentó y al final una pequeña demo.
Para probar el framework se creó una aplicación con PhoneGap que lo utilizaba
A grandes rasgos lo que hace es firmar documentos PDF. Para añadir a la aplicación tecnologías de actualidad se integró con servicios en al nube.
Los documentos PDF en lugar de estar en el telefono se almacenan en Google Drive. Y también se ha incorporado al posibilidad de firmar con claves almacenadas remotamente mediante el producto TrustedX de Safelayer, que a su vez tambien actua de proveedor de identidad para realizar las autenticaciones en la aplicación.
Y este es un esquema general de la arquitectura de todo el sistema.
El usuario final tiene un smartphone con la aplicación phonegap que incorpora el plugin de firma. Este smartphone tambien almacena claves de firma del usuario.
El usuario tambien esta autenticado en Google Drive y en TrustedX donde almacena los documentos PDF y otras claves remotas respectivamente.
Todo esto se gestiona mediante un servidor intermedio cuyas funcionalidades también se han implementado
Este servidor se encarga de gestionar las autenticaciones OAuth y descargar los documentos PDF. Utiliza una base de datos mysql para almacenar los datos de los usuarios.
Ahora veremos las funcionalidades de la aplicación movil y despues las del servidor.
La aplicacion permite autenitcarte mediante OAuth 2.0 con TrustedX como proveedor de identidad. De forma análoga a como lo hace Facebook, por ejemplo. Con un formulario basico de autenticación.
Una vez autenticado, si el usuario esta logeado en Google tambien muestra los documentos que tiene almacenados en Drive.
Cuando el usuario quiere firmar se llama a una de las funcionalidades del framework desarrollado para obtener los certificados de firma del dispositivo. Dado que el plugin por dentro es diferente en iOS y en Android el aspecto del selector de certificados tambien es diferente: este es el aspecto de Android y este el de iOS.
Por último se realiza la firma con la clave que se ha seleccionado este en TrustedX o en el dispositivo.
En cuanto a las funcionalidades del servidor, las principales son:
Almacenar todos los token de las autenticaciones OAuth 2.0 tanto de Google Drive como TrustedX para todos los usuarios.
A pesar de que la firma propiamiente dicha no se realiza en el servidor, sino en el movil mediante el framework o en TrustedX, el servidor compone los PDF firmados utilizando un framework un gestion de PDFs. La firma, al final, se realiza de forma diferida entre el movil o TrustedX y el servidor.
Por ultimo tambien se encarga de bajar y subir los documentos de Google Drive. Estos documentos nunca viajan fuera del servidor, unicamente se mandan los bytes indispensables para poder calcular las firmas, y como acabo de comentar, despues se reciben los bytes de firma, se componen los documentos firmados y se suben de vuelta a Google Drive.
Ahora veremos de forma rapida que tecnologías hay implicadas en las implementaciones tanto de la aplicacion movil como del servidor.
Los entornos de desarrollo utilizados son los siguientes.
Las dificultades con las que me he encontrado creando este sistema para probar el framework de firma han sido:
Aprender a utilizar el producto de Safelayer TrustedX e integrarlo en el sistema.
Aprender como funciona el protocolo OAuth 2.0 para poder realizar las autenticaciones y acceder a los recursos de TrustedX y Google Drive en nombre del usuario.
Aprender a utilizar al API de Google Drive para poder utilizar su servicio de almacenamiento.
Y por ultimo aprender a utilizar el framework de gestion de documentos PDF iText para componer las firmas, que de otra manera hubiera sido una tarea mucho mas pesada.
Ahora veremos una demo de esta aplicación demostradora de las funcionalidades del framework asi como de sus servicios añadidos, TrustedX y Google Drive.
Ya hemos acabado con la parte tecnica y ahora veremos como ha sido la planificación y ejecución del proyecto y un diagrama de Gantt.
El proyecto empezó en abril de año pasado y acabó a finales de marzo de este año. Aproximadamente ha durado 11 meses a una jornada de 35 horas a la semana. Esta jornada se compaginaba con otras tareas de soporte a la empresa y con periodos de vacaciones.
En este gantt podemos ver a grandes rasgos como se ha planificado el proyecto. Tiene una fuerte etapa de formacion e investigación seguida de las tipicas etapas de ingenieria del software. La documentación se fue generando a lo largo de todo el proyecto, en paralelo.
Y ya para acabar daré las concusiones.
Primero unas conclusiones técnicas sobre el proyecto:
Hemos visto que la PKI es un conjunto de tecnologías muy complicado. Esto hace que sea muy dificil de integrar por un desarrollador no experto en el tema.
En cuanto a las plataformas moviles, tampoco disponen de demasiadas funcionalidades de seguridad y tampoco faciles de utilizar.
Tambien hemos visto que las CPT permiten alcanzar de forma facil muchas plataformas moviles a la vez.
Pero en general todo este ecosistema admite muchas mejoras en el campo de la seguridad, tanto a nivel funcional como de usabilidad. El principal objetivo de este proyecto era comprobar que esto se podia solucionar.
Respecto a las conclusiones personales, trabajar en Safelayer me ha brindado la oportunidad de experimentar el desarrollo en un entorno profesional, aprender sus metodologías de trabajo y experimentar con nuevas tecnologías.
Y ya para acabar con las lineas futuras de desarrollo,
respecto a la aplicación demostradora se para hacerla más versátil se pueden añadir nuevos servicios de almacenamiento, como dropbox o box y ver que su funcionamiento se mantiene igual.
Y en cuanto al framework, una futura linea de desarrollo que ya se está definiendo en la empresa es la de dar un sdk movil orientado a clientes reales.
Esto implicaría eliminar el servidor intermedio ya que es un obstaculo en cuanto a recursos y tambien añadir mas funcionalidades de la pki aparte de la firma electronica.