Какое решение вы получите в конце
В конце пути команда vouch gate внутри одного вызова сравнивает живой
аутентифицированный результат с решением, которое требует ваше приложение,
например approve. Совпадение даёт локальное разрешение только для этого
вызова, а сам внешний шаг, будь то платёж, возврат или развёртывание,
остаётся отдельным решением приложения.
Что подготовить
Подготовьте независимо друг от друга следующее.
- проверенное правило
refund-window.lspx.pngилиrefund-window.lspx - точный файл проверяемого входа
INPUT - открытый ключ Ed25519
issuer.spki.derи абсолютный URI локального ключа PKCS#8 - проверенный хэш точного исполняемого файла Native
- новые пути
POLICY,OUTPUTи каждого отчёта
Политика доверия принадлежит потребителю. Не выводите доверие из пакета, который собираетесь проверять.
Точные идентификаторы
Четыре команды печатают через общий Rust точные идентификаторы названных файлов, а именно ключа, движка, исходника и входа. Сам по себе идентификатор даёт только точное значение и не устанавливает происхождение, доверие, аутентификацию, свидетельство или полномочия.
lispex vouch key-id --public-key issuer.spki.derlispex vouch engine-id --executable /exact/path/to/lispexlispex vouch source-id --source-image refund-window.lspx.pnglispex vouch input-id --input INPUTЭтап 1. Опишите доверие политикой
В политике доверия потребитель фиксирует независимо проверенные открытый
ключ, хэш движка и точный исходник. Команды доступны в Native и npm. Успех
policy create и policy check устанавливает точную конфигурацию, заданную
с точностью до байта, и это ещё не аутентификация.
lispex vouch policy create \
--public-key issuer.spki.der \
--engine-sha256 sha256:<reviewed-engine-digest> \
--source-image refund-window.lspx.png --out POLICYlispex vouch policy check --trust-policy POLICYЭтап 2. Выдайте свидетельство и пакет
Только Native выдаёт свидетельство. Он выполняет правило, подписывает точный
контекст исходника, входа и профиля и по флагу --emit-bundle создаёт
транспортный пакет ограниченного размера. Значение --profile
csk.checked-profile/v1 называет фиксированный проверяемый профиль, ту
меньшую часть языка, внутри которой правило должно оставаться, чтобы вообще
участвовать в Ваучере.
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. Незакреплённая проверка пакета устанавливает ровно одно. Подписанный контекст внутри пакета удовлетворяет предоставленной вами политике. Такая проверка аутентифицирует лишь тот контекст, который принёс сам пакет, и не наблюдает текущее выполнение.
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, который несёт полномочия.
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, а не утверждение о прошлом
запуске или независимой реализации.
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 означает
аутентификацию без разрешения. Сам отчёт нельзя повторно предъявить как
разрешение.
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, соберите из того же точного исходника специальный контейнер Ваучера. Эти три команды не аутентифицируют, не выполняют правило и не выдают разрешение.
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Затем явно выберите скомпилированный путь, не удаляя прежних закреплений и проверок.
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 и запись смысла по-прежнему должны согласиться первыми. Подмена создателя или байта исходника, расхождение виртуальной машины и несовпадение решения отклоняются закрыто, без отката к проверке допуска только по исходнику.
Исходный режим с той же политикой
Вместо пакета можно передать подписанный конверт напрямую, и политика вместе с остальными проверками не меняется.
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 ещё до чтения артефакта. - Скомпилированный артефакт является материалом целостности. Он детерминированно выводится из точного исходника, но не является корнем доверия, подписанным запросом, независимым свидетелем или переносимым полномочием. Его отчёт нельзя использовать как вход свидетельства. Путь не устанавливает личность организации, корректность правила или политики, свежесть, защиту от повтора, корректность компилятора вне проверенного вывода либо разрешение внешнего действия.
Куда дальше
Держите рядом обзор Ваучера. Он разделяет аутентификацию, привязку запроса, согласие текущего выполнения и локальное решение.