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, а для сравнения фиксированного корпуса — npmlispex 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-режим.
Уровни гарантий
| Операция | Устанавливает | По-прежнему требуется |
|---|---|---|
| Команды identity | key-id, engine-id, source-id и input-id печатают существующие точные значения из именованных ограниченных файлов общим Rust | без stdin, вывода из artifact, происхождения, trust, проверки input, аутентификации, evidence или полномочий |
| Policy create/check | lispex vouch policy create записывает одну каноническую policy v1 из проверенных публичных входов; policy check проверяет точные канонические байты | без private key, выведенного engine, доверия из artifact, overwrite/merge, аутентификации, evidence, grant решения или browser export |
| Source ID | lispex vouch source-id --source RULE печатает точное значение policy v1 из ограниченных байтов | без stdin, извлечения artifact, нормализации, одобрения, записи policy, аутентификации или evidence |
| Trust policy v1 | точный локальный для ключа allowed_source_sha256 после проверок подписи/profile/engine | native-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.der2. Вывод точной identity engine
OUTPUT
lispex vouch engine-id --executable /exact/path/to/lispex3. Вывод точной identity исходника
OUTPUT
lispex vouch source-id --source RULE4. Вывод точной identity input
OUTPUT
lispex vouch input-id --input INPUT5. Выдача 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-bundle6. Создание policy из независимо проверенных публичных входов
OUTPUT
lispex vouch policy create \
--public-key issuer.spki.der \
--engine-sha256 sha256:<reviewed-engine-digest> \
--source RULE --out POLICY7. Проверка точных канонических байтов policy
OUTPUT
lispex vouch policy check --trust-policy POLICY8. Аутентификация контекста bundle в Native или npm
OUTPUT
lispex vouch verify \
--bundle OUTPUT/vouch-input-bundle.json \
--trust-policy POLICY --profile csk.checked-profile/v1 \
--report-out AUTH-REPORT9. Закрепление 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-REPORT10. Привязка точного запроса и 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-REPORT11. Локальный 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-REPORT12. 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.