Identità e appartenenza
Non c’è alcun sistema di account in bae. L’identità di un dispositivo è una coppia di chiavi Ed25519 che genera per sé e conserva nel portachiavi del sistema operativo; la chiave pubblica è l’identità. Chi appartiene a una libreria è un insieme di record firmati nella home cloud, verificabili da chiunque li possieda, emessi da nessun server. Il meccanismo è quello di coven; questa pagina mostra come bae lo usa.
Record di appartenenza
Link a questa sezioneOgni proprietario scrive nella home cloud uno stream append-only di voci di appartenenza firmate: questa chiave è stata aggiunta con questo ruolo, questa chiave è stata rimossa. Ogni voce si collega alla precedente, e ogni proprietario firma una testata che dichiara la punta del proprio stream, così un provider che elimina o riordina record viene rilevato invece che creduto. Ciò che la libreria accetta è l’unione di ogni stream verificato dei proprietari.
A ogni pull, l’autore di ogni changeset viene controllato contro questo record: firmato da un membro corrente, con un ruolo che può scrivere. I changeset da dispositivi rimossi, da chiavi mai aggiunte o con firme non valide non si applicano. Il provider conserva i record ma non può falsificarli; solo chi possiede chiavi di proprietario può cambiare l’appartenenza.
Proprietario e Membro leggono e scrivono entrambi la libreria; i proprietari in più approvano e rimuovono dispositivi. Il dispositivo fondatore di bae è un proprietario e ogni dispositivo che approva entra come membro. (Un terzo ruolo esiste nel meccanismo sottostante, un follower di sola lettura, che bae non assegna attualmente.)
La stretta di mano di unione
Link a questa sezioneL’aggiunta di un dispositivo è una sessione di accoppiamento locale con verifica umana esplicita:
- Un proprietario avvia Aggiungi un dispositivo. bae ascolta brevemente sulla rete locale e mostra un codice di accoppiamento. Contiene gli indirizzi del listener, una chiave di sessione temporanea, il nome della libreria, il provider e una scadenza: nessuna chiave di libreria o credenziali di archiviazione durature.
- Il dispositivo che si unisce esegue la scansione del codice, crea la coppia di chiavi del dispositivo, accede al provider quando richiesto e invia la chiave pubblica firmata e l’identità dell’account del provider tramite la connessione locale crittografata. Entrambi i dispositivi mostrano la stessa impronta digitale.
- Il proprietario confronta le impronte digitali e approva l’identità esatta. L’approvazione garantisce l’accesso all’account cloud ove richiesto, firma la voce di adesione e sigilla la chiave della libreria e l’accesso finale all’archiviazione alla chiave pubblica del nuovo dispositivo.
- Il pacco sigillato ritorna attraverso la stessa connessione locale autenticata. Il dispositivo di unione lo apre, esegue il bootstrap dall’archivio cloud e avvia la sincronizzazione.
Un abbinamento scaduto, interrotto o rifiutato non garantisce nulla.
Revoca
Link a questa sezioneRimuovere un membro aggiunge una rimozione firmata e ruota la chiave della libreria a una nuova generazione che la chiave rimossa non riceve mai (vedi Cifratura). Su archiviazione che può revocare l’accesso, viene ritirato anche l’accesso. Ciò che era già sincronizzato sul dispositivo rimosso resta con lui; i dati non possono essere ritirati. Tutto ciò che segue la rotazione è fuori dalla sua portata.
Codici di recupero
Link a questa sezioneUn codice di recupero aggira di proposito l’appartenenza: contiene le coordinate della home cloud più la chiave della libreria, in una stringa bearer, per ripristinare la tua libreria senza un approvatore disponibile. Viene generato su richiesta, conservato automaticamente nel Portachiavi iCloud sulle piattaforme Apple, ed è sensibile esattamente quanto la libreria stessa.