Песочница

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

Native и npm аутентифицируют raw- или bundled-контекст Vouch и могут потребовать совпадения bundle с отдельно переданными точными байтами source и input. Текущее Native re-execution и локальный gate принимают только live request-bound evidence, поэтому полномочия bundle требуют полную внешнюю пару.

Рабочий порядок

  • Выдайте подписанное свидетельство командой lispex vouch issue --source RULE --input INPUT --profile csk.checked-profile/v1 --key-handle pkcs8-file:///ABSOLUTE/issuer.pk8 --out-dir OUTPUT. Provider принимает только URI абсолютного локального ключа Ed25519 DER PKCS#8, но не ключи из inline, stdin или переменных окружения.
  • Аутентифицируйте без выполнения в Native или npm командой lispex vouch verify --envelope OUTPUT/envelope.dsse.json --trust-policy POLICY --source RULE --input INPUT --profile csk.checked-profile/v1 --report-out AUTH-REPORT. Одинаковые принятые байты дают тот же канонический отчёт v0 и код 0 или 10.
  • Только в Native добавьте --reexecute, чтобы запустить текущий verifier. Чистый отчёт разделяет authentication: authenticated и reexecution: execution-agreed, называет csk.vouch-complete-transcript/v0 и записывает current_vs_signed: agree. npm отклоняет этот флаг до I/O артефакта.
  • Проверьте решение approve командой lispex vouch gate --envelope OUTPUT/envelope.dsse.json --trust-policy POLICY --source RULE --input INPUT --profile csk.checked-profile/v1 --require-decision approve --report-out GATE-REPORT. Используйте только код 0 этого вызова как локальное совпадение; код 10 означает отсутствие grant.
  • Для неподписанной структурной проверки используйте lispex vouch inspect, а для сравнения фиксированного корпуса — npm lispex vouch replay. Поддерживаемый пример окна возврата один раз выдаёт Native, побайтно сравнивает отчёты аутентификации Native/npm, а повторное выполнение и gate оставляет в Native.
  • Сохраняйте точные правило, ввод, профиль, политику доверия, отчёты и identity release-бинарника. Проверка не восстанавливает отсутствующий контекст.
  • Refund-window выводит identity до выдачи, подтверждает parity raw/unpinned/pinned-аутентификации Native/npm, затем передаёт точный внешний запрос в Native pinned-bundle re-execution и gate. Он также проверяет отказ unpinned authority и request mismatch.
  • lispex vouch policy create --public-key SPKI --engine-sha256 DIGEST --source RULE --out POLICY принимает один 44-байтный ключ Ed25519 SPKI DER и один или несколько проверенных engine digest и именованных файлов исходника. Общий Rust выводит identity, отклоняет дубли, сортирует allowlist и атомарно пишет побайтно одинаковую каноническую policy v1 без перезаписи и stdout.
  • lispex vouch policy check --trust-policy POLICY без вывода принимает только точные закрытые канонические байты policy v0/v1. Успех означает структурную корректность конфигурации, а не аутентификацию, evidence, re-execution, grant gate или суждение о доверии к ключу, engine или исходнику.
  • lispex vouch source-id --source RULE один раз читает не более 1 МиБ и печатает SHA-256("csk.v0.source" || 0x1f || точные байты исходника) как 64 строчных hex-символа. Native и npm используют одну функцию Rust; public browser WASM и Playground её не предоставляют.
  • lispex vouch key-id --public-key SPKI проверяет один точный 44-байтный Ed25519 DER SPKI и печатает существующий ID ключа с sha256:. engine-id --executable FILE хэширует до 16 МиБ обычным SHA-256 с тем же префиксом. input-id --input FILE хэширует до 1 МиБ как SHA-256("csk.v0.input" || 0x1f || точные байты) без разбора input. stdout Native/npm побайтно одинаков.
  • Trust policy v1 требует непустой allowed_source_sha256 для каждого ключа. Каждое значение — существующая identity исходника receipt: 64 строчных hex-символа для SHA-256(UTF-8("csk.v0.source") || 0x1f || точные байты исходника). Policy v0 по-прежнему принимается и не ограничивает исходник.
  • csk.vouch-input-bundle/v0 содержит только точные байты канонического конверта DSSE, проверяемого исходника и ввода. Политика доверия, ожидаемый профиль, требуемое решение, ключ и путь отчёта остаются снаружи у вызывающей стороны.
  • lispex vouch verify --bundle BUNDLE --trust-policy POLICY --source RULE --input INPUT --profile PROFILE --report-out REPORT сначала аутентифицирует подписанный контекст bundle, затем требует побайтного совпадения с отдельно снимками source и input. Native и npm выдают одинаковый канонический отчёт v0; mismatch source классифицируется раньше input.
  • Raw verify аутентифицирует точный контекст вызывающей стороны. Unpinned verify bundle остаётся аутентификацией точного подписанного контекста из bundle. Pinned verify дополнительно подтверждает равенство отдельным байтам запроса вызова. Native bundle --reexecute и gate требуют полную внешнюю пару и при её отсутствии или неполноте дают usage-код 2 до I/O artifact.
  • Native выдаёт и принимает bundle и может повторно выполнять или применять gate; CLI npm принимает bundle только для аутентификации. Публичные browser WASM и Playground не предоставляют API аутентификации Vouch или bundle.
  • Полный канонический bundle ограничен 16 МиБ. Ошибки внешнего bundle дают код 3 без отчёта аутентификации; после успешного декодирования сохраняются коды 0, 10 или 1 и байты отчёта v0. Для большего или отдельно закреплённого контекста остаётся raw-режим.

