README.md

OpsRegistry Bridge

Локальная кроссплатформенная среда исполнения операций OpsRegistry, которым нужен доступ к операционной системе, защищённым учётным данным или физическим устройствам.

Первый сценарий — электронная подпись. Bridge обнаруживает токены и сертификаты, проверяет и настраивает рабочее место, а затем создаёт подпись через CryptoPro, PKCS#11 или другой нативный провайдер. Проект не зависит от VARM, оператора ЭДО, производителя токена или законодательства одной страны.

Как это работает

  1. Веб-приложение получает от своего сервера короткоживущий допуск к конкретной операции.
  2. Браузер обращается к Bridge только через loopback-интерфейс.
  3. Bridge проверяет связанное приложение, допуск и контракт операции.
  4. Нативный backend выполняет действие локально, не передавая закрытый ключ приложению.
  5. Приложение получает нормализованный результат операции 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.

Описание
Модульный локальный Rust-сервис OpsRegistry для электронной подписи, печати и безопасного взаимодействия с оборудованием
Конвейеры
0 успешных
0 с ошибкой
Разработчики