Immurok: Bluetooth-сканер отпечатков для sudo, SSH и ИИ-агентов на Linux

Обычный сканер отпечатков в ноутбуке разблокирует сессию — и на этом его участие в жизни администратора заканчивается. Immurok — небольшая беспроводная коробка, которая берётся за большее: разблокировать рабочий стол, подтвердить sudo, пройти аутентификацию через polkit, войти на сервер по SSH, выдать код TOTP для двухфакторной аутентификации и поставить физическое касание перед ИИ-агентом, пишущим код. Всё это — одним и тем же пальцем, по Bluetooth.

Хорошая новость: базовые сценарии работают. Менее хорошая: на Linux путь к ним оказался не таким простым, как прикосновение к датчику. В тестировании встретились ошибки, пропущенные запросы на подтверждение и одна гонка при запуске, из-за которой первичная настройка превратилась в отладку. Но после того как всё было настроено, устройство работало ровно — и это главное.

Обзор основан на использовании, а не на независимом аудите железа, прошивки и криптографии. Это предрелизный образец, и ПО быстро меняется, поэтому версия, которая достанется бэккерам, может вести себя иначе.

Что умеет Immurok

Проще всего описать устройство как беспроводной считыватель отпечатков для настольного компьютера или ноутбука, где такого датчика нет. Но список возможностей шире одной разблокировки экрана:

  • разблокировка уже открытой сессии рабочего стола;
  • подтверждение sudo и других поддерживаемых запросов аутентификации, включая polkit, через интеграцию с Linux PAM;
  • генерация и хранение приватных SSH-ключей на самом устройстве;
  • выдача кода TOTP только после распознавания отпечатка;
  • одобрение действий ИИ-агента: агент может подготовить привилегированную команду, операцию по SSH или запрос секрета, но не выполнит защищённое действие, пока вы физически не коснётесь датчика.

По заявлению производителя, шаблоны отпечатков и приватные ключи остаются на устройстве, облачного аккаунта и телеметрии нет. Сопряжение использует P-256 ECDH с HMAC-SHA256, а ответы аутентификации криптографически подписаны. Это утверждения компании; обзор проверяет поведение в работе, а не криптографию.

Железо

Устройство производит хорошее первое впечатление:

Параметр Значение
Процессор RISC-V, до 60 МГц
Связь Bluetooth Low Energy
Датчик Ёмкостный, заявленное распознавание менее 500 мс
Габариты 44 x 44 мм, толщина 14,2 мм
Вес ~40 г
Корпус CNC-алюминий
Батарея 110 мА·ч, зарядка USB-C
Потребление в режиме ожидания ~50 мкА (заявлено)
Слотов под отпечатки До 5 аутентификационных

Сзади есть кнопки питания и действий — сопряжения или подтверждения. Серебристая отделка и скруглённые углы делают устройство похожим на маленький Mac mini; на столе оно не выглядит случайной security-флешкой. В коробке был только сам девайс, даже без кабеля USB — но батарея держит хорошо, заряжать нужно примерно раз в месяц, а кабель Type-C найдётся почти в любом доме.

Производитель обещает больше месяца обычной работы на одном заряде. В начале тестирования Linux TUI показывал 84% заряда, примерно через неделю — 78%, то есть около 6 процентных пунктов за этот период. Для месячного обещания это выглядит обнадёживающе, но недели мало для подтверждения, тем более что проценты заряда не всегда линейны.

Установка на Linux — сборка своими руками

Windows и macOS получают графические приложения. В протестированной версии для Linux были Rust-демон, клиент командной строки и терминальный интерфейс (TUI). Отдельного графического менеджера и простого установочного бинарника нет.

На Ubuntu 26.04 пришлось сначала поставить пакеты для разработки и работы, затем Rust через Rustup. Команда make check-deps здесь выручила: она перечислила недостающие компоненты, вместо того чтобы заставлять находить их по одной ошибке сборки за раз.

Дальше была первая сборка Rust — около 200 крейтов на скачивание и компиляцию. Процессор был занят, предупреждений хватало, но это были предупреждения, а не ошибки компиляции. Затем make install прошёл довольно быстро: установились демон, утилиты командной строки, модуль PAM, помощник аутентификации и системная интеграция, а пользовательский демон уже работал к моменту завершения установки.

Для опытного администратора это выполнимо. Но для устройства, которое подаётся как простая замена ввода пароля, это слишком много трения. До массового релиза Linux нужны готовые пакеты для поддерживаемых дистрибутивов и куда более понятный первый запуск. Если же нужен пример того, как обходится отсутствие нативной сборки под Linux, — запуск Microsoft 365 через Bottles решает похожую задачу другим способом.

