- From: Dmitri Zagidulin <dzagidulin@gmail.com>
- Date: Wed, 1 Apr 2026 21:51:19 -0400
- To: Daniel Hardman <daniel.hardman@gmail.com>
- Cc: "Michael Herman (Trusted Digital Web)" <mwherman@parallelspace.net>, Bob Wyman <bob@wyman.us>, "public-credentials (public-credentials@w3.org)" <public-credentials@w3.org>
- Message-ID: <CANnQ-L5ZkxDTgH7ior71jES73fU1t54u1m225jJYt6mO08ZMKg@mail.gmail.com>
Daniel, That's interesting, I'll take a look! On Wed, Apr 1, 2026 at 2:17 PM Daniel Hardman <daniel.hardman@gmail.com> wrote: > It seems to me that the mechanics of how to do this can be worked out, but > that there may be some conceptual mismatches that are more interesting. > > In the generic case, a digital file with arbitrary content (a PDF, a > spreadsheet, a DICOM xray/ultrasound image, a genetic testing report, a CAD > drawing, a 3D printer recipe) doesn't feel to me like it fits the > issuer-holder-verifier model very well. In many cases, a document creator > could play the role of issuer. But if there are multiple creators? The > purpose of verifiable assertions can be very broad, but for *credentials* > specifically, the reason a holder role exists is because the holder is > intended to have some special standing with respect to the credential > (typically, the recipient of extra trust because of what the credential > says, and who said it). Generically, digital files don't have that purpose, > although there are certainly specific kinds of digital files in specific > use cases that do. > > If we're trying to assert authorship/ownership of content, I think that > the content authenticity work addresses it, at least for some doc types. > > If we're trying to achieve tamper evidence, it seems to me that hashing is > the right primitive, not adapting the doc to the VC credential model. > Although chains can be constructed to link VCs to one another, chaining is > not a VC feature; it's a non-standard extension. The SAID mechanism in KERI > is an elegant approach that has numerous things to recommend it (Including > incredibly powerful and nuanced chaining), and it can be adapted from JSON > to almost any arbitrary document or file type. This allows all the doc > types I listed above, and many others, to participate in verifiable data > graphs, with no adaptation of the AST and with only a single metadata > field. See https://dhh1128.github.io/papers/bes.html. You can even stitch > together collections of files and make the collections self-describing and > tamper-evident and coherent+verifiable as a unit. See > https://dhh1128.github.io/cfa. > > On Wed, Apr 1, 2026 at 9:08 AM Michael Herman (Trusted Digital Web) < > mwherman@parallelspace.net> wrote: > >> Bob, does the VC data need to become part of the AST or is it sufficient >> for the VC data to appear as a comment block (e.g. at the end of the code >> file)? >> >> Get Outlook for Android <https://aka.ms/AAb9ysg> >> ------------------------------ >> *From:* Bob Wyman <bob@wyman.us> >> *Sent:* Tuesday, March 31, 2026 11:27:36 PM >> *To:* Michael Herman (Trusted Digital Web) <mwherman@parallelspace.net> >> *Cc:* public-credentials (public-credentials@w3.org) < >> public-credentials@w3.org> >> *Subject:* Re: FW: VC-if-eye a plain old .JPG file [was: Binding >> credentials to publicly accessible repositories] >> >> >> Michael, >> Thank you — useful prior art, and it confirms that embedding VCs in >> non-document artifacts is tractable. The XMP/EXIF approach works well for >> file-level attestation of binary media. >> >> The source code case has two properties that make it worth asking the >> question more carefully: >> >> >> - First, the granularity is sub-file. The provenance claim attaches >> to a specific function, not to the file as a whole. A file may contain >> dozens of functions with different provenance categories — some verified, >> some pattern-derived, some WAGs. File-level attestation doesn't help here. >> - Second, source code undergoes transformations that binary media >> does not — reformatting, refactoring, minification, transpilation. A >> metadata field stripped by a formatter is silently lost. The docstring >> survives most of these transformations because it is semantically part of >> the code. An external or header-based embedding may not. >> >> So the question I'm really asking is not "can a VC be embedded in a >> source file" — clearly it can, your 2021 example shows one approach and >> mine shows another. The question is: given the sub-file granularity >> requirement and the transformation-survival requirement, is the docstring >> Provenance section the right mechanism? Are there alternatives that handle >> these requirements better? And are there fragilities in my approach that I >> haven't considered — the AST normalization question being the obvious one — >> and noting that while Python has a single reference parser with a stable >> AST grammar, the same approach faces significant complications in other >> languages: JavaScript has multiple competing parsers; C++ preprocessing >> happens before parsing so semantically identical functions may have >> different ASTs depending on macro expansion; Erlang's pattern matching and >> guard syntax have no straightforward cross-language AST equivalent. A >> language-agnostic solution to the subject identification problem may need a >> different approach entirely, or a per-language normalization specification >> as part of the content type convention. >> >> bob wyman >> >> On Tue, Mar 31, 2026 at 11:39 PM Michael Herman (Trusted Digital Web) < >> mwherman@parallelspace.net> wrote: >> >> Here’s something from 2021…what do you see as the challenge with embedded >> a VC in any document? E.g. code, Word doc, XML purchase order, a photo? >> >> >> >> *From:* Michael Herman (Trusted Digital Web) >> *Sent:* Sunday, August 8, 2021 11:48 PM >> *To:* Leonard Rosenthol <lrosenth@adobe.com>; public-credentials@w3.org >> *Subject:* VC-if-eye a plain old .JPG file [was: Binding credentials to >> publicly accessible repositories] >> >> >> >> RE: There is no mechanism in XMP nor in most standard asset formats for >> establishing a model for tamper evidence, such as Digital Signatures, >> (H)MAC, etc >> >> >> >> Leonard here’s a counterexample. >> >> >> >> I’ve applied to the principles and data model for Structured Credentials ( >> https://www.youtube.com/watch?v=FFv4WZ0p3aY&list=PLU-rWqHm5p45dzXF2LJZjuNVJrOUR6DaD&index=1) >> to VC-if-eye a plain old .JPG file (a photo I took with my Pixel 4a phone). >> >> >> >> - Test1_original.jpg is the original, unmodified test copy of the >> photo >> - Test1_ps1.txt is a script that uses exiftool.exe to add the >> Structured Credential structures to the original test copy of the photo >> …including the proof elements stored in the EnvelopeSeal structure. They >> are stored as elements in the XMP Keyword Info property of the photo. >> - Test1_xmp.png is a screen shot of the Structured Credential >> structures embedded into the XMP Keyword Info properties of the photo. >> >> >> >> We now have a mechanism for a .JPG file (or any XMP compatible media >> file) to serve as both a photo and a Verifiable Credential. We are now >> able to VC-if-eye any XMP compatible media file. >> >> >> >> Any holes? >> >> >> >> Best regards, >> >> Michael Herman >> >> Far Left Self-Sovereignist >> >> >> >> Self-Sovereign Blockchain Architect >> >> Trusted Digital Web >> >> Hyperonomy Digital Identity Lab >> >> Parallelspace Corporation >> >> >> >> >> >> >> >> >> >> *From:* Leonard Rosenthol <lrosenth@adobe.com> >> *Sent:* August 3, 2021 3:02 PM >> *To:* Michael Herman (Trusted Digital Web) <mwherman@parallelspace.net>; >> public-credentials@w3.org >> *Subject:* Re: Binding credentials to publicly accessible repositories >> >> >> >> There is no mechanism in XMP nor in most standard asset formats for >> establishing a model for tamper evidence, such as Digital Signatures, >> (H)MAC, etc. >> >> >> >> Leonard >> >> >> >> *From: *Michael Herman (Trusted Digital Web) <mwherman@parallelspace.net> >> *Date: *Tuesday, August 3, 2021 at 2:49 PM >> *To: *public-credentials@w3.org <public-credentials@w3.org>, Leonard >> Rosenthol <lrosenth@adobe.com> >> *Subject: *Re: Binding credentials to publicly accessible repositories >> >> Leonard, how do you define "native tamper-evident system"? >> >> Get Outlook for Android <https://aka.ms/AAb9ysg> >> >> >> ------------------------------ >> >> *From:* Leonard Rosenthol <lrosenth@adobe.com> >> *Sent:* Tuesday, August 3, 2021 10:53:47 AM >> *To:* Michael Herman (Trusted Digital Web) <mwherman@parallelspace.net>; >> public-credentials@w3.org <public-credentials@w3.org> >> *Subject:* Re: Binding credentials to publicly accessible repositories >> >> >> >> Michael, thanks for the reference to XMP…but you are probably not aware >> that I am the chair of ISO TC 171/SC 2/WG 12 where XMP is standardized * >> *and** the project leader for XMP itself. (oh, and I am also the XMP >> Architect internally to Adobe 😉 ). >> >> >> >> So yes, leveraging existing open standards such as XMP is indeed a key to >> delivering on the promises mentioned below – but it can’t be the only >> solution due to it being a text-based serialization (thus not lending >> itself well to binary data structures) and not having a native >> tamper-evident system. Additionally, while it is supported by most common >> asset formats, it is not supported by all. >> >> >> >> Leonard >> >> >> >> *From: *Michael Herman (Trusted Digital Web) <mwherman@parallelspace.net> >> *Date: *Tuesday, August 3, 2021 at 10:43 AM >> *To: *Leonard Rosenthol <lrosenth@adobe.com>, public-credentials@w3.org < >> public-credentials@w3.org> >> *Subject: *Re: Binding credentials to publicly accessible repositories >> >> Checkout https://en.wikipedia.org/wiki/Extensible_Metadata_Platform >> >> >> >> And here's a data model to consider for use in a custom XMP profile: >> https://youtu.be/FFv4WZ0p3aY >> >> >> >> Get Outlook for Android <https://aka.ms/AAb9ysg> >> ------------------------------ >> >> *From:* Michael Herman (Trusted Digital Web) <mwherman@parallelspace.net> >> *Sent:* Friday, July 30, 2021 1:25:18 PM >> *To:* Leonard Rosenthol <lrosenth@adobe.com>; public-credentials@w3.org < >> public-credentials@w3.org> >> *Subject:* RE: Binding credentials to publicly accessible repositories >> >> >> >> So an alternate strategy to avoid embed an actual VC or otherwise try to >> attach a VC to an asset is to use the metadata capabilities of each of >> these formats to store the credential id, @context, vc type list, >> credentialSubject id, the individual claims (name-value pairs), and the >> proof elements >> >> >> >> …vc-if-eye each format using each format’s native metadata capabilities. >> >> >> >> *From:* Leonard Rosenthol <lrosenth@adobe.com> >> *Sent:* July 30, 2021 1:03 PM >> *To:* Michael Herman (Trusted Digital Web) <mwherman@parallelspace.net>; >> public-credentials@w3.org >> *Subject:* Re: Binding credentials to publicly accessible repositories >> >> >> >> Michael – not sure you understand the scenario here. >> >> >> >> We aren’t building a specific system/solution for our own needs and those >> of our customers – we are developing an open standard that associates >> provenance with existing assets (eg. JPEG, PNG, MP4, PDF, etc.). Since >> those are the formats that are recognized by systems (and regulatory >> solutions) today, it would make no sense to start wrapping them in some >> other format (be it JSON, XML, or whatever). JPEG files (for example) need >> to work everywhere they do today – BUT contain tamper-evident provenance. >> >> >> >> Leonard >> >> >> >> *From: *Michael Herman (Trusted Digital Web) <mwherman@parallelspace.net> >> *Date: *Friday, July 30, 2021 at 2:46 PM >> *To: *Leonard Rosenthol <lrosenth@adobe.com>, public-credentials@w3.org < >> public-credentials@w3.org> >> *Subject: *RE: Binding credentials to publicly accessible repositories >> >> It’s a SMOP (small matter of programming). Once upon a time, browers >> weren’t capable of displaying a lot of different kinds of resources (e.g. >> XML). >> >> >> >> Why not render your VCs as XML? >> >> …or consider using server-side rendering? >> >> …or write an in-browser renderer using WASM? >> >> >> >> *“The difficult we can do, the impossible takes us a little bit longer…” * >> 😊 >> >> >> >> *From:* Leonard Rosenthol <lrosenth@adobe.com> >> *Sent:* July 30, 2021 12:35 PM >> *To:* Michael Herman (Trusted Digital Web) <mwherman@parallelspace.net>; >> public-credentials@w3.org >> *Subject:* Re: Binding credentials to publicly accessible repositories >> >> >> >> Given that putting a “.vc” file on a website or in a Twitter feed of >> YouTube channel isn’t going have it properly displayed – that’s not an >> option, unfortunately, Michael. >> >> >> >> Leonard >> >> >> >> *From: *Michael Herman (Trusted Digital Web) <mwherman@parallelspace.net> >> *Date: *Friday, July 30, 2021 at 1:05 PM >> *To: *Leonard Rosenthol <lrosenth@adobe.com>, public-credentials@w3.org < >> public-credentials@w3.org> >> *Subject: *RE: Binding credentials to publicly accessible repositories >> >> I suggest storing the “original version” of the artwork as a claim within >> a signed credential …the credential wraps the artwork like a container or a >> “frame”. >> >> >> >> I believe this is much better than trying to attach a credential to the >> artwork. >> >> >> >> Best regards, >> >> Michael Herman >> >> Far Left Self-Sovereignist >> >> >> >> Self-Sovereign Blockchain Architect >> >> Trusted Digital Web >> >> Hyperonomy Digital Identity Lab >> >> Parallelspace Corporation >> >> >> >> >> >> >> >> >> >> *From:* Leonard Rosenthol <lrosenth@adobe.com> >> *Sent:* July 30, 2021 10:31 AM >> *To:* public-credentials@w3.org >> *Subject:* Binding credentials to publicly accessible repositories >> >> >> >> I realize that I might be out on the bleeding edge a bit, though not >> completely as I think it is very similar to what OpenBadges will face as >> they move to VC’s… >> >> >> >> In the Trust Model section of the VC Data Model spec, it states that one >> of aspects of that model is: >> >> The holder trusts the repository to store credentials securely, to not >> release them to anyone other than the holder, and to not corrupt or lose >> them while they are in its care. >> >> This is certainly true when the repository in question is something like >> a wallet that is designed to be kept private or local (not shared). But >> what happens when the repository is designed to be out in the public… such >> as an image or PDF with the VC embedded? >> >> >> >> >> >> As part of the C2PA’s (https://c2pa.org) work on establishing provenance >> for digital assets, we will be using VC’s as a way for persons and >> organizations to establish their relationships to the asset. Specifically >> in this instance, we’re extending schema.org’s Person and Organization >> schemas, as used by their CreativeWork schema, to support referencing a >> VC. This then allows the author or publisher (or any of the other roles in >> CW) to provide their credentials in that role, which (a) adds useful trust >> signal(s) to the end consumer and (b) helps establish reputation. >> >> >> >> These VC’s (etc.) will be embedded into the assets (e.g., video, images, >> documents, etc.) in a tamper-evident manner, so that in addition to the >> individual VC’s “proof”, any attempt to change the CreativeWork >> relationships, etc. can also be detected. This all works great. >> >> >> >> However, in doing some threat modelling, we recognized that we have no >> protection against a malicious actor simply copying the VC from one asset >> and dropping it into another (and then signing the new setup), because >> there is nothing that binds the credential to the asset in our case. >> >> >> >> Has anyone run into this scenario before and has some guidance to offer? >> Am I doing something that I shouldn’t be doing – and if so, what does that >> mean for OpenBadges? >> >> >> >> All thoughts and suggestions welcome! >> >> >> >> Thanks, >> >> Leonard >> >> >> >>
Attachments
- image/jpeg attachment: image003.jpg
- image/jpeg attachment: image004.jpg
Received on Thursday, 2 April 2026 01:51:42 UTC