Loguearse Mediante Reconocimiento Facial en Linux

Utiliza Howdy para iniciar sesión con tu usuario en Ubuntu 20.04/22.04 de forma automática.

Windows Hello es la aplicación de seguridad encargada del inicio de sesión mediante PIN, contraseña, y desde Windows 10 nos permite utilizar datos biométricos como rostro o huella digital.

Sin embargo, no hay distribuciones de Linux que actualmente tengan incluida esta función. Para instalar reconocimiento facial, lo cual recomiendo en cuestiones de comodidad, debemos utilizar Howdy.

Howdy provee una autenticación del tipo Windows Hello mediante la emisión de ondas infrarrojas, y se encuentra disponible en Debian/Ubuntu, Arch Linux, Fedora y OpenSUSE.

En esta guía realizaremos la instalación y configuración en Ubuntu 20.04. De requerirse otra distro, se puede consultar el repositorio oficial de Howdy github.com/boltgolt/howdy.

Instalación en Ubuntu

sudo add-apt-repository ppa:boltgolt/howdy
sudo apt update
sudo apt install howdy

Durante la instalación, exactamente al 44% de la misma, se requiere al usuario elegir el algoritmo de inteligencia artificial a usar. Si posees un emisor infrarrojo en tu laptop, puedes optar por un reconocimiento rápido con la opción ‘f’.

Configuración

Lo primero que debemos hacer es elegir qué cámara queremos emplear. Si estamos en una laptop, por razones de seguridad, recomiendo elegir el emisor infrarrojo. Para conocer la ruta de las cámaras disponibles utilizamos el comando

ls /dev | grep “video”
video0
video1

No te asustes si dispones de una única cámara web y aparecen dos en lista, ya que el par corresponde al dispositivo y a metadata que se le provee al kernel de Linux. Por ejemplo, en las laptops es normal que video0 y video2 corresponden a la cámara web y al emisor infrarrojo respectivamente, mientras que video1 y video3 a sus metadatos correspondientes.

sudo howdy config

y en la opción device_path utilizamos

device_path = /dev/video2

Una vez guardado el archivo, si no estamos seguros de que cámara estamos utilizando, podemos realizar un test utilizando howdy

sudo howdy test

Adicionalmente, se recomienda configurar para mayor discreción y seguridad, no advertir al usuario:

detection_notice = false
no_confirmation = true

En ordenadores con procesamiento de video externo tales como equipos gamers o workstations podemos habilitar la opción, use_cnn el cual funciona mediante GPU y provee un reconocimiento mucho más preciso que HOG.

Agregar Modelos (Rostros)

Para agregar rostros debemos utilizar el comando

$ sudo howdy add
Adding face model for the user usuario1
Enter a label for this new model [Model #1] (max 24 characters): _

En mi caso tengo varios modelos, de izquierda, derecha, de frente, con lentes, con gorro, y podemos agregar diferentes personas si es necesario.

Desactivar Howdy Para No Malgastar la Batería

Además de utilizar un algoritmo de inteligencia artificial basado en python, cada vez que queremos utilizar el super usuario (sudo) el dispositivo encenderá la cámara y emite ondas infrarrojas.

El CLI de Howdy permite habilitar o deshabilitar mediante el comando

sudo howdy disable 0 # ENABLE
sudo howdy disable 1 # DISABLE

Debido al uso de procesador y gasto de batería que esto conlleva, podemos crear un pequeño script usando el CLI de upower. Para obtener la ruta de la batería:

upower -e

Podemos ver la información de la batería mediante

upower -i /org/freedesktop/upower/devices/battery_BAT1

u opcionalmente

upower - i `upower -e | grep ‘BAT’`

Cuando la batería está desconectada, se encuentra en estado ‘descargando’.

upower -i /org/freedesktop/upower/devices/battery_BAT1 | grep “state

Finalmente, podemos hacer el siguiente script para desactivar Howdy cuando nuestro dispositivo bootea y no está conectado a la alimentación.

#!/bin/bash

state=`upower -i /org/freedesktop/upower/devices/battery_BAT1 | grep “state”`
if  [[  $state==*”discharging”*  ]]
then
    sudo howdy disable 1
else
    sudo howdy disable 0
fi

Para que el script se ejecute automáticamente podemos agregar

start on startup
task
exec /ruta/del/script/creado

en el archivo conf de /etc/init