Giter Club home page Giter Club logo

did-method-dns's Introduction

did:dns Decentralized Identifiers Method Spec

This repository contains the did:dns Decentralized Identifier Method Specification. You can access the latest version of this specification here:

https://danubetech.github.io/did-method-dns/

Editing and building the specification

This specification uses ReSpec html. Just edit index.html and the draft will be rendered correctly.

When it's time to do a static snapshot, we use the ReSpec UI in the browser to export static HTML.

did-method-dns's People

Contributors

peacekeeper avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

did-method-dns's Issues

Deactivate = Deleting the domain name?

The specification currently says:

"To deactivate the DID document, the domain is deleted."

It would probably be better to have a way of deactivating the DID without necessarily deleting the domain name. Perhaps the following is better:

"the respective URI records are removed from the domain"

Or alternatively we could also introduce a special RR pattern that marks the domain name as a "deactivate DID".

Derive verification method `id` from key digest

I think if keys are stored in DNS based on a digest of the key which then also becomes part of the verification method id it would solve #3 as well. In signed documents you would include that key id and fetch exactly the single DNS record you need. I guess the key id could be supplied as extra metadata to the DID resolver which essentially resolves to a subset of the complete DID doc. It's an optimization but an important one I think.

Activity

I find this resolver very interesting,
I m wondering if it is still active ?
Regards

DNS queries are usually for a specific record

DNS queries have to be made for a specific RR, rather than retrieving "all" RRs in a zone and then filter them.

Therefore steps 3 and 5 in https://danubetech.github.io/did-method-dns/#resolve are a bit imprecise, and it may not be possible to just "retrieve all keys" with a single query.

Also, we have to make sure we have to be compliant with how the URI RR works (and we should reference RFC 7553 - https://datatracker.ietf.org/doc/html/rfc7553).

Compare to how section 3.1 on "Owner Name" is written here: https://datatracker.ietf.org/doc/draft-mayrhofer-did-dns/

Is the URI RR type the right choice?

The specification currently uses URI RRs.

  • DNSSEC uses DNSKEY and other RR types.
  • DKIM uses TXT RR types.
  • URI RRs may not be widely supported (e.g. Gandi doesn't support them). OTOH this should probably be not the main concern when choosing which RR type is most appropriate; semantics and functionality should matter more than implementation support.

Maybe not mention "zone files"

Zone files are an implementation detail of some DNS servers, but other DNS servers use databases instead of files.

The specification should therefore use generic terminology for this, e.g. "public resource records (on the authoritative servers for the domain)".

Ignore all other RRs? Probably not

The specification currently says:

"All other RRs MUST be ignored during the DID document construction step."

This language may not be ideal, because wo don't really want to "ignore" other RRs (such as DNSSEC). Instead maybe something like the following is better:

"only URI RRTypes matching the above requirements must be used for construction..."

How to represent verification relationships?

The specification currently defines RR patterns for storing public keys, but it doesn't specify their verification relationships (authentication, assertionMethod, etc.).

Should there be an explicit pattern for specifying this, or should a default set of verification relationships be assumed (like e.g. in did:key)?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.