Seguridad y Privacidad en la Plataforma Android

M. Capobianco  A. G. Stankevicius  J. Echaiz

Grupo de Investigación en Software Libre Dpto. de Cs. e Ing. de la Computación – Universidad Nacional del Sur Tel.: 0291-4595135 – Av. Alem 1253, Bahía Blanca {mc, ags, je}@cs.uns.edu.ar

Resumen

Conforme crece el uso y la adopción de los dispositivos móviles, se espera que brinden funcionalidades cada vez más complejas. En consecuencia, la demanda de nuevas aplicaciones aumenta considerablemente. Android es una nueva plataforma licenciada como software libre que será clave para cubrir esta demanda, proveyendo un sistema operativo, middleware y las herramientas necesarias para el desarrollo de aplicaciones por medio del lenguaje Java. En este proyecto analizaremos la seguridad en la plataforma Android y determinaremos si esta permite salvaguardar la privacidad de los usuarios. En base a este análisis, propondremos soluciones a los problemas identificados, colaborando con el refinamiento de la plataforma. Palabras clave: Frameworks de Desarrollo, Seguridad en Sistemas, Tecnologías Móviles.

1. Contexto

La línea de investigación propuesta en este documento fue presentada como un nuevo Proyecto de Grupo de Investigación (PGI) en la secretaría de Ciencia y Tencología de la Universidad Nacional del Sur durante la convocatoria 2009 y se encuentra actualmente en proceso de evaluación.

2. Introducción

La importancia de los dispositivos móviles ha crecido en forma considerable en los últimos diez años, llegando estos a ocupar un rol preponderante en nuestras vidas. Hoy en día nos resulta difícil imaginarnos como comunicarnos sin nuestro teléfono celular o como organizar nuestro día sin nuestro PDA.

Conforme crece el uso y la adopción de estos dispositivos, los usuarios esperan obtener funcionalidades cada vez más complejas de los mismos [12, 11]. En el último congreso mundial sobre dispositivos móviles realizado este año en la ciudad de Barcelona, se publicitaron equipos que son capaces de brindar televisión móvil, pantallas sensibles al tacto y navegación por Internet a alta velocidad entre otras cosas. Una de las tendencias que se evidenció en el mencionado congreso fue la creciente importancia que le están dando los fabricantes no solo al diseño y a las funciones de los teléfonos, sino a los servicios y los contenidos que estos brindan. Los dispositivos móviles de última generación presentan una variada oferta de contenido multimedia, como juegos, cine y hasta televisión, que ahora se puede transmitir al teléfono de forma fluida gracias a la mayor capacidad de las redes celulares de tercera generación (3G).

En este contexto, las aplicaciones que corran sobre estos dispositivos móviles tendrán un rol cada vez más importante. En este sentido nos encontramos en la actualidad en un punto de inflexión, dado que las aplicaciones de los teléfonos celulares se venden junto con el hardware, tal como sucedía con las primeras computadoras, en donde el software no se vendía por separado sino que era ofrecido por el fabricante del hardware junto con la adquisición de la computadora. Pero esto está cambiando rápidamente y en un futuro cercano, cada usuario de un teléfono celular será capaz de personalizar el software del mismo incluyendo en éste las aplicaciones que le resulten más interesantes y que estén estandarizadas para su región geográfica independientemente del modelo de teléfono que haya comprado. Por consiguiente, la demanda de aplicaciones de calidad para dispositivos móviles aumentará en forma drástica.

Para satisfacer esta demanda será necesario disponer de un framework de desarrollo específico para este tipo de aplicaciones [7, 12], por lo que Google comenzó en el año 2005 a desarrollar el proyecto Android, que se consolido en el año 2007 cuando el Open Handset Alliance (OHA), un consorcio de varias compañias que incluyen a Google, HTC, Intel, Motorola, Qualcomm, T-Mobile, Sprint Nextel y nVidia, anuncio su objetivo de crear estandares abiertos para dispositivos móviles. El primer producto de OHA fue Android, una plataforma para dispositivos móviles construida sobre el kernel GNU/Linux. Hoy en día Android incluye un sistema operativo, middleware y aplicaciones clave para la operación de los dispositivos móviles. La versión beta Android para el desarrollo de aplicaciones provee las herramientas y librerías necesarias para programar aplicaciones para esta plataforma por medio del lenguaje de programación Java. Recientemente, en octubre de 2008, la plataforma Android fue licenciada como software libre. De esta manera Google busca obtener otro elemento clave para poder satisfacer la creciente demanda de aplicaciones en dispositivos móviles: una comunidad de desarrolladores que trabaje sobre la plataforma Android y que brinde además soporte a los usuarios de estas aplicaciones.

Al estar licenciado como software libre, Android garantiza eficiencia, calidad y bajo costo [19]. El término software libre hace referencia a las cuatro libertades que están garantizadas a quien recibe este tipo de software [22]:

1. Libertad para ejecutar el programa en cualquier sitio, con cualquier propósito y para siempre.

2. Libertad para estudiarlo y adaptarlo a nuestras necesidades.

3. Libertad de redistribución, de modo que se nos permita colaborar con vecinos y amigos.

