The Digital Identity Tradespace - Samuel Smith

KERICONF26 Day 1 · 45:30

0:00 Samuel Smith | The Digital Identity Tradespace | KERI Conference 2026

0:03 My name is Sam Smith.

0:06 If anybody

0:08 can't remember my name,

0:10 [laughter]

0:12 it's because you're more identity

0:14 challenged than my parents thought I

0:15 would be than they gave me that name.

0:18 Anyway, that's all right. Great.

0:21 I'm going to talk about the trade space

0:23 of KERI, not in detail,

0:26 but I'm going to talk about why

0:29 we solve

0:31 the privacy problem using bulk issuance

0:35 instead of other mechanisms. And

0:38 I'll give you the shorthand

0:40 to the trade space.

0:43 KERI's policy is security first always,

0:47 which means if we're ever in a situation

0:49 where we're going to make a trade, and

0:51 we're going to trade for weaker security

0:54 or stronger something else,

0:56 we're not going to make that trade.

0:58 We're going to always trade for stronger

1:00 security. We're not going to

1:02 say, "Well,

1:04 that security's okay.

1:06 We can do this," because

1:11 the trajectory of technology for

1:14 security is that every weak trade for

1:17 security is a bad trade. May

1:19 not be today, but in your lifetime it'll

1:23 be a bad trade. So, let's try to be

1:26 creative about solving the other

1:29 problems without starting off by saying,

1:32 "Well, it's easier to solve those

1:34 problems if we just throw security under

1:36 the bus."

1:37 Actually say, "You know what? If my

1:39 constraint is I'm not going to throw

1:41 security under the bus, what's the best

1:43 I can do? And is it good enough?" And

1:44 that's really the

1:46 the difference in the ethos.

1:49 So

1:51 for those of you know,

1:53 With KERI, each AID controller is

1:57 its own identity provider.

1:59 So, we use this phrase Keys-at-the-Edge.

2:02 Each edge self-authenticates.

2:04 What that means is there are no

2:06 third-party IDPs, no relying parties, no

2:09 trusted intermediaries.

2:11 Every interaction is end-to-end or

2:14 edge-to-edge, depending on your

2:17 your mental model, right? If I have

2:19 a network and I have people at the edge

2:21 trying to get in, it's called an edge.

2:23 If I'm trying to communicate across a

2:24 network, it's called an end, but they're

2:26 the same thing from KERI's perspective.

2:30 In my plenary this morning,

2:33 I ended with this idea of Reputable

2:35 Autonomic Pseudonymity in Control over

2:38 Confidential Contexts.

2:40 The way we solve privacy

2:43 is with this one, control over

2:44 confidential contexts. And bulk issuance

2:47 gives the user precise control over

2:51 confidential contexts. So, they get to

2:53 decide

2:55 what the reach and scope of their

2:58 disclosure are in terms of their

2:59 correlatability.

3:02 We understand that every piece of

3:04 information that we share over the

3:06 internet

3:08 is correlatable.

3:09 There is no such thing as

3:12 no correlation.

3:14 Unlinkability is not the same as

3:17 uncorrelatability.

3:20 So, you know, we called it Rhapsody [RAPC3].

3:23 Let's see how we use ACDCs for this.

3:27 ACDCs… And I think most of you are

3:30 familiar, but I recognize some faces

3:32 in here that maybe haven't actually sat

3:34 through,

3:35 you know, something about ACDC. So, I'm

3:37 going to give a couple of just short

3:39 introductions cuz I've got a lot of

3:41 detail to go through, and if

3:43 if you thought this was going to be a

3:46 high-level talk like the plenary this

3:48 morning, I'm really going to disappoint

3:50 you.

3:51 This is

3:54 going to go fast.

3:55 So, think of an ACDC as a graph fragment

4:00 that has

4:01 edges that point to other graph

4:03 fragments.

4:04 And so, if you take graph fragments and

4:06 connect their edges, you get a graph.

4:09 That's the point.

4:11 But, the edges are part of the ACDC.

4:15 And the reason for that is the

4:17 authority and the authentication for

4:20 each graph fragment includes its edges.

4:24 So, you authenticate the

4:27 attributes which are the node and its

4:29 edges, and that is an ACDC. And now I

4:32 can compose

4:35 arbitrary data structures from graph

4:38 fragments because all data can be

4:39 graphed. Right?

4:42 And the edges (It's called a labeled

4:45 property graph) because the edges have

4:47 properties.

4:48 The edges can be blinded. They can be

4:51 private edges. They can have

4:53 operators. They can be grouped together.

