Criptografia
Tudo que bae coloca em um local na nuvem é criptografado antes de sair do dispositivo; não existe modo sem criptografia. bae não implementa criptografia própria: o esquema inteiro é de coven, e esta página descreve como bae o usa.
As chaves
Seção intitulada “As chaves”| Chave | O que faz |
|---|---|
| A chave do store | criptografa a biblioteca e seus registros de associação |
| A chave de círculo de cada pessoa | criptografa o que essa pessoa mantém privado: seu histórico de reprodução privado e suas playlists privadas |
| A chave de cada arquivo | criptografa um arquivo, e viaja só dentro das mudanças criptografadas da linha dele |
| O par de chaves de assinatura de uma pessoa | assina cada mudança que os dispositivos dela enviam |
| O par de chaves de selagem de uma pessoa | abre chaves seladas para essa pessoa |
A chave do store é aleatória, criada quando a biblioteca ganha seu local na nuvem. Os pares de chaves de uma pessoa são compartilhados por todos os dispositivos dela. Chaves privadas e chaves da biblioteca vivem no chaveiro do sistema operacional, nunca em um arquivo ou no banco de dados. Elas chegam a um dispositivo de duas maneiras, ambas descritas em Identidade e adesão: um código de restauração leva os próprios pares de chaves de uma pessoa, e um administrador que aprova um convite sela as chaves do store para a chave de selagem da pessoa nova.
Rotação
Seção intitulada “Rotação”Uma chave nunca é alterada no lugar; uma nova é adicionada. Depois que uma pessoa é removida, o dispositivo de um membro restante adiciona uma chave do store nova, e uma chave nova para cada círculo de que ela fazia parte, antes de escrever mais dados ali: tudo escrito depois fica ilegível para ela, enquanto os membros restantes mantêm todas as chaves anteriores e conseguem ler todo o histórico. Remover um único dispositivo não rotaciona nada, já que os outros dispositivos da pessoa compartilham as chaves dele; a partir da remoção, o que esse dispositivo envia não conta.
O que é selado
Seção intitulada “O que é selado”Todo objeto no local: mudanças, snapshots, registros de associação e arquivos. O conteúdo é criptografado com XChaCha20-Poly1305, toda mudança é assinada com Ed25519, e as chaves são seladas para as pessoas com caixas seladas X25519. Arquivos são criptografados em blocos de 64 KiB, cada um autenticado separadamente e vinculado à sua posição, então um bloco não pode ser alterado, trocado ou reordenado sem que se perceba. O particionamento em blocos é por isso que streaming funciona: o player pode descriptografar exatamente os blocos que busca.
O que o provedor consegue ver
Seção intitulada “O que o provedor consegue ver”Quantidade de objetos, tamanhos de objetos, tempo de upload, qual conta escreve cada objeto e qual dispositivo enviou cada arquivo e snapshot, já que os caminhos deles nomeiam o dispositivo. Não nomes, não metadados, não áudio, não arte. Arquivos ficam com nomes aleatórios, nunca um hash do conteúdo. Não há recuperação no servidor: se toda pessoa perde todos os dispositivos e todos os códigos de restauração, a biblioteca se perde, que é o desenho funcionando como pretendido.
O chaveiro
Seção intitulada “O chaveiro”Abrir uma biblioteca lê as chaves dela do chaveiro do sistema operacional. Um chaveiro bloqueado naquele momento, por uma sessão bloqueada ou uma tela em repouso, é diferenciado de um quebrado: bae mostra a biblioteca como bloqueada e tenta de novo depois do desbloqueio, em vez de declarar a biblioteca inutilizável. Um dispositivo também pode esquecer a chave, o que bloqueia a biblioteca nesse dispositivo até ela ser desbloqueada de novo.