Технология passkey. Реализация passless
Технология passkey. Реализация passless.
Содержание
1 Общая информация
- Репозиторий: https://github.com/pando85/passless
- Хранение:
- менеджер паролей pass (см. Менеджер паролей pass);
- TPM 2.0;
- локальный файл.
1.1 Функционал
- Эмулирует виртуальное FIDO2‑устройство (например, YubiKey) через интерфейс
/dev/uhid. - Предоставляет клиентскую утилиту для управления учётными данными (создание, удаление, список).
1.2 Режимы
- Фоновый сервис – виртуальный токен, доступный броузерам и приложениям через WebAuthn.
- Командная строка – управление ключами и PIN-кодом.
2 Другие платформы
- Для Android есть вариант Android Password Store.
- С поддержкой passless.
- Репозиторий: https://github.com/pando85/Android-Password-Store
3 Установка
3.1 Gentoo
- Репозиторий karma (см. Gentoo. Репозиторий karma):
emerge app-admin/passless
3.2 Arch Linux
yay -S passless
4 Настройка
4.1 Конфигурационный файл
Конфигурационный файл по умолчанию:
/etc/passless/config.toml.Локальная конфигурация для конкретного пользователя:
~/.config/passless/config.toml.Пример файла конфигурации:
# Настройки PIN-кода [pin] # enforcement = "optional" | "required" | "disabled" enforcement = "optional" # "optional" – PIN запрашивается только если задан min_length = 4 # минимальная длина PIN max_retries = 8 # число попыток ввода до блокировки # Бэкенд хранения ключей # backend = "soft" | "tpm" | "pass" # "soft" – ключи хранятся в зашифрованном файле (пароль от PIN) # "tpm" – использует аппаратный TPM 2.0 # "pass" - использовать pass backend = "pass" # Путь к хранилищу учётных данных (по умолчанию ~/.local/share/passless/credentials.db) # storage_path = "/home/user/.local/share/passless/credentials.db" # Настройки логирования # log_level = "info" # info, debug, warn, error
4.2 Модуль ядра
Убедитесь, что модуль ядра
uhidзагружен (если он не в ядре):lsmod | grep uhidЕсли нет, то загрузите модуль:
sudo modprobe uhid
4.3 Права пользователя
- Пользователь должен быть в группе
fido(для доступа к/dev/uhid). - Добавьте себя в группу:
sudo usermod -aG fido $USER
4.4 Настройка службы systemd
Запустите пользовательскую службу:
systemctl --user enable passless.service systemctl --user start passless.serviceПроверьте статус:
systemctl --user status passless.serviceЕсли служба не запускается, посмотрите логи:
journalctl --user -u passless.service -fПосле запуска службы и задания PIN броузеры (Chrome, Firefox, Edge) автоматически увидят виртуальное устройство при попытке зарегистрироваться или войти через WebAuthn.
4.5 Переключение между бэкендами
- При смене бекэнда измените параметр
backendв конфиге и выполните повторную инициализацию. - При смене бэкенда старые учётные данные не мигрируют автоматически.
4.6 Настройка pin-кода
Перед первым использованием нужно задать pin.
Сделайте это через клиентскую утилиту:
passless client pin set <PIN>Необходимо ввести pin-код (не менее 4 символов по умолчанию).
После этого pin будет использоваться для подтверждения операций (если в конфиге
enforcement = "required"или"optional", но PIN задан).Изменить pin-код:
passless client pin change <OLD_PIN> <NEW_PIN>
4.7 Проверка работоспособности
4.7.1 Проверить, видит ли система виртуальное устройство
passless client devices
- Должен вывести список устройств.
4.7.2 Проверить, что устройство распознаётся как FIDO2
Можно использовать броузер или утилиту
fido2-token(из пакетаsys-auth/libfido2):fido2-token -LВ выводе должно появиться устройство
Virtual FIDO2 Authenticator.
4.8 Управление учётными данными
Список всех ключей:
passless client listУдалить ключ по ID:
passless client delete <credential-id>
4.9 Работа с TPM
Укажите в конфигурационном файле
backend = "tpm".Все учётные данные будут защищены аппаратным TPM 2.0, а PIN будет использоваться только для разблокировки доступа к TPM-ключу.
Требования:
- Наличие TPM 2.0 и включение его в ядре.
- Пакет
app-crypt/tpm2-tss(для Gentoo).
После смены бэкенда нужно пересоздать хранилище (оно несовместимо).
Сделайте бэкап старых ключей (если есть) и переинициализируйте:
passless
4.10 Поддержка pass
- passless может хранить FIDO2-учётные данные (passkey) непосредственно в хранилище
pass. - Преимущества:
- Единое хранилище: пароли и passkey лежат в одном месте.
- Шифрование GPG: все данные надёжно зашифрованы вашим GPG-ключом.
- Синхронизация через Git: можно синхронизировать passkey между устройствами так же, как и обычные пароли.
4.10.1 Настройка бэкенда pass в passless
Сгенерируйте файл конфигурации:
mkdir -p ~/.config/passless passless config print > ~/.config/passless/config.tomlОтредактируйте файл
~/.config/passless/config.tomlи укажите бэкендpass:# --- Выбор бэкенда хранилища --- # backend = "soft" # по умолчанию — локальный файл (не рекомендуется) backend = "pass" # использовать pass (рекомендуется) # --- Настройки PIN-кода (остаются без изменений) --- [pin] enforcement = "optional" min_length = 4 max_retries = 8passless будет искать хранилище
passв стандартном месте (~/.password-store).Если оно расположено в другом каталоге, укажите путь через переменную окружения
PASSWORD_STORE_DIRили в файле конфигурации.Если ваше хранилище
passнаходится не в~/.password-store, укажите путь в файле конфигурации:backend = "pass" [pass] path = "/путь/к/вашему/.password-store"
4.10.2 Инициализация хранилища passless
- После смены бэкенда на
passнеобходимо инициализировать хранилище. - Если у вас уже были созданы учётные данные с другим бэкендом (
soft), они не будут перенесены автоматически. - Рекомендуется сделать бэкап или начать с чистого состояния.
- Инициализация хранилища passless:
passless
4.10.3 Проверка работы
- Посмотрите список учётных данных (пока пустой):
passless client list
4.10.4 Синхронизация между устройствами
- Благодаря использованию
passи Git вы можете синхронизировать свои FIDO2-ключи между компьютерами. - Настройте синхронизацию хранилища
passчерез git. - На втором устройстве установите
passless, настройте конфиг на бэкендpassи выполнитеpassless init. - passless автоматически подхватит все существующие учётные данные из синхронизированного хранилища.