4:57 They can be aggregated. They can be used

4:59 in various ways. The edges have

5:02 their own set of individual attributes

5:06 that are metadata about the way you

5:09 compose the information

5:12 in a secure way.

5:14 And other approaches to composing

5:16 information don't allow you to securely

5:20 compose the information from multiple

5:22 sources. They put it all in one data

5:25 structure that under the hood is

5:27 actually a graph, right? If I have a

5:29 nested

5:30 set of JSON blocks, it's a graph,

5:33 but it's not composable in a secure way.

5:37 It's all or nothing.

5:39 And so, ACDC says, "No, that's a bad

5:40 idea. We need secure

5:43 composition."

5:44 ACDCs are designed to solve

5:48 problems where you need Perpetually

5:50 Verifiable Issuances. Can you use an

5:52 ACDC with a bare signature

5:55 with a short crypto .. [inaudible]

5:56 Absolutely. You don't have to anchor

5:59 your ACDCs in a Transaction

6:02 Event Log or a KEL to make them

6:03 perpetually verifiable.

6:05 But we have to solve the perpetual

6:07 verifiability problem.

6:09 So let's solve the hard problem first.

6:12 So I use this sometimes that people are

6:14 familiar with it. If I have a bunch of

6:16 rocks, a bunch of gravel, and a bunch of

6:19 sand, and water, and I want to get all

6:22 of that into a jar, and get the most

6:25 that I can get in there,

6:27 what do I put in first?

6:31 The water, right? I put the water in,

6:33 right? No, I put the rocks in first,

6:35 then I put the gravel, then I put the

6:37 sand, and then the water fills in the

6:38 blanks. So ephemeral applications are

6:41 the easy thing. Everybody knows how to

6:43 do ephemeral application. Nobody solved

6:46 the perpetual verifiable problem before

6:48 KERI and ACDC in a

6:49 decentralized way. Obviously, if you

6:52 have a database and a central authority

6:54 to the database, you can solve any

6:55 problem you want. It's easy, right? But

6:57 that's not the

6:59 hard problem of decentralized data. The

7:02 hard problem of decentralized data is

7:05 how do I solve perpetual issuances

7:06 without a centralized authority?

7:09 Right? Each fragment is separably

7:12 authenticatable. That means the graph

7:14 doesn't have a single source. Every

7:16 node, every fragment can come from a

7:18 different source. They can all come from

7:20 one source or different ones. That

7:22 allows me to do delegation, all sorts of

7:23 things.

7:24 Right? So I have

7:26 Delegable, Attenuable, Aggrable,

7:29 Revocable, Transferable Authority.

7:32 – Can we break that down?

7:34 – Okay.

7:36 Well, I haven't talked about

7:37 aggregating, but notice that if I have

7:39 multiple ones going in one thing, I've

7:41 aggregated. If I have a chain, that's

7:44 attenuable

7:46 delegable. And transferable means that I

7:48 can

7:50 I can change who's in control.

7:54 And actually I'll talk about that in my

7:57 plenary tomorrow. All right.

8:00 What this allows us to do

8:04 for verifiable credentials, which are

8:06 all about authority,

8:07 is that we can have high fidelity

8:09 modeling of real world authority

8:11 structures.

8:13 Not authority structures that are the

8:16 best we can do because we have a broken

8:18 model, which is

8:20 current security, current OAuth

8:23 OIDC. It's all broken models because it

8:25 says, "Well, this is what we can do with

8:26 the technology we have. We have to use

8:28 the secure sessions. We have to use

8:30 encryption. We have to use things like

8:32 Diffie-Hellman, TLS key exchanges, and

8:35 we have to do ephemeral stuff because we

8:36 don't know how to solve the

8:38 perpetual verifiability problem. And

8:41 then we'll make the rest of the world

8:42 change their authority structures to

8:44 match that."

8:45 And what ACDCs say from the

8:48 beginning is, "No, no, that's not the

8:50 way real world authority structures

8:52 work. Real world authority structures

8:54 have these properties."

8:57 And it doesn't matter whether it's

8:58 organizational identity or personal

8:59 identity, right? If I'm a parent and

9:02 I have a child and I want to do

9:04 and I want to have

9:07 control over what my child is allowed to

9:10 do, then I've got a delegable

9:12 attenuable authority structure.

9:15 Right?

9:16 It looks like organizational identity.

9:19 So those are the problems we're

9:20 solving.

9:24 This was supposed to be animated. I

9:26 messed up. Okay.

9:29 I'm not going to talk about this stuff.

9:30 I put this on the slide because I'm

