Biometría: cuando somos nuestra propia contraseña

Un pantallazo teórico general sobre esta tendencia y un primer acercamiento en lo práctico para implementación en iOS.

Hernan Ruiz
Flux IT Thoughts

--

¿Qué es la biometría?

La biometría, también conocida como reconocimiento biométrico, es la identificación automática de los individuos en función de características físicas e intransferibles de los mismos. Los sistemas biométricos pueden usarse como factor de identificación en muchos terrenos y acciones cotidianas, como por ejemplo:

  • Identificación de ciudadanos: la huella digital permite tener un registro estatal único e irrepetible de cada ciudadano.
  • Control de accesos: para acceder a empresas o lugares públicos como estaciones de trenes y aeropuertos.
  • Firmas digitales: a través de un ID digital con certificado para autenticar la identidad del firmante.
  • Investigación de delitos: para identificar a posibles personas implicadas en delitos, a través del registro de ciudadanos y sus huellas digitales/ADN.
  • En smartphones: para identificar al auténtico dueño del dispositivo y permitir que solo él pueda utilizarlo.

Biometría en aplicaciones móviles

La gran mayoría de los smartphones que se encuentran actualmente en el mercado tienen sistemas biométricos capaces de medir, codificar, almacenar y comparar algunas características propias de la persona que está haciendo uso de ellos. En función del equipo, podemos encontrar sistemas de mayor precisión y confiabilidad. Pero en todos los casos existe, por más mínima que sea, la llamada “tasa de falsos positivos”, lo cual es el motivo por el que los sistemas biométricos tienden a ser cada vez más sofisticados, a fin de reducirla.

El objetivo del uso de biometría en los teléfonos celulares es garantizar al usuario la fiabilidad de que ninguna otra persona va a poder desbloquearlo ni hacer uso de ciertas funcionalidades (o acceder a datos) confidenciales.

Algo que manejan todas las aplicaciones que implican acceso a datos confidenciales es un sistema de inicio de sesión con credenciales, o login. Lo que también puede entrar en juego es un sistema de bloqueo de credenciales ante reiterados intentos de acceso fallidos. Es en este punto donde toma un valor importante el uso de biometría.

Así sea ingresar un sólo dato, numérico y corto, la posibilidad de bloqueo siempre está. La pregunta es: ¿cómo hacemos para simplificar aún más lo que el usuario tiene que hacer para iniciar sesión? La biometría nos permite exactamente eso: que el usuario ya no tenga que escribir un dato que sepa, sino ingresar con algo que directamente lo identifique. Pasamos de “algo que el usuario sabe” a “algo que el usuario es”.

Reconocimiento facial

En este punto tenemos que diferenciar dos tipos de sensores:

  • Los que podemos encontrar en dispositivos Android de gama media en adelante. Están basados en reconocimiento 2D, y tienen ciertas fallas de seguridad (desbloqueo con una foto del dueño por ejemplo), por lo cual no podemos considerarlos del todo seguros. Para evitar este tipo de sensores y optar sólo por los más seguros (que mencionaremos en el punto posterior a este), debemos compilar con la API 30 de Android, versión a partir de la cual podemos definir qué sensores aceptamos en nuestra app según su nivel de robustez.
  • Los que podemos encontrar en modelos puntuales de gama alta de Android (como el Pixel 4 de Google y otros en desarrollo), y en varios dispositivos de Apple (desde el iPhone X y iPad Pro 11’’ en adelante). En este caso, realizan reconocimiento en 3D a través de sensores de profundidad. Estamos hablando de una identificación biométrica más robusta, y que tiene muchas menos posibilidades de falsos positivos en comparación con el punto anterior y con la identificación por huella digital.

Biometría en Android

En Android, implementar biometría abarcaría a todos los celulares que cuenten con la tecnología en cuestión, ya que, en general, disponen de un sensor de huella digital y adicionalmente algún otro, como los de biometría facial o de iris.

Sin embargo, el tema es algo difuso a nivel API: como mencionamos antes, dependiendo del SDK de compilación de nuestra aplicación, a lo sumo podemos jugar con el nivel de robustez de la autenticación; pero la API no expone nada referido a cada tipo de sensor biométrico en particular, una desventaja en cuanto a customizar nuestra app en base a cada uno de ellos (como veremos más adelante en el ejemplo). En resumen, Android centra su API en pocas cuestiones (acotando lo versátil a la vez) tales como:

  • Si el dispositivo tiene o no sensor biométrico disponible.
  • Si el usuario tiene o no datos biométricos registrados en el celular.

