Ir al contenido

Cifrado

Todo lo que bae pone en un hogar en la nube se cifra antes de salir del dispositivo; no hay modo sin cifrar. bae no implementa criptografía propia: todo el esquema es de coven, y esta página describe cómo lo usa bae.

ClaveQué hace
La clave de almacéncifra la biblioteca y sus registros de membresía
La clave de círculo de cada personacifra lo que esa persona mantiene privado: su historial de reproducción privado y sus listas privadas
La clave de cada archivocifra un archivo, y viaja solo dentro de los cambios cifrados de su fila
El par de claves de firma de una personafirma cada cambio que envían sus dispositivos
El par de claves de sellado de una personaabre las claves selladas para esa persona

La clave de almacén es aleatoria y se crea cuando la biblioteca obtiene su hogar en la nube. Los pares de claves de una persona los comparten todos sus dispositivos. Las claves privadas y las claves de la biblioteca viven en el llavero del sistema operativo, nunca en un archivo ni en la base de datos. Llegan a un dispositivo de dos maneras, ambas descritas en Identidad y membresía: un código de restauración lleva los propios pares de claves de una persona, y un administrador que aprueba una invitación sella las claves de almacén para la clave de sellado de la persona nueva.

Una clave nunca se cambia en su sitio; se agrega una nueva. Después de eliminar a una persona, el dispositivo de un miembro restante agrega una clave de almacén nueva, y una clave nueva para cada círculo en el que estaba, antes de escribir más datos ahí: todo lo escrito después le resulta ilegible, mientras los miembros restantes conservan cada clave anterior y pueden leer todo el historial. Eliminar un solo dispositivo no rota nada, ya que los otros dispositivos de la persona comparten sus claves; desde la eliminación, lo que envía ese dispositivo no cuenta.

Cada objeto en el hogar: cambios, snapshots, registros de membresía y archivos. El contenido se cifra con XChaCha20-Poly1305, cada cambio se firma con Ed25519, y las claves se sellan para las personas con cajas selladas X25519. Los archivos se cifran en fragmentos de 64 KiB, cada uno autenticado por separado y vinculado a su posición, así que un fragmento no se puede alterar, intercambiar ni reordenar sin que se note. La fragmentación es la razón por la que la transmisión funciona: el reproductor puede descifrar exactamente los fragmentos que trae.

Que puede ver el proveedor

Enlace a esta sección

Conteo de objetos, tamaños de objetos, momento de subida, qué cuenta escribe cada objeto y qué dispositivo subió cada archivo y snapshot, ya que sus rutas nombran el dispositivo. No nombres, no metadatos, no audio, no imágenes. Los archivos están bajo nombres aleatorios, nunca un hash de su contenido. No hay recuperación del lado del servidor: si cada persona pierde cada dispositivo y cada código de restauración, la biblioteca se pierde, que es el diseño funcionando como se pretendía.

Abrir una biblioteca lee sus claves desde el llavero del sistema operativo. Un llavero que está bloqueado en ese momento, por una sesión bloqueada o una pantalla en reposo, se distingue de uno averiado: bae muestra la biblioteca como bloqueada y lo vuelve a intentar tras el desbloqueo, en vez de declarar la biblioteca inutilizable. Un dispositivo también puede olvidar la clave, lo que bloquea la biblioteca en ese dispositivo hasta que se desbloquee de nuevo.