9:32 going to talk about blind

9:34 bulk issuance.

9:36 But a lot of people say because I spend

9:38 a lot of time

9:40 talking about

9:43 about the other things that ACDCs do,

9:46 that we actually don't support all of

9:48 the least disclosure mechanisms that

9:50 all the other credentials do. We

9:52 just don't support a particular type of

9:54 proof stuff because we feel that

9:56 it makes an unfortunate security

9:59 compromise. So, we follow the

10:02 principle of least disclosure. We have

10:03 something called gradual

10:05 disclosure

10:07 that allows us to progressive least

10:09 disclosures

10:11 so that we can negotiate how much

10:13 information is disclosed in a particular

10:15 context. Now,

10:17 control over confidential context. That

10:21 means I don't disclose any more

10:23 information than I need to,

10:26 to facilitate a transaction. And that

10:30 transaction might mean negotiating over

10:33 what I'm going to disclose.

10:35 And so, I can have multiple

10:39 interactions and transactions to

10:41 negotiate the full set of disclosures

10:45 and how I do those disclosures. And so,

10:47 we have something called compact

10:48 disclosure, metadata disclosure, partial

10:50 disclosure, nested partial disclosure,

10:53 full disclosure, and selective

10:54 disclosure. Those are all disclosure

10:56 mechanisms that don't exist anywhere

10:57 else except in ACDCs, except for

11:00 selective disclosure. They have one

11:02 mechanism for selective disclosure and

11:03 nothing else. And so, it means you

11:05 can't model real-world authority

11:08 structures when it comes to disclosing

11:09 information. You need more

11:11 capability. And then, you can do

11:14 combinations of the above. And then, we

11:16 have bulk issued instance disclosure,

11:18 which I'm going to talk about today. So,

11:20 so I'm only going to talk about one of

11:22 the things on this list. And then, we

11:24 have contractually protected disclosure,

11:26 which you've heard about, right? There's

11:28 several people that have mentioned that.

11:29 You've seen demos of contractually

11:31 protected disclosure. So, that is

11:33 essential if we're going to have a

11:35 comprehensive approach to privacy.

11:37 Comprehensive approach says you invert

11:39 the economics. One of the ways you

11:41 invert the economics is impose

11:43 liability

11:45 on the recipient of the disclosure. They

11:48 don't get a safe harbor. They don't get

11:50 to do things like de-identify the data

11:52 and then they can do whatever

11:54 they want with it. You attach

11:56 strings to the data and those strings

11:58 are enforceable which changes their

12:01 their behavior. So, we're changing

12:03 behavior of the recipient of the

12:05 disclosure, not trying to minimize the

12:08 disclosure and then hoping they can't

12:10 use it against us. We actually say you

12:12 can't use it against us and if you do,

12:14 this is what we're going to do to you.

12:16 Right? So, we need to have a contractually

12:18 protected disclosure and we need to have

12:20 one that the recipient will agree to.

12:23 And that's why we need graduated

12:24 disclosure so that we can gradually move

12:27 into a situation where we're

12:29 mutually agree. And then we have

12:31 blindable ACDC state registries. Those

12:34 are a little bit a part of bulk issuance

12:36 so I'll talk about those a little bit as

12:37 well. So, that's the full set

12:40 of mechanisms

12:43 and there's a lot. And that's why often

12:45 people look at ACDCs they

12:47 go, "Oh, there's a lot there." Right?

12:50 But if we want to really do it right, we

12:51 have to do all of those things.

12:54 All right. So, let's talk about

12:55 infrastructure.

12:57 Just to remember,

13:00 we have controllers, they have witnesses

13:02 and watchers. That's for KERI. That's

13:05 key to it. ACDCs

13:07 are built on top of KERI. So, when we

13:09 talk about ACDCs, it's another protocol,

13:12 it's another set of infrastructure, it's

13:14 a bunch of new stuff that you have to

13:16 learn about.

13:18 So, we have registrar and observer

13:21 and this is what they look like.

13:23 And then we have

13:25 We can do bulk issuance with the

13:27 registrar and observer if we do it

13:29 right. And we use sparse Merkle

13:32 trees to be able to do that. Sparse

13:34 Merkle trees are technically a type of

13:38 zero-knowledge proofs. We do use

13:40 zero-knowledge proofs. A digital

13:42 signature, a conventional digital

13:44 signature, is technically a type of

13:46 zero-knowledge proof.

13:48 Just nobody calls them that, but if you

13:50 look at the math, a digital signature is

13:52 disclosing that somebody who knew a

