Naar inhoud springen

Identiteit en lidmaatschap

Er is nergens in bae een accountsysteem. De identiteit van een apparaat is een Ed25519-sleutelpaar dat het zelf genereert en in de OS-sleutelbos bewaart; de publieke sleutel is de identiteit. Wie bij een bibliotheek hoort is een set ondertekende records in de cloud-home, verifieerbaar door iedereen die ze heeft, uitgegeven door geen enkele server. De machine is van coven; deze pagina beschrijft hoe bae hem gebruikt.

Lidmaatschapsrecords

Link naar deze sectie

Elke eigenaar schrijft een append-only stream van ondertekende lidmaatschapsvermeldingen naar de cloud-home: deze sleutel is met deze rol toegevoegd, deze sleutel is verwijderd. Elke vermelding linkt naar de vorige, en elke eigenaar ondertekent een head die de tip van zijn stream verklaart, zodat een provider die records laat vallen of herschikt wordt gedetecteerd in plaats van geloofd. Wat de bibliotheek accepteert is de unie van elke geverifieerde stream van elke eigenaar.

Bij elke pull wordt de auteur van elke changeset tegen dit record gecontroleerd: ondertekend door een huidig lid, met een rol die mag schrijven. Changesets van verwijderde apparaten, van sleutels die nooit zijn toegevoegd, of met ongeldige handtekeningen worden niet toegepast. De provider bewaart de records maar kan ze niet vervalsen; alleen houders van eigenaarssleutels kunnen lidmaatschap wijzigen.

Eigenaar en Lid lezen en schrijven allebei de bibliotheek; eigenaren keuren daarnaast apparaten goed en verwijderen ze. Het eerste apparaat van bae is een eigenaar en elk apparaat dat het goedkeurt treedt toe als lid. (Er bestaat een derde rol in de onderliggende machine, een alleen-lezen-volger, die bae momenteel niet toekent.)

De toetredingshanddruk

Link naar deze sectie

Het toevoegen van een apparaat is één lokale koppelingssessie met expliciete menselijke verificatie:

  1. Een eigenaar start Voeg een apparaat toe. bae luistert kort op het lokale netwerk en toont één koppelingscode. Het bevat de luisteraaradressen, een kortstondige sessiesleutel, de bibliotheeknaam, de provider en een vervaldatum: geen bibliotheeksleutel of permanente opslagreferenties.
  2. Het aangesloten apparaat scant de code, maakt het apparaatsleutelpaar aan, meldt zich indien nodig aan bij de provider en verzendt de ondertekende openbare sleutel en de identiteit van het provideraccount via de gecodeerde lokale verbinding. Beide toestellen tonen dezelfde vingerafdruk.
  3. De eigenaar vergelijkt de vingerafdrukken en keurt de exacte identiteit goed. Goedkeuring verleent waar nodig toegang tot het cloudaccount, ondertekent de lidmaatschapsinschrijving en verzegelt de bibliotheeksleutel en de definitieve opslagtoegang tot de openbare sleutel van het nieuwe apparaat.
  4. Het verzegelde pakket keert terug via dezelfde geauthenticeerde lokale verbinding. Het aangesloten apparaat opent het, start op vanuit de cloudopslag en begint met synchroniseren.

Een verlopen, onderbroken of afgewezen koppeling levert niets op.

Een lid verwijderen voegt een ondertekende verwijdering toe en roteert de bibliotheeksleutel naar een nieuwe generatie die de verwijderde sleutel nooit ontvangt (zie Encryptie). Op opslag die toegang kan intrekken, wordt toegang ook ingetrokken. Wat al naar het verwijderde apparaat was gesynchroniseerd blijft daar; data kan niet worden teruggestuurd. Alles na de rotatie ligt buiten bereik.

Een herstelcode omzeilt lidmaatschap bewust: het zijn de coordinaten van de cloud-home plus de bibliotheeksleutel, in een tekenreeks die toegang geeft, voor het herstellen van je eigen bibliotheek zonder overlevende goedkeurder. Hij wordt op verzoek gegenereerd, automatisch in iCloud Keychain bewaard op Apple-platforms, en is precies zo gevoelig als de bibliotheek zelf.