Preverite v 2 minutah
V brskalniku pritisnite 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. Vaša 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 |
| Vaša zgodovina živi v vašem 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 |
| Vidite lahko, katero vrsto povezave uporabljate | V vmesniku klepeta: indikator P2P (zelen) proti Mirror/TURN (oranžen) viden v vsakem trenutku | UI |
| Umami je brez piškotkov | Application → Cookies → ne pojavi se noben piškotek od stats.menzuri.com |
Application |
| Vaš glavni ključ se generira naključno | Application → ob registraciji Solo2 generira 24 unikatnih besed. Ne izhajajo iz vašega gesla — so neodvisen ključ z 256 biti realne entropije | Application |
Če znate uporabljati DevTools
Preverjanja, ki zahtevajo tehnično znanje. Če razumete HTTP, WebRTC in osnovno kriptografijo, lahko potrdite 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 relay. Preverite velikosti v zavihku Network |
| Geslo zaščiteno (ne potuje v čistopisu) | Network → prijava pošlje hash, ne čistega besedila. Ne morete preveriti, kateri algoritem uporablja strežnik (Argon2id), lahko pa vidite, da vaše prvotno geslo nikoli ne zapusti brskalnika |
| Zahteve za povezovanje potečejo v 3 dneh | Ustvarite zahtevo, nanjo ne odgovorite, po 3 dneh preverite, 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 relay | chrome://webrtc-internals/ |
Tega ne morete preveriti
Bili bi hinavski, če bi rekli, da je vse preverljivo. Te trditve zahtevajo, da nam zaupate — ali počakate, 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. Vidite, da se generira 24 besed, ne morete 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 je "popolnoma slep" | Lahko preverite, 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 morete preveriti, kaj strežnik beleži v svojih logih |
| Ključi rotirajo z vsakim sporočilom | Dogaja se znotraj WASM. Vidite, da se sporočila pošiljajo, ne morete pa opazovati rotacije ključev |
| Izbrisani podatki resnično izginejo | Izbrišete lahko iz lokalnega IndexedDB, ne morete 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 morete brati kot besedilo. To pomeni, da iz F12 ne morete 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 verjamete na besedo ali pa počakate, da objavimo izvorno kodo kriptografske plasti, da jo bo lahko kdor koli revidiral. Delamo na tem.
Kaj počnemo, da bi nam lahko bolj zaupali
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 vašem brskalniku, natanko ustreza tistemu, ki smo ga mi prevedli.
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.
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.
5 dokumentiranih plasti varnosti
Geslo (dostop do strežnika), 24 besed (dejanski glavni ključ), skrivnost naprave (zaščita shrambe) in rotacija Double Ratchet. Vsaka plast je neodvisna in preverljiva v našem Manifestu preglednosti.