[saag] Re: [Secdispatch] Re: Re: draft-yossif-psea-0 2 posted — re-scoped as an EAT token profile (diff)
Iman Schrock <[email protected]> Wed, 10 Jun 2026 21:59:48 -0700
| Newsgroups | gmane.ietf.saag,gmane.ietf.secdispatch |
|---|---|
| Message-ID | <CAOfgHgrWqzReMUg7EuGp9v5--W7Ms2DaNqG07o9NF6LwHrYUcQ@mail.gmail.com> |
--===============6955111099526582656== Content-Type: multipart/alternative; boundary="00000000000075f9b30653f33bb3" --00000000000075f9b30653f33bb3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Mohamad, Songbo, Rich, all, Data point for the "is there a community" question: we converged on this problem independently. I posted draft-schrock-ep-authorization-receipts-00 last week [1] =E2=80=94 authorization receipts that bind a human approver's user-verification-gated assertion to the SHA-256 of an RFC 8785 (JCS)-canonicalized action payload, with fail-closed verifier rules (replay, action mismatch, cross-context reuse, one-time consumption) and an enforced approver-is-not-initiator check. We arrived at essentially the same binding construction as PSEA-02 =E2=80=94 canonical JSON, hash of the = exact action, UV-gated signature, verifier-side fail-closed checks =E2=80=94 with= out being aware of each other's work. I take that as evidence the need is real rather than one vendor's framing. The drafts look complementary rather than competing. PSEA-02 explicitly scopes out FIDO2/WebAuthn (standard authenticators cannot conform); our draft profiles exactly that path =E2=80=94 commodity passkeys/platform authenticators =E2=80=94 plus the enrollment ceremony PSEA leaves out. Toge= ther they cover the dedicated-hardware and commodity-authenticator deployments with the same verifier philosophy. Songbo's do/don't-prove boundary matches the lines we drew as well: we treat presentation-attack/WYSIWYS as an explicit residual risk with mitigations rather than a solved problem, and we don't attempt subject identity or OAuth step-up policy. For the broader-community question: there are at least two further independent efforts adjacent to this space =E2=80=94 draft-nelson-agent-delegation-receipts (user-signed delegation receipts) and ScopeBlind's agent-action receipt format with public conformance test vectors. Happy to compile a short survey for the chairs if that's useful for dispatching. Concretely: Songbo, if you do the verifier-side pass on PSEA, I'd value the same adversarial read on our verifier section =E2=80=94 and Mohamad, I'd be= glad to compare claim names and fail-closed check lists so the two profiles don't gratuitously diverge for implementers. Our reference verifiers (JS/Python, offline, no issuer trust required) and test vectors are public [2], plus machine-checked models of the policy engine. [1] https://datatracker.ietf.org/doc/draft-schrock-ep-authorization-receipts/ [2] https://github.com/emiliaprotocol/emilia-protocol Iman Schrock On Wed, Jun 10, 2026 at 6:51=E2=80=AFPM Songbo Bu <[email protected]> wr= ote: > Hi Mohamad, Rich, all, > > I read -02 as a much more concrete document than the earlier model > draft. Framing it as an EAT profile with action-payload binding and > verifier rules makes the dispatch question easier to discuss. > > My quick review reaction is that the strongest path is to keep the > document very explicit about what it does and does not prove: > > - it proves that a named action payload was approved through a > user-verification-gated authenticator path; > - it gives the verifier/relying party fail-closed checks for replay, > action mismatch, and cross-context reuse; > - it does not by itself solve WYSIWYS, establish a specific human > identity, or define the surrounding OAuth / step-up policy. > > That boundary seems important because it lets the work complement > OAuth step-up and RATS/EAT without trying to become either of them. > > If useful, I can do a focused pass on the verifier-side text and send > concrete wording, especially around fail-closed behavior and > action-binding validation. > > Best, > Songbo Bu > > On Tue, 09 Jun 2026 19:01:19 +0300, Mohamad Khalil-Yossif > <[email protected]> wrote: > > Understood, and thanks =E2=80=94 both for the candor and the signature = tip. > > > > I'll trim it down. > > > > Mohamad Khalil-Yossif > > > > On 09/06/2026 18:48:23, Salz, Rich <[email protected]= > > wrote: > > > > I am not criticizing, I am trying to understand the community that > exists around this and I appreciate your honesty. It seems the answer is > =E2=80=9Cnone yet.=E2=80=9D > > > > - > > > > > If there are specific WGs or people you think should weigh in on whethe= r > the need is real, I'd welcome the pointer. > > > > Sorry, I have no suggestions. But while I=E2=80=99m here, I do suggest = that you > consider stripping down your email signature; four images and a few text > lines seems a little excessive. :) > > _______________________________________________ > Secdispatch mailing list -- [email protected] > To unsubscribe send an email to [email protected] > --=20 Iman Schrock Founder & CEO EMILIA Protocol | Trust Before High-Risk Action Eye warns. EP verifies. Signoff owns. emiliaprotocol.ai | GitHub [email protected] --00000000000075f9b30653f33bb3 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div style=3D"font-size:12pt;text-decoration-style:solid;d= irection:ltr;margin:0px 0px 16px;font-family:Aptos,Arial,Helvetica,sans-ser= if;color:rgb(0,0,0)">Hi Mohamad, Songbo, Rich, all,</div><div style=3D"font= -size:12pt;text-decoration-style:solid;margin:0px 0px 16px;font-family:Apto= s,Arial,Helvetica,sans-serif;color:rgb(0,0,0)">Data point for the "is = there a community" question: we converged on this problem independentl= y. I posted draft-schrock-ep-authorization-receipts-00 last week [1] =E2=80= =94 authorization receipts that bind a human approver's user-verificati= on-gated assertion to the SHA-256 of an RFC 8785 (JCS)-canonicalized action= payload, with fail-closed verifier rules (replay, action mismatch, cross-c= ontext reuse, one-time consumption) and an enforced approver-is-not-initiat= or check. We arrived at essentially the same binding construction as PSEA-0= 2 =E2=80=94 canonical JSON, hash of the exact action, UV-gated signature, v= erifier-side fail-closed checks =E2=80=94 without being aware of each other= 's work. I take that as evidence the need is real rather than one vendo= r's framing.</div><div style=3D"font-size:12pt;text-decoration-style:so= lid;margin:0px 0px 16px;font-family:Aptos,Arial,Helvetica,sans-serif;color:= rgb(0,0,0)">The drafts look complementary rather than competing. PSEA-02 ex= plicitly scopes out FIDO2/WebAuthn (standard authenticators cannot conform)= ; our draft profiles exactly that path =E2=80=94 commodity passkeys/platfor= m authenticators =E2=80=94 plus the enrollment ceremony PSEA leaves out. To= gether they cover the dedicated-hardware and commodity-authenticator deploy= ments with the same verifier philosophy. Songbo's do/don't-prove bo= undary matches the lines we drew as well: we treat presentation-attack/WYSI= WYS as an explicit residual risk with mitigations rather than a solved prob= lem, and we don't attempt subject identity or OAuth step-up policy.</di= v><div style=3D"font-size:12pt;text-decoration-style:solid;margin:0px 0px 1= 6px;font-family:Aptos,Arial,Helvetica,sans-serif;color:rgb(0,0,0)">For the = broader-community question: there are at least two further independent effo= rts adjacent to this space =E2=80=94 draft-nelson-agent-delegation-receipts= (user-signed delegation receipts) and ScopeBlind's agent-action receip= t format with public conformance test vectors. Happy to compile a short sur= vey for the chairs if that's useful for dispatching.</div><div style=3D= "font-size:12pt;text-decoration-style:solid;margin:0px 0px 16px;font-family= :Aptos,Arial,Helvetica,sans-serif;color:rgb(0,0,0)">Concretely: Songbo, if = you do the verifier-side pass on PSEA, I'd value the same adversarial r= ead on our verifier section =E2=80=94 and Mohamad, I'd be glad to compa= re claim names and fail-closed check lists so the two profiles don't gr= atuitously diverge for implementers. Our reference verifiers (JS/Python, of= fline, no issuer trust required) and test vectors are public [2], plus mach= ine-checked models of the policy engine.</div><div style=3D"color:rgb(0,0,0= );font-size:12pt;text-decoration-style:solid;margin:0px 0px 16px;font-famil= y:Aptos,Arial,Helvetica,sans-serif">[1]<span class=3D"gmail-Apple-converted= -space">=C2=A0</span><span style=3D"color:rgb(0,153,255)"><a href=3D"https:= //datatracker.ietf.org/doc/draft-schrock-ep-authorization-receipts/" target= =3D"_blank" class=3D"gmail-text-[var(--accent)] gmail-hover:underline gmail= -underline-offset-[1px] gmail-outline-none gmail-hide-focus-ring gmail-ring= -focus gmail-rounded-r2" rel=3D"noreferrer" style=3D"color:rgb(0,153,255);m= argin:0px;border-radius:3px">https://datatracker.ietf.org/doc/draft-schrock= -ep-authorization-receipts/</a></span>=C2=A0[2]<span class=3D"gmail-Apple-c= onverted-space">=C2=A0</span><span style=3D"color:rgb(0,153,255)"><a href= =3D"https://github.com/emiliaprotocol/emilia-protocol" target=3D"_blank" cl= ass=3D"gmail-text-[var(--accent)] gmail-hover:underline gmail-underline-off= set-[1px] gmail-outline-none gmail-hide-focus-ring gmail-ring-focus gmail-r= ounded-r2" rel=3D"noreferrer" style=3D"color:rgb(0,153,255);margin:0px;bord= er-radius:3px">https://github.com/emiliaprotocol/emilia-protocol</a></span>= </div><div style=3D"font-size:12pt;text-decoration-style:solid;margin:0px 0= px 16px;font-family:Aptos,Arial,Helvetica,sans-serif;color:rgb(0,0,0)">Iman= Schrock=C2=A0</div></div><br><div class=3D"gmail_quote gmail_quote_contain= er"><div dir=3D"ltr" class=3D"gmail_attr">On Wed, Jun 10, 2026 at 6:51=E2= =80=AFPM Songbo Bu <<a href=3D"mailto:[email protected]">king347608@g= mail.com</a>> wrote:<br></div><blockquote class=3D"gmail_quote" style=3D= "margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-le= ft:1ex">Hi Mohamad, Rich, all,<br> <br> I read -02 as a much more concrete document than the earlier model<br> draft. Framing it as an EAT profile with action-payload binding and<br> verifier rules makes the dispatch question easier to discuss.<br> <br> My quick review reaction is that the strongest path is to keep the<br> document very explicit about what it does and does not prove:<br> <br> - it proves that a named action payload was approved through a<br> user-verification-gated authenticator path;<br> - it gives the verifier/relying party fail-closed checks for replay,<br> action mismatch, and cross-context reuse;<br> - it does not by itself solve WYSIWYS, establish a specific human<br> identity, or define the surrounding OAuth / step-up policy.<br> <br> That boundary seems important because it lets the work complement<br> OAuth step-up and RATS/EAT without trying to become either of them.<br> <br> If useful, I can do a focused pass on the verifier-side text and send<br> concrete wording, especially around fail-closed behavior and<br> action-binding validation.<br> <br> Best,<br> Songbo Bu<br> <br> On Tue, 09 Jun 2026 19:01:19 +0300, Mohamad Khalil-Yossif<br> <mohamad=3D<a href=3D"mailto:[email protected]" target=3D"_bl= ank">[email protected]</a>> wrote:<br> > Understood, and thanks =E2=80=94 both for the candor and the signature= tip.<br> ><br> > I'll trim it down.<br> ><br> > Mohamad Khalil-Yossif<br> ><br> > On 09/06/2026 18:48:23, Salz, Rich <rsalz=3D<a href=3D"mailto:40aka= [email protected]" target=3D"_blank">[email protected]</a>&g= t; wrote:<br> ><br> > I am not criticizing, I am trying to understand the community that exi= sts around this and I appreciate your honesty. It seems the answer is =E2= =80=9Cnone yet.=E2=80=9D<br> ><br> > -<br> <br> ><br> > If there are specific WGs or people you think should weigh in on wheth= er the need is real, I'd welcome the pointer.<br> ><br> > Sorry, I have no suggestions. But while I=E2=80=99m here, I do suggest= that you consider stripping down your email signature; four images and a f= ew text lines seems a little excessive. :)<br> <br> _______________________________________________<br> Secdispatch mailing list -- <a href=3D"mailto:[email protected]" target= =3D"_blank">[email protected]</a><br> To unsubscribe send an email to <a href=3D"mailto:[email protected]= g" target=3D"_blank">[email protected]</a><br> </blockquote></div><div><br clear=3D"all"></div><div><br></div><span class= =3D"gmail_signature_prefix">-- </span><br><div dir=3D"ltr" class=3D"gmail_s= ignature"><div dir=3D"ltr">Iman Schrock<br>Founder & CEO<br><br>EMILIA = Protocol | Trust Before High-Risk Action<br>Eye warns. EP verifies. Signoff= owns.<br><br><a href=3D"http://emiliaprotocol.ai" target=3D"_blank">emilia= protocol.ai</a> | GitHub<br><a href=3D"mailto:[email protected]" targe= t=3D"_blank">[email protected]</a></div></div> --00000000000075f9b30653f33bb3-- --===============6955111099526582656== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Kc2FhZyBtYWls aW5nIGxpc3QgLS0gc2FhZ0BpZXRmLm9yZwpUbyB1bnN1YnNjcmliZSBzZW5kIGFuIGVtYWlsIHRv IHNhYWctbGVhdmVAaWV0Zi5vcmcK --===============6955111099526582656==--