diff --git a/index.html b/index.html index 84f113a9..ef152f32 100644 --- a/index.html +++ b/index.html @@ -1378,10 +1378,8 @@

However, the fully resolved DID document always contains a valid id property. The value of id in the resolved DID document MUST match the DID that was -resolved, or be populated with the equivalent canonical DID -specified by the DID method, which SHOULD be used by the resolving -party going forward. -

+resolved. +

A DID document can contain objects which have their own unique @@ -1441,6 +1439,7 @@

Also Known As

+
@@ -2804,7 +2803,7 @@

CBOR

Representation (CBOR) [[RFC7049]] defines a set of formatting rules for the portable representation of structured data. CBOR is a more concise, machine-readable, language-independent data interchange format that is -self-describing and has built-in semantics for interoperability. CBOR prioritizes +self-describing and has built-in semantics for interoperability. CBOR prioritizes the simplicity of the encoder and decoder over the size of the encoded data. With specific constraints, CBOR can support all JSON data types for translation between the DID document model (described in CBOR

-When producing and consuming DID documents that are encoded in CBOR (as indicated +When producing and consuming DID documents that are encoded in CBOR (as indicated by a content-type of application/did+cbor in the resolver metadata), the following rules MUST be followed.

- +

Production

-A DID document encoded in CBOR must be represented as a CBOR Map (major type 5) conforming to [[RFC7049]]. -Similar to the JSON encoding of a DID document, all properties of the DID document MUST be represented by using the -property name as the name of the member of the CBOR map. The values of properties of the data model described in § 5. Core Properties, including +A DID document encoded in CBOR must be represented as a CBOR Map (major type 5) conforming to [[RFC7049]]. +Similar to the JSON encoding of a DID document, all properties of the DID document MUST be represented by using the +property name as the name of the member of the CBOR map. The values of properties of the data model described in § 5. Core Properties, including all extensions, MUST be encoded in CBOR [[RFC7049]] by mapping INFRA property values to CBOR types as follows:

-

- To produce a deterministic canonical CBOR representation of a DID document and faciliate maximal lossless compatiblity with other + To produce a deterministic canonical CBOR representation of a DID document and faciliate maximal lossless compatiblity with other core representations via the Abstract Data Model the following constraints of a CBOR representation of a DID Document model MUST be followed: - +

Converting Data between Core Representations

-

Transformation between various core representations SHOULD be performed through parsing and serializing via the Abstract DID Document Data Model (see and Production and Consumptions rules between core representation via the Abstract Data Model). +

Transformation between various core representations SHOULD be performed through parsing and serializing via the Abstract DID Document Data Model (see and Production and Consumptions rules between core representation via the Abstract Data Model). Given that CBOR is a superset of JSON, the following non-normative advice is given for converting a DID document between CBOR and JSON.

@@ -3033,7 +3032,7 @@

Converting Data between Core Representations

This section conflicts with other parts of the specification, since conversion has to be defined not between any two representations directly, but rather in terms of parsing and serializing via the abstract -DID document data model (see and +DID document data model (see and ). The content of this section can potentially be adapted and re-used in other sections such as the one about the CBOR representation (see ). @@ -3061,7 +3060,6 @@

CBOR to JSON

-
@@ -3586,11 +3584,11 @@

This specification defines the following common properties.

-
-
-created -
-
+
+

+ created +

+

DID document metadata SHOULD include a created property to indicate the timestamp of the Create operation. This property MAY not be supported by a given DID method. @@ -3599,18 +3597,132 @@

Definition Language (XSD) 1.1 Part 2: Datatypes [[XMLSCHEMA11-2]]. This datetime value MUST be normalized to UTC 00:00, as indicated by the trailing "Z". -

-
-updated -
-
+

+

+ +
+

+ updated +

+

DID document metadata SHOULD include an updated property to indicate the timestamp of the last Update operation. This property MAY not be supported by a given DID method. The value of the property MUST follow the same formatting rules as the created property. - - +

+
+ +
+

equivalentId

+

+ A DID Method can define different forms of a DID that are + logically equivalent. An example is when a DID takes one form prior + to registration in a verifiable data registry and another form after + such registration. In this case, the DID Method specification + may need to express one or more DIDs that are logically equivalent to + the resolved DID as a property of the DID document. This is the + purpose of the equivalentId property. +

+ +
+
equivalentId
+
+ The value of equivalentId MUST be a + list where each item in the list + is a string that conforms to the rules in Section . +
+
+ The relationship is a statement that each equivalentId + value is logically equivalent to the id property + value and thus identifies the same DID subject. +
+
+ Each equivalentId DID value MUST be produced by, and a form of, + the same DID Method as the id property value. + (e.g. did:example:abc == did:example:ABC) +
+
+ A conforming DID Method specification MUST guarantee that each + equivalentId value is logically equivalent to the + id property value. +
+
+ A resolving party MUST retain the values from the id and + equivalentId properties to ensure any subsequent + interactions with any of the values they contain are correctly handled + as logically equivalent (e.g. retain all variants in a database so an + interaction with any one maps to the same underlying account). The testability of + resolving parties is currently under debate and normative statements related to resolving parties + may be downgraded in the future from a MUST to a SHOULD/MAY or similar language. +
+
+ +
+

+ equivalentId is a much stronger form of equivalence than + alsoKnownAs because the equivalence MUST be guaranteed by + the governing DID method. equivalentId represents a full + graph merge because the same DID document describes both the + equivalentId DID and the id property DID. +

+
+ +
+ +
+

canonicalId

+

+ The canonicalId property is identical to the + equivalentId property except: a) it accepts only a single + value rather than a list, and b) that DID is defined to be the canonical ID + for the DID subject within the scope of the containing DID document. +

+ +
+
canonicalId
+
+ The value of canonicalId MUST be a string that conforms to the rules in Section . +
+
+ The relationship is a statement that the canonicalId + value is logically equivalent to the id property value and + that the canonicalId value is defined by the + DID Method to be the canonical ID for the DID subject in the scope + of the containing DID document. +
+
+ A canonicalId value MUST be produced by, and a form of, + the same DID Method as the id property value. + (e.g. did:example:abc == did:example:ABC) +
+
+ A conforming DID Method specification MUST guarantee that the + canonicalId value is logically equivalent to the + id property value. +
+
+ A resolving party MUST use the canonicalId value + as its primary ID value for the DID subject and treat all other equivalent + values as secondary aliases. (e.g. update corresponding primary references in + their systems to reflect the new canonical ID directive). The testability of + resolving parties is currently under debate and normative statements related to resolving parties + may be downgraded in the future from a MUST to a SHOULD/MAY or similar language. +
+
+ +
+

+ canonicalId is the same statement of equivalence as + equivalentId except it is constrained to a single value that + is defined to be canonical for the DID subject in the scope of the DID + document. Like equivalentId, canonicalId + represents a full graph merge because the same DID document describes both + the canonicalId DID and the id property DID. +

+
+ +
@@ -4288,6 +4400,42 @@

+
+

+ Equivalence Properties +

+

+ The three equivalence properties defined in Core Properties + —alsoKnownAs, equivalentId, and + canonicalId—are subject to special security + considerations related to attacks against DIDs that are asserted to be + equivalent. Each of the equivalence property sections describes relevant + mitigation instructions. In general, they are: +

+

+ The equivalentId and canonicalId properties + that constrain equivalence assertions to variants of a single DID produced by + the same DID method (e.g. did:foo:123did:foo:hash(123)) + can be trusted to the extent the resolving party trusts the DID method (and a + conforming producer) itself. +

+

+ The alsoKnownAs property that permits an equivalence assertion + to URIs that are not governed by the same DID method (or may not be DIDs at + all) cannot be trusted without performing verification steps outside of the governing + DID method. See Section 5.1.1 for the recommendation to verify inverse relationships. +

+

+ As with any other sensitive properties in the DID Document (e.g. public key references), + parties relying on any equivalence statement in a DID Document should guard against the + values of these properties being substituted by an attacker after the proper verification + has been performed. Any write access to a DID document stored in memory or disk after + verification has been performed is an attack vector that will circumvent verification + unless the DID document is re-verified. +

+ +
+