4. Libertad para mejorar el programa y publicar las mejoras.

Existen numerosos beneficios, tanto para los usuarios como para los desarrolladores, que devienen de la adopción del modelo del software libre. La principal ventaja producto de contar con las cuatro libertades es la calidad que se obtiene a partir de la colaboración voluntaria de los desarrolladores y/o usuarios que contribuye a la comunidad formada en torno al proyecto, descubriendo, reportando o incluso corrigiendo errores en entornos y situaciones de naturaleza muy diversa. Como mencionamos anteriormente, el contar con esta comunidad es seguramente una de las razones por las cuales Android fue licenciado como software libre. Otra de las consecuencias del modelo es que si un programa no ofrece la calidad suficiente, la competencia puede tomarlo y mejorarlo, partiendo del estado actual y realizando lo que se conoce como un fork, para obtener así un mejor producto. De esta forma la colaboración y la competencia, dos poderosos mecanismos de refinamiento presentes en la naturaleza, se combinan para obtener software de mejor calidad. Por otra parte los costes de desarrollo disminuyen, a partir de la reutilización de software existente que se ve posibilitada por el acceso al código fuente y a la historia de cada proyecto que nos brindan los repositorios de software libre.

Teniendo en cuenta las razones expuestas creemos que la plataforma Android revolucionará el mercado de los dispositivos móviles en un futuro cercano. Es por esto que consideramos que estamos en un momento propicio para centrar la investigación en la plataforma Android. Ya existe en la actualidad un conjunto de aplicaciones más que interesantes desarrolladas sobre esta plataforma, como por ejemplo:

Cab4me: software que utiliza la versión de google maps que corre bajo Android y permite llamar a un taxi mediante un solo clic de un botón. Cab4me usa los servicios de GPS para seleccionar en forma automática la compañía de taxi más cercana al usuario.

Locale: una aplicación que hace que el teléfono celular se pase automáticamente a modo vibrador cuando el usuario entra a la sala de conferencias, para evitar las molestias cuando el teléfono suena en forma inesperada en una reunión. Esta aplicación puede además determinar si el usuario se encuentra en su casa o en la oficina desviando las llamadas al teléfono fijo que corresponda según el caso.

Life360: una aplicación para crear una red social entre los vecinos del barrio que permite por ejemplo recibir las emergencias que sucedieron en el vecindario y enviar alertas a todas las personas en el área.

goCart: software que asiste a los compradores para que estos puedan tomar decisiones inteligentes e informadas. Utilizando el GPS y la cámara del celular para hacer un scan de los códigos de barra del producto, goCart busca en la Web de las tiendas locales para comparar los precios del producto en distintos lugares. Es también posible programar alertas para que el sistema nos avise cuando el precio de un producto que nos interesa desciende por debajo de un límite dado.

3. Lineas de investigación y desarrollo

El propósito de esta línea de trabajo es desarrollar el área de investigación en dispositivos móviles que involucra tecnología de última generación. Esta disciplina se encuentra actualmente poco avanzada en nuestra universidad en particular y en nuestro país en general. Es también nuestro objetivo servir de marco para la formación de recursos humanos mediante el desarrollo de tesis de grado y/o de posgrado en el area, tarea que ya se encuentra bajo desarrollo.

El objetivo general del proyecto es investigar como protege Android la seguridad y la privacidad de los usuarios [16, 18, 15]. Buscamos realizar un estudio exahustivo de estos aspectos a fin de hallar los problemas que puedan existir en este sentido y proponer soluciones para los mismos.

Los objetivos específicos son:

Crear aplicaciones y test beds para la plataforma Android

Proponer políticas de seguridad apropiadas para entornos móviles

Aplicar técnicas de seguridad en sistemas para implementar estas políticas y disminuir la cantidad de ataques

Usar técnicas de inteligencia artificial para desarrollar algoritmos inteligentes que permitan detectar soluciones de seguridad y que puedan ser aplicados a este contexto (como por ejemplo algoritmos de detección de patrones).

En particular nuestra hipotesis de partida para este proyecto es que la seguridad y la privacidad en Android pueden ser mejoradas sustancialmente, estableciendo políticas de seguridad adecuadas que combinen técnicas como firewalls, sistemas de detección de intrusos y sistemas que permitan realizar el análisis de amenazas en forma automática para mejorar la usabilidad de las aplicaciones y simplificar la tarea de los usuarios, para quienes las herramientas de seguridad deberían ser transparentes. El trabajo de investigación a desarrollar se guiará por la metodología utilizada tradicionalmente en las ciencias de la computación, siguiendo los principios del método científico usados en el área de las ciencias básicas.

4. Resultados Esperados

