Аутентификация по лицу в стиле Windows Hello™ для Linux HowDy

Linux и распознавание по лицу, что может быть проще?
Проект HowDy даёт такую возможность нам.

Данный софт позволяет использовать реализацию схожую на Windows Hello™, но всё же менее безопасную, чем оригинальная, даже при использовании IR камеры. Прежде чем я расскажу, как использовать данных софт, напишу все мысли и что хотят сделать в будущих обновлениях программы и главное о текущих минусах.

⚠️
Безопасность хуже, чем в Windows Hello™
  1. Первый минус - система авторизует любой запрос без вашего согласия. Самая типичная проблема c распознаванием по лицу - вы всегда смотрите на монитор. А значит если вы запустите вирус требующий sudo - у вас будут просто доли секунды отвернуться от монитора иначе же любой sudo rm -rf / (ну только не надо выполнять, да? Переустанавливать всё придётся) запрашивает "пароль" распознаёт ваше лицо и исполняется. Это ОЧЕНЬ опасно.
  2. Систему можно обмануть фотографией подготовленной для IR камеры - то есть ч/б изначальное, чтобы камера увидела вас. Тем более не стоит использовать систему с обычной вебкамерой, для неё хватит даже телефона с себяшкой. Так как IR камеры не могут "видеть" обычные экраны устройств.
  3. Даже IR камеры для Windows Hello™ работают проверки реальности, по словам автора программы: В оригинале используется два ИК-излучателя для создания трехмерного изображения вашего лица, что является гораздо более безопасным. Для этого камера подсвечивает ваше лицо левым излучателем на четных кадрах и использует правый излучатель на нечетных кадрах. При этом лицо будет освещено под немного разными углами по разному, что невозможно подделать, просто распечатав 2D-фотографию. К сожалению HowDy не может контролировать IR для воссоздания даннрй проверки.
Цветное фото обычной камеры и IR камеры справа. Источник

Так что крайне не рекомендую использовать данную систему на рабочих компьютерах. И дома быть осторожным с ней из-за п.1

Из плюсов - система работает и работает на удивление быстро и хорошо. Может работать с обычной камерой тоже, но нужно помнить про п.2 и легкость подделки. С одной стороны всё не так плохо, как кажется. Текущей является вторая версия данной программы. В третью версию делают и добавили такие фичи, такие как - кивнуть для подтверждения или подтвердить намерение кнопкой на клавиатуре, что как раз должно решить п.1 безопасности, самый критичный, как по мне. Добавлен GUI интерфейс для удобства настройки лиц и выбора камеры, если у Вас их много, как у меня. Так же в третью версию добавили разные сценарии, а так же написать свои. Одна маленькая ложка дёгтя тут - её пишут уже 2 года и всё никак не допишут.

Установка

Для начала переходим на ссылку из начала статьи ищем свой дистр и как поставить. Устанавливаем согласно инструкциям. Я не буду описывать тут этот процесс у всех есть возможность нажать перевод, если не можете в английский. Главное это дополнительные ссылки для вашего дистрибутива, как добавить howdy в PAM (центральная система аутентификации). Я лишь покажу на примере fedora.
Переходим по ссылке сразу в COPR репозиторий

# Включаем COPR репозиторий 
dnf copr enable principis/howdy

# Устанавиливаем
dnf --refresh install howdy

Далее уже можете попробовать запустить

sudo howdy test

И проверить работу. Если всё хорошо, можно прыгнуть сразу на добавление пользователя.

У меня же технически так вышло 4 камеры подключено 2+2 в 2 устройствах. И HowDy не понимал, какую использовать, если у вас так же не распозналось ничего продолжаем.
Первое смотрим все видео устройства

╰─ ls -ltrh /dev/video*
crw-rw----+ 1 root video 81, 1 Jul 25 11:15 /dev/video1
crw-rw----+ 1 root video 81, 0 Jul 25 11:15 /dev/video0
crw-rw----+ 1 root video 81, 2 Jul 25 11:15 /dev/video2
crw-rw----+ 1 root video 81, 5 Jul 25 11:15 /dev/video5
crw-rw----+ 1 root video 81, 4 Jul 25 11:15 /dev/video4
crw-rw----+ 1 root video 81, 3 Jul 25 11:15 /dev/video3
У меня в итоге аж 6 устройств виртуальных