13:54 private key and a nonce

13:57 created the signature without disclosing

13:59 either the private key or the nonce.

14:00 It's a zero-knowledge proof. A Merkle

14:02 tree, you can do an inclusion proof or

14:04 an exclusion proof

14:06 of entry in the tree without disclosing

14:09 all of the tree. That's a zero-knowledge

14:10 proof, by the book. Right? So, we take

14:13 advantage of those. We just don't take

14:15 advantage of the ones that have weak

14:17 security because the crypto periods for

14:20 perpetual verifiable

14:23 issuances. But, if the application

14:26 fits an ephemeral application, I have no

14:29 problem with using zero-knowledge proof.

14:31 I use them all the time. I just don't

14:32 call them that because most people don't

14:34 call them that either.

14:36 We also have something called a user

14:38 presentation registry, which is also a

14:40 new thing that nobody else does as far

14:42 as I've never seen anybody do it, which

14:44 allows presenters to detect compromise

14:47 of their proofs that are in their

14:50 credentials that they're

14:52 presenting. So they themselves

14:54 will protect it from fraud, not just the

14:56 issuer. So, what does an issuance

14:59 registrar registry look like? Here's the

15:01 block diagram. You have Let's see, can

15:04 you see my cursor?

15:07 No. No. All right.

15:41 So, we have

15:42 an issuer,

15:44 an issuee,

15:46 and we use that terminology, it's a

15:48 little bit odd because we don't want to

15:50 get confused about a data subject or a

15:52 holder. We're really talking about

15:55 the ACDC is targeted. We have untargeted

15:58 and targeted ACDCs, and if it's targeted,

16:00 then we're issuing it to some entity,

16:02 and that's the issuee.

16:04 The issuee makes a presentation.

16:06 The presentation can either be bare

16:08 signed, which means

16:11 it's ephemeral,

16:13 or it can be anchored, which makes it

16:17 so that they can detect if they've

16:19 been compromised because a verifier will

16:22 have to check to see if the presentation

16:24 is anchored. This is an unanchored

16:26 presentation.

16:27 The issuer

16:30 creates a registry of the state

16:33 of the ACDC, it

16:37 hosted by a service called registrar,

16:39 and then an observer,

16:42 which is controlled by the verifier,

16:44 the registrar is controlled by the

16:46 issuer,

16:48 notice that this models the witness

16:51 watcher governance structure. So, we

16:54 learned a lesson. We shouldn't have

16:56 shared governance.

16:58 So, we have witnesses that are

16:59 controlled by controllers, watchers that

17:01 are controlled by verifiers. We split

17:03 the verification between two places.

17:05 We do the same thing with ACDCs. We have

17:07 registrars controlled by the issuers,

17:10 and observers controlled by the

17:12 verifiers,

17:14 and the ACDC state goes to the observer,

17:17 the observer gets it from the registrar,

17:19 the verifier checks the state against

17:21 the presentation says, "Oh yeah, that

17:23 credential hasn't been revoked." For

17:24 example, if I have dynamic state

17:27 ACDCs. So, that's not a new concept.

17:32 Here's what it looks like from a

17:37 a cryptographic point of view, the data

17:39 point of view. So, what I have is I have

17:42 the Key Event Log of the issuer.

17:44 And I have events in the Key Event Log

17:46 and I just show different types of

17:47 events, incept, interact, rotate. But

17:51 each event in the Key Event Log can have

17:53 it sealed.

17:54 We call these anchoring seals.

17:57 They basically are hashes. They're

17:59 actually technically SAIDs of things I

18:01 want to anchor.

18:03 They are privacy preserving because

18:05 I don't know what the hash is. It's

18:07 a cryptographic hash. I can't infer what

18:10 the hash is of unless I know

18:12 what it is to begin with. But I can

18:14 cryptically verify once it's disclosed

18:16 to me what it is, that it's

18:17 there, right? So, I have a

18:19 cryptographic anchoring of

18:22 a registry. A registry is essentially

18:26 another type of log. We call them a

18:29 Transaction Event Log. It is a hash-

18:31 chained data structure.

18:33 But it's

18:34 managing not key state but ACDC state.

18:38 So, if my ACDC is dynamically revocable,

18:42 I have issued and revoked, are

18:43 the two states. And I have this new

18:45 thing called No Change and that's

18:47 because this is a blinded state TEL.

18:49 So, I can issue events to the

18:52 registry that are blinded. I don't know

18:55 what the state is.

18:57 A third-party observer can't

18:59 correlate the state just by looking at

19:01 the registry.

19:02 Only second parties that I disclose

