La oss ta det tekniske.
Alt forsiden sier, skrevet ut som det den er bygget av. Den virkelige databasen, hvordan en kontakt faktisk blir til, og hvem andre som er innom en samtale.
Du trenger ikke denne siden for å bruke Rilo, og ingenting her motsier den enklere versjonen. Det er samme produkt, beskrevet nøyaktig.
Hele databasen
Alt serveren vår vet om familien din.
Ikke et sammendrag. Dette er de sytten tabellene serveren har, med kolonnene de har. Fire er familien din, altså hvem de er, hvem som får handle for et barn, telefonene de snakker fra, og hvor de skal ringes. Fire holder på noe for en telefon som var slått av, og alle fire sletter seg selv. Tre handler om hvem som får handle for et barn og hvilken telefon som ikke lenger er til å stole på. To er signerte spor av en slutt, en kontakt som er brutt, eller noen som er borte. De blir liggende slik at en telefon som var uten nett kan kontrollere dem selv i stedet for å tro på oss. Én er oppbrukte engangsnumre, ryddet bort etter hvert som de går ut. Én er abonnementet, og der står ingenting som navngir noen. Én er en rapport en voksen sendte oss, og det er den eneste tabellen her som finnes for å få noe til å skje. Den siste handler ikke om familien din i det hele tatt.
- iden hash av den offentlige nøkkelen, ikke et navn
- public_keyenhetsnøkkelen som er kontoen
- typevoksen eller barn
- type_certsignaturen som beviser det. En barnekonto er signert av en forelder, så det finnes ingen bryter å vippe på
- created_at
- last_activesist en av telefonene dine sa hei
- dormant_warned_attom
- consent_sealede-postadressen du registrerte deg med, forseglet til en nøkkel som ligger på papir hos grunnleggeren. Ingen server kan lese den
- uncovered_sincetom, med mindre abonnementet ditt slutta å dekke dette barnet — da dagen vi merka det, slik at måneden før noko stoppar begynner der
- keyhva som blir husket
- valueog hva det sier
- account_id
- guardian_keyen nøkkel som får handle for dette barnet
- added_at
- removed_at
- account_id
- device_keyén telefons egen nøkkel. En person kan snakke fra mer enn én
- agreement_keynøkkelen en melding forsegles til, slik at bare den telefonen kan åpne den
- certsignaturen som slapp denne telefonen inn, bevart ord for ord slik at telefonen din kan kontrollere den i stedet for å tro på oss
- kinden telefon, eller det utskrevne gjenopprettingsarket
- added_at
- removed_at
- account_id
- device_keyhvilken av telefonene dine denne ringer på
- platformapns eller fcm
- tokenet ugjennomsiktig håndtak fra Apple eller Google
- updated_at
- nonce
- expires_at
- edge_hashen hash av paret, ikke av de to personene
- denied_at
- expires_at
- edge_hashen hash av paret, ikke av de to personene
- grant_recordtillatelsen det avgjøres om, og signaturene som er samlet så langt
- waiting_keyhvem sin signatur som fortsatt mangler
- requested_bytelefonen som spurte, slik at én telefon ikke kan oversvømme en familie med spørsmål
- originskannet ansikt til ansikt, eller en forelder som handler for barnet sitt
- delivered_tohvilke telefoner som allerede har den
- declarednavnet til den som spør, forseglet slik at bare familien de skannet kan lese det
- created_at
- expires_at
- id
- recipient_iddenne må ligge åpent for at meldingen skal finne veien
- recipient_devicehvilken av telefonene deres esken er forseglet for. Hver telefon har sin egen nøkkel, så hver telefon får sin egen eske
- sender_idslik at telefonen vet hvem sin nøkkel som åpner den
- sender_devicehvilken av telefonene deres som forseglet den, slik at rett kopi finner rett lås
- edge_hashparet, hashet, slik at dette ikke kan leses som et kart over hvem som snakker med hvem
- sealedkryptert tekst. Det finnes ingen tekstkolonne, og det kommer det aldri til å gjøre
- sent_at
- expires_at
- edge_hashparet, hashet
- revoked_at
- recorddet signerte beviset, slik at en telefon som var uten nett kan kontrollere bruddet selv i stedet for å ta oss på ordet
- id
- account_idhvem sin liste over telefoner og voksne som endrer seg
- kindkommer til, eller blir fjernet
- subject_keytelefonen eller den voksne det handler om
- subject_kindhvilken av de to
- agreement_keyden andre nøkkelen en telefon trenger, tom for papir
- recordselve signaturen, bevart ord for ord slik at en telefon kan kontrollere den i stedet for å tro på oss
- signed_byhvilken nøkkel som signerte den
- by_authorityom et gjenopprettingsark signerte den, og det er det som får den til å vente
- issued_atøyeblikket den som signerer oppgir, aldri klokken vår
- reasontom, med mindre den som signerte skrev en
- proposed_at
- effective_atnår det blir sant, to netter etter at det ble foreslått
- contested_at
- contested_byhvem som protesterte, og signaturen de protesterte med
- contest_record
- resolved_at
- resolutiongjennomført eller avbrutt, når det først har landet
- change_idhvilken ventende endring
- voter_keyhvilken voksen
- decisionslippe den gjennom, eller stoppe den
- recordsignaturen deres
- at
- account_idhvem sin telefon det var
- device_keynøkkelen som ble stjålet
- revoked_at
- recorddet signerte beviset, slik at en telefon kan kontrollere det uten å spørre oss
- account_idkontoen som er borte
- retired_at
- recorddet signerte beviset, laget med kontoens egen nøkkel før nøkkelen ble ødelagt
- account_id
- storeapple, google, eller på huset
- store_refet ugjennomsiktig håndtak fra butikken. Det er det eneste som lar oss stille den et spørsmål senere
- store_ref_hashet fingeravtrykk av håndtaket over. Det er det som hindrer at én kvittering dekker to kontoer
- environment
- stateactive, grace, lapsed, lapsed_trial eller disabled
- seatshvor mange barn det dekker. Et antall, aldri navnene deres
- expires_at
- acts_at
- updated_at
- device_keytelefonen som ennå ikke har fått det å vite
- change_idhvilken endring dette handler om
- whatforeslått, bestridt eller avgjort
- account_idhvem sin liste over telefoner som endret seg. Når en voksen får høre noe om barnet sitt, er dette barnet
- subject_keytelefonen som kom til eller gikk bort
- effective_at
- created_at
- expires_at
- delivered_atnår vi fikk sagt det, eller tom fordi vi ikke har fått det
- id
- about_keyhvem rapporten handler om. Lesbart, slik at noen kan gjøre noe med den
- reasonhvilke av seks ting som skjedde, slik den voksne som melder valgte det
- csa
- sealeddet som ble skrevet, forseglet på telefonen som sendte det, med en nøkkel som ligger på papir hos grunnleggeren. Ingen server kan lese det
- sealed_digestet fingeravtrykk av den forseglede delen, slik at det som åpnes senere beviselig er det som kom inn
- received_at
- edge_snapshothvem som hadde fått lov til å nå hvem, og hvilken voksen som tillot det, slik det sto i det øyeblikket. Denne kan ikke settes sammen igjen senere
- reporter_keyhvem som sendte den, eller ingenting i det hele tatt når den ble sendt uten navn
- source
- sealed_key
- receiptreferansen avsenderen beholder. Det er den eneste måten vi kan svare noen om en rapport vi ikke kan åpne
- acknowledged_at
- decided_at
- actioned_at
- escalated_at
- decided_by
- outcome
Kolonner som ikke finnes
- e-post
- navn
- alder
- bilde
- meldingstekst
- samtaleinnhold
- samtalehistorikk
- kontaktliste
- posisjon
- enhetsmodell
E-postadressen din kontrolleres én gang når du registrerer deg, og forsegles i samme åndedrag, til en nøkkel som ligger på papir hos grunnleggeren og aldri har vært i nærheten av en server. Loven ber oss om å kunne bevise at en voksen sa ja. Vi kunne ikke lest den tilbake selv om vi ville. Navn og bilder settes på hver telefon og gis rett til den andre telefonen. De kommer aldri til oss, og derfor kan du kalle bestefar “Farfar” uten at vi noen gang får vite det. Vi kunne ikke vist noe av dette til noen om vi ville, og vi kan ikke tvinges til det heller.
Denne delen er generert fra serverens eget skjema, i accounts.ts og roster-changes.ts, de to filene som lager databasen. Skulle de noen gang være uenige, har filene rett og denne siden er en feil.
Kontakter
Hvordan en kontakt faktisk blir til.
Telefonen til noen lager en engangsinvitasjon. Den andre telefonen leser den, skannet fra en skjerm i samme rom eller åpnet fra en lenke den voksne sendte. Å lese den starter introduksjonen og fanger i samme øyeblikk den offentlige nøkkelen til den andre telefonen, slik at begge telefonene fra da av vet nøyaktig hvilken nøkkel som hører til hvem. Det er den biten som gjør det umulig å sitte midt i en samtale senere, også for oss. Ingenting av det kobles sammen før en voksen på den andre siden har sagt ja.
Fortsatt ingen kontakt. En ansvarlig voksen må signere kontakten på sin egen telefon, bak en biometrisk kontroll gjort i det øyeblikket. Det de signerer er det hele. Hvem, med hvem, og i hvilken retning. Signaturen deres er det serveren kontrollerer før den sender noe videre. Serveren har ingen nøkkel som kan signere, så den kan ikke lage en kontakt, og det kan heller ikke den som stjeler databasen.
Når begge telefonene har den ferdige kontakten, slettes raden og kontakten finnes bare på de to enhetene. Å bryte den senere skriver en signert tilbakekalling, og det er det ene sporet som beholdes på ubestemt tid. Det lagres som en hash av paret, så det sier at en kontakt tok slutt uten å si hvem som kjente hvem.
Hvem andre er involvert
Tre selskaper er innom en samtale. Ingen av dem kan høre den.
Seks andre selskaper er innom tjenesten, og alle står i personvernerklæringen. Tre av dem er med på å få en samtale til å ringe, og her står det hva hver av de tre kan og ikke kan se.
-
Apple & Google
Push-varsler, slik at en samtale får en sovende telefon til å ringe. Umulig å komme rundt på begge plattformene. De bærer en ugjennomsiktig kode og ingenting annet. Ingen navn, ingen nummer, ingenting av innholdet.
-
Cloudflare
Omtrent én samtale av seks får ikke koblet de to telefonene direkte, på hotell-Wi-Fi eller på noen mobilnett, og blir sendt via et mellomledd. Mellomleddet sender videre krypterte pakker det ikke kan åpne, men det ser at to anonyme id-er var koblet sammen, når, hvor lenge, og fra hvilke adresser. Det er metadata vi ikke lagrer, men som noen andre har.
-
Oss
Tabellen over. Én liten server i Nederland som presenterer to telefoner for hverandre og deretter går ut av veien.