Seguridad Moderna para Android Developers (parte 4)

Modern Security in Android a fast guide to be safe

Dinorah Tovar
Oct 29, 2020 · 4 min read

Este post está relacionado con mi última plática “Modern Security for Android Developers”.

Esta es la lista de blogs que tendrá el serial:

Image for post

Terminamos el overview de encriptación en Android, y es momento de hablar sobre biométricos y cómo funcionan, al igual de cómo puedes tomar ventaja sobre ellos.

En Android 6.0 la privacidad se volvió un parte aguas para los desarrolladores pero también para los proveedores de dispositivos, por que en esta versión Google introdujo una guía estandarizada para los proveedores, enfocados principalmente en los biométricos y en una forma de estandarizarlos de manera sencilla.

Los teléfonos han evolucionado y ahora Android incluye autenticación biométrica en base a huellas digitales y faciales. Android puede ser personalizado, para aceptar otras formas como por ejemplo, iris. Dentro del código, Android tiene una clase con la que podemos implementar autenticación biométrica llamada BiometricPrompt que incluye, fingerprint y cara, sin embargo, Google tiene que validar que la implementación arquitectónica del hardware cumpla ciertas especificaciones de seguridad para que se pueda unir a esta clase, principalmente debe de contener una arquitectura segura, y no me refiero al código solamente, si no al hardware también, es decir que la data biométrica debe de ser traicionada por un canal seguro que garantiza que si el Kernel o la plataforma es comprometida la data pura del biométrico no será distribuida o accesible después de haber perdido el Kernel, a su vez, esta data no puede ser inyectada a otro dispositivo o el canal seguro no puede ser interceptado en ningún caso.
Google cuenta con un conjunto de métricas llamadas spoofability measures que miden principalmente otras tres métricas y juntas miden la resistencia que tiene un biométrico al ataque de un profesional, esto se conoce como Spoof Acceptance Rate Guide (SAR) e incluye:

  • False Accept Rate (FAR): Mide que tan seguido un modelo erróneamente acepta un input erróneo de manera aleatoria
  • Imposter Accept Rate (IAR): Mide la posibilidad de que un biométrico acepte data que mimifica la data original, un ejemplo simple seria, que tantas veces un Imitador de algún cantante o actor con voz similar es aceptado, o incluso un par de gemelos idénticos.
  • Spoof Accept Rate (SAR): Mide la posibilidad de que un biométrico acepte data que fue ingresada con anterioridad

Después de estos test, un biométrico debe caer en alguna de estas tres categorías:

  • Strong: SAR(Spoof Accept Rate): 0–7% FAR (False accept rate): 1/50k FRR (False rejection rate): 10%
  • Weak: SAR: 7–20% FAR: 1/50k FRR: 10%
  • Convenience: SAR: >20% FAR: 1/50k FRR: 10%

Estas mediciones incluso contienen fallbacks (en horas) a la primera autenticación que se tuvo del usuario, para poder tener integración con la clase de BiometricPrompt y la posibilidad de usar KeyStore. Existe una documentación completa del falling ratio que tienen los sensores biométricos y se encuentra disponible aquí, si gustan que vaya un poco más adentro de como funcionan los sensores y las calibraciones por sistema dentro de los biométricos, por favor déjenme un mensaje al final de este post

BiometricPromp en acción

En Android 9 BiometricPrompt nos dio una nueva posibilidad de hacer el management de la clase ahora deprecada, FingerPrint Manager, sin que nosotros tuviéramos que agregar un diferente UI BiometricPrompt nos permite usar un simple UX/UI que nuestros usuarios entenderán en diferentes dispositivos y en diferentes aplicaciones haciendo una experiencia simple

Para empezar a implementar Biometric Prompt tenemos que implementar esta librería en el gradle file:

dependencies {
implementation "androidx.biometric:biometric:1.0.1"
}

Para agregar el builder de biometric prompt necesitamos:

Necesitamos agregar un nuevo listener a las acciones y el resultado del usuario que nos dará tres posibles respuestas, Success, Failure y un Error, si el usuario cae en Error Callback multiples veces entonces la autenticación del biométrico sera bloqueado para el usuario por un par de minutos para que vuelva a intentar

Si llegas a tener problemas con la implementación hay un post del increíble Sam Edwards (Sam Edwards) en su blog

Agregando biométricos a tu encriptación

En la segunda parte de este serial, hablamos sobre la posibilidad de crear tu propio KeyPairGenerator, incluso si no estás usando Jetpack Security, puedes agregar la línea número 8 del siguiente gist para asegurarte que tus usuarios necesitan tener algún tipo de autenticación

Puedes crear una secret key que te permite utilizar biométricos en las credenciales para especificar un periodo específico de tiempo en el que la aplicación puede hacer operaciones con la data que requieres sin necesidad de re autenticarse.

Esto es todo por este post, si requieres ayuda:

Siempre estoy feliz de ayudar y puedes encontrarme en:
Medium: https://medium.com/@dinorahto
Twitter: https://twitter.com/DDinorahtovar
StackOverflow: https://stackoverflow.com/users/4613259/dinorah-tovar

Happy Coding! 👩🏻‍💻

Droid LATAM

Posts en nuestro idioma por #AndroidDevs de nuestra región.

Dinorah Tovar

Written by

Google Developer Expert on Android | Doing Kotlin | Making Software 24/7 | Kotlin Multiplatform | She/Her | Opinions are my own, and not my employer

Droid LATAM

Los mejores artículos de Android en español escritos por devs de América Latina.

Dinorah Tovar

Written by

Google Developer Expert on Android | Doing Kotlin | Making Software 24/7 | Kotlin Multiplatform | She/Her | Opinions are my own, and not my employer

Droid LATAM

Los mejores artículos de Android en español escritos por devs de América Latina.

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store