diff --git a/index.html b/index.html index 8b5c2ed..a032783 100644 --- a/index.html +++ b/index.html @@ -133,11 +133,11 @@

This document specifies the algorithms and guidelines for resolving DIDs -and dereferencing DID URLs. Additionally, this document describes the -input and output metadata related to the DID resolution processes and -further describes the data structures that may be returned from a DID resolution -request. This document relies on the core DID specification, -Decentralized Identifiers (DIDs) v1.1, +and dereferencing DID URLs. Additionally, this document describes the +input and output metadata related to the DID resolution processes and +further describes the data structures that may be returned from a DID resolution +request. This document relies on the core DID specification, +Decentralized Identifiers (DIDs) v1.1, which describes the underlying DID architecture in full detail.

@@ -178,7 +178,7 @@

Introduction

Building on top of DID resolution, DID URL dereferencing is the process of retrieving a representation of a resource for a given DID URL. Software and/or hardware that is able to execute these processes is called a DID resolver. - +

This specification defines common requirements, algorithms including their inputs and results, architectural options, and various considerations for the @@ -214,15 +214,15 @@

This specification has three primary audiences: implementers of conformant DID methods; -implementers of conformant DID resolvers; and implementers of systems and services -that wish to resolve DIDs using DID resolvers. The intended audience includes, -but is not limited to, software architects, data modelers, application developers, -service developers, testers, operators, and user experience (UX) specialists. -Other people involved in a broad range of standards efforts related to decentralized -identity, verifiable credentials, and secure storage might also be interested in +implementers of conformant DID resolvers; and implementers of systems and services +that wish to resolve DIDs using DID resolvers. The intended audience includes, +but is not limited to, software architects, data modelers, application developers, +service developers, testers, operators, and user experience (UX) specialists. +Other people involved in a broad range of standards efforts related to decentralized +identity, verifiable credentials, and secure storage might also be interested in reading this specification.

- + @@ -331,7 +331,7 @@

DID Parameters

Identifies a certain version timestamp of a DID document to be resolved. - That is, the most recent version of the DID document that was valid for a DID + That is, the most recent version of the DID document that was valid for a DID before the specified `versionTime`. If present, the associated value MUST be an ASCII string which is a valid XML datetime value, as defined in section 3.3.7 of DID Resolution error in the resolution process, this MUST NOT be empty. This structure is further defined in . If the resolution is unsuccessful, this structure MUST contain an error property - describing the error. See Section . + describing the error. See Section .
didDocument @@ -864,7 +864,7 @@

DID Resolution Algorithm

