Сначала создайте или разблокируйте Vault его мастер-паролем. Откройте Настройки → Безопасность, проверьте состояние провайдера и включите биометрическую разблокировку. Регистрация требует новой системной аутентификации. После этого окно входа рядом с формой мастер-пароля предлагает разблокировку через Touch ID, Windows Hello или отпечаток пальца. Отключить и удалить регистрацию удаляет ключ, сохраненный этим приложением, но никогда не удаляет отпечатки пальцев, зарегистрированные в операционной системе.
Сохраните мастер-пароль: отмена, тайм-аут, недоступное оборудование/связка ключей и недействительная регистрация всегда требуют входа по паролю. Биометрическая регистрация действует локально для этого пользователя, устройства и Vault. Это не механизм восстановления и не резервная копия. Сброс Vault отменяет регистрацию и удаляет существующие зашифрованные профили и отпечатки хостов только после имеющегося подтверждения SMAZAT.
| Платформа | Аутентификация и хранение | Требования и ограничения |
|---|---|---|
| macOS Apple Silicon | Нативные LocalAuthentication / Touch ID; элемент Keychain в Security.framework с biometryCurrentSet и WhenUnlockedThisDeviceOnly |
Зарегистрированный Touch ID, доступный сенсор и рабочая связка Keychain входа. Изменение отпечатков делает элемент недействительным. Для рабочих обновлений используйте стабильную подпись Developer ID; ad-hoc подпись альфа-сборок может нарушить доверие Keychain и учет разрешения на доступ к локальной сети. |
| Windows x64 | Нативное настольное взаимодействие WinRT с Windows Hello, привязанное к главному HWND; ключ, зашифрованный DPAPI текущего пользователя, в диспетчере учетных данных Windows | Настроенный отпечаток пальца, лицо или PIN в Windows Hello. Это удобная разблокировка: подтверждение Windows Hello обеспечивает приложение, а сам DPAPI биометрией не защищен. Другой код, запущенный от того же пользователя, может расшифровать учетные данные. |
| Ubuntu x64 | Зарегистрированный отпечаток текущего пользователя через fprintd D-Bus; явное хранение учетных данных через libsecret / Secret Service | Поддерживаемый считыватель, зарегистрированный отпечаток, запущенная служба рабочего стола Secret Service и связка ключей по умолчанию. Удобная разблокировка: учетные данные в связке ключей криптографически не привязаны к проверке отпечатка. Без резервного варианта basic_text или файла с открытым текстом. |
На Ubuntu необязательные пакеты среды выполнения — python3-gi, gir1.2-secret-1, gnome-keyring (или другая совместимая Secret Service) и fprintd. Установите недостающие пакеты обычным менеджером пакетов системы, затем зарегистрируйте отпечаток пальца в настройках системы. Аутентификация использует текущего пользователя, не требует root и не изменяет PAM. Сеанс SSH без графической среды и без связки ключей рабочего стола сообщает о недоступности; ключ никогда не сохраняется молча в другом месте.
Правила блокировки
Для существующих установок автоматическая блокировка выключена. При включении по умолчанию выбирается 15 минут; поддерживаемые значения: Никогда, 1, 5, 10, 15, 30 и 60 минут. Активностью считается ввод с клавиатуры и мыши в окнах приложения; входящий вывод SSH — нет. Необязательная блокировка при потере фокуса считает окна плагинов частью приложения и позволяет завершить уже начатый системный запрос аутентификации. Изменение этих правил требует мастер-пароля.
Любая блокировка Vault, включая блокировку из-за бездействия и потери фокуса, отключает активные сеансы SSH, закрывает плагины и останавливает диагностику. Сохраните удаленные правки перед блокировкой. Так сохраняется прежнее поведение ручной блокировки; после блокировки фоновые плагины не имеют доступа к учетным данным SSH.
Необязательная политика для чувствительных операций требует новой системной аутентификации при удалении профиля, установке/удалении плагина, запуске установщика и сбросе разблокированного Vault. Команды в удаленном терминале и правки файлов плагинами в эту политику не входят. Политика не заменяет авторизацию на сервере SSH. Если провайдер перестанет работать, разблокируйте Vault мастер-паролем и измените политику с помощью этого пароля. Сброс остается доступным с заблокированного экрана восстановления после его разрушительного подтверждения.
Устройство Vault и IPC
Существующий Vault v1 по-прежнему использует AES-256-GCM со scrypt; регистрация не перезаписывает его файлы и не меняет его схему. В системное хранилище учетных данных попадает только копия его производного 32-байтового ключа. Мастер-пароль в открытом виде никогда не сохраняется. Локальные метаданные регистрации содержат случайный идентификатор учетных данных, провайдера и привязку SHA-256 к неизменяемым метаданным Vault. Восстановленный ключ должен пройти аутентифицированное расшифрование, прежде чем откроется сеанс. Буферы главного процесса очищаются после использования; строки нативного протокола — это временная память процесса, а не заявление о полной очистке памяти в управляемых средах выполнения.
Вспомогательная программа общается через ограниченные закрытые каналы stdin/stdout, не принимает команды оболочки, имеет тайм-ауты аутентификации и возвращает очищенные коды ошибок. Вспомогательные программы упаковываются вне ASAR в resources/biometrics; это самостоятельные нативные исполняемые файлы, поэтому нативный модуль с Electron ABI не требуется. Вспомогательная программа для Linux использует системный Python и GI. Нативные объекты и производные ключи никогда не проходят через мост renderer/plugin. Биометрический IPC проверяет активное главное окно и его главный фрейм; плагины не могут его вызвать. Явная блокировка отменяет незавершенную биометрическую разблокировку и разблокировку паролем, поэтому запоздалое подтверждение не может снова открыть Vault. Удаление регистрации отменяет ее локальную привязку, даже если системное хранилище недоступно; недоступное хранилище может сохранить непригодные осиротевшие учетные данные.
Сборка и проверка
npm run biometrics:build готовит вспомогательную программу для платформы хоста; запуск в режиме разработки и подготовка выпуска вызывают ее автоматически. Для macOS нужны Swift/Apple SDK с Security и LocalAuthentication; для Windows — Visual Studio C++ Build Tools, Windows SDK и C++/WinRT; на Linux копируется вспомогательная программа на Python. Новые зависимости npm не добавляются. Собирайте нативно на каждой целевой системе. Вспомогательная программа для macOS включена в рекурсивную подпись пакета; ей не нужно право App Sandbox, поскольку это настольное приложение не работает в песочнице. Рабочее распространение для macOS по-прежнему требует подписи Developer ID и нотаризации независимо от подписей выпусков OpenPGP.
Запустите npm test, npm run test:biometrics:ui и npm run test:diagnostics:ui. Биометрические тесты Node и изолированный smoke-тест UI используют mock-адаптер ОС и покрывают успех, отказ/отмену, неверные ключи, отсутствие оборудования/регистрации, сброс, тайм-аут и запоздалые результаты, недоступные связки ключей Linux, сбои системного хранилища учетных данных, ответы Windows, подтвержденные PIN-кодом, изменения регистрации в macOS, совместимость с существующим Vault, изоляцию IPC и очистку SSH. Успешная аппаратная аутентификация этим не доказана.
Нативная компиляция проверена на macOS arm64 и Windows x64. macOS сообщает, что Touch ID доступен; виртуальная машина Windows сообщает, что Windows Hello недоступен. Регистрация отпечатка/лица/PIN, фактическое получение защищенного ключа, отмена системного диалога и аннулирование после изменения регистрации по-прежнему требуют интерактивного тестирования с оборудованием на каждой поддерживаемой системе. Вспомогательную программу для Linux дополнительно нужно протестировать на рабочем столе с поддерживаемым считывателем fprintd; виртуальная машина без графической среды не позволяет провести такую проверку.
Справочные материалы платформ: Биометрический контроль доступа Apple, Настольный интерфейс Windows Hello, Жизненный цикл устройства fprintd, Спецификация Secret Service.
Доступ SSH к локальной сети в macOS
Если каждый локальный профиль SSH завершается ошибкой connect EHOSTUNREACH, а то же соединение работает в Терминале, проверьте Системные настройки → Конфиденциальность и безопасность → Локальная сеть → CH-J Server Manager, разрешите доступ, полностью закройте приложение и откройте его снова. Если доступ уже разрешен, переключите разрешение и перезапустите приложение. Проверьте также маршрутизацию, Wi-Fi/Ethernet и VPN: сама ошибка не доказывает запрет по соображениям конфиденциальности. Не сбрасывайте Vault и не удаляйте доверенные отпечатки SSH из-за этой ошибки.
Приложение объявляет NSLocalNetworkUsageDescription и предоставляет локализованные рекомендации по ошибкам сетевых разрешений и маршрутизации в macOS. Само выдать себе разрешение оно не может. Apple рекомендует подпись, выданную Apple, чтобы macOS надежно отслеживала сетевую конфиденциальность между сборками; текущие ad-hoc альфа-сборки имеют это ограничение. См. Рекомендации Apple по конфиденциальности локальной сети.
Значок приложения в Ubuntu
Пакеты Debian устанавливают существующий значок CH-J стандартных размеров hicolor (16–512 px) с соответствующим ярлыком рабочего стола и классом окна Electron. Главное окно получает значок и при повторном создании. После обновления уже закрепленного старого ярлыка открепите его и закрепите заново установленное приложение; выход из сеанса и повторный вход могут обновить устаревший кеш ярлыков GNOME.