19:05 to, can figure out what the state is.

19:07 So, a given issuer

19:09 can have a registry

19:12 per ACDC that they issue to manage

19:15 the state.

19:17 So, blinded state registry.

19:19 These are the fields in an ACDC.

19:23 The top-level fields.

19:25 And the S, A, E and R, we call them

19:30 sections because they typically are

19:32 expanding the block of other things.

19:35 But we have attributes, edges, rules. I

19:37 talked about edges. We have schema.

19:39 We have a registry field that points to

19:42 the registry that governs this

19:44 ACDC. ACDCs don't have to have

19:46 registries. If they're issued and

19:49 they expire with time, they're not

19:51 dynamically revocable, they don't need a

19:52 registry. So, the registry field's

19:54 missing.

19:55 Empty.

19:57 I then have in my registry, I have a

20:00 Registry Inception Event,

20:02 which defines governance for the

20:04 registry. So, what is governance? Well,

20:07 it's the issuer AID. It says this

20:10 registry is governed by this AID. And

20:12 then it has a SAID like everything, has a

20:15 serial sequence number, has a date time.

20:18 And then I can issue blinded updates.

20:21 The blinded updates

20:23 have

20:24 a prior

20:26 connection so that

20:28 change age

20:29 sequence number. And then has this BLID,

20:31 which is this blinded ID.

20:33 So, I don't know what the state is if I

20:36 look at the registry. The registry's

20:37 blind to me. Third party looks at it and

20:39 says, "Okay, you got a registry got

20:40 events in it. I don't

20:42 know what ACDC it manages. I don't

20:44 know what it's doing because all of that

20:46 important information is blinded over

20:48 here."

20:51 So, my blinded attribute block is where

20:54 I get that information. So, I have this

20:56 the BLID, I have a UUID, which means the

20:59 BLID is universally unique.

21:01 I call it a salty nonce.

21:04 I have the SAID of the ACDC and then I

21:07 have the state.

21:08 So, the only way I

21:10 can get this is that the presenter,

21:12 the issuee, unblinds it

21:15 for me and gives it to me. And they only

21:17 unblind it after

21:19 for example, if I'm a verifier, I agree

21:22 to the terms if it's contractually

21:24 protected disclosure or after we

21:27 negotiate what it is or what parts that

21:29 you know, that I'm going to

21:31 disclose. And now they can at least

21:33 verify that the ACDC is validly issued,

21:36 but maybe the ACDC used selective

21:38 disclosure to only disclose one field in

21:40 the attribute block. But now I can at

21:42 least look it up and say, "Yeah, it was

21:45 professionally verifiable because

21:48 I can trace it." So, this

21:51 is what it looks like.

21:52 I've got the Key Event Log.

21:55 I've got the events in the registry. So,

21:57 I've got an incept. Incept is vaculous.

22:00 It just creates the registry. Why is

22:03 this useful?

22:05 Well, I don't want the creation of the

22:07 registry to be correlatable.

22:10 So, if I'm the state of Utah and I'm

22:12 issuing birth certificates, and babies are

22:15 born, I create a registry on their

22:17 birthday,

22:20 then I've correlated their birth date to

22:22 the registry creation. That's a

22:23 really bad thing to do. So, I want to be

22:25 able to do is just create registries

22:28 bulk

22:29 that are just placeholders.

22:31 And so, on day one of SEDI, the state of

22:34 Utah will create enough registries for

22:36 all the citizens of the population of

22:38 the state of Utah for the next

22:40 however many years they want to do that.

22:42 And now they're only correlated to the

22:44 date that's went into place.

22:47 Anybody that's born before that date,

22:49 their registry is created on that date.

22:51 Anybody born after that date, their

22:52 registry is created on that date. A lot

22:54 of mechanisms that people build for

22:57 privacy don't actually consider the

22:59 statistical correlatability of the meta

23:02 data that they use when they build their

23:04 systems. And so every time I look at

23:06 something I go is there metadata there?

23:08 Yes, there is. That metadata is

23:10 inherently correlatable. It will defeat

23:12 any mechanisms I use that are

23:14 cryptographic because I just have to pay

23:17 attention and I can correlate it.

23:19 So I have to build into the system

23:22 anti-metadata correlation mechanism. So

23:24 bulk issuance, this is bulk issuance.

23:27 That is a… Sorry.

23:29 Oh, no. I got to go redo that.

23:33 So it's helpful to focus. All right.

23:39 I got to go slower. 1 2

23:40 3

23:41 4. There we go. All right. What else is

23:44 on here?

