Video summary
The KSWG did:webs Task Force meeting held on August 18, 2026, focused on advancing the DID WebS specification to version 0.6 and addressing critical implementation hurdles. Significant progress was made in clarifying terminology and editorial language, particularly regarding concepts like "temporal pinning," while also integrating new sections on authentication and authorization keys into the final review phase. However, the team identified a major gap in the current spec: it lacks a specific proof specification for handling complex, weighted nested multi-IG groups. While single-signature and flat multi-signature structures function with existing tools like Conditional Proof 2022, sophisticated nested architectures require a separate interoperable proof spec to ensure they can be properly validated and deployed.
Technical compatibility between Caesar versions 1 and 2 emerged as another central topic, revealing that while minor differences exist in AC/DC fields, the primary incompatibility lies in group codes which are not backward compatible. To prevent delays in the specification process while awaiting full support for all Version 2 features in Carri Pi, the group decided to initially target the Version 1 spec but include worked examples for both versions within the document itself. This decision was reached after rejecting a proposal to separate these examples into an external repository, as keeping them integrated ensures they remain subject to peer review and discipline, thereby preventing neglected updates that could compromise the specification's integrity.
Several specific issues were resolved regarding interoperability, security trade-offs, and tooling limitations during the session. Sam highlighted incorrect definitions concerning "direct mode" and non-transferable AIDs, arguing that for broader W3C ecosystem integration, the spec must support using these identifiers without a dependency on KeyState; this creates a necessary security trade-off where credentials issued via bare signatures remain verifiable even if an issuer's cryptographic period is compromised. Additionally, Daniel raised a critical issue regarding a worked example using the `-fab` prefix for designated aliases, which failed with current versions of Carri Pi ranging from 1.1 to 2.0, leading to a consensus to either update the example or modify Carri Pi's behavior through integration testing.
The meeting concluded with clear governance and repository management decisions that will shape future development efforts. Nico discussed a related project involving provable governance anchored in KeyState using type seals, clarifying that these are intended to specify cryptographic algorithms for structures like Merkle trees rather than embedding semantic data, thus avoiding the leakage of correlatable information. Jonathan reported on action items from the previous meeting, including reconciling normative spec language with the Python reference implementation, and announced a strategic shift where the team's current fork will serve as the new upstream repository, severing ties with the archived Hyperledger Labs upstream repo. With these foundational elements addressed, the task force is now poised to finalize the proof specification for nested groups and proceed with creating comprehensive worked examples that validate the implementation once working code exists, potentially bumping the spec to version 0.8 in the near future.
Read the full video transcript
Welcome to did web s
everybody
did webs and dossca I should
Hey, Kent, have you talked to Jonathan?
Has he come in today?
>> Haven't heard from him in the last day
or two, but what he did say is that we
finished the current draft of the spec.
So, but I haven't heard from him. No,
not in the last day or so.
>> Okay. I'm going to So, I promised to
review the spec last week
and I did and I but I reviewed it
yesterday morning when GitHub was um had
[snorts] an outage.
>> So, I I emailed him my comments. I
should have copied you. So, I'm going to
send you a copy of of my review. Let's
see if I can find it the email. I
appreciate it.
>> If he's not going to be here
and he may have not seen that. Let's see
if I can find There it is.
>> All right. I just send them to you.
>> Great. Thank you.
So you Daniel, would you like us to hand
it over to you as we have been doing?
>> Sure. Um it'll be relatively fast. We
had um a nice pull request from
um from Hank uh against the um dossier
spec and um that's now been merged. Um
this was uh about 10 days ago Hank
raised this poll request.
Um
other than that the other thing that's
happened on the dossier spec side is I
actually started trying to implement the
dossier spec.
uh like the the two operators though
well there's four operators but the two
that are the most interesting ones and
um
uh it was a good exercise for me but I
failed initially because there were a
couple of questions that this raised um
that I didn't know the answer to. So uh
I immediately realized that I'd uh
speculated about features in the uh
operators that I didn't quite know how
they were uh going to be implemented. So
implementation uh you know they say no
design survives a tangle with
implementation or or with the real world
or whatever they say. Um that's been my
experience the last few days. Um
the um spec itself has been at version
0.6 six for quite a long time.
Um I think with Hank's PR I probably
should have [clears throat] incremented
it a little bit. Um it was nice and I
think Hank's still planning to do more.
Um and then I think the implementation
will push it to maybe a 0.8 um if we
actually have code that we know that
works that demonstrates everything
that's in the spec. Um, one of the
things that I've seen in the spec
um, stuff in all the other ones is
worked examples.
And so that's going to be my next
priority is worked examples of dossas
that will tell me whether the
implementation's actually doing the
right things. Um,
if anybody has any opinions about which
specific dossas would be good worked
examples, I would be glad to hear that.
Um, that's really about everything to
say about the dossier spec at this
point, I think. Um, unless others have
comments or questions.
>> Yeah, I do. So, is Hank's PR to this
subsense or the body of the dossier
spec? kind of show what was the what
were the changes?
>> Um he um
well let's actually pull it up and look
at it. Um he
changed uh a little bit about um how the
terminology was hooked up. Um he rewrote
some um
paragraphs that he felt were confusing.
Um mostly it was editorial stuff.
Um,
just a minute. Pulling it up here.
Trust over IP Ky
specification.
Okay. Share my screen.
Um,
okay.
And
this is the one.
So,
this index.html HTML is just regen
stuff, but um it still shows the you
know he's he's editing
uh what's the challenge in aggregating
verifiable evidence. He liked that title
better here. He's um you know adding
words. So these are
uh hand adding a better handling of the
term temporal pinning. It's just a bunch
of kind of editorial things um to make
things more clear.
Um
one of the things he did is he added a
place where the
I had had an abstract but it wasn't
showing up in the right place in the
document. So he moved it um and made it
show up in the right place.
Um, it was
largely stuff that he he told me he felt
like the spec um was a little bit
confusing, so he was trying to make it
clearer.
>> Got it.
>> I just arrived. Daniel,
>> you just barely got here. would um we
were uh people were asking about your uh
poll request which uh I merged a couple
of days ago. So um I was explaining that
it was editorial mostly that you had
changed stuff to be
>> y
>> to read clearer. Anything else you want
to say about it?
>> Yeah, that I I I'm still I was still
struggling with the the comments that I
had in general on the doi spec. Um, and
I I merged them into a a branch on my
personal GitHub username
um where you can read the comments, but
I will also add them to uh as a comment
to the PR which we uh discussed last
week, but I haven't implemented that
yet.
>> That's the only thing I wanted to add.
>> Okay.
Um, overall I feel like the dossier spec
um is making steady forward progress.
Um, but it's not getting a lot of um
people to participate.
Um, that's not necessarily terrible.
It's a little bit of a specialized
topic, but um it'd [clears throat] be
great if anybody
um really wanted to
um play with it. But I think what
[clears throat] I'm hoping is that if I
raise the PR with operators um now that
we have a uh 2.1
um place to put it against Carry Pi
and um
I kind of talk about
what I learned from the implementation
and make it available to people that
people will have more fun and get more
engaged.
um once there's code that they can play
with.
>> Cool. Yeah, I would love to play around
with that. That'll be pretty fun.
So, anything else you want to cover as
far as the dossier spec? Say we're good
to move to the next part.
>> I'll say one other thing that um is
relevant here. Um Nico's on this call.
I've been doing some work for Nico on a
different topic, but it's actually
connected to the dossier stuff a little
bit. Um, and I don't want to steal
Nico's thunder by jumping into it in
detail, but um, basically uh,
[clears throat] governance that's um,
really robust where the the governance
is actually provable. um you can ask
whether a particular action
um is supported by the governance rules
that you have and stuff and all of it is
anchored in the kell. Um and um this
relates to uh the dossier in certain
ways. Uh
like I said, I don't want to drag the
conversation uh too deeply into that
topic right now, but I'm just really
excited about it. I think it would
provide a way for Car's superpower of um
verifiability
and uh verifiability specifically
against keystate
to um deliver value on the governance
front as well. Um,
Nico, do you want to say any more about
that or I I this isn't the meeting to go
into it in detail, but I I can't resist
saying how cool it is.
>> No, no, it's uh it's great. Um I
appreciate you um you broaching it. I
also don't want to distract um and the
intention is to build on um precedent
set by the Kerry space, including of
course the verifiable dossier. So it it
is um it is related. Uh I think uh yeah
the the sort of um
you know working working with type seals
and the ability to actually um um embed
these sort of um bilateral channels of
of governance which doesn't actually
need to phone home is something that um
is really I think it's a really cool
notion. Um I think it's going to appeal
to a lot of different um types of
organizations
and uh and really once it's more mature
I would love to start discussing um what
it looks like to extend the verifiable
domain of keystate beyond just uh
vanilla carry pie.
So can I ask a question? If you're using
type seals then um for interoperability
sake those types need to be defined
someplace and publish so that
um
uh everybody's using the same types for
the same types.
>> Yeah absolutely that's the intention. I
I think we're just kind of proving um
the the vi of the of the architecture.
Um but 100% the goal is for this to be I
don't know if Daniel made this clear. Um
the goal is for this to be open open
source.
>> Yeah. So so but are using the types as
types of algorithms
because that's what they're meant for.
Uh
if you use them for types of seals as in
the semantic of the seal then that would
be a misuse of the type. Well, well, I
was thinking in in terms of like
encoding um evaluatable predicate sets
uh with type seals. So, I guess you can
construct algorithms um relative to you
can break it down I think atomically or
or compos.
>> Okay. Yeah, we may we may have a
discussion about that because the the
intent is is that the the type is the
algorithm by which you generate the hash
>> is in the seal, not h not the semantics
of what the seal represents.
>> Is is that what you intend to represent
more in the our field? Well, if you read
the spec on the if you read the
documentation, it's not a lot on the
type seal is that right now we have like
a seal that is for
um uh Merkel trees, but we don't specify
the Merkel tree algorithm. There are
there are uh dozens of Merkel tree
algorithms. And so so uh the problem is
is is that that is not enough
specificity to say it's a Merkel root.
Everybody would have to agree what type
of Merkel tree it was. So, so the type
seal would then allow you to say, "Oh,
this this anchor is generated using this
algorithm. Is it a is it a trillion
tacera or is it a uh
a
new you know there's dozens of sparse
Merkel tree algorithms, right? So, so
you would be able to say here's all the
different you just for Merkel trees.
There are other ways that you can
generate a cryptographic commitment that
is a hashlike, right? There's dozens of
of
uh blockchain like structures that
people develop. There's even a a new RFC
in IETF for a a a hashlike data
structure. I mean, every every
cryptographically verifiable data
structure has an algorithm that that has
some sort of cryptographic commitment
that you could anchor. And so the the
that's what a type seal is meant for is
so that we know how to cryptographically
verify the seal, not that we're we're
putting type putting semantics in the
kell starts to leak um correlatable
information in in a in a in a way that
we have that we have assidiously avoided
in the past. Right? You put the anchors
in the kel, not the semantics. the
semantics or when you disclose what the
anchor is anchoring, then you say, well,
it's meant to do this and it's meant to
do that. So, I
>> that's that that's extremely
informative. Um, and I and forgive me
because this sort of construction um
Daniel's helping me refine previously
was using um type seals um and now that
I know what it is, it will most
certainly be not type seals for that
function.
>> [clears throat]
>> I think we are actually using the anchor
field to actually um um um embed these
sort of evaluation statements. So I
think we've avoided that. But now that I
know what a type seal is actually meant
for that's really useful. Thank you.
>> Yes. Yeah. We just haven't discussed it
at length and then when I heard that you
were use when you just mentioned that
you were using it then it triggered my
>> Anyway, I hope that
>> useful. Thank you. didn't cause too much
uh uh
conrnation
anyway.
>> But that's interesting that this
interesting applications be interested
to see when you guys publish it.
>> Uh Kent, um I'll turn the microphone
over to you. As I do that, I'll just
mention that I just raised a PR against
uh did webs spec yesterday or the day
before. Um [clears throat] and uh it's
because I decided to try to implement uh
the did web s spec um and as soon as I
got into the implementation um I ran
into an interesting question. So um
[clears throat] that's the genesis of
the PR that I raised against web s
>> against the
result the implementation or the spec
>> the spec.
>> Okay I'm not seeing the pull request for
some reason.
>> Um I thought it was against this. Maybe
it's okay. Maybe um okay it had to do
with the um - fab um
>> I do see a issue 212 the worked examples
AC/DC proof uses an attachment that no
imple verifies
>> that's that's it I it wasn't a yeah it
wasn't a PR sorry it was a qu I I I
thought about raising a PR and then I
decided no I better just ask a question
first that's what it was
>> gotcha okay all right what I'll do then
is I'll go ahead and pull that up. We
can start from there
and I guess just show everyone knows
what we're talking about and then we'll
jump over to the regular agenda. So
we'll come back to this. This is a good
question.
Okay. So
this is part of the Linux Foundation the
trust over IP and so there's an
antitrust notice that attendees have to
adhere to the meeting agenda and not
participate in activities that are
prohibited under the current site
governance framework using typed seals
and other things that are probably
probably being prematurely disclosed.
No, I'm just I'm just kidding, Nico.
I'm just trying to make sure I
understand what's being done here from a
governance perspective and since it was
committed to in the kel that we can
understand.
All right. So, as far as announcements
or reports, okay, this is actually the
copy from the last time the reports. Did
did I I think I put it down here. Oh,
that was the dossier spec discussion.
Sorry, I need I need to jump to the dead
web s section.
We do have some action items from last
time. I did review the big pull request
209 that was Jonathan's
Jonathan's revision to the spec and two
main parts were added I'll talk about in
the implementation now needs to catch up
with the spec report. So we did review
that we we got that merged there's an in
progress reconciliation of the normative
spec language and the Python reference
implementation. There are a couple of
things that the the D did webs
implementation does not yet do and I'll
get to that in the report down below.
So Jonathan is waiting on the final
approval of the
by by you Sam and you Phil of the spec
language prior to us
>> sending this to the did methods working
group
and then once once we've got that in I I
did get your email Sam and so
>> okay yeah so so I think the spec needs
some changes uh we can go over them if
you'd like in this
Um
>> yeah yeah yeah I'll we'll make that'll
be our first discussion point. Okay,
>> needed spec changes.
And then the last action item from last
time is that I will take a quick look at
the trust task framework to see how did
webs might be leveraged for this. Did
not do that yet. So that one's still
open. So I'll leave these two open. I
guess these three. There's the I did
start the analysis on
making sure everything that's new in the
spec or that's been implemented has a we
have an inventory of it and we have open
issues for it. So that's that's in
progress. So now what we'll the we'll
move these three forward to action items
for this meeting
and then we'll see if we add any more
based on our discussion.
Okay. So announcements,
we're now in the final review phase for
did webs and once we get through this
final review phase for the spec then
we'll be moving forward in the diff
recommended in methods process and part
of what will come out of this final
review phase will also be some updates
to the implementation.
And I think if there's anything else
that we should probably announce, we're
going to break the connection in our
repository to the upstream repository
which for a time we had in the
Hyperledger Labs GitHub organization, we
had a did webs repository.
I don't exactly recall what the
rationale was for moving it there, but
essent the the upstream repo has been
archived for a while and we got the all
cleared to sort of un unhook the the
glyife it fork right now is going to
become the new upstream
and so that will be likely done between
now and the next did web s meeting
>> just for posterity it was in hyperledger
because that's where Steven Curran
wanted the implementation.
Thank you, Kevin. Let me actually put
that in the That's kind of fascinating.
I'm going to put that in the notes.
>> So, I don't think that requirement
exists anymore, right? Since he's no
longer part of the or uh um effort
>> or does it does it matter?
>> Yeah, we can pull it out as far as I can
tell.
Well, does anybody Well, I mean I mean
the question is does anybody want it
there?
>> Is there a reason to keep it there?
>> It hasn't actually been developed under
Hyperledger and I think we asked them a
long time ago to archive it but it's
just confusing now when you look at the
web of trust repo it says forked from
and then you click on the fork from and
it's an archived repo.
thinks the idea is try to make the life
it branch.
I'm not sure why it's not web of trust
either, but whatever. Um to make that
the the default implementation. I can
take a look at the repo and live it and
see if we can break that connection.
It's a feature that GitHub added. So
that's it.
Anybody else know a good reason why we
should stay in Hyperledger Labs or ask
them to unarchive the repo if we wanted
to.
Okay, we'll just proceed forward with
that then.
All right, so the quick reports and then
we'll get to the discussion. As I
mentioned earlier, spec is ready for
final review and approval. And some of
the things that were added by by the
final review
were things that are common to other
dead methods including the
authentication
and the authorization key section.
And that's essentially a you take the
keys that are currently authorized to
sign and you add them to the authorized
keys and the authentication section. Now
what this what fell out of that is me
realizing that we need another spec and
there's something a proof spec kind of
like there's the data data integrity
proof spec for different parts of the
W3C space. So what's missing that is not
in the DID web spec and that should not
be in the DID web spec is
a clear
algorithm or mapping of when you use
weighted nested multi-IG groups how you
take the leaf keys and map them to leaf
authorization when you're verifying
things and map them to leaf author
author authorization keys or
authentication
objects in in the DID document.
So that when you're performing a
verification, you can deterministically
go from your authorization key to a
specific
multi multisig participant or a multisig
key. And so because you can you can have
it be pretty complicated and you can
have weighted nested groups and they
have different weights. Conditional
proof 2022 is sufficient by itself to
describe the multi-IG group, but it's
not sufficient to describe the proof
format. And I'm I think I'm butchering
it a little bit here, but the
essentially we we we conditional to
proof 2022 and the did webs spec by
themselves are not sufficient for what
will need to be a proof spec. And so
whoever runs into implementing this
first. So so essentially here's what
works today and what works really well.
single SIG works just fine and a flat
multi-IG works great with the existing
uh work that we've got because if it's
just a single layer conditional proof
2022 is it's pretty simple to just pull
it out and use the the order the index
order from
what's there in the multi-IG key array
to to do signature verification.
where it starts to get more complicated
and where we're going to need a new spec
in the future is when we have the nested
groups.
So I'll in a in a future when I have the
time to actually thoroughly describe it
and give some visuals then it may be the
feature did a best call I'll show what
that spec could or should look like with
with an initial draft but when it when
it's time for this community to have a
interoperable proof spec that that is
for for sophisticated multisig then we
will need to make things interoperable
will want another spec but that does not
belong in the web s spec cuz the did
webspec is just for key resolution and
just for a couple of other things like
the the you've got the delegation
service witness service the services
section the the key distinction key
listings and itemization and the
designated aliases that's the only job
of the web spec
so just not noting that that's what fell
out of this final review that I
something was in the back of my mind as
we were go revising the spec and then I
finally and they realized, okay, we
needed we need approved spec. So, that's
what fell out of this final review and
approval. And maybe something else will
fall out of your review, Sam and Phil.
That's that's goes beyond that or maybe
it'll just be changes to the spec
and the reports, the last report. Okay,
so the implementation we did because we
decided to add the authentication or the
authorization and au authorization keys
and authentication sections to the spec
then we need to go in and change the
implementation and add those and those
won't be too hard to add.
That's actually what drove the the
realization for the the need for the
proof spec is because I was thinking
well how do we add the authorization
keys in a way that's easy to map a
specific authorization key in a nested
weighted multi multisig group back to a
specific participant in the multisig and
that's what sort of show that we need
another proof spec but for single sig
and simple multiig we'll be okay for
Anyway, that's that's everything. So,
implementation needs to catch up. Spec
is pretty much there. And I I if I don't
think there's any other reports,
Jonathan, I actually did check my
Discord. He said he won't be here. Won't
be able to be here today. And I don't
think we have any other reports. And so,
we can just jump right into the
discussion.
So, with the discussion, Sam, I did get
your email. would do you want to just
>> Yeah, I'll just review it and then if
there's any any questions. Um
um I yeah would have been better be be
in comments, but like I said, GitHub was
having an outage at the time, so I
didn't want to fight with GitHub for for
a couple hours and so I just finished
it. Um uh uh
>> do you want me to pull it up here or do
you want to pull it up?
>> Uh yeah, why don't you pull it up? That
way I can
uh you can [clears throat]
>> Okay, let me increase my text size.
>> Yeah.
>> Okay. Is that text size?
>> Well, I'm going to read from my email.
You have to ask other people. It's
probably not
>> Okay.
>> I can read it, but I don't know about
other people.
Every Can everybody read that?
>> Yep.
>> Okay.
>> Yeah. Okay. So, um, I mean, you know, in
general, specs great. I'm not I'm not
I'm just going through some things that
struck me because I basically did a I'm
going to read the whole thing from start
to finish and and see where it lands.
And one of the things that the the the
introduction goes to great length to
describe why DI web s is necessary
because you know the web is the web
security guarantees you know are are are
u problematic right there's certain
things you just don't get if you if you
rely solely on the web and I think
that's that's a good message to to say
but I I thought it might help in that
narrative
to explain why somebody would want to
use the DID web portion of DID webs and
it's primarily an interoperability um
interoperability constraint and
certainly in the discussions that we're
having in SETI for SETI interoperability
people from the other verifiable
credential community in the W3C3C
they would like to have an
interoperability
path or a bridge to carry without having
to support all of Carrie and everything
in all of their tooling. And so
explaining how uh adding a paragraph
that that that mentions that this is the
reason, you know, is one of the reasons
for for that u might might tell somebody
when they're reading the spec, oh, this
is why I should read to the end because
you don't really get to the did web part
of the spec till you get to the end of
the spec. Um, and so that I just thought
that might be helpful.
Maybe not. Um, uh, in terms of technical
things, the first place, uh, there's
some definitions in the glossery that
are that are incorrect. Uh, the
definition direct mode is incorrect. Uh,
direct mode, um, does not use witnesses,
but it may use a kell and it says that
direct mode does not use a kel. That's
not true. It's just it's just that the
kell has to be provided directly between
the two parties or if they're both using
kels that uh you know whichever party is
doing that um uh the witnesses are what
define indirect mode now anybody can get
can get the kell without having to talk
directly
parties have don't have to be online
that's what makes it not the not the
presence of a kel um so so that that was
a drift there um and then in the in the
section where you defined the AB and F
for um for a for an aid that is
incorrect.
Um aids are not limited to being the SDS
of their inception events and so you
only so the spec only defines aids that
are SS of their inception events. There
are two other forms of aids,
non-transferable aids and transferable
aids that are in Caesar encoded public
keys. So the question is does the spec
want to support those other two? I think
it at least has to support
non-transferable aids because witnesses
use non-transferable aids. So I think
that's just an oversight. Um, the third
one is a a corner condition, but I think
in general if it's an aid, you support
all the ones that carry supports and not
a subset. So, so I think that's that
needs to be fixed. And I don't know how
that bubbles out into the
implementation, but um
>> yeah, I'll we should support all those
for sure.
>> Yeah. Okay. And then in section 8.4
four. Um,
it it has the phrase, "If the carry
event streams diverge from one another,
both the carry event stream and the DDS
must be considered invalid." Well, that
that's too strong of a statement. Um,
they're invalid unless and until a
recovery rotation unambiguously
reconciles or removes the duplicity. And
then they're then they're then the um
then at le one of them is is valid
not both of them right
>> is there is there a way in which you can
consider it
pending rather than valid or invalid
like under like adjudication or is that
not really
>> well well when there's duplicity
um a verifier or a validator must not
trust.
That's that's how that's how the
verifier protects themselves.
Um and then if it sometime later gets
reconciled, then they can decide to to
trust at that point. But but trust is
earned in this case. And and if if
there's duplicity, then you stop
trusting until it it's reconciled. It
may never be reconciled. So you don't
know that it's bending. You just know
that there's duplicity. You don't know
that it'll ever be fixed until it is
>> right. The the reason why I ask is
because uh in in our uh governance
encoding mechanism, we kind of have this
four-fold logic where there's an
intentionally um pending
uh uh period where um you can have the
evidence of duplicity and kind of
adjudicate the actual um
adjudicate what you perceive as the
canonical uh fork of a given uh uh
>> Yeah. But I think but I think you're
talking about a different form of
duplicity. This is this is duplicity
with regards to key state which is very
narrowly defined. There are lots of
types of duplicity and and so if you've
you've got a governance mechanism that
is using the dossier spec to to
determine whether or not a group of
loosely coordinated entities are in
agreement
or acting duplicitously. That's a that's
a completely generalized expansive
definition.
>> Forgive me. Forgive me. I'm I'm taking
us away from the topic. I I I apologize.
>> Yeah. Okay.
>> Um
so that needs to be fixed. Um
uh and then uh in the there's a
definition in 8.6.4
on um
what deactivating
and um that works.
defines abandoning through a rotation to
null as a way to deactivate. I'm not
sure how you deactivate
um the the corner cases where you're
using a non-transferable aid.
I I mean if you're using did webs with
the non-transferable aid, that's that's
an abuse of why you would use did webs,
but somebody could use it that way
because that's a valid carry aid. And so
you have to account so the spec needs to
account for those corner cases and
deactivation is one of those corner
cases. And I'm not sure how how the spec
should account for that.
>> Seems like you could
>> you can't deactivate a non-transferable
aid. There's no deactivation mechanism
because because it it's crypto period is
indefinite, right?
uh the the only way you you don't know
that the keys have been compromised.
There's no mechanism to signal that your
keys have been compromised. I mean this
is so so this is one of the places where
you know somebody who is used to the W3C
world of did methods who's used to using
bare signatures where crypto period
doesn't appear anywhere in any
discussion on anything that they're
doing but they're issuing perpetual
they're issuing credentials that have
lifespans of 5 years right this is where
interoperability is dangerous
Because somebody might say, well, the
closest thing to what I'm doing with my
keys or my did web method is that a
non-transferable aid looks like it. And
and a non-transferable aid doesn't need
a cal. So I can actually be perfectly
interoperable by just using did webs
with non-transferable aids
because now the security models match.
And so while you can do that for
interoperability,
that should be heavily caveed that that
here here's here's what happens when you
do that. Now the fact of the matter is
people using did webs will do that. They
will use DID webs and create DID web and
they will ignore all of the security
caveats and they will do it because
that's what interoperability
need means to them and that's and and
that may be desirable that that level of
interoperability may be desirable
because it's a temporary bridge um to
allow other ecosystems to to to um
hang off from uh you know like like in
the case the SETI and we've had
discussions on temporary use
credentials. So I've got a I've got did
web s that's got carryback stuff.
Somebody wants to issue a temporary use
credential that doesn't have any of
those protections other than the the
only protection is the credential has
you know it's it expires within 30 days.
That's the protection right so I could
do that. I could issue a 30-day
credential using a bear signature from
my did web using the assertion, you
know, public key from the current key
state. And if I rotated my keys sooner
than 30 days,
I would be no worse off than if [snorts]
they didn't use carry at all.
The the fact that somebody who knew
Carrie would say, "Well, wait a minute.
You rotated your keys before the 30 days
expired, so it shouldn't be verifiable."
But from their perspective, 30 days it's
verifiable regardless of your key state.
It doesn't matter that you've been
totally compromised. All of your keys
are in the wild. That credential is
still verifiable if the signature
verifies against the key state when it
was issued. There is no provision
anywhere in any of their system to
account for the fact that your crypto
period may have been aborted prematurely
before the 30 days. And we can't fix
that. If we want to interoperate with
people that have that that basis of
security, which is the web, then then
then it's just, you know, user beware
and and and and
that sort of thing is a very rare
occurrence, right? 30 days is a
reasonable period for a crypto period
for a key to expect that it would still
not be compromised, but it could be
compromised like 30 seconds after you
issued after you issued something. It
could be compromised that fast. But
likely it it doesn't get compromised for
one or two years. So 30 days is a is a
reasonable thing. That's why the that's
why DNS is is going to a 45day crypto
period. I mean uh expiration date
because they understand that crypto
periods are much shorter than than two
years and they know that they have to
move in that direction. Um which is
okay. I mean that's the point of
interoperability. I I I know I went on
at length, but I I just wanted to
explain that the point one of the main
advantages did webs is to bridge this
gap. And so people need to know how to
use did did web with did webs with all
of the bad stuff that they're going to
do because that's required by
interoperability because they don't
care. They honestly don't care about
those things. that their answer is well
there's 300 million you know W3C
verifiable credentials out there using
did web
and everybody's just trust them
right so how are you guys going to
interoperate with those and the answer
is well we're going to allow people to
use did web just that in the same way
>> that's a really important case for us to
consider because in in my mind I've
thought about non-transferable
aids
as being derable from really any public
key out there that's that's defined in
the Caesar code tables and any any
public key really could be added as it's
just a single key non-transferable aid
just add it to the Caesar code tables
and so it's actually really important
for us in the did web spec if the goal
is interoperability with all those keys
out there the people that care
differently about security we definitely
need a spec language describing how to
do that right
>> well and you can do it both ways you can
have a transferable aid
that creates a DID web at the moment
that it creates the DID web. It's the
current key state which means the the
public key of the current key state is
is your assertion method. It's the aid
is still not is still transferable but
but your assertion method is that public
key and you and so you can issue
something with that public key and sign
it and then that issuance is just just
like everything else that somebody
issues with the did web did.
>> Thank you by the way for mentioning
that. I was saying the wrong thing
earlier when I said authorization method
it's assertion method like like you just
said.
>> Yeah. Yes. Yes. And I was a little bit
confused when you were talking about
authoration methods earlier in the
discussion, but okay. So that's good.
I'm glad you clarified that. Okay. Um,
so so I I I went to great lengths there,
but I I I I
just wanted to point that out. Um, and
then I guess somebody else already
pointed that the fractionally weighted
thresholds, the examples use the simple
form, not the nested form. So I I think
yeah, you need to solve the nested form.
And then my final comment is that in the
informative section, I think it would be
helpful to show how somebody would use
did web
the did web portion of did webs if they
come at it from the point of view of
they don't have any carry
infrastructure.
Somebody who ha who created the did webs
in order to create it has to have carry
infrastructure. But let's say that users
of the DID web port don't depend on the
carry infrastructure. They just depend
on the web. What would that look like
from an example point of view? How would
somebody use did web in an interoperable
mode where the the constraint on them is
they don't have any carry
infrastructure. All they have is a DID
doc that came from say a trusted a
trusted uh uh um did resolver and now
downstream of that it's just did web and
and their only verification is what did
did web gives them. They've got a public
key. They can sign stuff with the public
key. They can verify the signatures with
the public key. What does that look like
from from a user perspective? because
that's how people are going to be
reading the DID web spec as an
interoperability bridge. So explaining
what that interoperability bridge looks
like will really help the adoption of
did web in my opinion.
>> I'd be happy to add that. We actually
built one at Glyfe and
>> essentially anybody who has the DID
resolver libraries if they receive a
credential that's being presented to
them that has a subject that is a DEBS
did. As long as they use the existing
diff libraries for they did resolver and
did VCJWT,
they can verify the credential.
>> Yeah. So those are my those are my
comments on um Anyway,
>> is that the sort of story that you you'd
want in there is just sort of what I
described.
>> Yeah. I mean I mean Glyfe did the did
the did did did did for what is it
Border Patrol this um this this web VLEI
right which was a way for them to use
did web
um without having to touch carry right
>> we did build yeah we built that so that
you could not have to use carry at all
and yeah just be able Yeah. And and so
all you do is you just caveat it and say
here's all the security caveats when you
do this. But if you're already using did
web, you've already you've already
you've already come to terms with the
fact that all of those caveats are okay
by you. And so you're not any worse off
by using the did web portion of did
webs. If at some point you decide that
you want to elevate your security policy
with did webs you could. Whereas with
did web you can't. It's impossible.
Right? So, so, so that's the story is
that it's a bridge. You start out with
people who don't care about security.
And I use that term strongly. I know
it's it it it's offensive to people if I
say you don't care about security.
Everybody cares about security. Um, so
sorry for using strong language, but you
don't care about security in the way
that that that we care about security in
the in the carry world. um then and you
don't want the over overhead of having
to support carry then what does that
look like and then and then at some
point hopefully they they will go well
okay we need to support better security
and carry is is the path to that instead
of half measures like other did methods
that are that implement parts of carry
right um
>> so that other did methods I'll I'll
leave this point of sale vendor unnamed
but there's a point of sale vendor whose
docs I'm familiar with where in version
one of their security you would transmit
a private key in an HTTP header.
>> Yeah, there's [laughter]
>> so not everybody cares about security
the same way. That's for sure. I was
really surprised when I saw I had to
double check I triple check their
documentation like what who designed
this anyway? Well, the the key
compromised impersonation attack is is a
thing because many uh people who thought
that they were going to be more secure
created um
created uh custom web browsers and
custom browser apps to interface with
web portals.
And when they publish the app, they put
um the public key of the client side um
certificate
in the app and so that anybody that
downloads the app now knows um no not
the public key, the the private key is
in the app. So anybody that downloads
the app can find the private key and so
they can then do an a key compromise
impersonation attack on the secure host
because the private key is in inside the
app code because they they could because
they they distributed the private key by
distributing the app. That's how they
distributed it.
And and numerous private uh these are
like secure file trans secure file
transfer browsers that you download from
a a website from a company that is
selling secure file transfer versions of
browsers like Safari or or Chrome.
You would download a version of the
browser that had the private key of the
client side search in it.
Huh?
Just crazy.
Well, with that, that's kind of a fun
tangent. Would would you add anything
else to the comments we've got here or
have we gone over them sufficiently for
today?
>> That that's all that I had at the time.
>> Okay, great. So, we've gone over the the
needed spec changes. We'll go ahead and
just move on here and feel free to stop
me at any point if we if there's
anything I missed.
So we how do we we've got this question
open question. How do we get the did
webs diff recommended div methods
process restarted? That's what we asked
last time. Jonathan's going through
that. We're going to go through the
final spec process. And so what I'm
going to do is I'm going to take these
comments. We're going to make some
changes and I'll tag you Sam. And once
we get
>> okay
>> these approved by you then we'll just
look also for your final review uh
points Phil if you have any or just your
your final thumbs up.
And then we'll be taking the spec to to
diff to the diff recommended DI method.
>> Now Daniel said he had a question. Did
you did you get his question answered?
>> I don't think I did. Daniel, what was
your question?
>> Yeah, it's um issue number 212.
Basically um [clears throat]
the uh there's a worked example in the
spec. Um and in the spec that worked
example um it uh attaches the
um designated aliases stuff as a - fab
um
uh group in the Caesar code
>> and that um does not actually work. So,
the worked example, and I tried this in
a bunch of different pie branches to see
if maybe it's because this spec was
written against a version of Pi that I
wasn't, you know, using or something
like that. But I tried a 1.1 branch, a
1.2, a 1.3, and a 2.0 branch. None of
them actually support a - FAB used the
way that the specs worked example says.
So um my best guess is that
um this particular example was written a
while back and was using the Caesar
proof signatures um credential export
stuff. Um,
but uh I think what we need to do is
either change the worked example in the
spec to use some other uh prefix code or
um we're going to need to go back and
and change carry pie's behavior so that
you can actually use what the worked
example claims you can use.
>> Yeah. Well, what we'll do is I'll just
make a unit or integration test that
actually generates valid Caesar. And if
whatever carry pie generates today,
that's what we should have in the spec
instead of something old. And if I mean,
thanks for catching that. I I definitely
haven't caught that. So, I I didn't try
to validate all of the Caesar myself. We
went through a revision a couple months
back where we were trying to add
annotated Caesar to everything, but then
we we decided to revert that. And I
think we were probably going to
overwrite this old stuff, but since it's
there now, we just got to go fix it. And
I think the best way to do it is just to
have an integration test that always
generates valid Caesar and verifies that
the spec has only valid contents.
>> Okay. Um, the other thing that kind of
came up as I was writing this particular
thing down is um, you know, I I went and
tried all these different pie branches
because it wasn't clear to me what our
intentions were with respect to the
specific version of carry pie that this
spec targets.
Um, uh, I think we're intending for this
to be like a 1.2 1.3
um, version of pi that this spec
targets. Is that accurate?
>> Yeah. I mean, we we we want it to be
able to work with main, but essentially
what I've got. You've got
>> It's not going to It's not going to work
with main with your worked examples. You
have to pick one or the other.
>> Oh, okay.
Or you'll have to add work examples for
>> Yeah.
>> for the two different versions. So I
think you're better off to to start with
the version one maybe 1.3 branch.
>> Yeah.
>> Um
because that's version one of the group
codes
and the primitives don't change
but the group codes are what are changed
and so the serialization formats you can
only you can't serialize in Caesar in
version one. You can serialize in Caesar
in version two.
So you may want to start the spec with
the version one stuff and then upgrade
the spec to version two. The point is is
to get it get the spec through the
process the first time around and then
and then restart the process because we
don't have full support for all the
version stuff for all the version two
stuff in carry pi yet. So I you know so
you would run into a problem of delaying
the spec till all that's done and that
would be I think that would be a delay
you don't want to take right now. So I
think you should target like the version
one the version one
ver of the specs I mean of of carry pie
which is the pre version one of of like
the group codes. Um the [clears throat]
the trick with that Sam is that um we've
got code for SETI that um needs the 2.x
generation of
>> um
>> yeah so so we'll have to we'll have to
do that.
>> Yeah. I don't know. I don't know. May
may I Yeah. I don't know how to
I don't You're right. I mean, if you
want to delay the spec and do all that,
but then that delays the did webs spec
until till till that stuff is done.
>> Um, let's let's say that it's not a
question of timing the spec. We just do
whatever's pragmatic. But my practical
question is um if we're going to be
doing a demo at uh you know the SETI
conference in November and we want to
have [clears throat]
um working uh guardianship examples and
all these other cool things from uh that
require
uh you know bulk issuance and and uh
aggregate support and whatever. And at
the same time, we want to show
interoperability and we want to use did
web s. How do we uh do that from a
coding perspective, not from a spec
perspective? Cuz I think it'd be fine
to, you know, have a spec that
uh was in flux a little bit or whatever,
but but I don't know how to solve it
from a code perspective. Well, what I
would suggest is that is that we um is
that the code that supports the did WebS
method get versioned so that you can
release a uh a code version with the
working examples
that that is labeled as version one
and then you can then you then you
version the DID web spec
and and then that new version the spec
has worked. worked examples with the new
code that is in development, but it
doesn't slow it doesn't slow the review
and release of the the original did web
spec.
>> I see. Okay.
>> Well, if we want to just minimize the
scope here, it's really the difference
in AC/DC that is going to be the primary
difference. And that's even it's the
>> No, that's not the primary difference.
the pime the the the the AC/DC
difference is actually a minimal
difference. The the the big difference
in the work example is the group codes
in Caesar.
Those those are not backwardly
compatible. So if you're doing a worked
example of a Caesar stream, then you're
going to have group codes that are that
don't that don't map between the two
versions.
>> Yeah. And um
>> there is a there there are some minor
differences in the AC/DC, but it's it's
like one field.
>> Yeah. Well, what I'm getting at is that
we don't get into so from the Caesar
perspective, that's entirely accurate.
We don't get to that level of
description in the in the did WebSpec
itself. [snorts] In the worked examples,
we do. And we definitely need to have
worked examples for version one and
version two. And what I'm what I'm
getting at here is that there's it's
probably going to be easier than we're
we're talking right now because it's
yes, there are changes,
>> yet the usage of those group codes and
the usage of AC/DC is for the
self-issued AC/DC's, it's it's not
terribly complicated. And so it pro
probably could be easier than we're
thinking. Yeah, you you could implement
all the worked examples with version two
of the specs without waiting for all of
the changes to Carry Pi because you can
manually create those with the code
that's currently in Carry Pi,
but you just have to you just have to do
the leg work to do that.
>> Yeah, what I'll do is I'll add this as a
comment here and
>> but the worked examples are an
informative part of the spec anyway. So
you could you could you know
h have an have an informative
you uh you could either decide that
you're going to delay the spec moving
forward until you get those working
examples done and then you put them in
the spec. Or you can fix the the things
in the spec and leave just the version
one working examples and then start the
spec moving forward because the version
two work worked examples are
informative. You could add that later as
an informative section in the in the
spec or in a version of the spec. I I I
just I'm I'm trying to be sensitive to
the fact that there are time delays that
happen
because you have waiting periods for the
spec to move forward and if you so so
those waiting periods then start to you
know do things like uh you know delay
you from getting the spec to a certain
point and maybe that doesn't matter.
What if we um released the spec only
with a thing that said for worked
examples go see the following uh
location and then the worked examples
were moved out of the spec entirely.
Is that uh too radical of a move?
>> No, I don't I don't think so. They're
forbiddive, so they don't have to be in
the spec.
>> I like that. Go ahead.
>> Uh, people don't like it in general
because if they download the spec, then
they have to go to some other repo to go
look them up. But I don't think that's a
but I think people who don't like that
aren't, you know, that's not a
requirement. That's just some people
don't like it. Um, but if you if you
really do a good job, what tends to
happen, and the reason they don't like
it is it tends to happen that when
people decide to move the informative
examples outside the spec, they tend not
to get supported because if they're in
the spec, then lots of lots of eyes look
at them and people go, "This doesn't
work, that doesn't work." Right? And so
it gets it gets attention that it
wouldn't get when it's outside the spec
because what what often happens, you
move it outside the spec and then nobody
works on it. And then it's sitting
there, you know, six months later and
people are reading the spec and they go,
"Well, where are your worked examples?"
And everybody says, "Oh, well, we moved
them here, but we never got around to
finishing them or supporting them or
making them work well." And so it's it's
more a laziness enforcement mechanism to
put them in the spec because the spec
can't get released unless you do it. So
it makes a hard requirement to do it.
So, if you have the discipline that says
you're going to do the worked examples
and you have the resources to make sure
they're happen, then nobody's going to
complain. If the worked examples are
done, you know, at [clears throat] the
same time that the spec is,
>> I like the idea of keeping them in the
spec because some a great engineer told
me a number of years ago that that which
is not automatically enforced tends to
degrade.
I like and and to me it's we've got a
full example section here. We could say
there's version one and then have
version two just have it be in the spec.
I like the idea of separating it too,
Daniel, but if I had to think of the
tradeoffs.
It seems safer to keep it in.
>> That's fine. I wasn't really advocating.
I was just speculating.
>> Mhm. [clears throat] Yeah, it would make
the specs shorter and easier to review
if they were taken out, but keeping them
in does force us to have more
discipline.
So, what I what I'll do then is I'll
just start it as a version two part in
this in the spec here. We'll have a full
example for version one and a full
example for version two. Even if some of
the ver version two stuff hasn't fully
settled, which I I think it already has,
but I'll just put in there what we
currently have and then we can review
that and see what we think.
Is there anything else we should add
before we close? I know I know it's 4
minutes over already and there's a carry
set foundation setup call after this. If
there's nothing else, just last call.
I'll add one more action item. I'll let
everybody go and then I'll write an
action item here for me to respond to
this. So, I already made a comment here,
Daniel. I'll I'll put a response here
and I will put a action item for me to
add the version two worked example.
>> Great.
>> That's all for me. Anything from anybody
else?
All right. Have a good day.