Rename 'par' claim to 'pred' and fix area to SEC
Rename the 'par' (Parent Task Identifiers) JWT claim to 'pred' (Predecessor Task Identifiers) to avoid collision with RFC 9126 (Pushed Authorization Requests) which already registers 'par' in the IANA JWT Claims registry. Fix IETF area from ART to SEC since WIMSE is in the Security area. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -7,7 +7,7 @@ submissiontype: IETF
|
|||||||
number:
|
number:
|
||||||
date:
|
date:
|
||||||
v: 3
|
v: 3
|
||||||
area: "ART"
|
area: "SEC"
|
||||||
workgroup: "WIMSE"
|
workgroup: "WIMSE"
|
||||||
keyword:
|
keyword:
|
||||||
- execution context
|
- execution context
|
||||||
@@ -223,7 +223,7 @@ jti:
|
|||||||
: REQUIRED. String. A unique identifier for both the ECT and
|
: REQUIRED. String. A unique identifier for both the ECT and
|
||||||
the task it records, in UUID format {{RFC9562}}. The "jti"
|
the task it records, in UUID format {{RFC9562}}. The "jti"
|
||||||
serves as both the token identifier (for replay detection) and
|
serves as both the token identifier (for replay detection) and
|
||||||
the task identifier (for DAG parent references in "par").
|
the task identifier (for DAG parent references in "pred").
|
||||||
Receivers MUST reject ECTs whose "jti" has already been seen
|
Receivers MUST reject ECTs whose "jti" has already been seen
|
||||||
within the expiration window. When "wid" is present,
|
within the expiration window. When "wid" is present,
|
||||||
uniqueness is scoped to the workflow; when "wid" is absent,
|
uniqueness is scoped to the workflow; when "wid" is absent,
|
||||||
@@ -244,8 +244,8 @@ exec_act:
|
|||||||
"validate_safety"). This claim name avoids collision with the
|
"validate_safety"). This claim name avoids collision with the
|
||||||
"act" (Actor) claim registered by {{RFC8693}}.
|
"act" (Actor) claim registered by {{RFC8693}}.
|
||||||
|
|
||||||
par:
|
pred:
|
||||||
: REQUIRED. Array of strings. Parent task identifiers
|
: REQUIRED. Array of strings. Predecessor task identifiers
|
||||||
representing DAG dependencies. Each element MUST be the "jti"
|
representing DAG dependencies. Each element MUST be the "jti"
|
||||||
value of a previously verified ECT. An empty array indicates
|
value of a previously verified ECT. An empty array indicates
|
||||||
a root task with no dependencies. A workflow MAY contain
|
a root task with no dependencies. A workflow MAY contain
|
||||||
@@ -295,7 +295,7 @@ envelope differs.
|
|||||||
|
|
||||||
"wid": "a0b1c2d3-e4f5-6789-abcd-ef0123456789",
|
"wid": "a0b1c2d3-e4f5-6789-abcd-ef0123456789",
|
||||||
"exec_act": "recommend_treatment",
|
"exec_act": "recommend_treatment",
|
||||||
"par": [],
|
"pred": [],
|
||||||
|
|
||||||
"inp_hash": "n4bQgYhMfWWaL-qgxVrQFaO_TxsrC4Is0V1sFbDwCgg",
|
"inp_hash": "n4bQgYhMfWWaL-qgxVrQFaO_TxsrC4Is0V1sFbDwCgg",
|
||||||
"out_hash": "LCa0a2j_xo_5m0U8HTBBNBNCLXBkg7-g-YpeiGJm564",
|
"out_hash": "LCa0a2j_xo_5m0U8HTBBNBNCLXBkg7-g-YpeiGJm564",
|
||||||
@@ -337,7 +337,7 @@ verification steps:
|
|||||||
1. Parse the JSON object.
|
1. Parse the JSON object.
|
||||||
|
|
||||||
2. Verify that all required claims ("jti", "iat", "exp",
|
2. Verify that all required claims ("jti", "iat", "exp",
|
||||||
"exec_act", "par") are present and well-formed.
|
"exec_act", "pred") are present and well-formed.
|
||||||
|
|
||||||
3. Verify the "exp" claim indicates the ECT has not expired.
|
3. Verify the "exp" claim indicates the ECT has not expired.
|
||||||
|
|
||||||
@@ -487,7 +487,7 @@ verification steps in order:
|
|||||||
(RECOMMENDED: no more than 30 seconds ahead of the
|
(RECOMMENDED: no more than 30 seconds ahead of the
|
||||||
verifier's current time, to account for clock skew).
|
verifier's current time, to account for clock skew).
|
||||||
|
|
||||||
12. Verify all required claims ("jti", "exec_act", "par") are
|
12. Verify all required claims ("jti", "exec_act", "pred") are
|
||||||
present and well-formed.
|
present and well-formed.
|
||||||
|
|
||||||
13. Perform DAG validation per {{dag-validation}}.
|
13. Perform DAG validation per {{dag-validation}}.
|
||||||
@@ -781,7 +781,7 @@ subsequent ECT.
|
|||||||
# DAG Validation {#dag-validation}
|
# DAG Validation {#dag-validation}
|
||||||
|
|
||||||
ECTs form a Directed Acyclic Graph (DAG) where each task
|
ECTs form a Directed Acyclic Graph (DAG) where each task
|
||||||
references its parent tasks via the "par" claim. DAG validation
|
references its parent tasks via the "pred" claim. DAG validation
|
||||||
is performed against the ECT store — either an audit ledger or
|
is performed against the ECT store — either an audit ledger or
|
||||||
the set of parent ECTs received inline.
|
the set of parent ECTs received inline.
|
||||||
|
|
||||||
@@ -795,7 +795,7 @@ the following DAG validation steps:
|
|||||||
entire ECT store if "wid" is absent). If an ECT with the same
|
entire ECT store if "wid" is absent). If an ECT with the same
|
||||||
"jti" already exists, the ECT MUST be rejected.
|
"jti" already exists, the ECT MUST be rejected.
|
||||||
|
|
||||||
2. Parent Existence: Every task identifier listed in the "par"
|
2. Parent Existence: Every task identifier listed in the "pred"
|
||||||
array MUST correspond to a task that is available in the ECT
|
array MUST correspond to a task that is available in the ECT
|
||||||
store (either previously recorded in the ledger or received
|
store (either previously recorded in the ledger or received
|
||||||
inline as a verified parent ECT). If any parent task is not
|
inline as a verified parent ECT). If any parent task is not
|
||||||
@@ -1057,7 +1057,7 @@ A single malicious agent cannot forge parent task references
|
|||||||
because DAG validation requires parent tasks to exist in the ECT
|
because DAG validation requires parent tasks to exist in the ECT
|
||||||
store. However, multiple colluding agents could create a false
|
store. However, multiple colluding agents could create a false
|
||||||
execution history. Additionally, a malicious agent may omit
|
execution history. Additionally, a malicious agent may omit
|
||||||
actual parent dependencies from "par" to hide influences on its
|
actual parent dependencies from "pred" to hide influences on its
|
||||||
output; because ECTs are self-asserted
|
output; because ECTs are self-asserted
|
||||||
({{self-assertion-limitation}}), no mechanism can force complete
|
({{self-assertion-limitation}}), no mechanism can force complete
|
||||||
dependency declaration.
|
dependency declaration.
|
||||||
@@ -1080,7 +1080,7 @@ policy.
|
|||||||
|
|
||||||
ECTs record execution history; they do not convey authorization.
|
ECTs record execution history; they do not convey authorization.
|
||||||
Verifiers MUST NOT interpret the presence of an ECT, or a
|
Verifiers MUST NOT interpret the presence of an ECT, or a
|
||||||
particular set of parent references in "par", as an authorization
|
particular set of parent references in "pred", as an authorization
|
||||||
grant. Authorization decisions MUST remain with the deployment's
|
grant. Authorization decisions MUST remain with the deployment's
|
||||||
identity and authorization layer.
|
identity and authorization layer.
|
||||||
|
|
||||||
@@ -1103,7 +1103,7 @@ higher tolerance and SHOULD document the configured value.
|
|||||||
|
|
||||||
## ECT Size Constraints
|
## ECT Size Constraints
|
||||||
|
|
||||||
Implementations SHOULD limit the "par" array to a maximum of
|
Implementations SHOULD limit the "pred" array to a maximum of
|
||||||
256 entries. See {{extension-claims}} for "ext" size limits.
|
256 entries. See {{extension-claims}} for "ext" size limits.
|
||||||
|
|
||||||
# Privacy Considerations
|
# Privacy Considerations
|
||||||
@@ -1247,7 +1247,7 @@ the "JSON Web Token Claims" registry maintained by IANA:
|
|||||||
|:---:|:---|:---:|:---:|
|
|:---:|:---|:---:|:---:|
|
||||||
| wid | Workflow Identifier | IETF | {{exec-claims}} |
|
| wid | Workflow Identifier | IETF | {{exec-claims}} |
|
||||||
| exec_act | Action/Task Type | IETF | {{exec-claims}} |
|
| exec_act | Action/Task Type | IETF | {{exec-claims}} |
|
||||||
| par | Parent Task Identifiers | IETF | {{exec-claims}} |
|
| pred | Predecessor Task Identifiers | IETF | {{exec-claims}} |
|
||||||
| inp_hash | Input Data Hash | IETF | {{data-integrity-claims}} |
|
| inp_hash | Input Data Hash | IETF | {{data-integrity-claims}} |
|
||||||
| out_hash | Output Data Hash | IETF | {{data-integrity-claims}} |
|
| out_hash | Output Data Hash | IETF | {{data-integrity-claims}} |
|
||||||
| ext | Extension Object | IETF | {{extension-claims}} |
|
| ext | Extension Object | IETF | {{extension-claims}} |
|
||||||
@@ -1282,24 +1282,24 @@ tamper-evident, auditable execution records.
|
|||||||
~~~
|
~~~
|
||||||
Trust Domain: bank.example
|
Trust Domain: bank.example
|
||||||
Agent A1 (Portfolio Risk):
|
Agent A1 (Portfolio Risk):
|
||||||
jti: task-001 par: []
|
jti: task-001 pred:[]
|
||||||
iss: spiffe://bank.example/agent/risk
|
iss: spiffe://bank.example/agent/risk
|
||||||
exec_act: analyze_portfolio_risk
|
exec_act: analyze_portfolio_risk
|
||||||
|
|
||||||
Trust Domain: ratings.example (external)
|
Trust Domain: ratings.example (external)
|
||||||
Agent B1 (Credit Rating):
|
Agent B1 (Credit Rating):
|
||||||
jti: task-002 par: []
|
jti: task-002 pred:[]
|
||||||
iss: spiffe://ratings.example/agent/credit
|
iss: spiffe://ratings.example/agent/credit
|
||||||
exec_act: assess_credit_rating
|
exec_act: assess_credit_rating
|
||||||
|
|
||||||
Trust Domain: bank.example
|
Trust Domain: bank.example
|
||||||
Agent A2 (Compliance):
|
Agent A2 (Compliance):
|
||||||
jti: task-003 par: [task-001, task-002]
|
jti: task-003 pred:[task-001, task-002]
|
||||||
iss: spiffe://bank.example/agent/compliance
|
iss: spiffe://bank.example/agent/compliance
|
||||||
exec_act: verify_trade_compliance
|
exec_act: verify_trade_compliance
|
||||||
|
|
||||||
Agent A3 (Execution):
|
Agent A3 (Execution):
|
||||||
jti: task-004 par: [task-003]
|
jti: task-004 pred:[task-003]
|
||||||
iss: spiffe://bank.example/agent/execution
|
iss: spiffe://bank.example/agent/execution
|
||||||
exec_act: execute_trade
|
exec_act: execute_trade
|
||||||
~~~
|
~~~
|
||||||
@@ -1341,15 +1341,15 @@ cryptographic signing is not justified.
|
|||||||
~~~
|
~~~
|
||||||
Trust Domain: internal.example
|
Trust Domain: internal.example
|
||||||
Agent S1 (Preprocessor):
|
Agent S1 (Preprocessor):
|
||||||
jti: task-101 par: []
|
jti: task-101 pred:[]
|
||||||
exec_act: preprocess_input
|
exec_act: preprocess_input
|
||||||
|
|
||||||
Agent S2 (Model Inference):
|
Agent S2 (Model Inference):
|
||||||
jti: task-102 par: [task-101]
|
jti: task-102 pred:[task-101]
|
||||||
exec_act: run_inference
|
exec_act: run_inference
|
||||||
|
|
||||||
Agent S3 (Postprocessor):
|
Agent S3 (Postprocessor):
|
||||||
jti: task-103 par: [task-102]
|
jti: task-103 pred:[task-102]
|
||||||
exec_act: format_output
|
exec_act: format_output
|
||||||
~~~
|
~~~
|
||||||
{: #fig-internal title="Internal Microservice Workflow (L1)"}
|
{: #fig-internal title="Internal Microservice Workflow (L1)"}
|
||||||
@@ -1452,7 +1452,7 @@ The W3C PROV Data Model defines an Entity-Activity-Agent ontology
|
|||||||
for representing provenance information. PROV's concepts map
|
for representing provenance information. PROV's concepts map
|
||||||
closely to ECT structures: PROV Activities correspond to ECT
|
closely to ECT structures: PROV Activities correspond to ECT
|
||||||
tasks, PROV Agents correspond to ECT-issuing agents, and PROV's
|
tasks, PROV Agents correspond to ECT-issuing agents, and PROV's
|
||||||
"wasInformedBy" relation corresponds to ECT "par" references.
|
"wasInformedBy" relation corresponds to ECT "pred" references.
|
||||||
However, PROV uses RDF/OWL ontologies designed for post-hoc
|
However, PROV uses RDF/OWL ontologies designed for post-hoc
|
||||||
documentation, while ECTs are runtime-embeddable JWT tokens with
|
documentation, while ECTs are runtime-embeddable JWT tokens with
|
||||||
cryptographic signatures. ECT audit data could be exported to
|
cryptographic signatures. ECT audit data could be exported to
|
||||||
|
|||||||
Reference in New Issue
Block a user