- Una cuenta de Bluesky no está atada a una app específica y puede usarse en varias apps basadas en atproto; los DID (identificadores descentralizados) proporcionan una base de identidad separada de la app
- Un DID tiene el formato
did:<method>:<identifier>, y usa la clave pública y la ubicación del PDS contenidas en el DID Document para verificar la relación entre la cuenta y el autor de una publicación
did:web es un método simple que consulta /.well-known/did.json del dominio, pero es vulnerable a la dependencia de DNS y del registrador, a caídas del servidor web y a retrasos al reflejar cambios del documento
did:plc, creado por Bluesky, separa el ID de un dominio específico y deja la carga operativa en plc.directory, pero requiere confiar en plc.directory en lugar de DNS, y en Bluesky no se pueden usar métodos DID basados en blockchain u otros similares
- Los usuarios pueden registrar claves adicionales, rotar claves y operar su propio PDS para eliminar la clave creada por Bluesky y controlar realmente su identidad por sí mismos, sin imponer a todo el mundo una gestión compleja de claves y dando esa opción a quien la quiera
La cuenta de Bluesky y la identidad basada en DID
- Una “cuenta de Bluesky” no es una cuenta que solo se use en Bluesky, sino una cuenta que puede usarse en varias aplicaciones de ATmosphere
- atproto, el protocolo base de Bluesky y de otras apps, usa DID para representar quién es un usuario y para verificar inicios de sesión o autores de publicaciones
- El DID estandarizado por el W3C en 2022 es un identificador descentralizado que puede usarse como base de identidad en aplicaciones
- La descentralización de los DID consiste en que, en vez de que una sola entidad decida qué tipos de DID son válidos, el usuario puede elegir el método DID con el que verificará su identidad
- Aun así, una aplicación no puede procesar automáticamente todos los métodos DID
- Hay que implementar por separado el código de soporte para cada método
- Si una app no soporta el método
foo, no podrá interpretar did:foo:1243 aunque se le presente
DID y DID Document
- El DID de ejemplo
did:plc:3danwc67lo7obz2fmdg6jxcr está compuesto por tres partes separadas por dos puntos
- Esquema:
did
- Método:
plc
- Identificador específico del método:
3danwc67lo7obz2fmdg6jxcr
- Para usar un DID, hay que resolverlo a un DID Document
- Un DID Document contiene datos como claves públicas criptográficas para que el sujeto del DID o un delegado puedan autenticarse y demostrar su relación con ese DID
- El documento de ejemplo incluye la información necesaria para verificar la identidad
id: el propio DID
alsoKnownAs: at://steveklabnik.com
verificationMethod: tipo Multikey y publicKeyMultibase
service: endpoint de PDS del tipo AtprotoPersonalDataServer
- Cuando una publicación cualquiera afirma haber sido escrita por un usuario específico, se puede usar la información de verificación del documento para comprobar si esa afirmación es verdadera
- El procedimiento para resolver un DID a un documento lo define el estándar de cada método
did:plc sigue el estándar PLC
did:web, otro método soportado por Bluesky, se resuelve con el método Web
Cómo se resuelve did:web
- Muy poca gente usa
did:web, pero su estructura es simple y facilita entender el proceso de resolución de DID
- El
did:web:lizthegrey.com de Liz Fong-Jones se resuelve insertando el identificador específico del método, lizthegrey.com, en la siguiente plantilla de URL
https://<id>/.well-known/did.json
- El DID Document recibido en esa URL contiene la siguiente información
id: did:web:lizthegrey.com
alsoKnownAs: at://web.lizthegrey.com, did:plc:i4tfenpfog244rxry5uz4vtk
verificationMethod: clave pública Multikey para atproto
serviceEndpoint: https://pds.lizthegrey.com
Limitaciones de did:web
did:web depende de DNS y del registrador de dominios
- Si el registrador recupera el dominio, también se pierde el control del DID
- También se puede perder la identidad si el dominio deja de usarse o expira y otra persona lo compra
- Lo mismo ocurre si la cuenta del registrador es hackeada y el dominio es secuestrado
- También hay que mantener en funcionamiento el servidor web que entrega el DID Document; si el servidor cae, el documento deja de poder obtenerse
- Tampoco hay forma de avisar de inmediato a los clientes cuando cambia el DID Document
- Las aplicaciones pueden seguir usando un documento viejo
- Puede haber problemas temporales hasta que vuelvan a obtener el documento más reciente, debido al retraso entre la actualización del documento y su reflejo en la aplicación
Cómo did:plc cambia la forma de mantener la identidad
- Bluesky desarrolló
did:plc para reducir los problemas de did:web
did:plc obtiene el DID Document insertando el DID completo en la siguiente plantilla de URL
https://plc.directory/<did>
- Igual que en
did:web, se consulta una URL, pero la operación y el mantenimiento de la identidad funcionan distinto
- Como el DID no está atado a un dominio específico, se puede dejar expirar
steveklabnik.com y mudarse a steve.klabnik.com manteniendo el mismo DID
plc.directory se encarga del servidor web en lugar del usuario, lo que reduce la carga operativa
- Eso no significa que desaparezca por completo la necesidad de confiar en algo
- En
did:web, hay que confiar en DNS y en el registrador del dominio
- En
did:plc, hay que confiar en que plc.directory no va a quitarte el ID ni será comprometido
- Los usuarios que consideren que ni DNS ni
plc.directory son confiables pueden elegir otros métodos DID que resuelvan nombres mediante blockchain u otros sistemas
- Sin embargo, como Bluesky no soporta esos métodos, no pueden usarse en la aplicación de Bluesky
Problemas de accesibilidad y nuevos métodos DID
- Configurar
did:web directamente exige tareas que son una carga para usuarios no especializados
- Registrar un dominio y pagar por él de forma continua
- Configurar un servidor web y escribir el JSON para el DID Document
- Mantener el servidor funcionando
- Guardar una clave privada y administrarla de forma segura
- Este proceso es mucho más complejo que registrarse en una app web común, y no encaja con el objetivo de Bluesky de hacer que también usuarios no técnicos usen la plataforma
- Si
plc.directory gestiona esas tareas, el usuario no necesita hacer esos pasos por su cuenta
did:webvh amplía did:web para compensar algunas de sus desventajas y ya llegó a la versión 1.0, pero no se entra a comparar sus especificaciones en detalle
Cómo poseer directamente tu identidad en Bluesky
- En la configuración predeterminada, Bluesky genera el par de claves del usuario y puede acceder a la clave privada, así que en cierto sentido puede decirse que Bluesky posee la identidad
did:plc permite registrar pares de claves adicionales y rotar las claves de firma
- Se puede eliminar la clave generada por Bluesky
- Se puede reemplazar por una clave creada directamente por el usuario
- Cambiar la clave por sí solo no separa por completo la identidad de la infraestructura de Bluesky
- El PDS necesita usar la clave del usuario para firmar publicaciones
- Si se usa un PDS administrado por Bluesky, por lo general la clave queda almacenada en la infraestructura de Bluesky
- Para separar la identidad de Bluesky, hay que operar un PDS propio y luego rotar la clave
- La clave queda almacenada en infraestructura controlada por el usuario
- Después de eso, Bluesky ya no puede controlar esa clave
- Aunque la mayoría de los usuarios no elijan operar su propio PDS ni gestionar sus claves, es una propiedad de diseño importante que los usuarios con motivación sí puedan poseer realmente su identidad
- En lugar de obligar a todos los usuarios a administrar sus claves directamente, parece más adecuado permitir que lo haga quien así lo desee
1 comentarios
Comentarios en Lobste.rs
did:plc:, y aun si pertenece a una organización sin fines de lucro, hay que pensar si conviene confiar por completo en una autoridad central.Estoy desarrollando un proyecto que reimplementa Keybase y da soporte a W3C DID y a las credenciales verificables (VC) de W3C. El objetivo es demostrar de forma única pero privada que alguien es humano, y que cada persona tenga una identidad descentralizada bajo su control.
https://foks.pub/
dind, aunque no sé si es una práctica de mi trabajo o la forma común de escribirlo.No es lo mismo que una instancia de Mastodon, y los conceptos de AT y ActivityPub no se corresponden limpiamente uno a uno.
did:webtiene que alojar un servidor.well-knowny los datos además son casi estáticos, ¿por qué no usar DNS directamente, algo que puede leerse de forma parecida a una URL, como un registro TXT, que probablemente se cachee y tenga menos probabilidades de caerse accidentalmente?Siguen existiendo el problema de la dependencia de DNS y el de no poder detectar fácilmente actualizaciones de
did.json, pero si el objetivo es vincular un dominio específico con la identidad de una persona, parece mejor minimizar los componentes y conectarse directamente a la funcionalidad de DNS. Me pregunto si hay alguna razón por la que este enfoque no funcione o sea difícil en la práctica.Aunque la restricción real es un poco más compleja: https://news.ycombinator.com/item?id=38419272
También se pueden encontrar dos propuestas o borradores de
did:dns: https://danubetech.github.io/did-method-dns/ y https://datatracker.ietf.org/doc/html/draft-mayrhofer-did-dns-01