Patikrink pats

Nepasitikėk niekuo. Patikrink pats.

Solo2 yra žiniatinklio programėlė. Tai reiškia, kad tavo naršyklė jau turi visus įrankius, reikalingus patikrinti, ką darome. Paspausk F12 ir spręsk pats.

Patikrink per 2 minutes

Paspausk F12 naršyklėje. Nieko neįdiegiant. Nemokant programuoti.

Teiginys Kaip patikrinti Skirtukas
Jokių slapukų jokios rūšies Application → Cookies → tuščia. Solo2 neįdiegia jokių slapukų. Tavo sesija palaikoma localStorage, ne slapukuose. Be _ga Application
Programėlėje nėra trečiųjų šalių paslaugų Network → filtruoti pagal domeną → tik užklausos į solo2.net. Nėra Google, Facebook, Cloudflare ar kitų. Network
Analitika tik pristatymo puslapyje, ne programėlėje Network → /* matysite užklausas į stats.menzuri.com. Programėlėje (/app/*), jokių. Network
Tavo istorija saugoma tavo naršyklėje Application → IndexedDB → solo2-vault-{userId}. Tavo šifruoti duomenys yra čia, ne serveryje. Application
Kontaktų sąrašas tik vietinis Application → IndexedDB → store pares. Egzistuoja tik tavo naršyklėje. Application
Be išorinių CDN Network → visi JS/CSS įkeliami iš to paties domeno. Nėra cdn.jsdelivr.net, unpkg.com ar panašių. Network
Sesijos iki 24 val. Application → localStorage → solo2_session. Tokenas turi patikrinamą galiojimo laiką. Application
Gali matyti, kokį ryšio tipą naudoji Pokalbio UI: P2P indikatorius (žalias) vs Mirror/TURN (oranžinis) visada matomas UI
Umami neturi slapukų Application → Cookies → nerodomas joks stats.menzuri.com slapukas. Umami nenaudoja slapukų. Application
Tavo pagrindinis raktas sukuriamas atsitiktinai Application → registruojantis, Solo2 sugeneruoja 24 unikalius žodžius. Jie neišvedami iš tavo slaptažodžio — tai nepriklausomas raktas su 256 bitais tikros entropijos Application

Jei moki naudoti DevTools

Patikrinimai, reikalaujantys techninių žinių. Jei supranti HTTP, WebRTC ir bazinę kriptografiją, gali patvirtinti šiuos teiginius.

Teiginys Kaip patikrinti
E2E šifruotos žinutės Network → užklausos į /cmd turi šifruotus duomenis (base64/binary). Nėra skaitomo JSON su paprastu tekstu.
E2E šifruoti WebRTC signalai Network → signalizacijos žinutės keliauja kaip šifruoti dvejetainiai blob'ai. Tai nėra skaitomas JSON su offer/answer paprastu tekstu.
Pagrindinis raktas nepriklausomas nuo slaptažodžio Network → prisijungimas gauna užšifruotą wrapped_master_key
Vienodas padding mirror režime Network → WebSocket/DataChannel paketai turi fiksuotą dydį naudojant relay. Patikrink dydžius Network skirtuke
Slaptažodis apsaugotas (nekeliauja paprastu tekstu) Network → prisijungimas siunčia hash, ne paprastą tekstą. Negali patikrinti serverio algoritmo (Argon2id), bet gali matyti, kad tavo originalus slaptažodis niekada nesiunčiamas.
Susiejimo užklausos baigia galioti po 3 dienų Sukurk užklausą, neatsakyk, patikrink po 3 dienų, kad dingo. Reikia kantrybės, bet tai patikrinama.
Šifruoti push pranešimai Network → push užklausos į Service Worker ateina šifruotos (Web Push standartas). Šifruotą turinį matai Network skirtuke
Tiesioginė P2P jungtis vs relay chrome://webrtc-internals/ → patikrink ICE kandidatus. Jei matai typ srflx arba typ relay, žinai, ar ryšys tiesioginis, ar persiųstas.

To patikrinti negali

Būtume veidmainiai, jei sakytume, kad viską galima patikrinti. Šie teiginiai reikalauja pasitikėjimo — arba išorinio audito.

Teiginys Kodėl negalima patikrinti
Double Ratchet su raktų rotacija Kriptografinės operacijos vyksta WASM binaro viduje. Vartotojas mato, kad jis įkeliamas, bet negali perskaityti, kokį algoritmą vykdo
Pagrindinis raktas sukuriamas su tikra entropija (256 bitai) Generavimas naudoja crypto.getRandomValues naršyklėje. Gali matyti, kad sugeneruojami 24 žodžiai, tačiau negali iš F12 patikrinti entropijos kokybės nei to, kad CSPRNG yra saugus
X25519 + Ed25519 + ChaCha20-Poly1305 Ta pati problema: kriptografinis stekas yra WASM viduje. Kreivių nei algoritmų negalima patvirtinti iš naršyklės
Serveris yra „visiškai aklas" Gali patikrinti, kad klientas nesiunčia skaitomų duomenų. Ką serveris daro su prisijungimo metaduomenimis (IP, laiko žymės) reikalauja pasitikėjimo arba audito
Serveris nesaugo ryšių po susiejimo Reikia prieigos prie serverio kodo ir duomenų bazės
IP adresai neregistruojami Negali patikrinti, ką serveris registruoja savo žurnaluose
Raktai keičiasi su kiekviena žinute Vyksta WASM viduje. Matai, kad žinutės siunčiamos, bet negali stebėti raktų rotacijos
Ištrinti duomenys tikrai dingsta Gali ištrinti iš vietinio IndexedDB, bet negali patikrinti, ar serveris nelaiko kopijų (nors Manifestas teigia, kad jų niekada neturėjo)

Kodėl WASM yra tikra kliūtis

Solo2 kriptografinė sluoksnis sukompiliuota į WebAssembly — dvejetainį formatą, kurį tavo naršyklė vykdo, bet negali skaityti kaip teksto. Tai reiškia, kad negali tiesiogiai audituoti kodo, kuris šifruoja tavo žinutes.

Suglaudintas JavaScript (kurį naudojame sąsajai) yra atvirkštinis: naršyklė gali jį performatuoti ir kodo struktūra yra skaitoma. Tai varginantis procesas, bet įmanomas. WASM — ne: tai nepermatomas binaras.

Sakome, kad tai Double Ratchet su X25519. Gali pasitikėti mūsų žodžiu arba palaukti, kol paskelbsime kriptografinės sluoksnies pirminį kodą, kad galėtum pats patikrinti.

Ką darome, kad galėtum labiau pasitikėti

1

Publikuoti .wasm SHA-256 hash'us

Paskelbsime kiekvieno WASM failo kriptografinį hash'ą produkcijoje. Taip bet kuris auditorius galės patikrinti, kad naršyklėje vykdomas binaras sutampa su tuo, kurį mes sukompiliavome.

2

Atverti kriptografinę sluoksnį kaip atvirąjį kodą

Paskelbti kriptografinės sluoksnies (Zig) pirminį kodą kaip viešą saugyklą. Tas pats modelis kaip Signal: atviras kriptografinis protokolas, likusi programėlės dalis privati.

3

Saugumas nepriklauso nuo slaptumo

Mūsų saugumo modelis sukurtas veikti net jei kodas būtų viešas. Nepriklausome nuo to, kad niekas nematytų, kaip veikia — priklausome nuo kriptografijos patikimumo.

4

5 documented security layers

Slaptažodis (prieiga prie serverio), 24 žodžiai (tikrasis pagrindinis raktas), įrenginio paslaptis (saugyklos apsauga) ir Double Ratchet rotacija. Kiekvienas sluoksnis yra nepriklausomas ir patikrinamas mūsų Skaidrumo Manifeste.

Solo2 — Tavo pokalbis yra tik tavo.