Сопряжение: «подключено» и «сопряжено» — не одно и то же

Первая попытка сопряжения сразу показала, насколько сырое ПО. Устройство включилось, но TUI сообщил, что оно не подключено. CLI предложил нажать кнопку на девайсе в течение 30 секунд — и тут же упал, не подождав эти 30 секунд.

Помогло ручное подключение Immurok через настройки Bluetooth в Ubuntu. Когда операционная система показала статус «подключено», возврат в TUI и нажатие p с последующим нажатием кнопки на устройстве привели к обмену ключами и успешному сопряжению.

Здесь есть два разных состояния: подключение по Bluetooth и сопряжение внутри Immurok. Различие технически разумно, но приложение не объяснило нужную последовательность в тот момент, когда она понадобилась. Продукт должен вести по шагам: состояние светодиода, подключение в ОС, действие сопряжения в Immurok, нажатие кнопки.

Запись отпечатков

Когда устройство подключено и сопряжено, запись первого отпечатка прошла глаже. В TUI нужно нажать e, приложить палец к датчику, поднять его и повторить. Тестовая прошивка запросила 12 снимков, прежде чем записать палец в слот ноль.

Устройство поддерживает до 5 обычных аутентификационных отпечатков, и при добавлении нового уже авторизованный палец должен одобрить запись. Это разумное требование безопасности, но его снова нужно явно показывать на экране.

CLI местами капризен: однажды повторная запись не удалась, потому что отпечаток уже был, а попытка удаления просто провалилась без объяснения причины. Это повторяющийся шаблон в CLI — устройство часто точно знает, чего от вас хочет, но ПО не всегда об этом сообщает.

Баг, из-за которого не работал sudo

С записанным отпечатком тестировалась команда sudo apt update. Ничего не происходило: касание датчика не аутентифицировало, хотя отпечаток явно был на месте.

Причина оказалась в гонке внутри Linux-демона. Когда начиналась Bluetooth-сессия, демон сразу запрашивал у устройства статус, но Python-помощник уведомлений ещё поднимал соединение D-Bus. На тестовой машине помощнику требовалось около 5,2 секунды, чтобы стать готовым, а запрос статуса истекал через 5 секунд. Этой разницы хватило, чтобы демон остался без статуса устройства до конца сессии и показывал NO_STATUS.

Поскольку для проверки функций ИИ-агента был установлен Claude, ему и отдали решение — он поднял лимит до 15 секунд. После пересборки и установки пропатченной версии аутентификация sudo заработала: команда выполнилась, касание датчика прошло, и пароль аккаунта вводить не пришлось.

Хорошо, что код открыт настолько, что его можно изучить и исправить. Но это базовый путь аутентификации, который сломался из-за того, что помощник стартовал на доли секунды медленнее ожидаемого. Такое стоит закрывать до массового релиза. По обновлению от Immurok: баг исправлен в недавнем обновлении.

Разблокировка Ubuntu и важность отката

С пропатченным клиентом Immurok разблокировал сессию Ubuntu, в которую уже вошли, а затем заблокировали: касание датчика — и рабочий стол открылся.

На самом первом экране входа после включения компьютера это не сработало. Такое поведение намеренное и действует также в macOS и Windows: пользовательский сервис доступен для разблокировки существующей сессии, но начальный вход всё равно требует обычного пароля аккаунта. Различие важно, потому что «разблокировка экрана» легко звучит как «замена пароля при каждом входе», а это не одно и то же.

Откат к паролю при этом устроен хорошо. Когда Bluetooth отключили или Immurok отсоединили, sudo и вход не ждали устройство, которого уже нет, — сразу открывалось обычное поле пароля. Это обязательно: устройство удобства не должно превращать временный сбой Bluetooth или севшую батарею в блокировку доступа.

SSH-ключи — главная особенность

Именно на SSH Immurok становится интереснее обычного считывателя отпечатков. Устройство умеет генерировать ECDSA P-256 SSH-ключ на борту. Приватный ключ остаётся там, наружу экспортируется только публичный — его и нужно положить в файл authorized_keys на удалённом сервере.

ECDSA здесь практичный выбор: он даёт сопоставимую с RSA стойкость при куда меньшем размере ключа. Это меньше места, меньше данных для передачи и ниже вычислительные затраты — что важно для маленького устройства на батарейном питании.

При первой генерации ключа через CLI (не TUI) показалось, что процесс просто остановился. Не хватало информации: Immurok ждал авторизации по отпечатку. Ни запроса коснуться датчика, ни полезной реакции на касание не было. Понять, что делать, удалось только потому, что поведение уже изучалось. После касания ключ сгенерировался.

