OpsRegistry Bridge
Локальная кроссплатформенная среда исполнения операций OpsRegistry, которым нужен доступ к операционной системе, защищённым учётным данным или физическим устройствам.
Первый сценарий — электронная подпись. Bridge обнаруживает токены и сертификаты, проверяет и настраивает рабочее место, а затем создаёт подпись через CryptoPro, PKCS#11 или другой нативный провайдер. Проект не зависит от VARM, оператора ЭДО, производителя токена или законодательства одной страны.
Как это работает
- Веб-приложение получает от своего сервера короткоживущий допуск к конкретной операции.
- Браузер обращается к Bridge только через loopback-интерфейс.
- Bridge проверяет связанное приложение, допуск и контракт операции.
- Нативный backend выполняет действие локально, не передавая закрытый ключ приложению.
- Приложение получает нормализованный результат операции OpsRegistry.
Браузерный транспорт вынесен в отдельную TypeScript-библиотеку @opsregistry/bridge-client. Форматы запросов и ответов определяет @opsregistry/contracts.
Модульная архитектура
Bridge должен оставаться небольшим. Постоянно установленный core отвечает только за локальный протокол, связь с приложениями, проверку допусков, каталог модулей, обновления и аудит. Функциональные модули добавляют конкретные группы операций, например:
signature— обнаружение токенов и сертификатов, настройка среды и электронная подпись;print— обнаружение принтеров и локальная печать;- будущие модули — сканирование, работа с защищёнными хранилищами и другим локальным оборудованием.
При первом обращении core может установить недостающий модуль из доверенного канала. Модуль скачивается один раз, проверяется по цифровой подписи, хешу и совместимости протокола, сохраняется локально и после этого работает без повторной загрузки. Для закрытых сетей должна поддерживаться предварительная и офлайн-установка нужного комплекта.
Core не исполняет произвольный код по URL из запроса или записи реестра. Разрешены только модули из подписанного каталога доверенного издателя. Модули запускаются отдельными процессами с минимальными правами и общаются с core через версионированный локальный протокол. Это изолирует сбои и не даёт, например, модулю печати доступ к ключам модуля подписи.
Исходники core и официальных модулей могут находиться в одном Cargo workspace, но собираются и публикуются как отдельные артефакты. Для установки или изменения системы операционная система может один раз запросить повышение привилегий; обычное выполнение операций его не требует.
Пользовательский интерфейс
У Bridge нет значка в трее и постоянного окна. Он работает как Windows Service или служба systemd, а кнопки установки, проверки и подписания остаются в интерфейсе приложения. Пользователь видит только значимые действия: разрешение на системную установку, выбор подписи при реальной неоднозначности и подтверждение подписания.
Выбор CryptoPro, PKCS#11 и других технических компонентов должен происходить автоматически.
Границы проекта
bridgeсодержит Rust-runtime, локальный HTTP-протокол и нативные backend-реализации;- бизнес-процессы и интерфейс остаются в приложении-потребителе;
- интеграции с Saby и другими внешними API остаются в адаптерах провайдеров;
- универсальные схемы операций остаются в
@opsregistry/contracts.
Безопасность
- сервис слушает только loopback-адрес;
- HTTP-origin разрешён только для локальной разработки, обычное приложение должно использовать HTTPS;
- публичный manifest раскрывает состояние связи только для origin текущего запроса;
- первичное сопряжение требует подтверждения на защищённой локальной странице Bridge;
- каждая операция требует отдельного короткоживущего допуска;
- допуск подписан ключом сопряжённого приложения и связан с Bridge, origin, request ID и хешем input;
- использованные grant ID сохраняются локально, поэтому повтор не проходит и после перезапуска;
- закрытые ключи, PIN-коды, пароли и серийные номера лицензий не передаются в контрактах операций;
- изменение системы требует локального повышения привилегий;
- юридически значимая подпись создаётся только по действию пользователя.
Текущее состояние
Реализованы каркас Rust-сервиса, manifest протокола, проверка loopback и origin, а также локальный менеджер модулей и загрузчик с постоянным кешем подписанного каталога. Они проверяют корневую Ed25519-подпись каталога, срок действия и защиту от отката, делегированный ключ издателя, подпись manifest, SHA-256 и размер артефакта, а также точное соответствие ОС, архитектуры, ABI и протокола. Версия активируется атомарно и повторно проверяется после перезапуска.
Operation grant проверяется как одноразовый request-bound JWS, а недостающий модуль после этого может быть автоматически установлен из текущего каталога. Первичное сопряжение требует доказательства владения ключом и отдельного локального подтверждения пользователя. Реализован процессный IPC и первый модуль signature, но пока он выполняет только диагностику среды; операции настройки, сертификатов и подписи ещё не подключены. Подписанный каталог и Linux x86-64 артефакт signature@0.1.0 опубликованы по адресу https://opsregistry.org/modules/v1/. Сборки Windows, macOS и других Linux target, а также профили изоляции процессов для разных ОС ещё не готовы. Текущую версию нельзя использовать для юридически значимой подписи. Форматы описаны в docs/module-packages.md и docs/module-runtime.md. Выпуск и проверка допусков описаны в docs/operation-grants.md.
Актуальная межрепозиторная точка продолжения находится в registry/docs/agent-handoff.md.
Разработка
. "$HOME/.cargo/env"
cargo clippy --all-targets --all-features -- -D warnings
cargo test
Адрес по умолчанию: http://127.0.0.1:47831. Для изолированной разработки его можно изменить через OPSREGISTRY_BRIDGE_ADDRESS, но адрес обязан оставаться loopback. OPSREGISTRY_BRIDGE_DATA_DIR переопределяет защищённый локальный каталог данных; внутри него Bridge хранит постоянный ID, сопряжения, использованные grant ID, кеш каталога и модули. Адреса каталога можно переопределить через OPSREGISTRY_BRIDGE_CATALOG_URL и OPSREGISTRY_BRIDGE_CATALOG_SIGNATURE_URL для корпоративного зеркала, подписанного доверенным корневым ключом.
English
OpsRegistry Bridge is a local cross-platform Rust runtime for universal operations that require operating-system services, protected credentials or physical hardware. It exposes a loopback-only protocol and keeps private cryptographic material outside web applications.