Seguridad vs. Usabilidad en las Apps Android

Fecha de publicación:
Última actualización: 2021-12-31
Autor:

 

Uno de los dilemas en el desarrollo de apps es el balance entre la facilidad de uso y la carga funcional. Esta última representa el conjunto de los casos de uso que ofrece la aplicación. Entre más grande el conjunto, más compleja la interacción con el usuario.

Muchas de las funciones de seguridad, como la autenticación del usuario o la confirmación de una operación sensible, implican acciones adicionales que el usuario debe realizar. Estas acciones pueden ser la lectura de la huella dactilar, el ingreso de una clave, etc. Estas acciones también son parte de la carga funcional y afectan la usabilidad de la aplicación.

Seguridad vs. usabilidad en las apps Android

 

¿Qué es una interfaz de usuario intuitiva?

Los ejemplos de aplicaciones más simples incluyen la linterna y la brújula. La interacción con el usuario es simple porque la funcionalidad de la aplicación es mínima. Probablemente nadie ha tenido que leer un manual para aprender a manipular la linterna o jugar Tetris. En cambio, la aplicación de configuración de Android tiene centenares de opciones, muchas de las cuales requieren conocimientos técnicos. Lograr que la experiencia de usuario (UX) sea intuitiva en una aplicación compleja es un reto importante, inclusive para los desarrolladores de Google.

Se dice que la interfaz de usuario es intuitiva si el usuario promedio puede comprenderla fácilmente, sin capacitación previa. No se debe confundir los conceptos de interfaz intuitiva e interfaz fácil de usar, aunque muchas veces sean lo mismo. Por ejemplo, ingresar una clave por medio de unas perillas giratorias que simulan la cerradura de una caja fuerte puede ser intuitivo, pero más complejo que usar el teclado numérico para ingresar un PIN.

Interfaz intuitiva Android

Una interfaz de discado con dial rotatorio o disco de marcar, la cual se usó en todos los teléfonos analógicos, es muy simple, pero hoy en día podría no ser intuitiva, ya que muchas personas no han visto o no recuerdan los teléfonos antiguos.

 

Interfaces web-app

Actualmente es común el uso de interfaces de tipo web-app dentro de las aplicaciones móviles. También se utilizan interfaces híbridas, en las cuales una parte de la interfaz es de tipo web-app y otra parte es nativa. Las interfaces de tipo web-app son generadas por un servidor web remoto y se despliegan dentro de la aplicación de una manera similar a los navegadores web, como Chrome. La popularidad de este tipo de interfaces se debe principalmente a 2 factores, a saber:

  • Es posible realizar cambios en la interfaz de manera centralizada, sin publicar una nueva versión de la app y esperar que los usuarios descarguen la actualización.
  • Se puede usar la misma base de código para la interfaz web y la app. Esto reduce los costos de desarrollo y mantenimiento.

Desde el punto de vista de seguridad, las interfaces web-app también pueden tener ventajas:

  • Si una posible vulnerabilidad puede ser corregida a nivel de web-app, sin modificar el código nativo, el tiempo de mitigación se reduce considerablemente. Por lo tanto, el impacto también se reduce.
  • Es más difícil hackear una solución que se ejecuta en un servidor remoto, ya que sólo se tiene acceso a la interfaz de usuario de la misma.

Los servidores web no son invulnerables. Una web-app también puede ser insegura. Sin embargo, en general el código que se ejecuta remotamente en la nube puede estar más protegido que el código nativo que se ejecuta localmente.

La experiencia de usuario con las interfaces web-app suele ser menos óptima, ya que la descarga de la interfaz puede tomar un tiempo, especialmente si la conexión de Internet es lenta. El uso de Internet, además de generar un consumo de datos, produce un incremento en el uso de batería en el teléfono. Se recomienda considerar el uso de interfaces web-app solamente si la aplicación implica conectividad, como las aplicaciones bancarias, redes sociales, etc.

 

Seguridad vs. comodidad

El mayor reto está en mejorar la seguridad de un servicio sin que estas mejoras generen una mala experiencia de usuario. Por ejemplo, el uso de la biometría, como la huella dactilar o reconocimiento facial, en lugar de memorizar claves, es uno de los avances tecnológicos que han mejorado la experiencia de usuario. El uso de biometría no implica desarrollo de complejos algoritmos de inteligencia artificial. Estos algoritmos ya están disponibles a nivel de hardware o sistema operativo del teléfono.

Otro ejemplo son los sistemas de autenticación basados en patrones de comportamiento del usuario.1 Estos sistemas estudian la manera como el usuario interactúa con el teléfono, lo cual incluye la manipulación de la pantalla táctil (posición, velocidad, ángulo de deslizamiento), frecuencia y duración de uso, entre otras variables. Ya existen implementaciones comerciales con este tipo de sistemas. De hecho, la idea de perfilar el comportamiento del usuario con fines de autenticación no es nueva. Las implementaciones experimentales han existido al menos desde 2016.2

Estas implementaciones han demostrado tener una efectividad superior al 75%. Al combinar estos perfiles de comportamiento con otros factores, como biometría y claves tradicionales, se logra un mayor nivel de confiabilidad.

Sin embargo, es importante recordar que los usuarios pueden cambiar sus hábitos. Además, la autenticación es solamente uno de los aspectos que abarca la seguridad de un servicio. La suplantación de la identidad del usuario es solamente uno de los métodos que utilizan los estafadores para cometer fraude. Otros métodos consisten en interceptar los canales de comunicación explotando posibles vulnerabilidades, la ingeniería inversa, etc.

 

El eslabón más débil

Thomas Reid, filósofo escocés, escribió que «una cadena es tan fuerte como su eslabón más débil». Esta frase se aplica perfectamente en materia de seguridad informática, incluyendo los servicios móviles. Por lo tanto, es importante auditar constantemente cada uno de los módulos o procesos que intervienen en el servicio. Reducir al mínimo posible los eslabones de la cadena también ayuda a minimizar los riesgos.

Una cadena es tan fuerte como su eslabón más débil

El eslabón más débil puede ser el usuario, quien anota su contraseña y la guarda en un lugar visible para no olvidarla. El uso de protocolos poco seguros por compatibilidad con dispositivos antiguos o versiones previas del aplicativo también se puede convertir en una vulnerabilidad.

Un colega que desarrolla drivers para Windows dice que a veces el cambio más inofensivo puede ocasionar efectos desastrosos. El desarrollo de apps también es susceptible a este tipo de situaciones, aunque en menor medida. Un control estricto de cambios y versiones, combinado con pruebas de control de calidad exhaustivas, reducen la probabilidad de errores, incluyendo los errores de seguridad.

En las grandes empresas de software existe el cargo de especialista en seguridad u oficial de seguridad de la información. Contar con recursos dedicados a los tema de seguridad ayuda a reducir los riesgos. La seguridad es un aspecto menos visible que la usabilidad o la carga funcional, por lo que no siempre recibe la misma atención durante el ciclo de desarrollo. Además, los desarrolladores no siempre son expertos en seguridad. Por lo tanto, si el equipo de desarrollo no cuenta con especialistas en seguridad, se debe buscar capacitar a los desarrolladores. Muchas de las vulnerabilidades que se detectan en las apps se deben a desconocimiento o descuido.

 

Referencias

  1. Adnan Ali, Vasaki Ponnusamy, Anbuselvan Sangodiah (2019), «User Behaviour-Based Mobile Authentication System» (en inglés), DOI:10.1007/978-981-13-6861-5_40
  2. Hassan Sbeyti (2016), «Mobile user authentication based on user context and behavioral pattern (MOUBE)» (en inglés), Arab Open University