Temeljno načelo
Solo2 stvara privatni tunel između dvoje ljudi. Izravan. Bez posrednika.
Naš poslužitelj radi samo jednu stvar: upoznaje dva kraja tunela da bi se pronašli. Za to mu treba apsolutni minimum — identifikatori dvaju parova — koje drži u RAM memoriji samo tijekom milisekundi koliko traje upoznavanje. U trenutku kad su se dva uređaja pronašla, ti se podaci brišu iz memorije. Nikada, ni u jednom trenutku, nisu zapisani na disk.
Jednom kad ste povezani, poslužitelj nestaje. Ne sudjeluje u razgovoru. Ne vidi ga. Ne pohranjuje ga. Ne zna koliko traje, koliko često razgovarate, niti o čemu razgovarate.
Ne tražimo da nam vjerujete. Tražimo da sami provjerite:
Test 1 — Poslužitelj je suvišan.
Jednom kad je izravan tunel uspostavljen, naš poslužitelj više ne sudjeluje. Da je pao u tom trenutku, vaš bi razgovor nastavio bez prekida. Dok su vaši uređaji uključeni i spojeni na internet, tunel je vaš. Nas više nema.
Test 2 — Pošaljite datoteku od 10 gigabajta.
Neće samo biti brzo — naš poslužitelj uopće ne mari. Pokušajte 24 sata neprekidno slati datoteke od 10 gigabajta ili više. Naš poslužitelj neće ni primijetiti jer ne sudjeluje. Pokušajte to s bilo kojom drugom uslugom za poruke.
Test 3 — Pričajte o teleskopima.
Provedite popodne razgovarajući s nekim o teleskopima, ili štapovima za pecanje, ili bilo čemu što nikad niste tražili na internetu. Pričekajte par dana. Reklame za teleskope neće se pojaviti nigdje. Vaše riječi nisu napustile vaš tunel.
Vaši podaci, vaša odgovornost.
Ovo je naša najveća vrlina i, budimo iskreni, ono na što ćete se najteže naviknuti. Vaše poruke, datoteke i kontakti žive u šifriranom trezoru na vašem uređaju. Nema kopije na nijednom poslužitelju. Zaštićeni su s 24 riječi — ista razina sigurnosti kao Bitcoin. Ali su na samo jednom mjestu, osim ako ne instalirate Solo2 na drugi uređaj — oba trezora će se automatski sinkronizirati kad budu povezani istovremeno. Možete i izvesti šifriranu sigurnosnu kopiju. Ovdje nema oblaka koji bi vas spasio ako izgubite jedini uređaj. Vaši podaci su vaši, sa svim posljedicama.
Detaljno
Poslužitelj Solo2 je potpuno slijep. Ne zna s kim razgovaraš, što govoriš, niti koje datoteke dijeliš. Čak ni tehnički signali koji uspostavljaju vezu između uređaja nisu čitljivi za poslužitelj — putuju šifrirani od kraja do kraja.
Tvoje poruke putuju izravno između uređaja, šifrirane od kraja do kraja. Tvoja povijest razgovora živi šifrirana u tvom pregledniku, nikada na našem poslužitelju.
Ključevi šifriranja automatski se rotiraju sa svakom porukom. Svaka poruka šifrirana je jedinstvenim ključem koji se odmah nakon toga odbacuje. To se tehnički naziva Double Ratchet, i znači da čak i ako bi netko dobio ključ, mogao bi pročitati samo jednu poruku — ne cijeli razgovor. Osim toga, sigurnost se automatski obnavlja nakon svakog kruga komunikacije: kompromitirani ključ postaje beskoristan čim se razmijeni sljedeća poruka.
Kada izravna veza između uređaja nije moguća (na primjer, zbog mrežnih ograničenja), koristi se zrcalni poslužitelj (tehnički nazvan TURN): podaci se odbijaju s jednog uređaja na drugi, ali zrcalo nije svjesno onoga što odbija — sve putuje šifrirano od kraja do kraja i poslužitelj to ne može pročitati. Osim toga, svi paketi dopunjeni su na jednoličnu veličinu kako bi se spriječilo da promatrač može zaključiti informacije analizom veličine ili učestalosti prometa.
U aplikaciji uvijek možeš vidjeti koju vrstu veze koristiš — izravnu ili putem zrcalnog poslužitelja — i postupiti u skladu s tim.
Tvoj glavni ključ se generira nasumično s 256 bitova stvarne entropije — ista razina kao Bitcoin. Pri kreiranju računa, Solo2 generira jedinstveni ključ koji se prikazuje kao 24 riječi. Tvoja lozinka štiti pristup usluzi. Tvojih 24 riječi su ključ tvojih podataka. To su dva različita ključa za dvoja različita vrata.
Čak i ako naš server nestane, tvoji podaci preživljavaju. Sa svojih 24 riječi možeš pristupiti svom lokalnom sefu bez veze sa serverom. Tvoji podaci su tvoji — stvarno.
1. Podaci koje IMAMO na poslužitelju
1.1 Tvoj korisnički račun
Ovo su sva polja koja postoje u tvom zapisu. Nema nikakvih drugih.
| Podatak | Zašto | Zaštita | Trajanje |
|---|---|---|---|
| Korisničko ime | Kako bi se mogao prijaviti | Čisti tekst (javno je po dizajnu) | Dok ne izbrišeš svoj račun |
| Lozinka | Autentifikacija | Zaštićena algoritmom Argon2id (preporučenim od OWASP, otpornim na napade sa specijaliziranim hardverom). Nikada ne pohranjujemo tvoju stvarnu lozinku | Dok ne izbrišeš svoj račun |
| Javno ime | Kako bi te tvoji kontakti prepoznali | Čisti tekst (biraš ga sam) | Dok ga ne promijeniš ili izbrišeš račun |
| Kod povezivanja | Tvoja adresa unutar Solo2 — poput telefonskog broja. To je ono što dijeliš s nekim kako bi te pronašao i poslao zahtjev za povezivanje | Čisti tekst, jedinstven (~10 znakova) | Dok ne izbrišeš svoj račun |
| Financijski saldo | Novac koji si dodao na svoj račun | Broj (u centima) | Dok ne izbrišeš svoj račun |
| Bonus saldo | Primljeni bonusi (promocije). Troše se prije novčanog salda | Broj (u centima) | Dok ne izbrišeš svoj račun |
| Vrsta računa | Tvoj trenutni plan (probni, standardni, zlatni, platinasti) | 1 bajt (cijeli broj: 0=probni, 1=standardni, 2=zlatni, 3=platinasti, 4=pauziran, 5=suspendiran) | Dok se ne promijeni ili izbrišeš račun |
| Datum i vrijeme registracije | Kada si stvorio svoj račun | Potpuni datum i vrijeme (timestamp) | Trajno |
| Interni identifikatori | Sustav treba dva interna koda kako bi se na vas mogao pozivati bez korištenja vašeg korisničkog imena. Jedan je vaš primarni ID, a drugi referentni kod. Oba su neprozirna — nemaju značenje izvan sustava | Dva nasumična koda od po 24 znaka (npr.: u_7kX9mP2...). Ne sadrže vaše ime, datum ni osobne podatke — potpuno su nasumični | Dok ne izbrišeš svoj račun |
| Verzija sigurnosti | Koja verzija algoritma zaštite lozinke je korištena | Interni broj | Dok ne izbrišeš svoj račun |
| Statusne zastavice | Tehničke zastavice (je li se tvoj saldo promijenio, imaš li aktivan način maksimalne sigurnosti) | 1 bajt — ekvivalent jednog slova. Ništa više ne stane | Dok ne izbrišeš svoj račun |
Da stekneš predodžbu o količini podataka: tvoj cijeli zapis zauzima oko 400 bajtova — manje od ovog odlomka. To su tvoja imena (izmišljena ako želiš), otisak tvoje lozinke (fiksne veličine, 60 bajtova), tvoj šifrirani glavni ključ (neproziran blob od ~128 bajtova koji ne možemo pročitati), dva broja za tvoj saldo, nekoliko datuma i jedan bajt konfiguracije. To je sve što postojiš na našem poslužitelju.
1.2 Aktivne sesije
| Podatak | Zašto | Zaštita | Trajanje |
|---|---|---|---|
| Hash tokena sesije | Održavanje aktivne prijave | Nepovratni otisak (SHA-256). Izvorni token nikada se ne pohranjuje na poslužitelju | 24 sata — nakon toga se potpuno briše |
| Datum stvaranja | Da sustav zna kada je stvorena — korisno za automatsko čišćenje | Numerička vremenska oznaka (unix sekunde) | Briše se zajedno sa sesijom |
| Datum isteka | Sesija istječe 24 sata nakon kreiranja. Ne obnavlja se korištenjem — ima fiksni datum isteka | Numerička vremenska oznaka (stvaranje + 24 sata) | 24 sata — nakon toga se potpuno briše |
Prilikom odjave ili isteka, redak se potpuno briše iz baze podataka. Ne ostaje nikakav trag da je sesija postojala.
1.3 Zahtjevi za povezivanje
| Podatak | Zašto | Zaštita | Trajanje |
|---|---|---|---|
| ID podnositelja | Da znamo tko je poslao zahtjev | Interni kod od 24 nasumična znaka | 3 dana — zatim se automatski briše |
| ID primatelja | Da znamo kome je namijenjen | Interni kod od 24 nasumična znaka | 3 dana — zatim se automatski briše |
| Status | Na čekanju / prihvaćen / odbijen | 1 bajt (cijeli broj: 0=na čekanju, 1=prihvaćeno, 2=odbijeno) | Briše se pri rješavanju ili pri isteku (3 dana) |
| Datum stvaranja | Znati kada je zahtjev stvoren kako bi se mogao automatski obrisati | Numerička vremenska oznaka (unix sekunde) — 4 do 8 bajtova | 3 dana — zatim se automatski briše |
Važna napomena: Dok je zahtjev na čekanju (najviše 3 dana), poslužitelj zna da je korisnik A zatražio povezivanje s korisnikom B. Nakon 3 dana zahtjev se automatski briše. Kada je povezivanje prihvaćeno, poslužitelj ne čuva odnos. Tvoj popis kontakata postoji samo u tvom pregledniku, šifriran.
1.4 Povezni kod
| Podatak | Zašto | Zaštita | Trajanje |
|---|---|---|---|
| Povezni kod (alias) | Kratki identifikator kako bi te drugi korisnik mogao pronaći i zatražiti stvaranje tunela | Nasumični 8-znakovni kod izveden iz tvog internog ID-a | Trajan (to je tvoj javni identifikator za povezivanje) |
1.5 Push pretplate (obavijesti)
| Podatak | Zašto | Zaštita | Trajanje |
|---|---|---|---|
| Adresa obavijesti | Slanje obavijesti u tvoj preglednik | URL pružatelja preglednika (Google, Mozilla ili Apple) | Dok ne isključiš obavijesti ili izbrišeš račun |
| Ključevi push šifriranja | Šifriranje obavijesti da je samo tvoj preglednik može pročitati | Standard Web Push | Isto kao adresa |
1.6 Povratne informacije (podrška)
| Podatak | Zašto | Zaštita | Trajanje |
|---|---|---|---|
| Tvoja poruka | Kako bismo ti mogli pomoći | Čisti tekst | Dok je ne obradimo |
| Tvoj ID korisnika | Da znamo tko treba pomoć | Interni ID | Isto kao poruka |
1.7 Signalizacija veze (efemerna)
Kako bi se dva uređaja mogla izravno spojiti, moraju razmijeniti tehničke signale za uspostavu veze (protokol WebRTC). Jedini trenutak kad naš poslužitelj drži u memoriji tvoj korisnički kod i kod tvog kontakta je tijekom milisekundi dok obrađuje taj zahtjev za povezivanje. Traje trenutak, nalazi se samo u RAM-u i nikada se ne zapisuje na disk. Sami signali su šifrirani od kraja do kraja
| Podatak | Zašto | Zaštita | Trajanje |
|---|---|---|---|
| Signali veze | Uspostava izravne veze između uređaja | Šifrirani od kraja do kraja javnim ključem primatelja. Poslužitelj ih ne može pročitati ni izmijeniti | 60 sekundi |
1.8 Zrcalni poslužitelj (relej TURN)
Ako izravna veza nije moguća, koristi se zrcalni poslužitelj: podaci njime prolaze kao svjetlo kroz zrcalo — odbijaju se s jedne strane na drugu, ali zrcalo nije svjesno onoga što odbija. Svi paketi dopunjeni su na jednoličnu veličinu kako promatrač ne bi mogao razlikovati poruku od jednostavnog otkucaja veze.
| Podatak | Zašto | Zaštita | Trajanje |
|---|---|---|---|
| Pristupna vjerodajnica | Autentifikacija na zrcalnom poslužitelju | Tvoj identitet pretvara se u nepovratni otisak — zrcalni poslužitelj ne zna tko si | 24 sata |
1.9 Obrađena plaćanja
Plaćanja su jedina točka gdje postoji stvarno trenje s anonimnošću. Budimo pošteni u vezi s tim.
Kada se registriraš na Solo2, biraš korisničko ime (može biti izmišljeno), lozinku i javno ime (također izmišljeno, ako želiš). Nijedan podatak te ne veže za stvarnu osobu. Ali ako izvrišiš plaćanje karticom, tvoja financijska institucija zna tko si.
Ono što mi primamo od platnog sustava je isključivo potvrda i iznos. Ne primamo niti pohranjujemo ime vlasnika, broj kartice, broj osobne iskaznice niti ikakve osobne podatke platitelja. Radi se o malim iznosima — pravno jednaki gotovinskoj potvrdi, poput kupnje lizalice na kiosku: kioskar ne registrira osobnu iskaznicu kupca.
Osim toga, evidencija plaćanja je namjerno odvojena
| Podatak | Zašto | Zaštita | Trajanje |
|---|---|---|---|
| Evidencija plaćanja | Računovodstvo i porezne obveze | Potvrda + iznos. Bez osobnih podataka platitelja. Bez povezanosti s bilo kojim korisničkim računom | Trajno (zakonska obveza) |
O najgorem mogućem scenariju:
Svi naši prihodi su legalni i ulaze proknjiženi kroz platni sustav. Podmirujemo pripadajuće poreze. Ali anonimnost klijenta s naše strane je potpuna.
2. Podaci koje NEMAMO na poslužitelju
To nas definira. Poslužitelj Solo2 ne pohranjuje niti ima pristup
- Tvojim porukama
- Tvojim datotekama
- Tvom popisu kontakata
- Tvojoj povijesti razgovora
- Tvojoj lokaciji
- Analitici korištenja
- Podacima o uređaju
- Metapodacima komunikacije
O tvojoj IP adresi
Tvoja IP adresa se ne pohranjuje ni u jednu bazu podataka. U tehničkim zapisima poslužitelja, IP adrese se pretvaraju u nepovratne otiske (hash) — korisne za otkrivanje obrazaca zlouporabe, ali nemoguće vratiti u izvornu IP adresu. Ti zapisi se automatski brišu svakih 7 dana. Signali povezivanja, koji bi mogli sadržavati tvoju IP, šifrirani su od kraja do kraja — poslužitelj ih ne može pročitati.
3. Podaci u tvom pregledniku (Trezor)
Sve što slijedi živi isključivo u tvom pregledniku
Tvoji podaci šifrirani su u mirovanju — čak i ako bi netko pristupio pohrani tvog preglednika, pronašao bi samo nečitljive šifrirane blokove bez tvoje lozinke.
Kada izvozиш sigurnosnu kopiju, šifrirana je istom zaštitom (Argon2id + AES-256-GCM). Samo tko zna tvoju lozinku može je dešifrirati.
| Podatak | Šifriranje | Kontrola |
|---|---|---|
| Poruke | AES-256-GCM | Ti odlučuješ kada ih izbrisati |
| Datoteke | AES-256-GCM | Ti odlučuješ kada ih izbrisati |
| Kontakti (parovi) | AES-256-GCM | Ti odlučuješ koga povezati |
| Status verifikacije | AES-256-GCM | Ti verificiraš identitet svakog kontakta |
| Indeks pretraživanja | Šifriran nepovratnim tokenima (HMAC) | Rekonstruira se iz tvojih poruka |
| Status isporuke | AES-256-GCM | Koje su poruke isporučene |
| Poruke na čekanju | AES-256-GCM | Red slanja kada nema veze |
Privremena pohrana preglednika
| Podatak | Vrsta | Trajanje | Zašto |
|---|---|---|---|
| Korisnička sesija | Lokalna memorija preglednika (localStorage) | Dok se ne odjaviš | Održavanje prijave |
| Verzija aplikacije | Lokalna memorija preglednika (localStorage) | Trajno | Otkrivanje ažuriranja |
| Preferencija teme | Lokalna memorija preglednika (localStorage) | Trajno | Pamćenje tvoje vizualne teme |
| Preferencija jezika | Lokalna memorija preglednika (localStorage) | Trajno | Pamćenje tvog jezika |
| Lozinka (način maksimalne sigurnosti) | Memorija kartice (sessionStorage) | Nestaje pri zatvaranju kartice | Reinicijalizacija šifriranja pri osvježavanju stranice |
Napomena o sigurnosti u pregledniku
Solo2 radi unutar tvog web preglednika. Tvoji šifrirani podaci zaštićeni su u mirovanju, ali kada je aplikacija otvorena i prikazuje ti dešifrirane poruke na zaslonu, sigurnost ovisi i o tvom okruženju:
- Proširenja preglednika:
- Čist preglednik:
- Izvorna aplikacija:
4. Mrežne veze
Aplikacija Solo2
| Domena | Razlog | Poslani podatak |
|---|---|---|
| solo2.net | API aplikacije | Autentifikacija, signalizacija, prisutnost |
| pay.menzuri.com | Platni sustav | Samo ako izvršavaš plaćanje |
Nijedna druga domena.
Čak i za otkrivanje javne IP adrese tvog uređaja (potrebne za uspostavu izravnih veza između korisnika), koristimo vlastiti poslužitelj (tehnički nazvan STUN). Ne delegiramo to vanjskim servisima. Upravljamo njime sami.
Stranica za prezentaciju
Stranica za prezentaciju (solo2.net) — koja je neovisna o aplikaciji — koristi anonimni sustav mjerenja smješten na našim vlastitim poslužiteljima u Njemačkoj:
| Domena | Razlog | Poslani podatak |
|---|---|---|
| stats.menzuri.com | Anonimno mjerenje posjeta | Posjećena stranica (bez kolačića, bez IP-a, bez identifikacije) |
Ovaj sustav ne instalira kolačiće, ne bilježi tvoju IP adresu, ne identificira te, ne prati te između posjeta i ne dijeli podatke s trećim stranama. Aplikacija Solo2 nema ovaj sustav niti ikakvu drugu vrstu analitike.
5. Brisanje tvojih podataka
Postoje dvije različite radnje i važno je da znaš razliku:
Brisanje lokalnih podataka
U postavkama aplikacije imaš dvije mogućnosti lokalnog brisanja:
- Izbriši moje podatke
- Hitni reset
U oba slučaja, tvoj račun na poslužitelju i dalje postoji.
Automatski oporavak između uređaja
Ako izgubiš podatke na jednom uređaju i imaš drugi povezan, Solo2 detektira situaciju i nudi ti automatski oporavak tvog identiteta i trezora. Oporavak putuje šifriran (Argon2id) izravnom vezom između tvojih uređaja — bez prolaska kroz poslužitelj.
Brisanje računa s poslužitelja
- Brišu se svi
- Brisanje je atomično
- Evidencije plaćanja namjerno ostaju odvojene
- Identifikatori u logovima poslužitelja su nepovratni otisci: ne može se povezati log s tvojim računom nakon brisanja.
- Trezor u tvom pregledniku ne briše se automatski ovom radnjom (nemamo pristup tvom pregledniku). Da ga izbrišeš, najprije izvrši hitni reset ili očisti podatke stranice u pregledniku.
5b. Tvoj glavni ključ i tvojih 24 riječi
Prilikom kreiranja računa u Solo2, generira se glavni ključ s 256 bitova stvarne entropije (iste koju koristi Bitcoin). Ovaj ključ je predstavljen kao 24 riječi koje samo ti poznaješ. Tvoja lozinka omotava ovaj ključ kako bi bio šifrirano pohranjen na serveru — server ga ne može pročitati.
To znači da imaš dva nezavisna ključa
Točni algoritmi (provjerljivo)
Generiranje: CSPRNG
Kako je zaštićen tvoj glavni ključ
| Sloj | Što je | Gdje se nalazi |
|---|---|---|
| Lozinka | Pristup serveru. Omotava tvoj glavni ključ | U tvom sjećanju + hash na serveru |
| Tajna uređaja | Nevidljivi drugi faktor, automatski generiran pri instalaciji | Na vašem uređaju (ne može se ekstrahirati) |
| Glavni ključ (24 riječi) | 256 bitova stvarne entropije, generirano nasumično. Razina Bitcoin (BIP39) | Na papiru koji ti čuvaš + omotan na serveru |
| Rotacija ključeva | Svaka poruka koristi jedinstveni ključ koji se zatim uništava (Double Ratchet) | Automatska, transparentna |
Ako promijenite lozinku
Promjena lozinke je trenutna. Tvoj glavni ključ se samo ponovno omotava novom lozinkom — tvoj identitet se ne mijenja, sef se ne šifrira ponovno, tvoji kontakti nisu pogođeni, a tvojih 24 riječi ostaju iste. To je operacija od milisekundi.
Oporavak
Ako izgubiš lozinku, možeš pristupiti sefu sa svojih 24 riječi — bez servera. Ako izgubiš 24 riječi, možeš se prijaviti lozinkom i server ti vraća omotani ključ. Ako izgubiš oboje, tvoji podaci su nepovratno izgubljeni. Kao u Bitcoin — to je sigurnost po dizajnu.
6. Što se događa ako netko neovlašteno pristupi poslužitelju
Ako bi napadač dobio potpuni pristup poslužitelju Solo2, dobio bi:
- Korisnička imena i javna imena
- Kodove povezivanja
- Javne ključeve (beskorisne bez privatnog ključa, koji je u tvom pregledniku)
- Otiske lozinki (beskorisne bez izuzetno skupog napada grubom silom zahvaljujući Argon2id)
- Otiske tokena sesija (beskorisne bez izvornog tokena)
- Zahtjeve za povezivanje na čekanju (interni ID-ovi, istječu za 3 dana)
- Vrstu računa, salda i datume registracije
- Evidencije plaćanja (bez mogućnosti povezivanja s konkretnim korisnikom)
Što NE bi dobio:
- Nijednu poruku (nikada nisu bile na poslužitelju)
- Nijednu datoteku (nikada nisu bile na poslužitelju)
- Nijedan popis kontakata (nikada nije bio na poslužitelju)
- Nijednu povijest razgovora (nikada nije bila na poslužitelju)
- Nijedan privatni ključ šifriranja (žive u tvom pregledniku)
- Nijednu IP adresu (ne bilježe se)
7. Naša obveza
Ovaj manifest ažurirat će se sa svakom relevantnom promjenom u upravljanju podacima. Ako dodamo novo polje u bazu podataka, pojavit će se ovdje. Ako nešto uklonimo, također.
Važeća verzija je uvijek ova stranica.