Песочница

Использование Lispex Vouch

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

Какое решение вы получите в конце

В конце пути команда vouch gate внутри одного вызова сравнивает живой аутентифицированный результат с решением, которое требует ваше приложение, например approve. Совпадение — локальное разрешение (grant) только для этого вызова; сам внешний шаг — платёж, возврат, развёртывание — остаётся отдельным решением приложения.

Что подготовить

Подготовьте независимо друг от друга:

  • проверенное правило refund-window.lspx.png или refund-window.lspx;
  • точный файл проверяемого входа INPUT;
  • открытый ключ Ed25519 issuer.spki.der и абсолютный URI локального ключа PKCS#8;
  • проверенный хэш точного исполняемого файла Native;
  • новые пути POLICY, OUTPUT и каждого отчёта.

Политика доверия принадлежит потребителю. Не выводите доверие из bundle, который собираетесь проверять.

Точные идентификаторы

Четыре команды печатают точные идентификаторы названных файлов через общий Rust: ключа, движка, исходника и входа. Идентификатор — это только точное значение; он не устанавливает происхождение, доверие, аутентификацию, свидетельство или полномочия.

SH
lispex vouch key-id --public-key issuer.spki.der
SH
lispex vouch engine-id --executable /exact/path/to/lispex
SH
lispex vouch source-id --source-image refund-window.lspx.png
SH
lispex vouch input-id --input INPUT

Этап 1. Опишите доверие политикой

Политика доверия — файл, в котором потребитель фиксирует независимо проверенные открытый ключ, хэш движка и точный исходник. Команды доступны в Native и npm. Успех policy create и policy check устанавливает точную каноническую конфигурацию — это ещё не аутентификация.

SH
lispex vouch policy create \
  --public-key issuer.spki.der \
  --engine-sha256 sha256:<reviewed-engine-digest> \
  --source-image refund-window.lspx.png --out POLICY
SH
lispex vouch policy check --trust-policy POLICY

Этап 2. Выдайте свидетельство и bundle

Только Native выдаёт свидетельство: он выполняет правило, подписывает точный контекст исходника, входа и профиля и по флагу --emit-bundle создаёт ограниченный транспортный bundle.

SH
lispex vouch issue \
  --source-image refund-window.lspx.png --input INPUT \
  --profile csk.checked-profile/v1 \
  --key-handle pkcs8-file:///ABSOLUTE/issuer.pk8 \
  --out-dir OUTPUT --emit-bundle

Этап 3. Аутентифицируйте контекст пакета

Аутентификация доступна в Native и npm. Незакреплённая проверка bundle устанавливает одно: подписанный контекст внутри bundle удовлетворяет предоставленной вами политике. Она аутентифицирует лишь тот контекст, который принёс сам bundle, и не наблюдает текущее выполнение.

SH
lispex vouch verify \
  --bundle OUTPUT/vouch-input-bundle.json \
  --trust-policy POLICY --profile csk.checked-profile/v1 \
  --report-out AUTH-REPORT

Этап 4. Привяжите свой точный запрос

Закреплённая проверка добавляет к аутентификации точное равенство: контекст пакета должен совпасть с исходником и входом, которые вы передали отдельно — --source-image (или --source) и --input. Работает в Native и npm. Для всех этапов Native с полномочиями обязательны оба файла.

SH
lispex vouch verify \
  --bundle OUTPUT/vouch-input-bundle.json \
  --trust-policy POLICY --source-image refund-window.lspx.png --input INPUT \
  --profile csk.checked-profile/v1 --report-out PINNED-REPORT

Этап 5. Наблюдайте текущее выполнение

Флаг --reexecute доступен только в Native. Успех устанавливает, что текущий проверяющий Native согласен с обоими подписанными полными протоколами выполнения. Это новое наблюдение текущего Native, а не утверждение о прошлом запуске или независимой реализации.

SH
lispex vouch verify \
  --bundle OUTPUT/vouch-input-bundle.json \
  --trust-policy POLICY --source-image refund-window.lspx.png --input INPUT \
  --profile csk.checked-profile/v1 --reexecute \
  --report-out REEXECUTION-REPORT

Этап 6. Потребуйте решение

Gate доступен только в Native. Успех означает, что живое аутентифицированное согласие Native точно совпало с требуемым решением этого вызова. Код выхода 0 — одно локальное совпадение решения; код 10 — аутентификация без grant. Сам отчёт нельзя повторно предъявить как grant.

SH
lispex vouch gate \
  --bundle OUTPUT/vouch-input-bundle.json \
  --trust-policy POLICY --source-image refund-window.lspx.png --input INPUT \
  --profile csk.checked-profile/v1 --require-decision approve \
  --report-out GATE-REPORT

Необязательно: добавьте согласие проверенной VM

Если нужно, чтобы с подписанным протоколом согласилась и проверенная Rust VM, соберите из того же точного исходника специальный контейнер Vouch. Эти три команды не аутентифицируют, не выполняют правило и не выдают разрешение:

SH
lispex vouch compiled build \
  --source-image refund-window.lspx.png \
  --out refund-window.lpxvca

lispex vouch compiled inspect \
  --artifact refund-window.lpxvca

lispex vouch compiled validate \
  --artifact refund-window.lpxvca \
  --source-image refund-window.lspx.png

Затем явно выберите скомпилированный путь, не удаляя прежних закреплений и проверок:

SH
lispex vouch verify \
  --bundle OUTPUT/vouch-input-bundle.json \
  --trust-policy POLICY --source-image refund-window.lspx.png --input INPUT \
  --profile csk.checked-profile/v1 --reexecute \
  --compiled-artifact refund-window.lpxvca \
  --report-out COMPILED-REEXECUTION-REPORT