23:45 Well, I update… See all these updates?

23:49 They just have these BLIDs in them.

23:52 The BLIDs are blinded. I don't know

23:53 what the update is. Look over here. This

23:55 one

23:56 is an update but it doesn't have

23:59 [inaudible]

24:00 update my registry with

24:03 nothing.

24:05 Well, if I wanted to make sure that like

24:07 let's say

24:09 that as the state

24:12 once a day

24:14 I create updates whenever I issue new

24:17 birth certificates.

24:18 Now the update is correlatable to the

24:21 birth certificate. So I want to do is I

24:23 want to have a bunch of registries that

24:25 I just update randomly.

24:27 So that there's no correlatable

24:29 information but the fact that I had an

24:31 update.

24:32 A lot of mechanisms for verifiable

24:34 credential that have revocation

24:36 registries, you look at the metadata

24:38 when the transaction was posted to the

24:40 to the registrar or the verifiable data

24:42 registry, it means you can

24:44 correlate out the information you're

24:46 trying to protect. You don't actually

24:47 have to have anything. You don't have to

24:49 break anything. You just have to pay

24:50 attention. You just have to be a good

24:51 data scientist.

24:53 Since I started my life as an AI

24:55 data scientist, I always think about

24:57 those things first. I'm late comer to

24:59 cryptography. I go, "Well,

25:01 cryptographers don't think about data

25:03 science. They don't know how to… They

25:04 don't really think about statistics.

25:05 They don't know about much of the

25:07 statistical stuff that they use. They

25:08 just know that there's certain things

25:10 that they can get away with." And I'm

25:11 sorry for criticizing cryptographers.

25:16 Anyway,

25:17 so I wanted to do that and I keep

25:20 hitting the wrong one. All right, one

25:21 more time. Sorry about this.

25:25 I guess I could just exit out of the

25:27 animation. All right.

25:32 Here we go. It's on here. All right, so…

25:34 No, this is the wrong… This is No, that

25:36 won't work. That's a different one. All

25:38 right, here we go.

25:40 Go slow.

25:43 It's sensitive. All right, so what

25:45 I have here is the one that's actually

25:48 issued. It's some update.

25:51 And then I can update it with the

25:54 same state,

25:56 but somebody looking at it doesn't know

25:58 what the update means.

26:00 So this example actually came up

26:02 with when I was talking to some people

26:05 a few years ago for Swiss ID, and they

26:08 looked at the existing KERI stuff and

26:10 they said, "Well, yeah, one of the

26:12 problems they have with at the point in

26:13 time pretty much all of the verifiable

26:15 credential systems on the planet is that

26:18 if you know what the state is at any

26:20 point in time,

26:22 and there's only two states,

26:24 and there's an update, then you don't

26:26 have to actually be disclosed the

26:28 update. You can infer, cuz there's only

26:30 two states, that the update changed the

26:32 state and what the current state is.

26:34 So the example is I apply for a job

26:37 someplace, and I'm using a verifiable

26:40 credential

26:41 that's privacy-preserving,

26:43 and I disclose that I'm an employee of

26:46 a company,

26:47 and then they don't hire me,

26:50 but they put me on the list of saying,

26:52 you know,

26:54 we want to keep track cuz we really like

26:55 this guy, but he just won't… Timing

26:57 wasn't quite right, right?

26:58 But, since now they know the registry

27:00 can then

27:02 watch it. And if there's a new state in

27:04 there, and they know that there's only

27:06 two states issued and revoked, guess

27:07 what? They know when I get fired.

27:10 Might be 5 years from now, and then they

27:11 go, "Oh, he got fired. Let's see if he

27:13 wants a job with us."

27:15 So, I need to have my state updates be

27:17 blinded

27:19 so that there's no statistical

27:20 correlatability. Has nothing to do with

27:22 cryptographic correlatability or

27:24 cryptographic linkability. It is I don't

27:26 have any metadata that is statistically

27:28 correlatable. So, that means I have to

27:30 be able to update my state

27:32 with blinded updates

27:34 in a way that it… and the user can

27:37 request this. The user can go back to

27:38 the issuer and say, "Hey, you know what?

27:40 I did three presentations of my state. I

27:42 want you to issue a new one

27:44 so that decorrelates everything that I

27:46 just did." Because now they can't go and

27:48 look and see the latest state cuz the

27:50 latest state is after the one they had,

27:52 so they don't know what the state is.

27:53 They don't know if it went to revoked

27:55 or it went to some other state. They

27:56 just know they don't know it. And then

27:58 when you revoke it,