En este momento el proyecto se encuentra dando sus primeros pasos. Para conseguir los objetivos de este proyecto comenzaremos en primer lugar por desarrollar un análisis del estado del arte de la plataforma Android, aprovechando el licenciamiento de la plataforma como software libre, que nos permitirá acceder al código fuente del proyecto y además participar de las listas de mensajería y foros asociados al mismo. De esta manera podremos acceder a información de primera mano sobre Android y su estado de desarrollo. Por otra parte esto permitirá colaborar con la construcción y depuración del software en cuestión. Una vez familiarizados con el sistema se realizarán auditorías del mismo en relación a la seguridad y la privacidad de los usuarios, siguiendo lineamientos internacionales en la disciplina, como las normas ISO 27001. Una vez analizado el sistema se espera construir soluciones para los problemas existentes y probar las soluciones diseñadas, para lo cual se desarrollarán aplicaciones bajo la plataforma Android que se harán luego disponibles a la comunidad de software libre licenciándolos adecuadamente.

Para el desarrollo de las aplicaciones se utilizar una metodología de desarrollo ágil (en particular Extreme Programming), complementada con Scrum como metodología de gestión. Durante el todo el desarrollo del proyecto se publicarán los resultados preliminares obtenidos en congresos relacionados con la especialidad. Al finalizar el proyecto se espera reportar los resultados finales en un artículo que será enviado a una revista especializada.

5. Formación de recursos humanos

El proyecto ha ya realizado un aporte significativa a la misión educativa de nuestra unidad académica. Nuestra tarea de investigación contribuye a la formación de estudiantes de grado y posgrado que se encuentran realizando sus tesis en esta área o en temas relacionados. Los temas de vanguardia que están siendo abordados en esta línea se integrarán a la brevedad el programa de materias optativas y cursos de especialización del Departamento. de Ciencias e Ingeniería de la Computación. Se espera además que varios estudiantes de grado y posgrado, y en particular becarios, se sumen a este proyecto en un futuro próximo.

Cabe destacar que la temática del proyecto involucra la interrelación de distintas áreas como ingeniería de software, sistemas operativos y seguridad en sistemas. Por lo tanto crea un espacio de trabajo común para distintos grupos de trabajo establecidos dentro del departamento: el Laboratorio de Investigación en Sistemas Distribuidos, el Grupo de Investigación en Software Libre y el Laboratorio de Investigación y Desarrollo en Ingeniería de Software y Sistemas de Información.

Referencias

[1] Ableson, F., Collins, C., and Sen, R. Unlocking Android. Manning Publications, 2009.

[2] Bellovin, S. M. Security problems in the TCP/IP protocol suite. Computer Communication Review 19, 2 (Apr. 1989).

[3] Burnette, E. Hello Android: Introducing Google’s Mobile Development Platform. The pragmatic programmer, 2008.

[4] Denning, D. E. R. Cryptography and Data Security. Addison-Wesley, Reading, Massachusetts, 1982.

[5] Guimaraes, L. Confidentiality, integrity and high availability with open source IT green. ArXiv e-prints (2008).

[6] Haseman, C. Android Essentials (Firstpress). APress, 2008.

[7] Hashimi, S., and Komatineni, S. Pro Android: Developing Mobile Applications for G1 and Other Google Phones. APress.

[8] Hilker, M. Distributed self management for distributed security systems. In Proceedings of the 2nd International Conference on Bio-Inspired Computing: Theories and Applications (BIC-TA 2007) (Zhengzhou, China, 2007).

[9] Jaeger, E., and Hardin, T. A few remarks about formal development of secure systems. ArXiv e-prints (2009).

[10] Landau, S. Security and privacy landscape in emerging technologies. IEEE Security & Privacy 6, 4 (2008), 74–77.

[11] Marzio, J. D. Android, a programmers guide. McGaw-Hill, 2008.

[12] Meier, R. Professional Android Application Development. Wiley Publishing, Indianapolis, Indiana, 2009.

[13] Millen, J. K. Models of multilevel computer security. In Advances in Computers, M. C. Yovits, Ed., vol. 29. Academic Press, Inc., 1988.

[14] Murphy, M. The Busy Coder’s Guide to Android Development. Commonsware, 2009.

[15] Perry, W. E. Developing a computer security and control strategy. In Advances in Computer System Security, R. Turn, Ed., vol. II. Artech House, 1984, pp. 39–48.

[16] Pfleeger, C. P., and Pfleeger, S. L. Security in computing, fourth ed. Prentice-Hall, Inc., pub-PH:adr, 2007.

[17] Pfleeger, C. P., Pfleeger, S. L., and Theofanos, M. F. A methodology for penetration testing. Computers & Security 8, 7 (1989), 613–620.

[18] Ramaswami, R. Placement of data integrity security services in open systems interconnection architecture. Computers & Security 8, 6 (1989), 507–516.

[19] Raymond, E. The catedral and the bazaar. O’Reilly publishings, 2001.

[20] Robson, B. People and technology: The security management challenge. In 1990 Decus Europe Symposium (Cannes, France, Sept. 1990).

[21] Rogers, R., Lombardo, J., Mednieks, Z., and (Author), B. M. Android Application Development: Programming with the Google SDK. Commonsware, OReilly Media.

[22] Stallman, R. M. The gnu manifesto. Dr. Dobb’s Journal of Software Tools 10, 3 (1985), 30–35.

[23] Tedesco, G., and Aickelin, U. Strategic alert throttling for intrusion detection systems. In The 4th WSEAS International Conference on Information Security (Tenerife, Spain, 2005).