Y si las dos respuestas son afirmativas, entonces podremos ejecutar una autenticación por biometría utilizando el sensor que el usuario haya definido como preferido.

Biometría en iOS

En el caso de los dispositivos de Apple, el panorama es diferente a nivel hardware: ninguno de ellos tiene ambos tipos de biometría presentes. Es decir que tienen autenticación o por huella digital (TouchID) o por reconocimiento facial (FaceID). Esto, según rumores, puede cambiar a partir del iPhone 13.

Face ID

En términos de implementación en iOS, Touch ID y Face ID no difieren mucho entre sí: la API (a diferencia de la de Android) tiene la versatilidad necesaria para que podamos diferenciar entre cada tipo de sensor biométrico, y definir aspectos de nuestra aplicación en base a eso, tal como lo veremos en el siguiente ejemplo.

Ejemplo simple de implementación

A continuación veremos cómo implementar autenticación por biometría en iOS de forma nativa. Vamos a acceder a la información biométrica del dispositivo que luego usaremos para customizar nuestra app.

Para iniciar, tenemos que agregar al archivo info.plist de nuestro proyecto la siguiente línea, con la que indicamos el porqué del uso de Face ID. Esto es necesario para poder habilitar la funcionalidad en nuestra aplicación.

Creamos la clase BiometricHelper que nos permitirá saber qué tipo de sensor tiene el dispositivo en el que corre nuestra aplicación. Acá, algunas aclaraciones:

  • Es necesario importar LocalAuthentication, que es precisamente la API de biometría.
  • Consultamos específicamente por iOS 11, ya que es la versión a partir de la cual implementaron Face ID en dicho sistema operativo.

En nuestra pantalla/ViewController principal, vamos a crear un botón que, a partir de lo que nos responda la API de biometría, mostrará un texto de ingreso con Touch ID o Face ID según corresponda (es necesario también importar LocalAuthentication).

Así es como se ve nuestra primera pantalla al ejecutar la aplicación en en un iPhone 8 y en un 11 respectivamente:

Por último, creamos la función onClick que le da funcionalidad al botón. En este método definimos un salto a un segundo viewController, como así también mensajes de descripción (reason) y de botones de salida (fallback) para el usuario en los casos en los que la autenticación biométrica salga mal. Un ejemplo clásico de fallback es ingresar la contraseña.

También seteamos mensajes para otros tipos de error como: biometría no disponible (el usuario no tiene ningún dato biométrico, facial o huella digital, registrado en el celular), y autenticación fallida. Contamos, además, con una función auxiliar para mostrar alerts en los casos de error antes mencionados. Aclaración: el mensaje “reason” aparece en momentos diferentes según la autenticación sea por Touch ID (desde un comienzo y ante huella digital no reconocida) o por Face ID (solo en instancia de error por rostro no reconocido).

Así es como se ven los mensajes “reason” y “fallback” para cada sensor:

Así es como se ven los demás mensajes de error:

Y finalmente, así se ve la segunda pantalla, que por el hecho de mostrarse verifica que el usuario fue autenticado correctamente por biometría:

Acceso el proyecto: https://github.com/hernanRuiz/iOSIntroBiometria

Conclusión

La biometría llegó a nuestros teléfonos celulares para quedarse. Pero quizás, bajo una premisa orientada más a la conveniencia del usuario que a la seguridad de sus datos. Sabido es que los sensores biométricos no son efectivos al 100% y que las tasas de falsos positivos, que son cada vez menores, existen. El problema está en que la tendencia es promover el uso de una tecnología para reemplazar otra. Lo ideal, en este caso, sería combinar el uso de la biometría con otro factor de autenticación clásico, como por ejemplo un pin numérico. De todas formas, los sistemas biométricos tienden a ser cada vez más sofisticados y probablemente terminen desbancando al resto de las tecnologías.

Conocé más sobre Flux IT: Website · Instagram · LinkedIn · Twitter · Dribbble · Breezy

--

--