27:59 you can just keep updating it every

28:02 once in a while, and they go, "Oh, well,

28:03 it may must still be employed

28:05 because his registry is still updating,

28:08 right? He didn't abandon the registry."

28:09 So, it gives you perpetual protection

28:12 from metadata correlation because

28:14 the registry can live forever and

28:16 protect you.

28:17 All right, so… – Is it

28:19 derived from something? – Yes, it's a blo…

28:21 it's an HD

28:24 process. So, what we're trying to do

28:26 is minimize the key management. So, the

28:29 issuer and the issuee exchange a salt.

28:32 And then you use the salt to derive the

28:34 blinding factors.

28:35 So, you don't have to have any

28:36 interactions.

28:38 What happens is the issuee can go

28:41 look at the registry, see

28:43 that there's a new event, and they can

28:45 figure out what it is cuz they know the

28:47 salt.

28:49 And so they can actually try

28:51 all the combinations of state to figure

28:53 out which one it is, without them

28:56 having

28:58 to have any ongoing interaction. So I

29:00 hate interactions. If you ever pay

29:02 attention, I think interactive protocols

29:04 are bad idea. I want non-interactive

29:07 protocols in general. So that's a

29:09 non-interactive way to allow them to do

29:11 it is to use a salt. All right. So

29:13 Shared Blinded State Registry. So

29:16 maybe you say registries are expensive.

29:18 I don't want to have all these

29:19 registries. Well, because the state's

29:21 blinded and the blind includes the

29:24 actual ACDC that the registry's for,

29:26 there's no reason you can't share one

29:28 registry across any number of ACDCs. So

29:31 as an issuer

29:32 I could use one registry for all of the

29:36 credentials I issue. Now, that means

29:38 that the registry might get heavyweight

29:39 over time and I start to get what looks

29:41 like blockchain bloat,

29:43 so I may not want to do that if I'm

29:45 issuing a lot, but I can certainly can

29:48 decide what the granularity I want to

29:51 manage that, right? So that's the

29:53 advantage of a blinded

29:55 state registry.

29:57 Yes.

29:59 – The salt?

30:01 You know, exchange something like a

30:03 symmetric key exchange? – Yes.

30:05 But it's not for security, it's for

30:07 privacy. So KERI says it's okay to use

30:10 shared secrets

30:12 for confidentiality because every

30:15 encrypted thing that you send somebody

30:17 is has to use a shared secret. – Does that

30:19 create a class of algorithm which has

30:22 [inaudible] salt and symmetric salt exchange

30:25 for which

30:26 you know, the cryptography

30:29 community doesn't know what that is.

30:32 – I'm not sure I understand the

30:33 question. – I'm just drawing a parallel

30:36 between symmetric key exchange protocols

30:39 and salt exchange protocols.

30:42 And are they different? – No, it's just a

30:44 secret.

30:45 – How are they secure? Have they been

30:46 looked at by cryptographers?

30:48 – Well, anything that you would exchange

30:49 with Diffie-Hellman is just a secret.

30:52 So, the security of the exchange is

30:55 whatever Diffie-Hellman gives you.

30:56 Diffie-Hellman doesn't care what

30:58 what secret you're exchanging.

30:59 – Hellman is anonymous by design,

31:00 right? – Yeah.

31:02 So, it doesn't care.

31:05 Yeah, so basically you can use… your

31:08 salt can be the shared key that

31:11 the Diffie-Hellman gives you. So, that's

31:13 the easy way to do it. – Okay, I think

31:15 there's a man-in-the-middle attack, but

31:16 I don't know. – Yeah. – Isn't that why

31:18 you designed SPAC, though?

31:20 – Well, no, but yes.

31:23 [laughter]

31:24 SPAC solves a lot of other problems.

31:26 You can certainly do an out-of-band

31:28 salt exchange.

31:30 And the reason you can do that is that

31:31 when you do the identity assurance,

31:34 if you're doing IAL level three identity

31:37 assurance, it has to be an in-person

31:40 thing, and then you can exchange the

31:41 salt then, and it's out-of-band. And

31:43 then you don't have to worry about

31:44 Diffie-Hellman. But that's it.

31:48 Well, it scales for SEDI because you can't get a SEDI credential

31:53 unless you do the IAL at the start.

31:56 And that means you can exchange the

31:57 salt. – That's physical registration

31:59 stuff? – Huh? – Your physical registration?

32:02 – Yeah. Yeah.

32:04 And I'll talk about that. Yes, I have

32:07 a slide on that.

32:08 Right, so let's talk about

