Me alegra mucho escuchar este tipo de preguntas de mis alumnos porque indica que tienen cierta parte de curiosidad, inquietud o en ciertos casos hasta me gusta pensar que andan un poco preocupados. Esta pregunta me la hicieron algunos alumnos después de dar uno de nuestros talleres de Salud digital, donde hablábamos de la seguridad de nuestra identidad y de los datos que se encuentran almacenados en los dispositivos, como unas buenas medidas y consejos de seguridad podían ayudarnos a mantenernos un poco más seguros.

Es verdad que hoy en día el reconocimiento facial es uno de los sistemas de autenticación más conocidos y usados por una gran cantidad de fabricantes de Tables o dispositivos móviles, su comodidad y rapidez, lo hace muy atractivo para el usuario. Pero… ¿cómo es de seguro?

No sorprende que el cibercrimen esté en aumento en nuestro mundo cada vez más digital. Muchas compañías están explorando y trabajando en el reconocimiento biométrico de rostros como una solución de seguridad viable basada en el aprendizaje automático.

Pero, aunque el reconocimiento facial parezca un sistema tan prometedor y fiable, tiene defectos. Las fotos de los usuarios se pueden encontrar fácilmente a través de las redes sociales y se utilizan para falsificar el software de reconocimiento facial, digamos usando fotografías en papel, capturas de pantalla o incluso reconstrucción facial en 3D.

Por eso es importante que las empresas cuenten con sistemas anti-falsificación para proteger los datos confidenciales, reducir el robo y mitigar el fraude. Estos sistemas mejoran las soluciones de reconocimiento facial existentes al mejorar su capacidad para detectar falsas autentificaciones.

Si bien esto en teoría parece fácil, está claro que existen debilidades.

¿Qué impide que alguien use una cara falsa para obtener acceso a datos confidenciales?


Aquí es donde entra en juego la necesidad de soluciones anti-spoofing, y esa palabra que cada vez se usa más en el mundo digital, llamada Prueba de Vida. Confiamos en la detección de vida para validar la identidad de un individuo. Estas verificaciones pueden verificar si un individuo está realmente presente o si está usando una foto para falsificar el sistema.

Una vez introducidos en el tema, me gustaría contaros en este pequeño articulo algunas de las técnicas que se usan para evitar la falsificación de rostros. Además, aprovechando mi trabajo en talleres y charlas de Salud y seguridad Digital, desarrollamos un proyecto de ejemplo donde elaboramos una prueba de vida basada en el parpadeo de los ojos. Podéis verla en el video.

Las técnicas más populares contra la falsificación de rostros

La mayoría de los ataques de suplantación de cara se conocen como ataques de presentación. Estos ataques usan 2D y 3D (estático o dinámico) para engañar al software de reconocimiento facial.

Los ataques de presentación 2D estáticos se basan en fotografías, papel plano o máscaras, mientras que las versiones dinámicas usan repeticiones de video en pantalla o varias fotografías en una secuencia.

Los ataques de presentación estática en 3D pueden usar impresiones, esculturas o máscaras en 3D, mientras que las versiones dinámicas usan robots sofisticados para reproducir expresiones, completadas con maquillaje.

Por supuesto, estos ejemplos no son la verdad última. A medida que las tecnologías evolucionan, también lo hacen los ataques de presentación.

Ejemplos de soluciones anti-spoofing: Prueba de Vida


Detección de parpadeo de ojos

En este apartado os hablaré de esta prueba de vida, que es la que hemos desarrollado para el taller de Seguridad Digital. La detección de parpadeo es una prueba de detección de vida que es increíblemente precisa. El parpadeo natural es una manera fácil de determinar si una cara está viva o no. El humano promedio parpadea entre 15 y 30 veces por minuto y los ojos permanecen cerrados durante unos 250 milisegundos durante un parpadeo. Las cámaras modernas graban videos con intervalos mucho más pequeños entre (50 milisegundos a 30 milisegundos por segundo), por lo tanto, con las cámaras integradas de los dispositivos podríamos detectar este parpadeo.

La implementación de la detección de parpadeo puede usar el análisis de puntos de referencia de la cara y calcular el área de superficie de los ojos. Este es el caso de nuestra práctica, ya que por medio de Python y su librería OpenCV somos capaces de sacar la referencia de los ojos en una cara. Una vez que tenemos localizados los ojos, calculamos ese umbral que nos advertirá si el ojo parpadea.

Estoy preparando una seria de practicas donde os enseñare a detectar caras con Python, en poco tiempo lo tendréis en el Blog, junto al código de esta practica del video.

Cámara 3D

Las cámaras 3D son el medio más confiable de anti-spoofing. La información precisa de la profundidad de píxeles puede proporcionar una alta precisión contra los ataques de presentación porque podemos distinguir la diferencia entre una cara y una forma plana.

Los ataques en 3D pueden causar dificultades, pero las cámaras siguen siendo una de las técnicas más confiables contra la falsificación de rostros disponibles. Y a pesar de la disponibilidad de cámaras, no todos los usuarios las tienen en sus computadoras.

Flash activo

El flash activo es una técnica interesante, en mi opinión creo que puede ser una de los sistemas más prometedores como verificación.

Esta técnica te permite detectar falsificaciones utilizando reflejos de luz en una cara. La idea implica usar un entorno de luz cambiante proporcionado por la luz adicional que proviene de la pantalla de un dispositivo. La luz blanca produce un reflejo apropiado en la cara.

¿Qué nos espera en Anti-Spoofing facial?

Estoy convencido que el éxito de los sistemas de verificación de reconocimiento facial dependerá en gran parte del aprendizaje profundo de las máquinas, es decir, del Deep Learning.

Pero ese éxito también requerirá la combinación de tales técnicas y la creación de métricas sensatas para la medición del éxito.

De todos modos, el futuro es emocionante y está claro que esta tecnología cambiará la forma en que abordamos la verificación de identidad.

Código en Python