verification relationships in the output DID document.
  • If the value of the id property of a service or - verification method + verification method (including those embedded in verification relationships) is a relative DID URL, or if a verification relationship is a @@ -1107,7 +1107,7 @@

    DID URL Dereferencing Options

    associated value MUST be an ASCII string. If the DID URL does not dereference to a verificationMethod, or the DID document does not authorize the verificationMethod for the specified - verificationRelationship, then an error MUST be raised. + verificationRelationship, then an error MUST be raised. @@ -1139,7 +1139,7 @@

    DID URL Dereferencing Metadata

  • An error data structure defined in [[RFC9457]]. This property is REQUIRED when - there is an error in the dereferencing process. The errors defined in this + there is an error in the dereferencing process. The errors defined in this specification can be found in Section . Additional errors SHOULD be registered in the DID Specification Registries [[?DID-SPEC-REGISTRIES]].
    @@ -1359,7 +1359,7 @@

    Dereferencing the Fragment

    verificationRelationship option:
    1. - Let verificationRelationship be the value of the verificationRelationship + Let verificationRelationship be the value of the verificationRelationship option.
    2. @@ -1371,7 +1371,7 @@

      Dereferencing the Fragment

      If verificationMethod is not a conforming verification method, an error MUST be raised and SHOULD convey an error type of INVALID_VERIFICATION_METHOD. -
    3. +
    4. If verificationMethod is not associated, either by reference (URL) or by value (object), with the verification relationship array in the @@ -1529,7 +1529,7 @@

      Metadata Structure

      Numeric representations vary across platforms and serializations (for example, IEEE-754 floating-point vs. fixed-width integers vs. - “bigint”/bignum types). The + “bigint”/bignum types). The Infra standard does not yet provide comprehensive guidance for numbers. Implementers are advised to avoid metadata numbers that are likely to be represented differently on @@ -2133,10 +2133,10 @@

      Errors

      software systems. This section provides specific URLs and descriptions for the errors, such that an ecosystem implementing technologies described by this specification might interoperate more effectively when errors occur. Additionally, - this specification uses some errors defined in Section + this specification uses some errors defined in Section 3.5 Processing Errors of the [[CID]] specification.

      - +

      Implementers SHOULD use [[RFC9457]] to encode the error data structure. If [[RFC9457]] is used: @@ -2173,8 +2173,8 @@

      Errors

      REPRESENTATION_NOT_SUPPORTED
      - The representation requested via the accept input metadata property - is not supported by the DID method and/or DID resolver implementation. + The representation requested via the accept input metadata property + is not supported by the DID method and/or DID resolver implementation. See Section .
      INVALID_DID_URL
      @@ -2196,11 +2196,11 @@

      Errors

      https://w3id.org/security#INVALID_PUBLIC_KEY
      - An invalid public key value is detected during DID Resolution or DID URL dereferencing. + An invalid public key value is detected during DID Resolution or DID URL dereferencing.
      https://w3id.org/security#INVALID_PUBLIC_KEY_LENGTH
      - The byte length of rawPublicKeyBytes did not match the expected public key length for the associated multicodecValue + The byte length of rawPublicKeyBytes did not match the expected public key length for the associated multicodecValue during DID Resolution or DID URL dereferencing.
      https://w3id.org/security#INVALID_PUBLIC_KEY_TYPE
      @@ -2629,7 +2629,7 @@

      Caching

      Resolvers that implement noCache might be more vulnerable to denial of service attacks, as malicious clients can bypass caching to force expensive network requests and resource consumption. Clients requesting resolution with noCache expect that some resolvers will reject resolution requests that bypass caching. - Resolvers that deny resolution without caching can respond with an error that makes it clear that bypassing the cache was not permitted + Resolvers that deny resolution without caching can respond with an error that makes it clear that bypassing the cache was not permitted so the client can attempt to resolve without using noCache.

      See corresponding open issue.

      @@ -2637,7 +2637,7 @@

      Caching

      JSON-LD Context Integrity

      -

      If JSON-LD Context files are fetched from a remote location, an attacker could alter the context file (for example, by compromising the server or intercepting the request via a man-in-the-middle attack). +

      If JSON-LD Context files are fetched from a remote location, an attacker could alter the context file (for example, by compromising the server or intercepting the request via a man-in-the-middle attack).

      Therefore, any DID resolver which performs remote retrieval of JSON-LD Context URLs is strongly advised to use a registry of context files and corresponding hashes (or a functionally equivalent mechanism) to help ensure end-to-end security. Implementations are expected to throw errors if the cryptographic hash value for a resource does not match the expected hash value.

      @@ -2664,9 +2664,9 @@

      Versioning

      VDR Network Forks

      -

      DID methods that use a distributed system (such as a distributed ledger) as a - VDR (verifiable data registry) need to manage the potential that network forks may occur. Therefore, - the specification of a DID method that uses a distributed system as a VDR SHOULD specify a means by which +

      DID methods that use a distributed system (such as a distributed ledger) as a + VDR (verifiable data registry) need to manage the potential that network forks may occur. Therefore, + the specification of a DID method that uses a distributed system as a VDR SHOULD specify a means by which the VDR they are using can be disambiguated from such forks.

      @@ -2675,7 +2675,7 @@

      Non-DID Identifiers

      resolution of non-DID identifiers such as domain names, HTTP URIs, or e-mail addresses. This includes the questions how DIDs can be discovered from non-DID identifiers, and how links between identifiers can be verifiable.

      - +
      @@ -2687,17 +2687,52 @@

      Privacy Considerations

      Profiling of DID Resolution and Dereferencing Requesters

      DID resolvers and DID URL dereferencers will be able to log requests - to their services for resolution and dereferencing. Over time, these logs could be used to track - and profile the clients making requests for these services. To mitigate this privacy risk, - clients should make such requests to services they trust, for example, - because of an existing business relationship or because the service is running on - infrastructure they control. Clients can also take steps to obfuscate their + to their services for resolution and dereferencing. Over time, these logs could be used to track + and profile the clients making requests for these services. To mitigate this privacy risk, + clients should make such requests to services they trust, for example, + because of an existing business relationship or because the service is running on + infrastructure they control. Clients can also take steps to obfuscate their requests to a service in order to limit the possibilities of correlation and profiling.

      - +
      - + + +
      +

      Relationship to Other Technologies

      + +

      +One of the most common mechanisms used to resolve an identifier to an address on +the Internet is the global Domain Name System (DNS) described in [[?RFC1034]]. +The DNS and the processes and systems used to map a Domain Name to an Internet +Protocol address is a common requirement for hosting a website. +

      +

      +The [[[DID]]] specification introduced a new type of identifier that lacks +any dependency on the global Domain Name System and introduced the concept of +an identifier resolution process that does not require the centralization of +any part of the architecture. This new architecture allows the decentralized +creation and management of globally-resolvable identifiers that combat +identifier rent-seeking and censorship. It enables individuals to fully +own and control their identifiers instead of renting the identifiers from a +third party. +

      +

      +Individuals that acquire [=DID URLs=] use them in their software much like +they continue to use DNS-based URLs. The software uses a [=DID resolver=] +interface (defined in this specification) to determine the location of the +resources to be retrieved. The process of [=DID resolution=], much like the +process of DNS resolution, is opaque to the individual and happens within +the software without needing any direct involvement of the individual. +

      +

      +The research related to DNS centralization and the corresponding invention of +[=DIDs=] and [=DID resolution=] is documented by the [[[?DID]]] specification in +the section related to the +history of DIDs. +

      +

      DID Resolution Resources