Should delegated authority depend on execution lineage? (PIC, #168)
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 30/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- python
- Domain
- authorization, security
Research direction
Start by reading verify_chain and verify_holder_proof, then reproduce the described case: one credential and two holder proofs for unrelated tasks. Turn that behavior into a test, as the issue suggests. The issue leaves the authorization model undecided, so completion depends on choosing an option and establishing the corresponding expected test behavior.
Written by the indexing model from the issue text.
Description
What cA2A checks today
verify_chain checks root trust, signatures, validity windows, issuer/subject continuity, parent_id links, per-hop scope narrowing and credential_id uniqueness within one chain. A DelegationCredential has no task or execution field. So the delegate can present the same valid chain with a request from a different task, and verify_chain accepts it. The holder proof (#97) stops a different party from presenting the chain. It signs the request, including a parent_record_hash that the delegate chooses; nothing in the credential limits that choice, so the rightful delegate can still attach its authority to any lineage.
#198 made lineage authenticated: verify-lineage checks signed TRACE records and their parent links against the chain. Its merge note already says that is not "continuity of a particular live request". #168 stays open for that reason.
The question
Should the authorization decision depend on execution lineage, and if so, should cA2A carry an external model's state rather than define its own?
@ngallo raised this in #150 and proposes PIC (Provenance Identity Continuity): authority is valid only as a continuation of a specific predecessor execution, with lineage as part of the authorization state rather than an audit field. Preprint: https://arxiv.org/abs/2607.08906. Model and drafts: https://github.com/ngallo/pic-model. His view is that cA2A should consume PIC state, not rebuild those semantics.
Prior work on lineage-sensitive authorization to weigh alongside it:
- Abadi and Fournet, Access Control Based on Execution History, NDSS 2003.
- Park, Nguyen and Sandhu, A Provenance-Based Access Control Model, PST 2012.
Options
- Bind each credential to a task or execution identifier that the inbound path checks. Small change, but it does not compose across hops by itself.
- Carry PIC state in the A2A message and verify it alongside the chain. Depends on PIC having a stable wire format and verifier.
- Leave authorization lineage-insensitive and document it as out of scope, as cA2A report version 2 now does in Section 3.
No decision yet. Today's behaviour, run against main at 19407fb (0.4.0): one root credential A to B for invoice.pay, then two holder proofs from B for unrelated tasks with different record_id and parent_record_hash values. verify_chain and verify_holder_proof accept both. A first step for any option is turning that into a test that currently passes and should fail once lineage is enforced.
Refs #150, #168, #198.
- Dominant language
- Python
- Stars
- 9
- Forks
- 14
- Avg merge
- 17h 24m
- Merged PRs (30d)
- 56
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from agentrust-io/ca2a
-
enhancement needs-review:HIGH
Difficulty 4/5 1-2 days Newbie friendliness 48/100
agentrust-io/ca2a#263 · 4 comments ·
Maintainers usually reply within 1 day
-
design: correction-aware supersession for delegated authority and pending action evidenceMay be free again @Evalbound claimed this 46 days ago, and no pull request is open. Openenhancement
agentrust-io/ca2a#129 · 3 comments · 1 assignee ·
Maintainers usually reply within 1 day
-
Scope proposal: financial mandate evidence for delegated limits, in-flight revocation, and decision receiptsMay be free again @amyli1996 claimed this 46 days ago, and no pull request is open. Openenhancement
agentrust-io/ca2a#109 · 8 comments · 1 assignee ·
Maintainers usually reply within 1 day
-
tracker: complete confidential-hardware conformance and release assurance decisionPossibly taken @rajnisht7 claimed this 2 days ago. Openattestation enhancement tier-3
agentrust-io/ca2a#47 · 7 comments · 1 assignee ·
Maintainers usually reply within 1 day
-
test(conformance): finish ACTION historical validity-window replay casesMay be free again @K611-dot claimed this 58 days ago, and no pull request is open. Openhelp wanted
agentrust-io/ca2a#36 · 15 comments · 1 assignee ·
Maintainers usually reply within 1 day
All issues in agentrust-io/ca2a
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
MISP/misp-workbench#496 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
Maintainers usually reply within 1 day
-
Difficulty 1/5 1-3 hours Newbie friendliness 88/100
fossasia/visdom-dev#69 ·
Maintainers usually reply within 3 days
-
[Bug] Parameters named like a property break to_xcal()Possibly taken @atharvasalunke1267 claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
collective/icalendar#2018 · 2 comments ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Maintainers usually reply within 1 day