The thing that is telling to me about DMs is that we *have* federated direct message protocols like XMPP which have been around for ages; if Bluesky wanted to they could have tacked that on pretty quickly, E2EE or not.
-
Christine Lemmer-Webberreplied to Christine Lemmer-Webber last edited by
Before we get there, let's talk about what the DID spec was and what DIDs are. The core DID spec is an *abstract interface* for key management which provides a way of representing keys (and some other metadata) which can be created, retrieved, and updated/rotated.
So far so good...
-
Christine Lemmer-Webberreplied to Christine Lemmer-Webber last edited by
The other requirement you would expect, based on the name, is that Decentralized Identifiers are *actually decentralized*.
When I got involved in DID work, that was actually the expectation of everyone. Then it was loosened. What? Why on earth?!
-
Christine Lemmer-Webberreplied to Christine Lemmer-Webber last edited by
The reason actually stems from the first centralized DID method that Bluesky supports: did:web.
did:web is centralized, and kinda useless. It just works by a regex rewrite of the DID's name to an https URI and then it's retrieved. Anywhere you use did:web, you could have just used an https: URI
-
Christine Lemmer-Webberreplied to Christine Lemmer-Webber last edited by
"Now wait Christine, didn't you say earlier that the web is decentralized and open? So therefore, did:web is decentralized and open"
Yeah but the naming system of the web is CENTRALIZED
We use DNS and ICANN (and then we add another centralization layer with TLS/SSL CAs)!
-
@[email protected] for the record I’m not mad at you!!!!!!
-
Christine Lemmer-Webberreplied to Christine Lemmer-Webber last edited by
Everyone in the DID standards space KNEW that did:web was centralized, so why on earth was a centralized identifier permitted for something named "Decentralized Identifiers"?
The answer is easy. did:web is easy to implement, many DID methods were not.
did:web existed for test suites.
-
Christine Lemmer-Webberreplied to Christine Lemmer-Webber last edited by
I was kind of exiting that particular area of standards when this happened but colleagues will tell you that I, and some others, were deeply upset and troubled by this
"Sure having a nearly no-op DID to pass the test suite is helpful but it shouldn't be labeled as a DID, people will get confused!"
-
Christine Lemmer-Webberreplied to Christine Lemmer-Webber last edited by
Confusion, on its own, is one thing. But the problem is when confusion turns into decentralization-washing.
"This is going to turn into decentralization-washing!"
"It's just to pass the test suite!"
[... time passes ...]
"Actually we like did:web now, it's a DID method everyone can implement!"
-
Christine Lemmer-Webberreplied to Christine Lemmer-Webber last edited by
And of course once the door was open to did:web, the door was open to everything! Decentralization is now no longer a requirement for DIDs. You can make a centralized DID method and call it a "Decentralized Identifier" and you're right because it implements a spec named "Decentralized identifiers"
-
Christine Lemmer-Webberreplied to Christine Lemmer-Webber last edited by
But it's ONLY EXPERTS IN DIDs WHO UNDERSTOOD THIS
Most users hear "Decentralized Identifiers" and they think they know what's being delivered, the distinction between the *spec* being called that and the *mechanism used* being centralized... you have to go digging to find that out
-
Christine Lemmer-Webberreplied to Christine Lemmer-Webber last edited by
So did:web is not only useless, it misleads people about the problem domain entirely, but hey it's now the most broadly deployed DID method in the world, congrats everyone!
Speaking of centralized Decentralized Identifiers, did I mention that did:plc is centralized?
-
Christine Lemmer-Webberreplied to Christine Lemmer-Webber last edited by
For that matter, where did the term did:plc come from? Early versions of "did:plc" documentation called it the "Placeholder" DID method, that's what it stands for, to motivate changing it later
Well the docs no longer say that, it now says "Public Ledger of Credentials"
Good backronymn, but...
-
Christine Lemmer-Webberreplied to Christine Lemmer-Webber last edited by
did:plc is centralized, and that bothers me because once again, users think something is more decentralized than it is, because they're being *told* it's decentralized
The particular way in which did:plc is centralized doesn't bug me too much but once again, few users have read into this
-
Christine Lemmer-Webberreplied to Christine Lemmer-Webber last edited by
If you read the documentation of did:plc, they're actually quite upfront about did:plc's centralization being non-ideal. That's good, I appreciate that. Again, you gotta dig though, and the name misleads (which is, to be fair, the original sin of the DID Working Group)
-
Christine Lemmer-Webberreplied to Christine Lemmer-Webber last edited by
(aside: wow my eyes are getting tired from staring at my monitor while I recap of what was a 24 page blogpost, why do I do this to myself)
-
Christine Lemmer-Webberreplied to Christine Lemmer-Webber last edited by
Aside from being irritated about the name misleading, I don't mind the centralization of did:plc too much (other things, I am more concerned about, we'll get there)
There's one organization that can be queried via their API that keeps a definitive list of certificate and their updates
-
Christine Lemmer-Webberreplied to Christine Lemmer-Webber last edited by
In theory, once a DID is registered with Bluesky, it cannot be altered by Bluesky, because a cryptographic update from the original key is necessary; it's a certificate chain, a good design
Bluesky can refuse to share did:plc documents or their updates, but it can't manufacture updates
-
Christine Lemmer-Webberreplied to Christine Lemmer-Webber last edited by
This is pretty good tbh, it lowers the stakes a lot to have certificate chains
I love certificate chains, certificate chains are great
Honestly, having a centralized registry for them, it's not the best but it's not the worst (aside from that damn naming thing)
However...
-
Christine Lemmer-Webberreplied to Christine Lemmer-Webber last edited by
There are some strange, strange things about did:plc that heightens the centralization concerns and, well
I'm not a cryptographer, but some of my good friends are cryptographers, etc etc. I got some... reactions to what is to follow
-
Christine Lemmer-Webberreplied to Christine Lemmer-Webber last edited by
The first strange thing to me is that did:plc uses sha256 and, AFAICT, not sha256d (which is really just running sha256 again over the hash). Unless I am missing something? Am I wrong?
Maybe it's not a concern because of doc parsing but it's best practice to protect against length extension attacks