32:11 this infrastructure. I have registrars

32:13 with registries. I have observers. All

32:16 our observer is doing is it's keeping

32:18 track of the registry state. So, it's

32:21 asking the registrar, what are

32:24 you registries you have? What state do

32:25 you have? And now it has a local cache

32:27 copy, and then when a verifier wants to

32:30 verify something, he goes to his

32:32 observer and says, "Tell me

32:34 what the state of this ACDC is."

32:38 So for this to work,

32:40 you want to use bulk updates. That means

32:42 you don't update

32:44 instantaneously, you update like say

32:46 once every 24 hours.

32:48 Otherwise, if you update it instantly,

32:50 then the observer

32:52 could correlate

32:54 a change to some registries

32:58 and not others. But if all the

33:00 registries, 100% of them update

33:03 at the same clock time,

33:05 because that's when they

33:07 broadcast the bulk update, then there's

33:10 [synchronization] in the time of update. Every

33:12 time you do anything,

33:14 if you want to make it so that it's not

33:16 statistically correlatable, you have to

33:18 do it in a bulk

33:20 or herd privacy protected way. You can't

33:22 do things one-on-one

33:25 because the act of doing any kind of

33:27 interaction one-on-one leaks

33:30 correlatable metadata and it can't be

33:32 defeated. You will correlate around

33:34 whatever else you're doing because you

33:36 leaked it, right? So even Tor, you can

33:39 correlate around Tor because guess what

33:42 metadata Tor leaks? Anybody know what

33:45 metadata Tor leaks?

33:49 Tor uses variable packet size.

33:52 Right? You get enough of that, you can

33:53 figure out

33:55 Tor. So SPAC, TSP protocol, we

33:59 have

34:00 uniform size packets. So there's

34:03 no… So packet size can't be used for

34:06 correlation and we have no packets that

34:09 are just like vaculous blinded updates,

34:11 so you can whiten your time of arrival,

34:14 time of departure. And that's built into

34:16 the protocol because otherwise,

34:18 you do all of this work to

34:19 cryptographically

34:22 encrypt stuff

34:23 and to try to protect your metadata from

34:26 being correlated and then your protocol

34:29 just leaks it all away. So the

34:33 basic idea is I want registries that bulk

34:36 update the observers.

34:38 The observers can't infer anything

34:41 because it's bulk updated, so you have

34:42 herd privacy.

34:44 What is the weakness here? The weakness

34:46 here is that if an observer is malicious

34:49 and the issuer is malicious,

34:51 they can collude

34:53 and the observer can say, "Did you issue

34:55 this? Did you change the state of this

34:57 particular

34:59 point?" Right? So, you

35:02 depend on repressing observers and

35:05 issuers from correlating, but there's no

35:07 phone home here.

35:09 The issuer can't force an observer

35:13 because there's no phone home.

35:16 Because all it needs is the

35:17 information in the registry to do the

35:19 verification. So, there's no

35:22 built-in mechanism for the observer to

35:24 trace anything in the system. It

35:25 requires criminals

35:27 to get together and form a criminal

35:30 thing, and as long as you make it

35:32 sufficiently legal, it might happen

35:34 sometimes.

35:36 But then you are in the boat of,

35:39 "Well, you've got fraud in the system."

35:41 And guess what? You can

35:43 catch them because

35:45 because they're

35:48 colluding against the law and

35:52 and you have repression. But

35:54 yes, it doesn't make it

35:56 impossible. Right? There's no technical

35:59 thing that makes it impossible in

36:01 this, but what it does is it means that

36:04 there's no easy way for them to do it.

36:08 So, the first step in SEDI is an

36:11 identity assurance process. What is

36:13 identity assurance?

36:15 Identity assurance solves one problem.

36:18 It's called the cheap pseudonymity

36:20 problem.

36:22 Anybody can create

36:24 a pseudonym, a cryptographic pseudonym,

36:27 and prove control of creating an AID,

36:29 right?

36:30 And as soon as they use the AID for

36:32 something and they did it for bad and

36:34 they say I'll just abandon and create a

36:36 new one.

36:37 Right? So, nobody can trust an AID that

36:39 anybody can create. Decentralized

36:41 identity has a big problem. The problem is

36:45 anybody can create as many AIDs

36:47 as they want and then abandon them

36:49 whenever they want to. So, nobody can

36:50 trust them, right? So, they're only good

36:53 ephemerally. If I want them good for

36:55 long-term, they need to have a

36:56 reputation that says there's a reason

36:58 why you can trust this.

37:00 So, what GLEIF does is

37:02 provide with