Песочница

Использование Ваучера Лиспекса

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

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

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

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

Подготовьте независимо друг от друга следующее.

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

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

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

Четыре команды печатают через общий 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. Выдайте свидетельство и пакет

Только Native выдаёт свидетельство. Он выполняет правило, подписывает точный контекст исходника, входа и профиля и по флагу --emit-bundle создаёт транспортный пакет ограниченного размера. Значение --profile csk.checked-profile/v1 называет фиксированный проверяемый профиль, ту меньшую часть языка, внутри которой правило должно оставаться, чтобы вообще участвовать в Ваучере.

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. Незакреплённая проверка пакета устанавливает ровно одно. Подписанный контекст внутри пакета удовлетворяет предоставленной вами политике. Такая проверка аутентифицирует лишь тот контекст, который принёс сам пакет, и не наблюдает текущее выполнение.

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. Потребуйте решение

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

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

Необязательный шаг с согласием проверенной виртуальной машины

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

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

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

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

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

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не является политикой входа, запроса или свежести
Транспортный пакетограниченно переносит точные байты конверта, исходника и входадоверие, профиль и аутентификация остаются внешними, и сам транспорт полномочий не даёт
Структурная проверкаподтверждает схему, хэши и внутреннюю согласованностьне аутентифицирует происхождение
Аутентификацияразрешённый ключ подписал точный связанный контекст конвертане наблюдает текущее выполнение
Повторное выполнениетекущий проверяющий Native согласен с обоими подписанными полными протоколамитребует отдельной авторизации приложения и проверки политики
Сборка и проверка скомпилированного артефактаCore IR в единственной допустимой форме и проверенный байткод точно заново выведены из отдельно переданного исходникане устанавливает аутентификацию, выполнение, корректность компилятора вне этого вывода или полномочия
Скомпилированное повторное выполнениеаутентифицированные текущие запуск tree и запись смысла вместе с проверенной виртуальной машиной Rust согласны с подписанным полным протоколомне устанавливает независимую эквивалентность, свежесть, корректность политики или внешнюю авторизацию
Проверка допускаживое аутентифицированное согласие Native точно совпало с явно требуемым решениемне даёт свежесть, защиту от повтора, личность или разрешение внешнего действия
Действиеотдельный шаг приложения за пределами Ваучерасобственная авторизация и контроль побочных эффектов

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

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

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

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

Куда дальше

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

Обзор Ваучера · Выбор способа запуска