Wat de server over je weet
Laten we beginnen met de basis. De server van Solo2 weet precies drie dingen over je: je gebruikersnaam, je unieke identificatiecode en een hash van je wachtwoord. Een hash is een onomkeerbare wiskundige transformatie — de server kan verifiëren dat je wachtwoord correct is zonder te weten wat het is. Je echte wachtwoord bestaat alleen in je hoofd en op je apparaat.
En dat is het. De server weet niet met wie je praat. Hij weet niet hoeveel tunnels je hebt. Hij kent de namen van je contacten niet. Die informatie bestaat alleen in je kluis, versleuteld op je apparaat. De server zou het niet kunnen openen, zelfs als hij dat wilde.
De brievenbussen
Stel je een muur met genummerde brievenbussen voor, zoals in een oud postkantoor. Wanneer je app verbinding wil maken met iemand, laat het een briefje achter in een brievenbus met de tekst 'Ik wil praten met gebruiker X'. Meer niet. Er staat niet wie je bent. Er staat niet waarover je wilt praten. Gewoon een briefje in een brievenbus.
Periodiek controleren alle apps die verbonden zijn met Solo2 de brievenbussen om te zien of iemand een briefje voor hen heeft achtergelaten. Het is alsof je even langs het postkantoor gaat en vraagt: 'Is er iets voor mij?'. Als je contact je briefje vindt, vraagt die de server om het IP-adres dat je hebt achtergelaten. De server levert het, en die informatie wordt onmiddellijk uit het geheugen gewist. Het wordt nooit naar een schijf geschreven. Het leeft in het tijdelijke geheugen van de server gedurende de milliseconden die nodig zijn om te antwoorden.
Vanaf dat punt verdwijnt de server
Zodra beide apparaten elkaars adres kennen, praten ze rechtstreeks met elkaar. De server doet niet meer mee. Hij stuurt geen berichten door. Hij slaat ze niet op. Hij weet niet of de verbinding tot stand is gekomen of niet. Hij weet niet hoe lang het duurt. Hij weet niet hoeveel berichten er worden uitgewisseld of hoe groot ze zijn.
Zozeer zelfs dat als de server op dat moment zou uitvallen, de twee gebruikers precies hetzelfde zouden blijven praten. Het gesprek is niet afhankelijk van de server. Het was alleen afhankelijk van de server zodat de twee apparaten elkaar konden vinden. Eenmaal verbonden is de server irrelevant.
Het gesprek is veilig voordat het begint
Wanneer twee mensen een tunnel aanmaken in Solo2, wisselen hun apparaten publieke cryptografische sleutels uit. Vanaf dat moment wordt elk bericht versleuteld met de sleutel van de ontvanger — en alleen de ontvanger kan het ontcijferen. Dit gebeurt voordat enig gesprek begint. De sleutels zijn klaar vanaf het moment dat de tunnel wordt aangemaakt.
Daarom is de communicatie al beschermd wanneer de twee apparaten rechtstreeks verbinden. Ze hoeven niets te onderhandelen. Ze hoeven de server niet om toestemming te vragen. De sleutels zijn van hen, op hun apparaten, en niemand anders heeft ze.
Wat dit in de praktijk betekent
Het betekent dat er geen registratie van je gesprekken op enige server staat. Geen metadata om te analyseren. Geen geschiedenis om te overhandigen aan een gerechtelijk bevel. Geen database om te hacken. De server van Solo2 kan niet overhandigen wat hij niet heeft. En hij heeft niets omdat hij het nooit heeft gehad.
De volgende keer dat iemand je vertelt dat een app 'je berichten end-to-end versleutelt', vraag dan wat er gebeurt met al het andere. Wie weet met wie je praat. Wie weet op welk tijdstip. Wie weet hoe vaak. Als het antwoord is 'onze server, maar we gebruiken het nergens slechts voor' — dat is een belofte. Bij Solo2 is het antwoord anders: niemand weet het. Want er is niemand om het aan te vragen.