Если действие требует физической аутентификации, интерфейс обязан об этом сказать. В TUI было лучше: при генерации очередного ключа он явно попросил коснуться датчика для авторизации, и ключ появился в следующем слоте.

Публичный ключ экспортировали, добавили на Raspberry Pi Pironman Max и включили в Immurok режим SSH takeover. Он добавляет сокет агента Immurok как SSH IdentityAgent, давая ключам на устройстве приоритет. При подключении к Raspberry Pi Immurok запросил отпечаток, касание прошло — вход по SSH удался.

Важно, что обычная настройка SSH не разрушается. Существующие ключи на компьютере остаются доступны как запасной вариант: при подключении к серверу, где публичного ключа Immurok нет, SSH просто использует прежний ключ. Это правильный подход — Immurok можно внедрять постепенно, не заставляя все серверы меняться в первый же день.

Удалять ключи можно через TUI после подтверждения отпечатком или через CLI, хотя CLI снова не показал нужную инструкцию про отпечаток при удалении. Можно также импортировать существующий приватный ключ на устройство, но с двумя ограничениями: в протестированной версии импорт был доступен только через CLI и принимал лишь ключи ECDSA P-256. Если ваш ключ Ed25519, RSA или другого формата, просто перенести его в Immurok не получится.

После обновления прошивки в Linux TUI появилась опция dual-host — важное изменение, поскольку ранее этот сценарий описывался как незавершённый. Но видеть опцию не значит проверить её: успешное сопряжение второго компьютера и использование уже сохранённых на Immurok ключей с него пока не подтверждены. Поддержка двух хостов видна, но полный кросс-хостовый сценарий SSH не проверен. Тем, кто строит доступ к серверам по ключам, стоит держать в голове и другие риски инфраструктуры — например, прекращение публичных загрузок VMware VDDK, которое меняет привычные процедуры у администраторов.

TOTP просто работает

Immurok умеет хранить секреты TOTP, и это оказался один из самых гладких сценариев. Добавили запись GitHub TOTP, зашли в TUI Immurok и запросили код. Для получения кода потребовалось ещё одно касание датчика. Код ввели в GitHub — сработало.

Функция простая, но полезная: семя TOTP не лежит в обычном настольном аутентификаторе, и человек, пользующийся вашим разблокированным компьютером, всё равно должен приложить палец, прежде чем Immurok выдаст код. Как всегда, резервные коды остаются важными: если устройство потеряно, повреждено, разряжено или сброшено, нужен другой путь в аккаунт.

Отпечаток перед ИИ-агентом

Самое необычное предложение — использовать Immurok как механизм human-in-the-loop для ИИ-агентов, пишущих код. Установили плагин Immurok для Claude и активировали его для проекта. Immurok также предоставляет обёртку imk, которая запускает команду в режиме агента. В одном тесте агент попытался подключиться к Raspberry Pi по SSH, Immurok запросил проверку отпечатком, и после касания агент подключился к Raspberry Pi.

Идея в том, что даже при разблокированном компьютере агент не завершит защищённое обёрнутое действие, пока вы не у стола. Но есть важное ограничение: это шлагбаум только для тех действий, которые действительно проходят через него. Инструкции проекта могут велеть агенту использовать imk, плагин может сделать этот инструмент доступным, но обычная команда всё равно пойдёт обычным путём, если обёртку обойти. Предыдущий git push в тестах прошёл именно так, потому что не был обёрнут.

Значит, это не автоматическое принуждение только потому, что файл говорит агенту, что делать. Серьёзная настройка должна обеспечить, чтобы чувствительные операции всегда шли через imk run --agent, либо принудительно закрывать защищённый путь на более низком уровне. Immurok даёт ценный механизм физического одобрения, но не защитит рабочий процесс, рядом с которым оставлен незащищённый путь.

Записи тестирования не включают полностью успешной проверки с секретом API. Задумка — внедрять секрет только в одобренный дочерний процесс, не помещая его в диалог агента. Идея хорошая, но эта часть не заявлена как полностью проверенная.

Что можно улучшить

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

TUI и CLI требуют серьёзной полировки. Linux TUI объединяет дашборд, ключи, интеграцию с PAM, логи, обновления прошивки и настройки. Он показывает состояние подключения и процент заряда, и для большинства задач общается лучше CLI. У CLI нет автодополнения по Tab, из-за чего вложенные команды хуже обнаруживаются. Сопряжение обещало ждать и падало. Неудачная запись и удаление не давали внятных объяснений, а импорт SSH жил только в CLI, тогда как остальные действия было проще выполнять в TUI.