Уровни гарантий

ОперацияУстанавливаетПо-прежнему требуется
Команды identitykey-id, engine-id, source-id и input-id печатают существующие точные значения из именованных ограниченных файлов общим Rustбез stdin, вывода из artifact, происхождения, trust, проверки input, аутентификации, evidence или полномочий
Policy create/checklispex vouch policy create записывает одну каноническую policy v1 из проверенных публичных входов; policy check проверяет точные канонические байтыбез private key, выведенного engine, доверия из artifact, overwrite/merge, аутентификации, evidence, grant решения или browser export
Source IDlispex vouch source-id --source RULE печатает точное значение policy v1 из ограниченных байтовбез stdin, извлечения artifact, нормализации, одобрения, записи policy, аутентификации или evidence
Trust policy v1точный локальный для ключа allowed_source_sha256 после проверок подписи/profile/enginenative-source-disallowed до raw source mismatch; нет политики input/request или свежести
Bundleодин ограниченный транспорт для точных байтов envelope/source/inputвнешние trust/profile и аутентификация; транспорт сам не даёт полномочий
Inspectсхему, хэши и структурную согласованностьаутентификация происхождения
Authenticateразрешённый ключ подписал точный связанный контекст конвертанаблюдение текущего выполнения
Re-executeтекущий нативный verifier согласен с обоими подписанными полными transcriptавторизация приложения и проверка политики
Gateживое аутентифицированное согласие текущего Native точно совпадает с явно требуемым решениемсвежесть, обработка replay, identity, проверка политики и контроль развёртывания
Действиеотдельное действие приложения вне Vouchавторизация приложения и контроль побочных эффектов

Команды переносимого Vouch

1. Вывод точной identity ключа

OUTPUT
lispex vouch key-id --public-key issuer.spki.der

2. Вывод точной identity engine

OUTPUT
lispex vouch engine-id --executable /exact/path/to/lispex

3. Вывод точной identity исходника

OUTPUT
lispex vouch source-id --source RULE

4. Вывод точной identity input

OUTPUT
lispex vouch input-id --input INPUT

5. Выдача Native и создание bundle

OUTPUT
lispex vouch issue \
  --source RULE --input INPUT \
  --profile csk.checked-profile/v1 \
  --key-handle pkcs8-file:///ABSOLUTE/issuer.pk8 \
  --out-dir OUTPUT --emit-bundle

6. Создание policy из независимо проверенных публичных входов

OUTPUT
lispex vouch policy create \
  --public-key issuer.spki.der \
  --engine-sha256 sha256:<reviewed-engine-digest> \
  --source RULE --out POLICY

7. Проверка точных канонических байтов policy

OUTPUT
lispex vouch policy check --trust-policy POLICY

8. Аутентификация контекста bundle в Native или npm

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

9. Закрепление bundle к ожидаемому запросу в Native или npm

OUTPUT
lispex vouch verify \
  --bundle OUTPUT/vouch-input-bundle.json \
  --trust-policy POLICY --source RULE --input INPUT \
  --profile csk.checked-profile/v1 --report-out PINNED-REPORT

10. Привязка точного запроса и re-execution Native

OUTPUT
lispex vouch verify \
  --bundle OUTPUT/vouch-input-bundle.json \
  --trust-policy POLICY --source RULE --input INPUT \
  --profile csk.checked-profile/v1 --reexecute \
  --report-out REEXECUTION-REPORT

11. Локальный gate решения Native

OUTPUT
lispex vouch gate \
  --bundle OUTPUT/vouch-input-bundle.json \
  --trust-policy POLICY --source RULE --input INPUT \
  --profile csk.checked-profile/v1 --require-decision approve \
  --report-out GATE-REPORT

12. Raw-совместимость с той же policy

OUTPUT
lispex vouch verify \
  --envelope OUTPUT/envelope.dsse.json \
  --trust-policy POLICY --source RULE --input INPUT \
  --profile csk.checked-profile/v1 --report-out AUTH-REPORT

Границы

  • Gate не выполняет внешнее действие, а его отчёт не является переносимой авторизацией. Вызывающее приложение по-прежнему отвечает за свежесть, обработку replay, identity, контроль развёртывания и безопасность и корректность требуемого решения.
  • Создание policy не принимает private key, stdin, envelope, bundle, receipt, report, выведенный текущий engine, сетевой ресурс или существующую policy для merge. Происхождение public key, проверка engine/source, распространение, замена и lifecycle policy принадлежат потребителю; browser WASM и Playground не предоставляют policy API.
  • Команды identity принимают только именованные файлы и ничего не выводят из artifacts. source-id и input-id используют разделение домена, а не обычный SHA-256; они не декодируют и не нормализуют текст, а input-id не разбирает JSON checked-input. Ни одна identity не устанавливает происхождение, одобрение, policy, trust, аутентификацию, evidence, свежесть, replay-контроль или полномочия.
  • Bundle — недоверенный транспорт, а не квитанция, подпись, отчёт, capability, одобрение исходника или переносимая авторизация. Он не добавляет шифрование или конфиденциальность и не устанавливает свежесть, nonce, срок действия, отзыв, защиту от replay, identity, независимого свидетеля, корректность политики, происхождение до предоставленных байтов, безопасность развёртывания или разрешение внешнего действия.
  • Request pin означает точное равенство, а не свежесть, уникальность nonce, срок действия, отзыв, защиту от replay, намерение человека или разрешение внешнего действия. Некорректная подпись или policy отклоняется до сообщения mismatch запроса. --source и --input с bundle передаются только вместе; неполная пара даёт usage-код 2 до I/O artifact.