Live data from Hacker News

Decentralized Identifiers (DIDs) v1.0 (W3C draft)

w3.org

41–50 of 89 posts

Re: Decentralized Identifiers (DIDs) v1.0 (W3C draft)

#41
post #27

This should be v0.1 based on the actual utility of the spec, just because it's been incubated for so long doesn't magically make it useful. DIDs are fundamentally antithetical to privacy and will only enable a deeper and more obscure level of tracking to all applications that use them. They were originally inspired for mapping public blockchain use-cases, but IMO personal identity and related keys should _never_ be p…

But what would be the solution? I've already played around with DIDs and Verifiable Credentials in the SSI-context and I like it from a tech perspective. I am also not sure if the spec should be held accountable to potential privacy misuses – the user should be. Additionally, you don't have to use the big tech solutions. The tech is inherently open, just look at the many DID methods.

But what I am concerned of are consortium (identity) networks like Sovrin which are run by a hand full of companies. At least in Germany, the government is starting to like what they are doing which is horrible imo. The identity layer of a state should not be governed by a consortium of private companies, no matter what fancy governance model they have.

Re: Decentralized Identifiers (DIDs) v1.0 (W3C draft)

#42
post #27

This should be v0.1 based on the actual utility of the spec, just because it's been incubated for so long doesn't magically make it useful. DIDs are fundamentally antithetical to privacy and will only enable a deeper and more obscure level of tracking to all applications that use them. They were originally inspired for mapping public blockchain use-cases, but IMO personal identity and related keys should _never_ be p…

Well DID spec doesn't tell us to put identity or related keys in public. DIDs coupled with the VC model (https://www.w3.org/TR/vc-data-model/) allows identity credentials issued by any "trusted" issuer to be validated. Here trusted means whoever the user trusts, be it government or big tech or anything else.

Re: Decentralized Identifiers (DIDs) v1.0 (W3C draft)

#43
post #2