Если мы хотим понять, что есть что. Можно установить

sudo dnf install v4l-utils

v4l-utils и сделать запрос уже по устройствам

╰─ v4l2-ctl --list-devices
3D Camera: eTronVideo (usb-0000:00:14.0-3.1):
	/dev/video0
	/dev/video1
	/dev/media0

Logitech BRIO (usb-0000:00:14.0-8.4):
	/dev/video2
	/dev/video3
	/dev/video4
	/dev/video5
	/dev/media1
У меня 2 устройства. В одном 2 вируальных устройства, в другом аж 4.

Теперь, в моём случае, нужно понять, какой именно нужен. Можно воспользоваться старым добрым перебором. Можно сделать запрос на понимание, что является чем.

media-ctl -d /dev/media1 --print-dot | dot -Tpng > media1.png
media-ctl -d /dev/media0 --print-dot | dot -Tpng > media0.png
Делаем запросы, на представление устройств
Это у меня 3D камера, video1 так сказать чистый поток, video0 обработанный.
А вот это Logitech BRIO. Тут видно что есть обширный процессинг и мне нужны потоки video2 или video4

Из диаграмм стало понятно, что есть только video2 и video4, которые мне нужны в реальности. Дальше уже старый добрый перебор помог понять, что камера с активацией IR это video4, проверял заменой device_path в блоке [video], который можно редактировать, введя команду sudo howdy config прописываем полный путь. У меня это /dev/video4

И так камера у нас заработала. Ура.

Добавляем пользователя

Добавление происходит простой командой

sudo howdy add

И далее просто смотреть в камеру.

Очистить все лица можно командой sudo howdy clear

Настройка системы для работы

Если вы хотите, чтобы можно было не вводить пароль для sudo
открываем /etc/pam.d/sudo и вписываем строчку перед всеми.

auth       sufficient   pam_python.so /lib64/security/howdy/pam.py

В Альт Линукс

auth            sufficient      pam_howdy.so

Для входа систему делаем так же, только вставим уже в файлы
Gnome - gdm - /etc/pam.d/gdm-password
sddm - /etc/pam.d/sddm
kde - /etc/pam.d/kde

пример для GDM, но суть, что вставить второй строкой

Немного исправлений если они потребуются для входа в систему именно.

chmod o+x /lib64/security/howdy/dlib-data
Это чтобы можно было запускать всем howdy, даже если не root

Второе это SELinux победить для Fedora

Создать где угодно howdy.te  файл с содержимым:

module howdy 1.0;

require {
    type lib_t;
    type xdm_t;
    type v4l_device_t;
    type sysctl_vm_t;
    class chr_file map;
    class file { create getattr open read write };
    class dir add_name;
}

#============= xdm_t ==============
allow xdm_t lib_t:dir add_name;
allow xdm_t lib_t:file { create write };
allow xdm_t sysctl_vm_t:file { getattr open read };
allow xdm_t v4l_device_t:chr_file map;

А дальше выполнить компиляцию и применение данного правила

When accuracy matters for a costume, it is worth considering how details related to Halloween styling will affect the complete look. With practical wear in mind, reviewing details related to anime cosplay costumes also makes comfort and movement easier to judge. To compare practical details about details related to character costumes, women's cosplay costumes offers a useful starting point for practical preparation. Before the preparation is complete, it is useful to check details related to Genshin Impact cosplay costumes against the wearer's own needs.

checkmodule -M -m -o howdy.mod howdy.te
semodule_package -o howdy.pp -m howdy.mod
semodule -i howdy.pp

Итог

Система работает и работает не плохо, используйте её с умом.

Из интересного, howdy работает на базе библиотеки dlib, больше возможностей данной библиотеки можно увидеть тут

Из интересных проектов которые могут вас заинтересовать