예를 들어 authenticated.json은 정책에 맞는 서명을 기록합니다.
current.json은 새로 실행한 비교 결과를 더합니다.
gate.json은 그 현재 결과가 요구한 결정과 같았는지 기록합니다.
아래 명령은 바우치 사용 가이드의 실습에 이어서 실행합니다. 환불 예제를 마친 같은 디렉터리에서 네이티브를 사용하세요. 전체 소스와 입력, 키 준비와 정책 명령은 사용 가이드에 있습니다.
결과를 읽고 다음 명령 고르기
다음은 사용 가이드에서 만드는 보고서 파일입니다.
| 파일 | 읽을 결과 | 다음 명령 |
|---|---|---|
issued/issue-report.json | status: "issued-native" | vouch verify로 전송 묶음 인증 |
authenticated.json | authentication_status: "authenticated" | 자신의 --source와 --input 추가 |
bound.json | 별도로 제공한 소스와 입력이 일치한 뒤 인증 성공 | --reexecute 추가 |
current.json | reexecution.status: "execution-agreed"와 comparison.current_vs_signed: "agree" | 필요한 결정을 지정해 vouch gate 실행 |
gate.json | gate.status: "granted"와 요구한 결정과 관측한 결정 | 애플리케이션의 행동 정책 적용 |
authenticated.json과 bound.json은 csk.native-verify-report/v0 형식을 사용합니다.
comparison_status는 서명된 실행 기록을 설명합니다.
요청을 결속하는 호출에서는 자신의 소스와 입력을 따로 더합니다.
current.json은 csk.native-reexecution-report/v0 형식입니다.
인증 결과와 현재 tree/Meaning 일치를 따로 기록합니다.
gate.json은 csk.native-gate-report/v0 형식입니다.
리스펙스 인터프리터는 소스를 읽고 핵심 형식인 CoreExpr로 정규화한 뒤 평가합니다.
Meaning은 같은 소스에서 만든 중간 표현을 평가합니다.
현재 실행 비교는 최종 결과를 포함한 두 전체 실행 기록을 다룹니다.
게이트는 호출할 때마다 한 네이티브 프로세스 안에서 인증하고 요청을 결속하고 규칙을 재실행한 뒤 결정을 검사합니다. 각 단계는 앞 단계가 프로세스 안에서 만든 결과를 사용합니다. 저장된 보고서는 그 호출을 살펴보고 로그를 남길 때 사용합니다. 다음 호출은 전송 묶음이나 봉투, 정책, 자신의 소스와 입력에서 시작합니다.
인증에 사용하는 파일
| 파일이나 형식 | 내용 | 사용하는 명령 |
|---|---|---|
policy.json, 신뢰 정책 v1 | 수신자가 고른 키와 엔진과 언어 프로파일과 소스 식별자 | vouch verify와 vouch gate |
issued/envelope.dsse.json | 실행 데이터를 담은 서명된 기록 묶음 | 외부 소스와 입력을 지정한 vouch verify --envelope |
issued/vouch-input-bundle.json, csk.vouch-input-bundle/v0 | 정확한 봉투와 소스와 입력 바이트 | vouch verify --bundle 또는 vouch gate --bundle |
issued/payload.json | 소스와 입력 식별자 및 전체 실행 기록을 포함한 서명 대상 데이터 | 구조 검사와 인증 |
수신자는 공개키와 실행 파일 식별자와 검토한 소스를 선택합니다. 호출 애플리케이션은 실행자 신원과 시각과 요청 고유성과 트랜잭션 상태를 확인합니다. 외부 행동도 애플리케이션이 승인하고 실행합니다.
실행 기록의 구조 검사하기
사용 가이드의 실행 데이터와 정확한 입력으로 기록의 구조를 검사합니다.
lispex vouch inspect \
--receipt issued/payload.json \
--source refund-window.lspx \
--input input.checked.json \
--profile csk.checked-profile/v1 \
--report-out structure.json명령은 종료 코드 0으로 끝나며 표준 출력은 비어 있습니다.
다음 내용의 structure.json을 씁니다.
{
"status": "structurally-consistent",
"verify_report": "csk.verify-report/v0"
}이 검사는 기록의 스키마와 해시와 내부 결속을 확인합니다.
서명 인증은 사용 가이드의 vouch verify 단계에서 따로 수행합니다.
차분 실행 기록 형식 csk.differential-receipt/v0은 결정 프로파일 규칙과 정확한 입력을 담습니다.
소스에서 만든 중간 표현과 실행 결과와 버전과 해시도 기록합니다.
네이티브 lispex diff-receipt가 이 기록을 만듭니다.
npm의 lispex verify는 기록의 구조를 검사합니다.
npm의 lispex replay는 기록된 사례 모음을 비교합니다.
명령은 CLI와 바우치 사례 비교를 참고하세요.
컴파일 파일 만들고 검사하기
lispex.vouch-compiled-artifact/v1 파일은 정확한 소스를 Core IR과 검사를 마친 바이트코드에 연결합니다.
Core IR은 이름의 참조를 정한 중간 표현입니다.
파일은 바이트코드 검증기와 리스펙스 VM과 자원 프로파일도 식별합니다.
가상 머신은 컴파일된 명령을 실행하는 프로그램입니다.
사용 가이드의 소스로 파일을 만드세요. 그런 다음 같은 소스에서 정확히 같은 파일을 만들 수 있는지 검사합니다.
lispex vouch compiled build \
--source refund-window.lspx \
--out refund-window.lpxvca
lispex vouch compiled validate \
--artifact refund-window.lpxvca \
--source refund-window.lspx두 명령은 종료 코드 0으로 끝나며 JSON을 출력합니다.
만들기 명령은 refund-window.lpxvca를 만들고 execution: "not-run"을 보고합니다.
검사 명령은 valid: true와 derivation: "exact-source"와 execution: "not-run"을 보고합니다.
두 결과에는 authority: "integrity-only"도 있습니다.
다음에는 요청을 인증하고 컴파일된 명령을 실행합니다.
lispex vouch verify \
--bundle issued/vouch-input-bundle.json \
--trust-policy policy.json \
--source refund-window.lspx \
--input input.checked.json \
--profile csk.checked-profile/v1 \
--reexecute \
--compiled-artifact refund-window.lpxvca \
--report-out compiled-current.json명령은 종료 코드 0으로 끝나며 표준 출력은 비어 있습니다.
csk.native-compiled-reexecution-report/v1 형식의 compiled-current.json을 씁니다.
보고서는 요청을 결속한 인증과 현재 tree/Meaning 일치를 기록합니다.
정확한 소스에서 다시 만든 결과와 현재 리스펙스 VM 일치도 기록합니다.
| 필드 | 이 예제의 값 |
|---|---|
authentication.status | "authenticated" |
compiled_reexecution.status | "execution-agreed" |
네이티브는 요청을 인증한 뒤 Core IR과 바이트코드를 다시 만듭니다. 바이트코드를 검사하고 현재 VM 실행을 비교합니다. 같은 호출에서 필요한 결정까지 확인하려면 컴파일 게이트를 실행하세요.
lispex vouch gate \
--bundle issued/vouch-input-bundle.json \
--trust-policy policy.json \
--source refund-window.lspx \
--input input.checked.json \
--profile csk.checked-profile/v1 \
--compiled-artifact refund-window.lpxvca \
--require-decision approve \
--report-out compiled-gate.json명령은 종료 코드 0으로 끝나며 표준 출력은 비어 있습니다.
csk.native-compiled-gate-report/v1 형식의 compiled-gate.json을 만듭니다.
보고서의 gate.status는 "granted"입니다.
gate.observed_decision과 gate.required_decision은 모두 "approve"입니다.
로컬 통과 결과는 이번 네이티브 호출 안에 존재합니다.
다른 비교 보고서
다음 보고서는 각각 별도의 비교 질문에 답합니다. 네이티브 게이트는 인증한 현재 실행 결과를 사용합니다.
| 보고서나 제품 | 기록하는 것 | 사용할 곳 |
|---|---|---|
| Bridge 보고서 | 외부 엔진 파일 결속과 식별자와 선언한 검사 | lispex verify-bridge와 수신자의 Bridge 정책 |
| 사례 비교 보고서 | 선택한 사례 모음의 일치와 불일치와 비교 상태 | 사례 비교로 규칙 검토 |