Документация для такого инструмента не опция. Immurok трогает PAM, Bluetooth, конфигурацию SSH, приватные ключи, TOTP. В README на GitHub детали есть, но покупателям нужен стабильный гайд по настройке и понятные подсказки внутри приложения.

Файл лога, который никогда не перестаёт расти. Демон непрерывно пишет в ~/.immurok/logs.txt. Примерно за неделю файл достиг около 4 МБ, за две недели — 15 МБ. При ровном темпе это ближе к 200 МБ в год, чем к нескольким гигабайтам. Но настоящая проблема в том, что файл выглядит неограниченным: постоянный цикл переподключений или повторяющийся сбой могут ускорить рост многократно. Приложению нужна ротация логов с разумным лимитом размера и хранения. В Linux куда логичнее отправлять рутинные логи в journal, чем тихо вести всё растущий приватный текстовый файл.

Стоит ли брать

Через неделю с лишним Immurok вполне годится как повседневный инструмент. Основные сложности были на этапе первичной настройки, а они уже позади. Считыватель отпечатков на Dell XPS нравился и раньше, а у нынешнего Asus Zenbook его нет — так что Immurok хорошо дополняет ноутбук.

Железо привлекательное, компактное и полезное, базовые функции работают: отпечатком подтверждались sudo, разблокировка существующей сессии Ubuntu, аутентификация SSH-подключения к Raspberry Pi, получение рабочего кода GitHub TOTP и одобрение SSH-действия агента. Нравится и запасной путь: отключённое устройство не блокировало вход по паролю, а серверы без ключа Immurok продолжали работать с существующими ключами SSH.

Железо работает отлично, а ПО для Linux требует доработки. Принудительная сборка из исходников в 2026 году — не то, что стоит навязывать пользователям, а CLI должен лучше показывать нужные сообщения. Уже вышли две прошивки, и обновление ПО есть в их репозитории, так что дело за обновлениями — и устройство станет пригодным даже для новичков.

На момент написания Immurok всё ещё на краудфандинге: доступен на Kickstarter за $59, заявленная розничная цена — $69, ориентировочная поставка — ноябрь 2026. Тестировался предрелизный образец, ПО быстро меняется, до поставок бэккерам ещё несколько месяцев — время на улучшение Linux-опыта есть.

Частые вопросы

Кого касается эта новость?

Администраторов Linux и технических специалистов, которые хотят подтверждать sudo, вход по SSH и выдачу TOTP физическим касанием, а не вводом пароля. Также тех, кто присматривается к human-in-the-loop для ИИ-агентов.

Какие дистрибутивы поддерживаются?

В обзоре устройство тестировалось на Ubuntu 26.04. Установка шла сборкой из исходников: пакеты для разработки, Rust через Rustup, make check-deps, сборка примерно 200 крейтов и make install. Готовых пакетов для дистрибутивов на момент теста не было.

Заменяет ли Immurok пароль при входе в систему?

Нет. Он разблокирует уже открытую и заблокированную сессию, но на самом первом экране входа после включения компьютера всё равно нужен обычный пароль аккаунта. Это намеренное поведение, действующее и в macOS, и в Windows.

Что будет, если устройство разрядится или Bluetooth отключится?

Ничего критичного: sudo и вход сразу переходят к обычному полю пароля, не дожидаясь недоступного устройства. Существующие SSH-ключи на компьютере тоже остаются запасным вариантом.

Можно ли перенести свои SSH-ключи на Immurok?

Только частично. В протестированной версии импорт доступен лишь через CLI и принимает только ключи ECDSA P-256. Ключи Ed25519, RSA и других форматов перенести нельзя. При этом устройство умеет само генерировать ECDSA P-256 ключ, оставляя приватную часть у себя.

Как Immurok защищает действия ИИ-агента?

Агент может подготовить привилегированную команду, операцию SSH или запрос секрета, но выполнение защищённого действия требует касания датчика. Однако защита работает только для действий, проходящих через обёртку imk; обычная команда в обход обёртки выполнится без подтверждения.

Что с логами демона?

Демон пишет в ~/.immurok/logs.txt без видимого ограничения: около 4 МБ за неделю и 15 МБ за две недели. Ротации логов нет, поэтому при циклах переподключений файл может расти быстрее.

Когда устройство появится у покупателей?

Immurok на момент публикации обзора ещё на краудфандинге: Kickstarter, $59 при заявленной розничной цене $69, ориентировочная поставка — ноябрь 2026. Тестировался предрелизный образец, так что поведение финальной версии может отличаться.

Источник: itsfoss.com