lispex vouch gate \
  --bundle OUTPUT/vouch-input-bundle.json \
  --trust-policy POLICY --source-image refund-window.lspx.png --input INPUT \
  --profile csk.checked-profile/v1 --require-decision approve \
  --compiled-artifact refund-window.lpxvca \
  --report-out COMPILED-GATE-REPORT

До создания состояния VM контейнер обязан пройти каноническую проверку, строгий verifier байткода и точное повторное выведение source→Core IR→bytecode. Текущий tree/Meaning — два штатных пути проверки Native — по-прежнему должен согласиться первым. Подмена producer или байта исходника, расхождение VM и несовпадение решения отклоняются закрыто — без отката к gate только по исходнику.

Исходный режим с той же политикой

Вместо bundle можно передать подписанный конверт напрямую; политика и остальные проверки не меняются:

SH
lispex vouch verify \
  --envelope OUTPUT/envelope.dsse.json \
  --trust-policy POLICY --source-image refund-window.lspx.png --input INPUT \
  --profile csk.checked-profile/v1 --report-out AUTH-REPORT

Что устанавливает каждый шаг

ОперацияУстанавливаетПо-прежнему требуется
Команды идентификаторовkey-id, engine-id, source-id и input-id печатают точные значения из названных ограниченных файлов через общий Rustне устанавливают происхождение, доверие, аутентификацию, свидетельство или полномочия
Создание и проверка политикиpolicy create записывает одну каноническую политику v1 из проверенных открытых входов; policy check проверяет точные байтыне выбирают доверие, не читают закрытый ключ из артефакта, не аутентифицируют и не выдают решение
Идентификатор исходникаsource-id --source RULE печатает точное значение для списка разрешённых исходниковне нормализует, не одобряет и не записывает политику
Политика доверия v1после проверки подписи, профиля и движка ограничивает каждый ключ точным allowed_source_sha256не является политикой входа, запроса или свежести
Пакет bundleограниченно переносит точные байты конверта, исходника и входатребует внешних политики и профиля; сам транспорт полномочий не даёт
Структурная проверкаподтверждает схему, хэши и внутреннюю согласованностьне аутентифицирует происхождение
Аутентификацияразрешённый ключ подписал точный связанный контекст конвертане наблюдает текущее выполнение
Повторное выполнениетекущий проверяющий Native согласен с обоими подписанными полными протоколамитребует отдельной авторизации приложения и проверки политики
Build/validate скомпилированного артефактаканонические Core IR и проверенный байткод точно заново выведены из отдельно переданного исходникане устанавливает аутентификацию, выполнение, корректность компилятора вне этого вывода или полномочия
Скомпилированное повторное выполнениеаутентифицированные текущие tree/Meaning и проверенная Rust VM согласны с подписанным полным протоколомне устанавливает независимую эквивалентность, свежесть, корректность политики или внешнюю авторизацию
Gateживое аутентифицированное согласие Native точно совпало с явно требуемым решениемне даёт свежесть, защиту от повтора, личность или разрешение внешнего действия
Действиеотдельный шаг приложения за пределами Vouchсобственная авторизация и контроль побочных эффектов

Частая ошибка

Gate не выполняет внешнее действие, а его отчёт не является переносимой авторизацией. Вызывающее приложение по-прежнему отвечает за свежесть, защиту от повторного предъявления, личность, контроль развёртывания и безопасность требуемого решения.

Текущие границы

  • Политика собирается только из открытых проверенных входов. Создание политики не принимает закрытый ключ, стандартный ввод, конверт, пакет, квитанцию, отчёт, автоматически найденный движок, сетевой ресурс или существующую политику для слияния. Происхождение открытого ключа, проверка движка и исходника, распространение, замена и срок жизни политики принадлежат потребителю. Браузерный WASM и Песочница API политики не предоставляют.
  • Идентификатор — это только значение. Команды идентификаторов принимают только названные файлы и ничего не выводят из артефактов. source-id и input-id используют разделение доменов, а не обычный SHA-256; текст не декодируется и не нормализуется, входной JSON не разбирается. Идентификатор сам по себе не устанавливает происхождение, одобрение, доверие, аутентификацию, свежесть или полномочия.
  • Bundle — только транспорт. Пакет не является квитанцией, подписью, отчётом, возможностью, одобрением исходника или переносимой авторизацией. Он не шифрует данные и не устанавливает свежесть, одноразовость, срок действия, отзыв, защиту от повтора, личность, независимого свидетеля или разрешение действия.
  • Привязка запроса — это точное равенство. Она не означает свежесть, одноразовость, намерение человека или разрешение действия. Некорректная подпись либо политика отвергается до сообщения о расхождении запроса. С пакетом --source и --input передаются только вместе; неполная пара даёт код использования 2 ещё до чтения артефакта.
  • Скомпилированный артефакт — материал целостности. Он детерминированно выводится из точного исходника, но не является корнем доверия, подписанным запросом, независимым свидетелем или переносимым полномочием. Его отчёты не принимаются как вход свидетельства. Путь не устанавливает личность организации, корректность правила или политики, свежесть, защиту от повтора, корректность компилятора вне проверенного вывода либо разрешение внешнего действия.

Куда дальше

Держите рядом обзор Vouch: он разделяет аутентификацию, привязку запроса, согласие текущего выполнения и локальное решение.

Обзор Vouch · Выбор среды выполнения