Identidade e associação
Não existe sistema de contas em lugar nenhum de bae. A identidade de um dispositivo é um par de chaves Ed25519 que ele gera para si e guarda no chaveiro do sistema operacional; a chave pública é a identidade. Quem pertence a uma biblioteca é um conjunto de registros assinados no local na nuvem, verificável por qualquer pessoa que os tenha, emitido por nenhum servidor. O mecanismo é de coven; esta página mostra como bae o usa.
Registros de associação
Seção intitulada “Registros de associação”Cada proprietário escreve um fluxo somente de acréscimo de entradas de associação assinadas no local na nuvem: esta chave foi adicionada com esta função, esta chave foi removida. Cada entrada se vincula à anterior, e cada proprietário assina uma cabeça declarando a ponta do seu fluxo, então um provedor que descarta ou reordena registros é detectado em vez de ser acreditado. O que a biblioteca aceita é a união de todo fluxo verificado de proprietário.
Em cada pull, o autor de cada changeset é conferido contra esse registro: assinado por um membro atual, com uma função que pode escrever. Changesets de dispositivos removidos, de chaves nunca adicionadas ou com assinaturas inválidas não se aplicam. O provedor armazena os registros, mas não consegue falsificá-los; só titulares de chaves de proprietário podem alterar associação.
Funções
Seção intitulada “Funções”Owner e Member leem e escrevem a biblioteca; proprietários também aprovam e removem dispositivos. O dispositivo fundador de bae é um proprietário, e todo dispositivo que ele aprova entra como membro. (Uma terceira função existe no mecanismo subjacente, um seguidor somente leitura, que bae não atribui atualmente.)
O aperto de mão de entrada
Seção intitulada “O aperto de mão de entrada”Adicionar um dispositivo é uma sessão de emparelhamento local com verificação humana explícita:
- Um proprietário inicia Adicionar um dispositivo. bae escuta brevemente na rede local e mostra um código de emparelhamento. Ele contém os endereços do ouvinte, uma chave de sessão efêmera, o nome da biblioteca, o provedor e uma expiração – nenhuma chave de biblioteca ou credenciais de armazenamento duradouras.
- O dispositivo associado verifica o código, cria seu par de chaves de dispositivo, acessa o provedor quando necessário e envia sua chave pública assinada e a identidade da conta do provedor por meio da conexão local criptografada. Ambos os dispositivos mostram a mesma impressão digital.
- O proprietário compara as impressões digitais e aprova a identidade exata. A aprovação concede acesso à sua conta na nuvem quando necessário, assina a entrada de membro e sela a chave da biblioteca e o acesso final ao armazenamento à chave pública do novo dispositivo.
- O pacote lacrado retorna pela mesma conexão local autenticada. O dispositivo de adesão o abre, inicializa a partir do armazenamento em nuvem e inicia a sincronização.
Um emparelhamento expirado, interrompido ou rejeitado não concede nada.
Revogação
Seção intitulada “Revogação”Remover um membro anexa uma remoção assinada e rotaciona a chave da biblioteca para uma nova geração que a chave removida nunca recebe (veja Criptografia). Em armazenamento que consegue revogar acesso, o acesso também é retirado. O que já foi sincronizado para o dispositivo removido fica com ele; dados não podem ser retirados. Tudo depois da rotação fica fora do alcance dele.
Códigos de recuperação
Seção intitulada “Códigos de recuperação”Um código de recuperação contorna a associação de propósito: ele é as coordenadas do local na nuvem mais a chave da biblioteca, em uma string bearer, para restaurar sua própria biblioteca sem aprovador sobrevivente. Ele é gerado sob demanda, armazenado automaticamente no iCloud Keychain em plataformas Apple, e é tão sensível quanto a própria biblioteca.