Great to see some progress with the standard. We’ve been working on generating DIDs for our upcoming users. We’re using IDX + Ceramic as our backend. For our use case (making web3 profiles like https://shokunin.dns.xyz ), it’s cool to have a DID as a chain agnostic ID. I’m curious what people here have been using DIDs for besides that.

Idk, maybe it's just because I've already gotten used to ENS addresses, but I'd rather not have something that works become fragmented because w3 who's been asleep at the wheel on this feels left out and wants to remain relevant. How would DNS work with this? If it's chain agnostic then it doesn't seem possible to register names like you can now with them on Ethereum.

DIDs are not meant to compete with ENS addresses. They solve different problems.

Re: Decentralized Identifiers (DIDs) v1.0 (W3C draft)

#44
post #26

Personally not in favour of using ':' as a separator since amongst other things it has to be escaped in HTTP query parameters.

No, it doesn't? Colon is a special character only in the hostname part of a URI to signify the port number. It's free to use anywhere else without escaping.

Re: Decentralized Identifiers (DIDs) v1.0 (W3C draft)

#45
post #27

This should be v0.1 based on the actual utility of the spec, just because it's been incubated for so long doesn't magically make it useful. DIDs are fundamentally antithetical to privacy and will only enable a deeper and more obscure level of tracking to all applications that use them. They were originally inspired for mapping public blockchain use-cases, but IMO personal identity and related keys should _never_ be p…

Well DID spec doesn't tell us to put identity or related keys in public. DIDs coupled with the VC model ( https://www.w3.org/TR/vc-data-model/ ) allows identity credentials issued by any "trusted" issuer to be validated. Here trusted means whoever the user trusts, be it government or big tech or anything else.

The issue is not other identity information in the DID, it is the identifier mandate itself is antithetical to privacy.

Having a global identifier as you go about the internet means that parties can correlate and share information about you.

Trying to solve that by isolation (using a DID per party you want to interact with) negative affects their usability and privacy properties with verifiable credentials.

Re: Decentralized Identifiers (DIDs) v1.0 (W3C draft)

#46
post #24

Earlier quoted context omitted.

I think it's really just the fact that it's a standard.

Apparently it also has bLoCkcHaIns.

Nope, no blockchains _in_ DIDs. But do give reading the specification (draft) a try yourself to verify.

Re: Decentralized Identifiers (DIDs) v1.0 (W3C draft)

#47
post #14

Earlier quoted context omitted.

I'm, sadly, old enough to remember this absolutist argument about OAuth. I'm curious, what's the risk here?

If FB or some other big actor were to define identity standards, the standards would at least be friendly towards their operations, if not optimized for it. Risks would include, privacy concerns, from obvious to not yet identified; the standards not being good at things other interested parties may like; mechanisms that encourage/require normal users to delegate some functions to private third parties; mechanisms tha…

The basis for identity is that the receiving party has to make a decision based on some sort of trust relationship.

Everything really winds up being direct, indirect, or brokered, eg. : - direct: you have a pre-existing account on a website. - indirect: you have an account with a Company, and I let that company's employees sign in with SAML etc - brokered: certificate authorities issuing certs based on domain/email/etc validation, and I accept those certs by accepting those authorities

We won't see the indirect model get any broader than it already has - nobody is going to accept Sign in with Apple in lieu of a birth certificate.

What we _do_ see is the platforms (like iOS and Android) becoming wallets for identities issued by _others_ based on the indirect and brokered models. Adding mobile drivers licenses is upcoming for both mobile platforms.

but the reality is that for indirect/brokered, you have an issuer and you have parties who have made a decision to trust the identity. If Apple/Google mandate properties the issuers don't like, the issuers won't use it. If the issuers mandate behavior the verifiers don't like, they won't accept it.

And thats the same for any "user-centric" or "self-sovereign" identity system too. If bringing my own DID means that the issuer can't meet their identity verification/authentication mandates, they won't support it. If me using my own wallet means that a retailer is not getting identity assurance or is otherwise taking on additional risk, they won't accept it.

And obviously the people who do not like the overall properties will choose not to consume it.

What you imply is some nefarious function of big actor desires being baked into standards, I would just call 'understanding market requirements'.

Re: Decentralized Identifiers (DIDs) v1.0 (W3C draft)

#48
post #17
post #2

Great to see some progress with the standard. We’ve been working on generating DIDs for our upcoming users. We’re using IDX + Ceramic as our backend. For our use case (making web3 profiles like https://shokunin.dns.xyz ), it’s cool to have a DID as a chain agnostic ID. I’m curious what people here have been using DIDs for besides that.

It sounds like you understand enough about DID's to start incorporating them into an actual product. You'll have a bunch of users, and you want to give each of your users a DID. Congratulations! I certainly wasn't able to get that level of understanding from the document. In Section 1.1, it says the DID "did:example:123456789abcdefghijk" resolves to a DID document. Would you then be running some software with all you…

Great questions, csense.

It is preferable that users bring their own DIDs, rather than you assigning them DIDs as a service provider, to ensure user autonomy. However, you can create DIDs via websites as you are suggesting, using did:web [1].

DIDs are structured or namespaced by DID Methods: the part after "did:" is called the DID Method name, and each Method has its own specification and implementations. There is a registry of DID Methods [2], although it is not a requirement that DID methods be registered. There is a document comparing some DID methods using a Rubric: [3].

> [...] instead of registering a separate account with my website, she can instead type "did:identity.dns.xyz:123456789abcdefghijk" into my website?

It can obviate account registration per website, yes.

For usability reasons it is often considered desirable that users not have to know about DIDs, type them or see them. The functionality could instead be handled by the user's software. There is a browser standard and polyfill in development which can be used for this: Credential Handler API [4].

> Does my site's software then contact identity.dns.xyz to ask it something? Or is all the information my site needs to do its thing contained in the DID itself?

If you have "did:identity.dns.xyz:...", it would depend on what the "identity.dns.xyz" DID method is. If you don't know what the "identity.dns.xyz" DID method is, you could ask a DID resolver that you trust; but they might not know either. If instead you had "did:web:identity.dns.xyz:...", you would indeed contact `identity.dns.xyz` over HTTPS to request the respective DID document. If you instead have a "did:key:..." DID [5], you would indeed have all the information contained in the DID itself, as did:key encodes the public key. In other kinds of DID methods, you may need to contact a peer-to-peer network to resolve the DID.

> Is "123456789abcdefghijk" the hash of some document that's returned to my website by the identity.dns.xyz server?

It depends on the DID method. If you are using did:web, which is based on HTTPS as mentioned, there is no hash, although this could be handled using hashlinks [6], which is mentioned in the did:web specification as a TODO. In other DID methods, the method-specific-id (the "123456789abcdefghijk" part) is a hash which might refer to some static data or initialization state.

> Or is Alice running some identity management browser extension that knows to present a document whose hash is "123456789abcdefghijk" to my website?

Possibly, depending on the DID method and how it is implemented. But DIDs are generally expected to be public, globally resolvable, and highly available.

> [...] is "123456789abcdefghijk" the hash of a public key which signs something

Could be, again depending on the DID method. Some DID methods are based on decentralized ledger technologies where the method-specific-id represents an account id derived from public key hash, e.g. did:ethr [7] and did:tz [8].

> [...] {returned by the identity.dns.xyz server | presented by Alice's software}?

Yes, if you are authenticating the user with a DID, generally you would ask them to sign a challenge using authentication key material from their DID document. The DID document is what the DID resolves to, and it includes public keys. In the case of did:key, the DID document contains a single key as encoded in the DID. In the case of a DID method based on a public key hash, the public key must be provided or looked up somehow, or the signing algorithm must support public key recovery [9].

> Or is "123456789abcdefghijk" just a string your webserver happened to generate to identify Alice uniquely that came from /dev/urandom or a PRIMARY KEY column in your database that has no cryptographic meaning?

The DID method determines the structure and meaning of the method-specific-id (the "123456789abcdefghijk" part). If you are using did:web, the string is not cryptographic but corresponds to a HTTPS URL.

> If Alice's DID document is cryptographically linked to her DID, how does she update it?

She performs a DID document update operation [10]. If the DID method is based on a decentralized ledger technology (e.g. btcr [11], ethr, tz), she might publish a transaction to the corresponding network or make a call on a "smart contract". in the case of a did:key, the DID document cannot be updated.

> If the DID is the hash of the document, does that mean Alice gets a new DID whenever she edits her profile on dns.xyz?

If the DID method is static (basing the DID on the document hash entirely), it would probably have to be a new DID, but if it is only an initial document hash, the DID method could provide for verifying and applying updates somehow. There are also some properties for indicating equivalence between DIDs which might be useful [12].

A DID document could also be updated while still using hashes for integrity protection and referencing if the DID method uses the hash as the DID document version ID. A DID can be resolved at a given version ID using the versionId parameter [13].

For privacy, generally DID documents should not include personal data [14]. Edits to a profile on would then only affect DID documents if they are updating keypairs, or indicating relationships with other DIDs (e.g. using alsoKnownAs), or updating service endpoints, etc.

For decentralization and user autonomy, users should be able to update their DID documents with their software directly, rather than having a website in control of their DID and having to ask the website to update it. In the web context that may mean a browser extension or key management API. But there are institutional use cases where the website is expected to have control.

> How does my website know that the user presenting Alice's DID document is Alice sending her most up-to-date DID document, rather than Eve sending an outdated DID document with the compromised Ethereum address that once belonged to Alice [...]

Often DIDs are resolved publicly or by contacting a network rather than via asking the user (did:peer [15] is a different case). But the concern still applies. Updating a DID document to remove a compromised key is called revocation [16]. The DID method should have some protocol for how updates are performed, which may include how they are ordered, such as by being witnessed or confirmed by some entity or network. The question of the valid state of a DID document should be abstracted by your DID resolver [17].

> Is a DID like a generalized Bitcoin address, a generalized IPNS name, a generalized email address, or something else entirely?

More like a generalized Bitcoin address I think, although there are comparisons to be made with the others. Another idea: generalized PGP keys. It is primarily about identity, rather than about communication, storage or payments.

For more info I recommend checking out the Decentralized Identity Foundation (DIF)'s FAQ: "What is a DID?" [18].

[1] https://w3c-ccg.github.io/did-method-web/

[2] https://www.w3.org/TR/did-spec-registries/

[3] https://w3c.github.io/did-rubric/

[4] https://w3c-ccg.github.io/credential-handler-api/

[5] https://w3c-ccg.github.io/did-method-key/

[6] https://datatracker.ietf.org/doc/html/draft-sporny-hashlink

[7] https://github.com/decentralized-identity/ethr-did-resolver/...

[8] https://did-tezos.spruceid.com/

[9] https://crypto.stackexchange.com/questions/18105/how-does-re...

[10] https://www.w3.org/TR/did-core/#method-operations

[11] https://w3c-ccg.github.io/didm-btcr/

[12] https://www.w3.org/TR/did-core/#equivalence-properties

[13] https://www.w3.org/TR/did-core/#did-parameters

[14] https://www.w3.org/TR/did-core/#keep-personal-data-private

[15] https://identity.foundation/peer-did-method-spec/

[16] https://www.w3.org/TR/did-core/#verification-method-revocati...

[17] https://www.w3.org/TR/did-core/#dfn-did-resolvers

[18] https://identity.foundation/faq/#what-is-a-did

Re: Decentralized Identifiers (DIDs) v1.0 (W3C draft)

#49
post #28

Earlier quoted context omitted.

It was implemented. Nobody used it.

I'd put it slightly differently. The infrastructure went part of the way. It needed several more iterations. The UX, as you point out, never went anywhere. At least now people are getting comfortable with the idea of using a private key, even if no one has yet cracked the problem of crypto UX.

When I say it was implemented, I mean at Netscape around 1999 we had projects with banks where they issued smart cards, used with USB readers, that facilitated SSL client cert auth. Similar to today's FIDO2/U2F. I don't know why these schemes were never widely adopted but it wasn't because the implementation was lacking.

Re: Decentralized Identifiers (DIDs) v1.0 (W3C draft)

#50

Earlier quoted context omitted.

The same as the X.501 PKI we've had for decades.

Good point. How much do the X.501 and DID use cases overlap? I always wondered why X.501 wasn't used for more things.

DID is pretty much the same thing re-packaged in modern buzzwords and encoding.
Post reply on HN