-
Notifications
You must be signed in to change notification settings - Fork 11
Statement by reference #35
Comments
Another thing to include in the reference should be the content type. |
The COSE representations are killing me... I find them incredibly hard to process. Here is an example I am familiar with: https://blog.cloudflare.com/cloudflare-distributed-web-resolver/ https://ipfs.io/ipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR https://docs.ipfs.tech/how-to/best-practices-for-nft-data/#types-of-ipfs-links-and-when-to-use-them
If you don't want to use IPFS, but you want something similar, you can do what docker has been doing:
^ this won't help you |
FYI: Sha256 ID's have been working well for over a year for our own registry SAG-CTR. Have not seen any collisions yet. |
If you want to build a custom identifier scheme for statements you should consider the precedent of Data URIs: https://en.wikipedia.org/wiki/Data_URI_scheme
See also Tag 42: https://www.iana.org/assignments/cbor-tags/cbor-tags.xhtml |
From back to front:
CIDs use multicodec for identifying content types and those have to registered here: https://github.com/multiformats/multicodec/blob/master/table.csv. I think SCITT should allow CIDs in some way but it doesn't look like a general enough mechanism.
I think what you're suggesting is creating a new media type where the hash of the referenced data is the content and everything else is put into media type parameters, for example: Media type: You could put all that into a Data URI by base64 encoding the content (hash), but I don't see where this would go in the COSE envelope and how it interacts with the
Where exactly do you see problems in processing the CBOR representations? Would the same be true for an equivalent JSON representation? My general feeling is that the detached use case may become the thing that's used exclusively in some settings, and so if we define a standard mechanism for that I think it should be as efficient as possible and not necessarily rely on text representations. In that sense, CBOR CIDs (as mentioned above) go in the right direction but are quite hard to decode (and introduce yet another format next to CBOR) and too limited I think (see above). |
Have you considered PURLs:? We also spent time discussing separating identity from location:
|
Readability and types... getting in the way of "representative examples". I prefer to argue over a representative example, and then map from it to existing building blocks, not the other way round. |
Alright, makes sense. So your concern is not about the implementations but just to facilitate discussions. I guess sometimes the two are intertwined but let's try anyway. |
@OR13 This is my attempt at representative examples. Is this what you had in mind? Any others you can think of? Statement stored in undeclared locationhash alg: sha-256 Statement stored on web serverhash alg: sha-256 Statement stored on IPFShash alg: sha-256 Note: The hash embedded within the CID is not the hash of the raw content! Note2: The content type embedded within the CID cannot be arbitrary. Statement stored in OCI registryhash alg: sha-256 Note: The hash in the location is not the hash of the raw content, but rather of a manifest. Note2: The Notary project also defines signing over OCI artifacts and may be in conflict. Statement stored in DID service endpointhash alg: sha-256 Note: DID dereferencing would be used to retrieve the statement from the given location. Note2: The DID in the location may be distinct from the issuer of the signed statement. |
@letmaik these are excellent examples.
The 2 notes are interesting. perhaps its not for this repo, but I would love to generate some "real examples" from some "safe / fake data" So we can see the actual proposed data structures. If there is a repo where I can do that work, I'm happy to tackle the IPFS examples, I did something similar recently for this: |
We have a generic use case for "signed statement" by reference, which I would love to explore as well. When my statement refers to several "other signed statements" or "transparent statements" by reference. |
@OR13 Let's experiment here: https://github.com/ietf-scitt/statements-by-reference |
I filed: ietf-scitt/statements-by-reference#1 |
@letmaik to move this issue to new repository retaining all the history of Conversations been tracked here! |
Closing as this should be covered by: ietf-wg-scitt/draft-ietf-scitt-architecture#8 |
At IETF 115 there were discussions on having some kind of standard way to deal with statements by reference. Here are also the two relevant slides from https://datatracker.ietf.org/doc/slides-115-scitt-combined-scitt-presentations/:
Simply using COSE detached payloads as defined in the RFC would not be sufficient as the payload would still be required during signature validation when registering the signed statement.
Instead, having a specific content type for referencing external statements may be useful. Note that this format by itself would be a statement.
RFC 9054 gives two examples for such hash structures:
and
SUIT's digest container defines this as:
Would having a variant of one of the above as a CBOR content type address this issue?
Should location of the referenced content be included? How? Should location hints be globally unique? Resolvable?
Should a SCITT transparency service know about this content type and at least validate its CDDL schema?
The text was updated successfully, but these errors were encountered: