- Contas do Bluesky não ficam presas a um app específico e podem ser usadas em vários apps baseados em atproto; DIDs (identificadores descentralizados) fornecem uma base de verificação de identidade separada dos apps
- Um DID tem o formato
did:<method>:<identifier> e usa a chave pública e a localização do PDS contidas no DID Document para verificar a associação entre o autor de uma publicação e a conta
did:web é uma abordagem simples que consulta /.well-known/did.json de um domínio, mas é vulnerável à dependência de DNS e registradores, à interrupção do servidor web e a atrasos na propagação de alterações no documento
- O
did:plc, criado pelo Bluesky, separa o ID de um domínio específico e transfere a carga operacional para o plc.directory, mas, em vez do DNS, exige confiar no plc.directory; no Bluesky, não é possível usar métodos de DID baseados em blockchain, entre outros
- Usuários podem registrar chaves adicionais, fazer rotação de chaves e operar seu próprio PDS para remover chaves criadas pelo Bluesky e controlar de fato a própria identidade, oferecendo essa opção a quem quiser sem impor a todos um gerenciamento complexo de chaves
Contas do Bluesky e identidade baseada em DID
- Uma “conta do Bluesky” não é uma conta usada apenas no Bluesky, mas uma conta que pode ser usada em várias aplicações da ATmosphere
- O atproto, protocolo-base do Bluesky e de outros apps, usa DID para representar quem é o usuário e para verificar logins ou autores de publicações
- DID, padronizado pelo W3C em 2022, é um identificador descentralizado que pode ser usado como base de identidade em aplicações
- A descentralização do DID está no fato de que, em vez de uma única entidade decidir quais tipos de DID são válidos, o usuário pode escolher o método DID para verificar sua própria identidade
- No entanto, aplicações não conseguem processar automaticamente todos os métodos DID
- É preciso implementar código de suporte separadamente para cada método
- Se um app não suporta o método
foo, ele não conseguirá interpretar did:foo:1243 mesmo que esse DID seja apresentado
DID e DID Document
- O DID de exemplo
did:plc:3danwc67lo7obz2fmdg6jxcr é composto por três partes separadas por dois-pontos
- Esquema:
did
- Método:
plc
- Identificador específico do método:
3danwc67lo7obz2fmdg6jxcr
- Para usar um DID, é preciso resolvê-lo para um DID Document
- Um DID Document contém dados como chaves públicas criptográficas para que o sujeito do DID ou um delegado possa se autenticar e provar sua associação com aquele DID
- O documento de exemplo inclui as informações necessárias para a verificação de identidade
id: o próprio DID
alsoKnownAs: at://steveklabnik.com
verificationMethod: tipo Multikey e publicKeyMultibase
service: endpoint de PDS do tipo AtprotoPersonalDataServer
- Quando uma publicação qualquer afirma ter sido escrita por um determinado usuário, é possível verificar a veracidade dessa afirmação usando as informações de verificação do documento
- O procedimento para resolver um DID em um documento é definido pelo padrão de cada método
did:plc segue o padrão PLC
- Outro método suportado pelo Bluesky,
did:web, é resolvido pelo método Web
Como did:web é resolvido
- Pouquíssimas pessoas usam
did:web, mas sua estrutura simples facilita entender o processo de resolução de DID
- O
did:web:lizthegrey.com de Liz Fong-Jones é resolvido inserindo o identificador específico do método, lizthegrey.com, no seguinte template de URL
https://<id>/.well-known/did.json
- O DID Document recebido nessa URL contém as seguintes informações
id: did:web:lizthegrey.com
alsoKnownAs: at://web.lizthegrey.com, did:plc:i4tfenpfog244rxry5uz4vtk
verificationMethod: chave pública Multikey para atproto
serviceEndpoint: https://pds.lizthegrey.com
Limitações do did:web
did:web depende de DNS e registradores de domínio
- Se o registrador tomar de volta o domínio, o controle sobre o DID também é perdido
- Se o domínio deixar de ser usado ou expirar e outra pessoa o comprar, a identidade também pode ser perdida
- O mesmo vale caso a conta no registrador seja hackeada e o domínio seja sequestrado
- É preciso manter em execução o servidor web que fornece o DID Document; se o servidor sair do ar, o documento também não poderá ser obtido
- Também não há uma forma de avisar imediatamente os clientes de que o DID Document mudou
- A aplicação pode continuar usando um documento antigo
- O atraso entre a atualização do documento e sua adoção pela aplicação pode causar problemas temporários até que o documento mais recente seja buscado novamente
Como did:plc muda a manutenção da identidade
- O Bluesky desenvolveu
did:plc para reduzir os problemas do did:web
did:plc busca o DID Document inserindo o DID completo no seguinte template de URL
https://plc.directory/<did>
- O fato de consultar uma URL é igual ao
did:web, mas o modo de operação e de manutenção da identidade é diferente
- Como o DID não fica preso a um domínio específico, é possível deixar
steveklabnik.com expirar e migrar para steve.klabnik.com mantendo o mesmo DID
- A operação do servidor web fica a cargo do
plc.directory em vez do usuário, reduzindo a carga operacional
- Isso não significa que o alvo de confiança desapareça
- Em
did:web, é preciso confiar no DNS e no registrador de domínio
- Em
did:plc, é preciso confiar que o plc.directory não tomará o ID nem será comprometido
- Usuários que consideram tanto o DNS quanto o
plc.directory não confiáveis podem escolher outros métodos DID que resolvem nomes por blockchain, por exemplo
- Porém, como o Bluesky não suporta esses métodos, eles não podem ser usados nas aplicações do Bluesky
Problema de acessibilidade e novos métodos DID
- Configurar
did:web diretamente exige tarefas pesadas para usuários não especialistas
- Registrar um domínio e continuar pagando por ele
- Configurar um servidor web e escrever o JSON para o DID Document
- Manter o servidor em funcionamento
- Armazenar e gerenciar a chave privada com segurança
- Esse processo é muito mais complexo do que se cadastrar em um app web comum e não combina com o objetivo do Bluesky de permitir que usuários não especialistas também usem a plataforma
- Se o
plc.directory gerencia as tarefas relacionadas, o usuário não precisa executar essas etapas diretamente
did:webvh é uma abordagem que estende did:web para corrigir algumas de suas desvantagens e chegou à versão 1.0, mas a comparação não inclui os detalhes específicos da especificação
Como possuir diretamente sua identidade no Bluesky
- Na configuração padrão, o Bluesky gera o par de chaves do usuário e pode acessar a chave secreta, então, em certo sentido, é possível dizer que o Bluesky possui a identidade
did:plc permite registrar pares de chaves adicionais no ID e fazer rotação da chave de assinatura
- É possível remover a chave gerada pelo Bluesky
- É possível substituí-la por uma chave criada pelo próprio usuário
- Trocar a chave por si só não separa totalmente o usuário da infraestrutura do Bluesky
- Para o PDS assinar publicações, ele precisa usar a chave do usuário
- Ao usar um PDS gerenciado pelo Bluesky, em geral a chave fica armazenada na infraestrutura do Bluesky
- Para separar a identidade do Bluesky, é preciso operar um PDS próprio e depois fazer a rotação da chave
- A chave passa a ficar armazenada na infraestrutura pertencente ao usuário
- Depois disso, o Bluesky não controla essa chave
- Mesmo que a maioria dos usuários não escolha operar um PDS próprio nem gerenciar chaves, o fato de usuários motivados poderem possuir de fato sua identidade é uma propriedade de design importante
- Em vez de obrigar todos os usuários a gerenciar chaves diretamente, permitir que usuários interessados escolham essa opção é o caminho adequado para a maioria
1 comentários
Opiniões no Lobste.rs
did:plc:, e mesmo sendo de propriedade de uma organização sem fins lucrativos, ainda vale refletir se devemos confiar completamente em uma autoridade centralEstou desenvolvendo um projeto que reimplementa o Keybase com suporte a W3C DID e W3C Verifiable Credentials (VC). O objetivo é permitir provar, de forma única e privada, que você é humano, e ter uma identidade descentralizada sob seu próprio controle
https://foks.pub/
dind, mas não sei se é um costume do meu trabalho ou uma notação mais geralnão é a mesma coisa que uma instância do Mastodon, e os conceitos de AT e ActivityPub não correspondem de forma limpa em uma relação de um para um
did:webexige hospedar um servidor.well-knowne os dados são quase estáticos, por que não usar DNS diretamente, de uma forma parecida com registros TXT, legível como URL, com alta chance de cache e menor risco de interrupção acidental?Ainda restam problemas como a dependência de DNS e a dificuldade de detectar facilmente atualizações em
did.json, mas se o objetivo é vincular um domínio específico à identidade de uma pessoa, parece melhor minimizar os componentes e se conectar diretamente à funcionalidade do DNS. Fico curioso se existe algum motivo pelo qual essa abordagem não funciona ou é difícil na práticamas a limitação real é um pouco mais complexa: https://news.ycombinator.com/item?id=38419272
Também encontrei duas propostas ou rascunhos de
did:dns: https://danubetech.github.io/did-method-dns/ e https://datatracker.ietf.org/doc/html/draft-mayrhofer-did-dns-01