Preveri sam

Ne prosimo te, da nam verjameš. Prosimo te, da to preveriš sam.

Kdor koli z brskalnikom in dvema minutama lahko odpre orodja za razvijalce (F12) in neodvisno preveri dober del tega, kar trdimo v Manifestu. Ni ti treba znati programirati.

Preveri v 2 minutah

V brskalniku pritisni F12. Brez nameščanja česar koli. Brez znanja programiranja.

Trditev Kako preveriti Zavihek
Ni piškotkov nobene vrste Application → Cookies → prazno. Solo2 ne namesti nobenega piškotka. Tvoja seja se ohranja v localStorage, ne v piškotkih. Brez _ga Application
V aplikaciji ni storitev tretjih oseb Network → filtriraj po domeni → le zahtevki na solo2.net Network
Analitika le na predstavitveni strani, ne v aplikaciji Network → v /* Network
Tvoja zgodovina živi v tvojem brskalniku Application → IndexedDB → solo2-vault-{userId} Application
Seznam kontaktov je le lokalen Application → IndexedDB → store pares Application
Brez zunanjih CDN-jev Network → vsi JS/CSS se naložijo z iste domene. Ni cdn.jsdelivr.net Network
Seje največ 24 ur Application → localStorage → solo2_session Application
Lahko vidiš, katero vrsto povezave uporabljaš Na seznamu stikov: poleg vsakega stika, P2P (zelen) ali Ogledalo (oranžen) UI
Umami je brez piškotkov Application → Cookies → ne pojavi se noben piškotek od stats.menzuri.com Application
Tvoj glavni ključ se generira naključno Application → ob registraciji Solo2 generira 24 unikatnih besed. Ne izhajajo iz tvojega gesla — so neodvisen ključ z 256 biti realne entropije Application

Če znaš uporabljati DevTools

Preverjanja, ki zahtevajo tehnično znanje. Če razumeš HTTP, WebRTC in osnovno kriptografijo, lahko potrdiš te trditve.

Trditev Kako preveriti
Sporočila šifrirana E2E Network → zahtevki na /cmd
WebRTC signali šifrirani E2E Network → signalna sporočila potujejo kot šifrirani binarni bloki. Niso berljivi JSON z offer
Glavni ključ neodvisen od gesla Network → prijava prejme wrapped_master_key
Enotno oblazinjenje (padding) v mirror Network → paketi WebSocket/DataChannel imajo fiksno velikost, ko se uporablja ogledalo (TURN). Preveri velikosti v zavihku Network
Geslo zaščiteno (ne potuje v čistopisu) Network → prijava pošlje hash, ne čistega besedila. Ne moreš preveriti, kateri algoritem uporablja strežnik (Argon2id), lahko pa vidiš, da tvoje prvotno geslo nikoli ne zapusti brskalnika
Zahteve za povezovanje potečejo v 3 dneh Ustvari zahtevo, nanjo ne odgovori, po 3 dneh preveri, da je izginila. Zahteva potrpežljivost in dva računa
Push obvestila šifrirana Network → push zahtevki do Service Workerja prispejo šifrirani (standard Web Push). Šifrirana vsebina je vidna v zavihku Network
Neposredna povezava P2P proti ogledalu (TURN) chrome://webrtc-internals/

Tega ne moreš preveriti

Bili bi hinavski, če bi rekli, da je vse preverljivo. Te trditve zahtevajo, da nam zaupaš — ali počakaš, da objavimo kodo.

Trditev Zakaj ni preverljivo
Double Ratchet z rotacijo ključev Kriptografske operacije potekajo znotraj binarija WASM. Uporabnik vidi, da se naloži, ne more pa prebrati, kateri algoritem izvaja
Glavni ključ generiran z realno entropijo (256 bitov) Generiranje uporablja crypto.getRandomValues v brskalniku. Vidiš, da se generira 24 besed, ne moreš pa iz F12 preveriti kakovosti entropije ali varnosti CSPRNG-ja
X25519 + Ed25519 + ChaCha20-Poly1305 Ista težava: kriptografski sklad je znotraj WASM. Krivulj in algoritmov ni mogoče potrditi iz brskalnika
Strežnik ne more prebrati vsebine tvojih sporočil Lahko preveriš, da odjemalec ne pošilja berljivih podatkov. Kaj strežnik počne z metapodatki povezave (IP-ji, časovni žigi), zahteva zaupanje ali revizijo strežnika
Strežnik ne hrani razmerij po povezovanju Zahteva dostop do kode in baze podatkov strežnika
IP-ji se ne beležijo Ne moreš preveriti, kaj strežnik beleži v svojih logih
Ključi rotirajo z vsakim sporočilom Dogaja se znotraj WASM. Vidiš, da se sporočila pošiljajo, ne moreš pa opazovati rotacije ključev
Izbrisani podatki resnično izginejo Izbrišeš lahko iz lokalnega IndexedDB, ne moreš pa preveriti, da strežnik ne zadrži kopij (čeprav Manifest pravi, da jih nikoli ni imel)

Zakaj je WASM prava pregrada

Kriptografska plast Solo2 je prevedena v WebAssembly — binarno obliko, ki jo brskalnik izvaja, vendar je ne moreš brati kot besedilo. To pomeni, da iz F12 ne moreš preveriti, kateri algoritem uporabljamo.

Minificiran JavaScript (ki ga uporabljamo za vmesnik) je sicer povratno prevedljiv: brskalnik ga lahko preoblikuje in struktura kode je berljiva. Je praktična ovira, ne pa prava pregrada. Vendar je WASM, preveden iz Zig-a, temeljne drugačen

Pravimo, da je Double Ratchet z X25519. Lahko nam zaupaš na besedo ali pa počakaš, da objavimo izvorno kodo kriptografske plasti, da jo bo lahko kdor koli revidiral. Delamo na tem.

Kaj počnemo, da bi nam lahko bolj zaupal

1

Objava SHA-256 hashev datotek .wasm

Objavili bomo kriptografski hash vsake datoteke WASM v produkciji. Tako bo kateri koli revizor lahko potrdil, da binarij, ki se izvaja v tvojem brskalniku, natanko ustreza tistemu, ki smo ga mi prevedli.

2

Odprtje kripto plasti kot odprte kode

Objava izvorne kode kriptografske plasti (Zig) kot javno skladišče. Isti model kot Signal: odprt kriptografski protokol, zaprta ostala koda. Kdor koli bo lahko prevedel izvorno kodo in primerjal hash dobljene datoteke .wasm s tisto, ki je v produkciji.

3

Varnost ni odvisna od nejasnosti

Naš varnostni model je zasnovan tako, da deluje, tudi če je izvorna koda javna. Če bi bila varnost odvisna od tega, da nihče ne more brati kode, to ne bi bila varnost — temveč upanje.

4

5 dokumentiranih plasti varnosti

Geslo (dostop do strežnika), 24 besed (dejanski glavni ključ), skrivnost naprave (zaščita lokalnih podatkov) in rotacija Double Ratchet. Vsaka plast je neodvisna in preverljiva v našem Manifestu preglednosti.

Tvoj pogovor je le tvoj.