Harrison_Tang: Welcome everyone and welcome to this week's w3c ccgb uh today we're very excited to have Christopher Allen uh here to present on Guardian envelope ivian and controller documents I think about a little bit more than a year ago we have uh Christopher here to talk about Gordon envelope and really look forward to seeing updates and new developments to this initiative. ✪
Harrison_Tang: Want to quickly go over the administrative stuff um first of all just a quick reminder on the call the benefits and professional conduct just want to make sure everyone uh holds respectful and constructive conversations. ✪
Harrison_Tang: Uh the second just a quick note on the intellectual property anyone can participate in these calls however also sensitive contributions to any ccg work items must be member of the ccg with full IP agreements signed so if you don't have the w3c account or have questions in regards to the account or the computer license agreement uh feel free to reach out to any of the cultures. ✪
Harrison_Tang: A quick note on these calls so these calls are automatically being recorded and transcribed uh and we will publish the um. ✪
Harrison_Tang: A video recording audio recording and the transcription in the next 1 or 2 days. ✪
Harrison_Tang: We are used GT chat to cue the speakers during a call so you can type in Q Plus to add yourself to the queue or cue minus to remove. ✪
Harrison_Tang: All right just want to take a quick moment for the introductions or uh reintroduction so if you're new to the community where you haven't been active and want to re-engage feel free to just uh unmute and uh introduce yourself a little bit. ✪
Harrison_Tang: I see actually all familiar faces so I'll skip to the next section uh. ✪
Harrison_Tang: No on the announcements and reminders so any announcements or reminders. ✪
Harrison_Tang: Uh I I do have 1 so next week is the internet identity Workshop so we will not have a ccg meeting next Tuesday and I will send out the uh meeting reminder or cancellation reminder uh a week uh tomorrow right so again so we won't have. ✪
Harrison_Tang: A meeting next Tuesday and we will resume the Tuesday after that on November 5th and we will have Auto and Kim Duffy to talk about the if credential schemas. ✪
Harrison_Tang: Any other announcements or reminders. ✪
Harrison_Tang: So we have scheduled uh different um task force and uh work items uh leads to actually present here in the next few weeks uh and then we will also have a Q4 quarterly review and open Agenda and work item updates on November 19th so that's uh. ✪
Harrison_Tang: All right last calls for introductions announcements reminders or work items. ✪
Harrison_Tang: All right let's get to the main agenda so again I'm very glad to have Christopher here to talk about Guardian envelope inian and controller documents uh thanks to him uh he has sent out uh presentation deck already to the public list so um I well I actually seen a PDF not a link but uh you can just go find the email that I sent the agenda email that I sent and Christopher I have shared that via an email with a PDF attachment. ✪
Harrison_Tang: All right thanks Christopher I think the floor is yours. ✪
Christopher Allen: Thank you um let me introduce wolf McNally he's our lead engineer on this project and uh he has a a uh uh presentation that'll do a little recap and then talk specifically about the opportunities with controller documents uh wolf. ✪
Christopher Allen: I'm not hearing you off um you were. ✪
Harrison_Tang: I think there might be an audio issue because uh he was not muted. ✪
Wolf_McNally: How about now can you hear me now okay that will do all right uh okay very good uh so I'm trying to figure out how to share my screen in the system I should share video and that didn't work that shares a video file so is there a way to share the screen directly. ✪
Harrison_Tang: Yes it's the third button and by the way like uh because we run yeah by the way because we run this on the some someone's server so the if the presentation is too big or kick people out but it's fine just like re rejoin via the same link and then the session the recording everything will work as uh as expected. ✪
Wolf_McNally: Also said bandwidth that will turn off my video and share my screen here um. ✪
Wolf_McNally: Right so you should be seeing my slides right now. ✪
Wolf_McNally: Guardian envelope Elysian and controller documents does everybody see that. ✪
Wolf_McNally: Very good all right so I'll proceed um my name is Wolf McNelly I am the lead researcher uh for blockchain comments and uh Christopher Christopher and I have collaborated very closely for a number of years on various projects including the 1 and today here um. ✪
Wolf_McNally: So a little bit about blockchain Commons for those of you are a building not for profit social benefit Corporation. ✪
Wolf_McNally: In Wyoming but we operate worldwide and we're committed to open source and uh defense of patent strategy and anyone can use all of our tools it's all open source unencumbered. ✪
Wolf_McNally: And we have done quite a few projects over the years um a few of which are. ✪
Wolf_McNally: Um we rely on our sponsors uh our sustaining sponsors our GitHub sponsorship and uh individual donations that can be made and obviously uh the Sony's QR codes might go buy a bit fast obviously they'll be uh video of this later. ✪
Wolf_McNally: Obviously our our our homepage blockchain comments um is our portal to everything that I'm going to show you here thank our sponsors. ✪
Wolf_McNally: Um and we'd like to invite you to join the conversation of course I already showed our homepage here um but we also have discussion forums. ✪
Wolf_McNally: A signal groups uh General and specific topics. ✪
Wolf_McNally: Uh we have our monthly Guardian developer meetings on the first Wednesday of every month. ✪
Wolf_McNally: And by joining our live Vol announcements list all those you'll receive all this announcements and we have a special uh meetings for special interest groups like our Frost implementers group and our bill account salon for Hardware developers and more. ✪
Wolf_McNally: So um we did send out uh a set of links and so on but I want to do a quick recap so that we're all kind of up to speed on the technologies that I'll be talking about. ✪
Wolf_McNally: So our intro materials uh include videos and of course I'll be talking about Guardian envelope a lot today so uh we have an envelope playlist on YouTube youtube.com blockchain Commons and then just going to be uh go to the uh uh Guardian envelope playlist and that starts out with a teaser which is just basically uh a minute long kind of commercial which is just kind of hit some bullet items very very fast and very visual. ✪
Wolf_McNally: Much more in depth 2-part series uh understanding Guardian envelope Parts 1 and 2 where. ✪
Wolf_McNally: Walk through all the design principles and implementation according envelope and give a number of examples so I seem to be going fast here today um the the YouTube videos are kind of uh essential watching uh to get all the details. ✪
Wolf_McNally: And of course we have our websites including our our uh main portal for envelope developer blockchain comments.com. ✪
Wolf_McNally: So um envelope itself is a smart document system built on determining a 64 and now some of you probably heard of core the common uh the uh concise binary object representation which is you can think of as like. ✪
Wolf_McNally: We have a variant of it that's an IT internet draft called dcore which focuses on determinism um and I'm sure most of you know what that is but that is that the same semantics semantics always encoded the same binary stream which gives you the same hashes when it comes time to sign and so we wanted to build that into our system at the very lowest levels. ✪
Wolf_McNally: So DC4 is binary concise self-describing good for iot and constrained environments and this platform and language agnostic and there are tons of implementations and you don't need uh our DC Board of notation to implement core it just makes it a lot easier. ✪
Wolf_McNally: It's deterministic at the binary level up. ✪
Wolf_McNally: Which for example means there's like 1 way to encode each numeric value unlike Json there's no 0 minus 0 0. ✪
Wolf_McNally: Strings always uh are normalized to you uh unicorn normalization form C. ✪
Wolf_McNally: M map or dictionary keys or automatically sorted no context required to sort. ✪
Wolf_McNally: Guardian envelope itself is built on top of dcore and it has a particular semantic structure that is based on semantic triples which uh the uh you know the semantic web kind of pioneered rdf and things like that um we use uh symmetric triples are subject predicate object. ✪
Wolf_McNally: And in what we call envelope notation this is not Json this. ✪
Wolf_McNally: Diagnostic notation this is our own notation we call uh envelope notation but there's a sub a subject and then zero or more particular object pairs which are called assertions accurate. ✪
Wolf_McNally: That's important to note for this audience particularly this is not the particularly typically the meaning of the subject used in the verifiable credentials domain which is a person or organization about which plans are made. ✪
Wolf_McNally: In some cases it can be so uh and you'll understand why in a minute that um that this isn't just a system for creating verifiable credentials or whatever this is basically a much more General system and we use the term subject between that 1 particular thing about which assertions are made which aren't necessarily credentials. ✪
Wolf_McNally: Envelope itself is structured as a number it's a it's an enumerated type and everything about show you all these cases are themselves valid envelopes standing entirely by themselves. ✪
Wolf_McNally: Um there's 5 basic cases specified in our internet draft for envelope. ✪
Wolf_McNally: Are leaf and this is any any DC board data at all is a leaf um so it's you know it's very expressive in terms of that just generality. ✪
Wolf_McNally: Predicates and objects and I'll I'll repeat this a couple times are themselves envelopes so um and they form a tree structure. ✪
Wolf_McNally: Um then there's the lighted node which is basically a hash that's left in place with a whole branch of the tree has been removed um so in this preserves the hash tree. ✪
Wolf_McNally: And wrapped and wrapped is basically a way that you can make assertions or meta assertions about the uh wrapped Envelope as a whole and you'll see why that's important. ✪
Wolf_McNally: And then we have 3 extension cases which are defined uh in separate documents but in a reference implementation are all fully implemented. ✪
Wolf_McNally: Uh and uh this is basically encrypts the entire branch of the tree. ✪
Wolf_McNally: And also records its hash as a uh. ✪
Wolf_McNally: As authenticated data so it can't be tampered with. ✪
Wolf_McNally: Value and this is a way of basically taking uh for example uh rdf and like often use long URLs that are often repeated and there's ways of duplicating that we also have known values which are essentially small integers which are mapped to uh onset of various kinds which could include the things you're used to seeing in URLs but they're much more compact. ✪
Wolf_McNally: And compressed and we use the the deflate algorithm so for large binary objects inside of trees and so on where you might want to compress the whole branch of the tree you can't you can do that. ✪
Wolf_McNally: These 8 cases are essentially what caused you envelopes and I want to emphasize its envelopes all the way down you can have envelopes since I have envelopes and stuff envelopes and so structure that looks like a tree. ✪
Wolf_McNally: Again I want to emphasize that every node in an envelope tree is itself an envelope. ✪
Wolf_McNally: So for example you see the node and assertion cases the node the top very top level has um at the very top a subject and then 1 or more assertions as you just see 1 subject here which is a leaf and then 2 assessments have a predicate and object the first predicate object pair that's a known value and a leaf and the second you can see the predicate that's a leaf as well. ✪
Wolf_McNally: But any child node without assertions can be replaced by a node with assertions and this includes even predicates so you can make assertions on predicates you can make assertions on objects you can make assertions on assertions so even a complete assertion can become the subject of a node. ✪
Wolf_McNally: It's very flexible you can basically have as many levels of Rich metadata as you wish. ✪
Wolf_McNally: Um and every node in the tree has you digest these digests are mostly mostly not serialized with the um envelope itself but calculated when being read in um there are a few cases um which preserve the top level digest their transformations of the tree um and they do record their assertions and those are Elysian encryption and compression and so basically when you replace a branch of the tree with any of these you actually preserve the diet history all the way back to the top 3. ✪
Wolf_McNally: And this allows for you know very powerful features particularly holder based delusion which we'll be talking about in a minute. ✪
Wolf_McNally: So Elysian is in fact a game changer or things like controller documents and other documents that might have sensitive parts because you can uh you only have to transmit the data that you want. ✪
Wolf_McNally: And signatures are preserved as long as the digest tree remains uh maintains proof of the elided data. ✪
Wolf_McNally: Um and then after you like data inclusion proofs can allow you to reveal parts of the document later in a verifiable way. ✪
Wolf_McNally: So this is envelope notation of uh of a driver's license it has as its subject uh they're the uh e281 uh 1 029 which is the driver's license number which is the subject of the envelope um and then uh a type declaration is a driver's license the number of other fields you're familiar with those little symbols to the left of those those are called life hash those are essentially a visual hashing algorithm that we uh developed and uh you can find out more about that at life of visualizing a shock 256 hash at a glance and the point of showing you the these here is that every single 1 of these um arms of the tree and in this case we're pointing at the assertions not the predicates and objects specifically but the subject of the envelope um and its assertions all have unique hashes also at the top level you see the envelope has curly braces around it and then has another assertion on that that's a wrap envelope and that's the purpose of of wrap envelope is to make meta assertions about the content of the entire envelope itself in this case it's a signature. ✪
Wolf_McNally: Um and you can see what is being signed is itself that top level um uh wrapped envelope. ✪
Wolf_McNally: So that is what this is signed by the signature and this basically opens up a whole variety of possibilities. ✪
Wolf_McNally: Now in a practical circumstance you'll want to add salt and this is basically used to decorate certain things like the word John is very guessable um as well as dough and obscure dates and so on so you see all the fields here that would normally have uh it would be rather guestable have a few bites of salt added and this is just an insertion on the object of the uh of the assertion so you know again uh sometimes it's going to be a little bit recursive in terms of how I speak about these things um but you notice that that also has changed the top level digest and hence the signature for Signature systems like ed25519 where the signature is terministic. ✪
Wolf_McNally: Systems like Shore where there's salt where there's basically a non Sage to the signature but uh you would expect in this case that the the top level hash would change and therefore the signature would be unique based on that so and the purpose of salting things just so when you Allied things um the the the the hash left in place is not correlated with the actual data validated so I'm going to just for brevity um not show the salt for the moment. ✪
Wolf_McNally: But I want to show you what illusion looks like so for example if I had the full document if I was the holder of this document and it was asked to prove my date of birth from my photo I can essentially Allied everything that uh was unnecessary to do that in this case of a lighted my driver's license number uh and all the assertions that had to do with that now I've left the elided no nodes in place there's 5 of them in the internal uh insertions uh assertions and 1 at the top level um and this basically gives me everything I need just including my photograph which is biometric information uh to prove the to prove my claim. ✪
Wolf_McNally: And the signature itself is still valid because the lighted uh nodes allow the same hash to be calculated and propagate upwards to the the tree. ✪
Wolf_McNally: So if somebody then later asks me now prove where you live um and they already have the live version of the document I don't need to provide everything um in the document again I don't need to provide a new version of the document in fact I only need to reveal 1 assignment. ✪
Wolf_McNally: Um and again this has been signed by a verifier of some kind the driver's license issuing authority so um you know their signature is you know we need to have that remain intact every step and by and Progressive trust uh allows us to as we trust. ✪
Wolf_McNally: People who want to verify information about us reveal things and as I said you don't need to reveal the whole envelope in fact in many cases all you need to reveal like in this case is an assertion this is called an inclusion proof and I'll show you another inclusion proof later which is a little bit more um complex but sometimes an inclusion proof can be as simple as this because the hash especially assaulted um assertion like this these globally unique there's only 1 thing that can possibly fit in the allotted tree at that point and that is this assertion nothing else can fit. ✪
Wolf_McNally: So we've extended Gordon envelope in a number of ways including what we call the gordian seal transaction protocol and again this is part of our recap I just want to point this out we talked about this extensively in our videos but it's a peer-to-peer request response to style exchange designed for a variety of environments uh that could be unreliable or insecure and it basically provides our layer of security for things like the internet and Bluetooth and NFC and tour and even lowly QR codes which we have uh a technology uh which we allow us to create animated QR codes including any amount of data. ✪
Wolf_McNally: In a QR code not a series of non repeating Fountain codes. ✪
Wolf_McNally: So uh the idea is you can use the same uh request response protocol over all these things. ✪
Wolf_McNally: What does that look like as an envelope. ✪
Wolf_McNally: Answer a slide last moment so this is allows us to do things like establish key agreement exchange data between uh peers or clients and servers facilitate confidential backups and Co coordinate multi successions and things like that. ✪
Wolf_McNally: Um and also this is without local state and I want to emphasize that because that's the main reason why I want to remind you guys of of uh what gstp is and how it works because this takes advantage of a lot of the the um. ✪
Wolf_McNally: The built-in features of envelope so for example this is a request for you know a generic request with a body there's a function identifier here and a set of arguments the uh the envelope itself the request includes the sender public key. ✪
Wolf_McNally: Signature by the sender as well so you can use this as an introducer packet where nobody has ever seen this key before but they can verify that the sender has the private key that created this packet. ✪
Wolf_McNally: Do that we can add what's called encrypted State continuations and this is where we offload state from whoever is sending into the future essentially so the uh sender continuation you see here is an encrypted message that is Ari encrypted that's the has recipient seal message back to myself if I'm the sender. ✪
Wolf_McNally: And so the receiver um uh receives it but can't do anything with it all they can do is send it back with their response uh meanwhile the recipient continuation uh is basically a packet I have previously received is that is the the uh my correspondent as encrypted back to themselves I can't do anything with it except to send it back to them and so in this way you can basically continue operations uh in uh just constrained environments environments where you don't want to keep track of a huge amount of State uh uh server environments which you need to horizontally scale things like that so um uh so this is a way of kind of leveraging uh our public key encryption to uh to basically move State into the future. ✪
Wolf_McNally: All right so let's talk about improving on controller documents. ✪
Wolf_McNally: There are several ways to propose to improve control documents and as I'm sure you're all familiar there's SeaWorld. ✪
Wolf_McNally: And there's creating bespoke divorce just for controller documents. ✪
Wolf_McNally: We'd like to propose that gordian envelope is the best choice. ✪
Wolf_McNally: And so why would we propose that so obviously we've talked about all the flexibility and advantages we've already discussed. ✪
Wolf_McNally: That holder based delusion is really the big win. ✪
Wolf_McNally: Because with Ds you have to reveal a method and a verification key but with an envelope you can elide additional keys or endpoints. ✪
Wolf_McNally: And verifiably revealed at a later time as I demonstrated with the driver's license. ✪
Wolf_McNally: What does that look like for a controller document well this is a reimagining of a controller document purely as an envelope and I'll talk about about how to integrate into the existing controller document document architecture in a moment but I want to show you what it would look like if we completely redesigned uh um control documents for envelope itself and again this is a an identifier with a series of assertions with keys controllers um could be endpoints and so on and verified by a signature. ✪
Wolf_McNally: At signature verifies and of course in real life scenario we would also be adding salt. ✪
Wolf_McNally: Once we add uh decide what parts of it what to allow it for a particular purpose. ✪
Wolf_McNally: We can basically Allied at various levels everything we don't need to accomplish that purpose. ✪
Wolf_McNally: In fact if we just want a very general introduction we can actually Allied everything all 3 uh top level assertions in there and the signature still verifies at this point all we revealed is our identifier um a key and the signature which verifies that we have the the uh the private half the. ✪
Wolf_McNally: So let's focus on this for a moment um the lighted uh assertions are still there you can see their hashes here. ✪
Wolf_McNally: And what would inclusion proof look like in this case now inclusion proof we have to match 1 of match 1 of those hashes. ✪
Wolf_McNally: In this case if we want to just review the agreement public key uh for encryption purposes then um it would look like this it would look just the part of the envelope and I mentioned um showing a more um sophisticated inclusion proof in this case all I'm doing is uh uh the revealing the key and just the parts of the tree necessary to form that particular Global Union cache that fit into that particular assertion of the tree and so when that's actually integrated with the tree it looks like this um so you can unlock uh a uh an envelope by revealing just the part of the tree that can be still of these light it as you need it to be um with the rest of the uh with the original document. ✪
Wolf_McNally: And of course the signature still verifies. ✪
Wolf_McNally: So how do we integrate this with existing infrastructure. ✪
Wolf_McNally: So here's a uh an envelope of of just a segment of uh of a did that includes a couple of service endpoints. ✪
Wolf_McNally: And then we align them so that we basically have uh an identifier and a couple of lighted end points. ✪
Wolf_McNally: And then we B 64 encode this now we're in Json land. ✪
Wolf_McNally: And then we integrate this with our Json did so in this case we have a service type of lighted services in the service endpoint which include our lighted envelope and therefore is you know we can basically reveal inclusion proofs about this uh at a later time to uh to reveal parts of the envelope that uh that actually revealed the service itself. ✪
Wolf_McNally: That's the uh the uh the presentation um Christopher I are happy to take your questions. ✪
Christopher Allen: Yeah well a couple a couple of other notes um so all of this is implemented currently in Rust and in Swift um their sum of the individual pieces are implemented in other languages like typescript and things like DC board there are now implementations in half a dozen different languages uh after uh some a lot of support from the core Community uh for this uh the um. ✪
Our Robot Overlords are scribing.
Harrison_Tang: Sorry at some point we probably uh will need to take some time to upgrade the system but. ✪
Christopher Allen: Okay I'm back I'm not sure I did everybody get knocked off is that what happens when this happens. ✪
Christopher Allen: Yeah I'll keep my I'll turn mine off as well. ✪
Our Robot Overlords are scribing.
Our Robot Overlords are scribing.
Christopher Allen: Um which is important because the uh. ✪
Christopher Allen: You know having all of the cryptography and as completely separate layers means that we can very easily add other kinds of signature formats and things of that nature so we already support uh sep in Shore and ecdh we support 25519 signatures uh we support x0 25519 for key agreement um but we even have an oddball uh proof of concept of using SSH Keys uh uh which include all the various forms of uh you know RSA Etc um but more not so much that that uh that these are um um that we're trying to offer cryptographic agility uh it's more that it's a completely separate layer that's up to the application to decide what they need so if uh for instance we talked about using salt for anti-c there's no. ✪
Christopher Allen: Plus signature as well um we have an implemented that but that's um. ✪
Christopher Allen: Um uh you know very deliberately designed such that you can do that or Quantum signatures or whatever else as needed um the only cryptography that is required for the base 5 use cases is shot to 56 um uh and CH I think uh Chacha Polly um uh that's it. ✪
Christopher Allen: Well are there any other kind of high-level points that you want to. ✪
Wolf_McNally: I think I hit on most everything uh yeah I mean actually the uh uh ietf Chacha 20 poly 1305 implementations are is our um is our symmetrically encrypted node and and then we add on to that uh next 25519 sealed message to encrypt the actual uh symmetric key and that's how we doing our encryption. ✪
Christopher Allen: Shamir secret sharing uh version of encryption so that you can split uh data into multiple parts and only by restoring uh Quorum or a quorum of quorums uh uh will you actually recover um the uh the data which again just you know basically covers the flexibility of how all of the cryptography is uh carefully separated from um the uh the the the the layer of the triples and the layer of the core um um yeah so uh open to questions. ✪
Harrison_Tang: If you have any questions uh feel free to just uh type in Q Plus but I do have uh start with 1 or 2 questions so first of all uh can you uh go a little bit deeper and then clarify how illusion works because uh you know like uh for example when you change something in the document right the signature will fail so how do you actually dynamically Elite certain assertions and then using the same signatures uh and then the still the same signature still works. ✪
Wolf_McNally: So basically as I mentioned can you hear me. ✪
Wolf_McNally: Yeah so um as I pointed out the the the structure of an envelope is a tree every tree every is in similar to a Merkel Tree in that uh you know every note of that tree has its own unique signature hash. ✪
Wolf_McNally: There's you know hashes or digest is the term for it um and then each level of the tree is the hash of those hashes essentially so it goes back all the way up to the top of the root hash. ✪
Wolf_McNally: Um now there are certain Transformations and as I mentioned there are 3 of them um Elysian encryption and compression that actually transform the entire branch of the tree where you substitute that node um for another node that that actually declares the hash of that node so for example a leaf which is just um any core that you want um its hash is calculated but a lighted note carries a hash with it and it's that hash that's propagated up towards the top um so that when you exchange for example a leaf for a lighted node rather than calculating the hash now you're basically using the hash in the in the uh declared the declared hash in that lighted node which is the same hash to carry up to the top of the tree so by transforming certain branches to the tree you preserve the top level hash now you have changed the document and so we we refer to the difference between um semantic equivalence and structural equivalence so semantic equivalence is you transformed the uh 1 version of the envelope in such a way that it has the same. ✪
Wolf_McNally: Same structure and so uh we have tools that let you compare envelopes for both structural equivalence as well as semantic equivalence semantic equivalence is very fast because you just um calculate hashes now certain things like encrypted um which is is the ietf Chacha uh uh 20 poly 1305 the poly 1305 part there is for additional authenticated data which basically means that data that you cannot change without without uh um making the the payload on a crypto and so um uh we use that mechanism in that case to declare the hash. ✪
Wolf_McNally: And in that case the it becomes essentially tamper-proof that the depth of your node can't be changed without invalidating the actual signature um and obviously you know if somebody wants to spoof something and change something um you know then uh they can but you can but once the the envelope that part of the envelope you Loop comes on encrypted or uncompressed which anybody can do or whatever you can actually you compare the hash of that part that was uh declared with the actual hash that you've calculated and that's proof that that the envelope itself was um an Integrity so and things like signatures also add a layer of verification so when you hide something you're not signing the the for example the core serialization you're signing the actual digest at that note of the tree and so as long as the that um. ✪
Wolf_McNally: Intact and again you can't change the contents that have been signed um without uh changing the hash the hashes that are stored in the the serialized envelope and therefore. ✪
Wolf_McNally: Uh invalid in the the signature does that help you understanding. ✪
Harrison_Tang: Yes so the signature pop oh sorry please. ✪
Christopher Allen: Oh I was just going to add a my uh this isn't a clarification just another way of thinking about it you know we talked about um uh envelope being a hash tree but in fact it is a hash trie of hash trees so every triple is a hash tree and in the root of that triple is a hash and that then in turn is used as part of the hash tree that is above it um of a of a you know subject predicate object um up to the root uh of the thing so you can basically leave out any the details of any tree uh and uh just leave the hash and everything is still valid. ✪
Harrison_Tang: Got it so the signature part in the gordian envelope is actually not 1 signature it's actually kind of a miracle tree essentially is that correct. ✪
Wolf_McNally: Well it's it's signing the digest of a treat so once you have that root hash of the tree you're signing you know you take an envelope you wrap it so that it basically you're making a meta assertion when you sign um and then you know so you have a new envelope that wrapped envelope which it had the curly braces around it and that envelope has a unique root hash and then you generate a signature for that unique reach and then you add an assertion to that wrapped envelope which is your verified by assertion with that signature and that way anybody receives that envelope with the public key and recalculate that root hash from the envelope because that's not again the digest except for those 3 cases uh a lighter encrypted compressor not actually serialized with the envelope the receiver you know uh deck serialized the envelope which calculates the entire digest tree then they um take that root hash. ✪
Wolf_McNally: And then they use that with the signature and the public key to verify that that the hash is correct. ✪
Wolf_McNally: So uh you know that that that verifies that the envelope is intact and has not been tampered with. ✪
Christopher Allen: Well let's talk less about VC let's talk about did uh controller because we looked at that a little bit more so there already is uh with the did documents sort of an abstract way of looking at the structure and we can absolutely reproduce that structure in fact we can re reproduce a lot more kinds of structures than just uh the uh node labeled graphs of uh of Json LD and rdf we can also do Edge labeled graphs and a bunch of other different kinds of structures uh we have a research paper that explores how we can represent a wide variety of of things so my presumption would be that um. ✪
Christopher Allen: Uh if you can't directly interpret a controller document that is in the envelope format that the uh resolver takes the uh non-aligned information and constructs a standard um uh controller document uh using the abstract syntax um for that and that's what is actually returned to the client if it doesn't you know understand uh uh the uh uh the um doesn't understand the the core directly um uh which does mean that the those clients will have you know a uh uh you know we'll have to think about and this would be something we'd have to add to the resolver spec of okay you know it you know uh what was aided because there isn't really a concept in controller documents of aided uh to. ✪
Christopher Allen: In the abstract uh model um but the resolvers can absolutely handle this type of thing I did show this and describe this to Marcus a while back and he said yeah I think that's you know it's definitely uh a resolver can definitely construct a uh uh a Json uh uh did controller document um I think some of the other things we started talking about verifiable credentials um the uh the context uh uh in particular the semantic context and all of those different types of attributes um are more complex because you may have uh some contexts that are uh static and fixed uh such as the VC context but then you might have you know an application context or whatever that changes and you have to retrieve those. ✪
Christopher Allen: Um we believe we can support uh that that complexity because of the fact that all of the uh every individual piece of an envelope itself is an envelope so for instance you could put in the predicate uh you know here's the owl context here is the Json LD context here is the whatever context and or use known values to compress those types of things um. ✪
Christopher Allen: Which uh really you know allows for a lot of flexibility in the ability you know to uh um uh to represent everything that is in a verifiable credential we don't have a proof of concept for that at this point it's you know uh we're uh you know sort of a funding uh limitation because there's a lot of richness there. ✪
Wolf_McNally: Christopher I'd like to add something here as well because for example you just mentioned you know predicates and predicates in the examples I gave uh you know I I didn't explain this but this is explained in our videos. ✪
Wolf_McNally: That whenever you see single quotes around a string that is a known value uh and the single quotes basically that's basically just 2 or 2 3 by integer from a 64-bit integer namespace so it has very little little um overhead uh in sort of storage for an envelope but uh we are are essentially starting a registry of known values we intend to eventually have you know um all the all the rdf predicates registered as unique integers uh in a particular domain you parse for the ones that you care about um you can still use your URLs if you like cuz strings can be predicates as well or you can basically have a search on predicates it's really up you know uh uh because you know predicates themselves are envelopes so um uh the platform itself is incredibly flexible and very semantically rich in terms of what you can express with it I haven't you know obviously um but you say so myself as the designer of envelope I haven't seen anything that can do what envelope can do in terms of the richness um how that richness is deployed is basically um a question for research and that's part of why we're here as well let's discuss with the community. ✪
Christopher Allen: Yeah but also think you know other things that you know a lot of other systems are limited that you can for instance only have 1 type associated with a semantic triple uh you know which would be the quad uh because of envelope you can have multiple types associated with uh a particular um uh triple uh you can say this is a you know a binary key in 1 you can say this is a 25519 public key uh in another you can say that this is a you know in fact a snore uh aggregated key uh in anothers uh so you can have all of this You Know Rich complexity that allows for um uh additional uh you know levels of of uh of of context uh so that makes it richer than the the both the the the the underlying format of. ✪
Christopher Allen: Of uh Json LD or um uh uh or rdf uh because we have this ability to do a lot more different kinds and styles of stuff I do know that w3c has an effort um with kind of an it used to be called rdf star I don't know what the new name is uh I don't uh I understand there may be a future version of Json LD uh that might support uh more but I haven't seen any of these also deal with kind of the illusion cases and um uh you know if uh we'll we'll be tracking see what uh what's going on in those efforts but I think the key. ✪
Wolf_McNally: Oh yeah so also I just saw my example so if you look at like for example the proof block of a data or control document um you know it's because the limitations of Json you see a series of key value pairs that Define the type of the key and the key material itself and so on um with ours you didn't see that you just saw a signing public key agreement public key um those are actually core structures so those are keyboard structures if you look at our specs uh they Define usually a short core array uh which has you know a series of sequence fields which includes a you know um an algorithm identifier in the key material um and um in some cases like public keybase we can actually bundle those things together so there's an agreement public key and assign a public key together um so that's all you need to exchange to do both encrypted and signed Communications um but because we can mix freely sibur itself which is self-describing and so on with the higher level structures of envelope which is symmetrical triple so we can choose which way to do this uh on a much more flexible basis and things that didn't start out in the envelope. ✪
Wolf_McNally: Which is most Civil War structures um then they can be freely mixed into envelopes um and so there's you know there's there's no reason why any Civil War structure that conforms to DC or can't be the object of a of an assertion so um you know we deliberately designed it in a layered fashion like that to be very flexible. ✪
Christopher Allen: I mean even for instance you could do core LD which does uh its compression taking advantage of some of the unique aspects of uh of uh Json LD for uh Json LD based uh controller documents or verifiable credentials and basically you know put embed that inside an envelope um so uh uh you know you would then be able to do certain kinds of Illusion things uh until you get to the point where the there's a Json LD object which doesn't support Elysian uh conversely we showed at least a proof of concept uh in the slides of the opposite which is you could put a very small um uh constrained uh Envelope as a an encoded in uh based 64 uh and then be able to have an individual function uh be able to uh with. ✪
Christopher Allen: Or a Json document to be able to be alighted uh have individual items allowed um you know in particular I I care about um uh the keys and I mean I think the big as a security um uh and privacy person uh I never want to reveal more keys than I absolutely have to um so uh the you know uh for instance on you know with my signing keys for signing code um you know I have 1 for every uh a different key for every machine uh I use uh so that I can uh uh revoke an individual machine without revoking all of my other machines uh but that means that when I sign things I only want to reveal the public key for the machine that I'm using but I want but I can use envelope to commit to all of the keys uh that I have and then later go oh you know uh you know back in commit 15 uh I can demonstrate that. ✪
Christopher Allen: Committed to this other signing key that I did not reveal until today um so uh I think that's an important um you know aspect of these types of things I think the other aspect of things is that that um uh. ✪
Christopher Allen: We when we think about verifiable credentials we often are thinking about the the the atom that is a verifiable credential in the spec but in fact that is not really the way uh I would describe the architecture I would probably you know call it the verifiable presentation spec of which a small part of it is the verifiable credential um because in fact the verifiable presentation has a lot of structure and things that you can do with it that are um uh you know that embed various types of things gordian envelope in when it's used in kind of VC use cases is more like a verifiable presentation you have a wide variety of things that you can uh uh can offer uh and then of course with gstp we get some of the did Cam type of features as well. ✪
Stephan_Baur: Yeah thanks so I have just 2 short questions and I have to admit I didn't fully you know uh understand the presentation but um I just saw there and this might have been because you used the example of controller uh documents but I just saw a lot of public Keys being mentioned straight out and I just wonder if there is a sort of like an aspect of this where key rotation becomes now uh a problem so that's my first question I hope that's not the case right and the second question is given the name of your organization uh is this used in in any sort of blockchains that are currently um you know having that on the road map or something. ✪
Christopher Allen: Well I said the first question uh second but uh as far as blockchain Commons um uh most of our support in the blockchain community is at layer zero um so we are you know we are not explicitly used in any particular blockchain uh instead we are used by wallets um uh at the so we have a variety of Standards around uh uh Keys creation of keys seeds for Keys um and uh we have a you know a various protocols for doing things like signing and uh uh and other stuff with those keys uh that are adopted uh mostly in the Bitcoin Community but uh we also have some adoption in uh aetherium zcash and chia um uh but the you know most of that work is in the Bitcoin Community but it's not at the blockchain layer this is not a this is not a layer 1 or a layer 2. ✪
Christopher Allen: Uh function this is uh more for um you know how do we provide privacy at uh the layer zero um so uh we are to answer the first question we are very careful about um how we reveal uh keys and and things of that nature that's 1 of the real powers of a lighted um you know we can support a wide variety of the different uh kind of patterns that um are available in uh a variety of did methods uh obviously you know we we demonstrate how you can do a pre-commit and Allied uh a key uh. ✪
Christopher Allen: A you know kind of a um you know non-implementation um and uh we can do the equivalent of carry we can do the equivalent of btcr um and a few other things uh We've not tried to do the equivalent of some of the smart contract based rotations uh but you know I think the proof of concept is uh good enough at this point to show the architecture is designed for that kind of flexibility does that answer. ✪
Wolf_McNally: Also to add that uh I also like to add a couple things you know 1 um Christopher touched on it but you know blockchain Commons despite the name of our organization is not focused exclusively on the blockchain space at all it's focused on the uh personal um sovereignty digital privacy human rights space and how Technologies can be best used for that uh the name itself came about when blockchain was the chief way that was actually being kind of advanced but you know our mission itself has always been broader than blockchain based per cell itself so um and the other thing that. ✪
Wolf_McNally: Touched on is uh briefly in the slides but we didn't really go into it is um uh a proposal it's not implemented or anything like that yet called xid extensible identifiers or Zid which essentially um is kind of a super set of controller documents that has you know verifying great permission structure. ✪
Wolf_McNally: Allows for very fine grained key rotation um and um and so as well as um uh kind of a hash chain of all revisions of the document back to its Inception so um you know so yes we have given a lot of thought to things like key rotation and security over time as uh as the lifetime of an identifier evolves. ✪
Christopher Allen: Yeah and I will say you know just to be clear you know I've been you know I'm the co-author of the original did spec and uh um a lot of the you know original Concepts were there uh I'm kind of you know opinionated and I don't really personally feel that any spec that doesn't do key rotation is a did spec. ✪
Christopher Allen: At the personal opinion and uh uh you know when those both those specs went to to Final Call um you know I raised my concern about uh the you know the Privacy problems of revealing too many keys uh but did not would you know since I didn't have an alternative I didn't have a a solution um I did not block or you know push too hard on those types of things instead I I stepped away from uh uh for instance I was I was co-chair of this community for 5 years I stepped away from that and some of the other responsibilities to basically go okay how are we actually going to make this work and that's uh when uh uh wolf and I started puzzling through okay you know what are the pragmatic uh things that we can do uh which ultimately became Guardian envelope gstp and some of this other stuff was you know we we didn't have. ✪
Christopher Allen: An answer to the problems that that I had raised uh and now we do. ✪
Wolf_McNally: Yeah it was really a matter of thinking it through from first principles and Christopher has been you know obviously the Visionary regarding that and you know then relying on myself for my design and Engineering expertise but not necessarily trying to be directly compatible with um existing specs but we are firmly convinced that we can you know create envelopes that are fully isomorphic um with existing documents um and you know so if you transferred back and forth between them but also can have many other capabilities including obviously we've highlighted here holder base delusion as you know essentially baked in. ✪
Harrison_Tang: Well do you have a 1 last question. ✪
Christopher Allen: Well I mean if if we if we you know to be very specific um there are a variety of did methods uh that um are concerned about some of these types of issues uh so for instance um 1 of the things that sibur allows us to do is uh is to have very very small uh a lighted uh documents so in the case of um uh squares um uh bit torrent uh based did method uh they're constrained to 1K uh we in fact can you know basically have a fully elided uh uh uh did do document in like 250 some 6 bytes that can be uh or a little bit larger than that but you know certainly under 512 that can very richly describe uh you know uh you know. ✪
Christopher Allen: A very complex and deep uh document and can handle things like BBS keys that are large etc etc uh because you basically commit though you you show that you've committed to those values when you do the the verifiable presentation uh side of things not and uh not uh public in the did document um so they have some very specific requirements as far as size uh other um uh other uh methods have very specific requirements around uh uh endpoints they want to put a lot more data into the endpoints to allow it to to function but then you have the problem of that endpoint then maybe reveals uh you know who the part you know reveals information that would allow for correlation um so uh you might want to have multiple endpoints or uh you know be able to hide aspects of endpoints. ✪
Christopher Allen: Talking about which would be a uh you know a Json uh Service uh that you know uses A foliated Envelope as the value for it so I'm not sure which will uh which of those 2 approaches you know fully native core document uh will be uh of Interest or uh you know just being able to align individual values uh inside core or adjacent LD documents um we think this is an important future it obviously is not going to be easy in the in a vc11 did 1 1 uh deadlines and context but we want to throw these opportunities out there and see what uh people are um interested in focusing on we're looking for Partners at this point we can't do this without um you know parties that are interested in it so. ✪
Harrison_Tang: All right thank you thanks Christopher thank you all for a great uh presentation as well as the discussion so thanks a lot. ✪
Harrison_Tang: Sorry about the technical difficulties that we had earlier on. ✪
Harrison_Tang: All right so I think uh Christopher has shared the uh the presentation welfare share the presentation and then there are links to a blockchain comments uh and you can go there if you want to get more information uh this concludes today's ccg meeting thanks a lot. ✪