Pular para o conteúdo

Identidade e associação

Não existe sistema de contas em lugar nenhum de bae. Cada pessoa de uma biblioteca é um membro de coven: um id de membro aleatório e permanente e dois pares de chaves, um para assinar e outro para o qual chaves são seladas, compartilhados por todos os dispositivos dessa pessoa e guardados no chaveiro do sistema operacional de cada dispositivo. Um dispositivo é uma instalação, com seu próprio id, que pertence a um membro. Quem pertence a uma biblioteca é um conjunto de registros assinados no local na nuvem, conferidos pelo dispositivo de cada membro, emitidos por nenhum servidor. O mecanismo é de coven; esta página mostra como bae o usa.

Todo o histórico de uma biblioteca no local na nuvem é uma sequência numerada, e todo dispositivo a aplica na mesma ordem. Uma mudança de associação ou de ajustes é uma entrada de administração nessa sequência, assinada com a chave do autor e julgada contra o estado imediatamente anterior, então todo dispositivo chega sozinho ao mesmo veredito. Uma entrada só conta se o autor pode fazê-la, e a biblioteca sempre mantém pelo menos um administrador.

Toda mudança que um dispositivo envia é conferida contra esse registro: assinada por um membro atual, a partir de um dispositivo que não foi removido. Mudanças de dispositivos ou membros removidos, de chaves nunca adicionadas ou com assinaturas inválidas não contam. O provedor armazena os registros, mas não consegue falsificá-los.

Administrador e Membro leem e escrevem a biblioteca: coven não confere permissões nas escritas da biblioteca, então uma função somente leitura não se sustentaria. Administradores também convidam e removem pessoas, mudam funções e renomeiam a biblioteca. Quem dá a uma biblioteca seu local na nuvem é o primeiro administrador dela.

AçãoQuem
Convidar uma pessoaum administrador
Adicionar um dispositivoa pessoa, a partir do dispositivo novo, com o código de restauração dela
Remover um dispositivoa pessoa dona dele, ou qualquer administrador
Remover uma pessoaum administrador
Renomear a bibliotecaum administrador

O perfil, as avaliações, o histórico e as playlists de uma pessoa são linhas de proprietário: só os dispositivos dessa pessoa podem alterá-las, então uma avaliação creditada a alguém foi feita por essa pessoa.

Um código de restauração prova que um dispositivo é da pessoa, então não precisa de aprovação:

  1. O dispositivo novo obtém o código lendo o código QR que outro dispositivo da pessoa mostra, pelas Chaves do iCloud em dispositivos Apple, ou digitando-o.
  2. Ele chega ao armazenamento: no Dropbox e no OneDrive entrando na própria conta da pessoa, no S3 com a chave de acesso dela, que o código QR leva ao lado do código.
  3. Ele carrega a biblioteca, confere que as chaves do código pertencem a um membro atual e se registra como dispositivo novo com uma entrada assinada por essas chaves.

Um código cujas chaves foram substituídas desde então falha. Restaurar sempre cria um dispositivo novo; não resgata edições não enviadas de outra instalação.

  1. Um administrador informa a conta do provedor da pessoa e escolhe a função dela. bae compartilha a pasta da biblioteca com essa conta, ou no S3 cria uma chave de acesso para ela, e mostra um convite: um código QR com a localização da biblioteca, o id de membro escolhido para a pessoa, um segredo de uso único e o nome atual da biblioteca. Ele expira um dia depois de criado.
  2. O dispositivo da pessoa o lê, entra na própria conta dela, cria os pares de chaves dela e escreve um pedido de entrada no armazenamento, criptografado com uma chave derivada do segredo do convite e assinado com a chave nova dela.
  3. O dispositivo do administrador, o único que guarda o segredo, mostra o pedido, e o administrador o aprova.
  4. A aprovação sela cada chave do store para a chave de selagem nova da pessoa e depois adiciona a entrada que a admite.
  5. O dispositivo novo abre suas chaves, carrega a biblioteca, se registra e escreve o perfil da pessoa com o nome que ela digitou.

Recusar o convite, ou deixá-lo expirar, retira o acesso ao provedor que ele concedeu.

Remover um dispositivo ou uma pessoa é uma entrada de administração, e o lugar dela na sequência é uma linha no histórico: o que o dispositivo ou a pessoa removidos enviam depois não conta, enquanto o que chegou antes fica. Remover uma pessoa também remove os dispositivos dela e o círculo privado dela, e as chaves que ela tinha são substituídas antes que mais dados sejam escritos (veja Criptografia). Cortar o acesso ao armazenamento é trabalho do provedor: o dispositivo da conta que hospeda a biblioteca deixa de compartilhar a pasta, e no S3 a chave de acesso da pessoa é apagada. O que já foi sincronizado para um dispositivo removido fica com ele; dados não podem ser retirados.

Um código de restauração contém o id de um membro e os pares de chaves privadas atuais dele, o id do store da biblioteca e a localização de armazenamento dela; nunca credenciais de armazenamento, tokens de login ou o nome da biblioteca. Ele é mostrado sob demanda, armazenado automaticamente nas Chaves do iCloud em plataformas Apple, e é tão sensível quanto a própria biblioteca: quem o tiver, com acesso ao armazenamento, é essa pessoa para a biblioteca. Uma pessoa que perde todos os dispositivos e o código pode ser convidada de novo por um administrador para o id de membro existente dela, o que substitui as chaves dela.