Ad Nihilum 0.4.3

Izšel je Ad Nihilum 0.4.3 — minimalistična storitev za izmenjavo šifriranih sporočil po načelu 'prebral — sežgal', ki je predvsem namenjena self-hosting.

Strežnik deluje le kot gluh skladišče. Šifriranje in dešifriranje potekata izključno na strani odjemalca, v brskalniku (prek AES-GCM).

Karakteristike

  • lokalno šifriranje in dešifriranje, strežnik nikoli ne vidi ključa;
  • podpora dodatni plast šifriranja s geslom, o katerem (1) strežnik ne more vedeti, (2) ni možno ugotoviti iz posredovane povezave;
  • projekt vsebuje približno 2200 vrstic strežniškega kode na C in 600 vrstic odjemalskega kode na JS, kar poenostavi revizijo;
  • Ad Nihilum je odvisen le od libmicrohttpd. Za generiranje QR kod je priložena spremenjena različica QRCode.js;
  • priložena je navodila za hitro postavitev lokalne storitve brez zunanjega IP;
  • Ad Nihilum deluje tudi na Androidu, priložen je ustrezen skript za gradnjo v Termux;
  • enotne niti in sinhroni strežnik.

Wijzigingen

Obsežna prenova

  • Strani za pošiljanje in prejemanje sporočil so ločene, ustrezen odjemalski koda.
  • Splošno je bil dizajn močno spremenjen in prilagojen glede na želje uporabnikov.
  • "Enostavni" in lokalni odjemalci:
    • dodan je odjemalec z poenostavljenim dizajnom https://adnihilum.net/simple;
    • odjemalske strani je mogoče shraniti lokalno in jih uporabljati iz file://.

Politike brskalnika

  • vključen CSP za boj proti XSS;
  • strežnik pošilja HSTS.

Druge spremembe

  • projekt je bil preimenovan iz Epha-ots;
  • kupljena domena adnihilum.net;
  • TLS je zagotovljen s pomočjo Let’s Encrypt, kar je treba upoštevati (denarja ni);
  • poenostavljeno delo z datotekami;
  • prehod na fat-pointerje;
  • popravljene manjše napake;
  • avto-jsminify in gradnja odjemalskih datotek pri gradnji prek CMake.

Pregled protokola

Generirati tri naključne vrednosti: ključ K, vektor inicijalizacije N in sol S. K — 256 bitov, N — 96 bitov, S — 128 bitov.

Povući ID iz K in S s pomočjo HKDF na osnovi SHA-256.

Oblikovati niz dodatnih avtoriziranih podatkov aad — to je preprosto niz oblike: id=ID

Če je uporabnik določil geslo:

  • izpisati Pk iz gesla in S s pomočjo PBKDF2, SHA-256, 800000 iteracij;
  • ista sol se uporablja za vse;
  • šifrirati podatke z AES-GCM, uporabo ključa Pk, IV/nonce N in preneseni aad.

Dodati dvojbajtni oznako že šifriranim podatkom, če je bilo geslo, ali k izvorni podatki, če gesla ni bilo.

Prvi bajt ima vrednost: prikazuje, ali so bili podatki šifrirani z geslom:

  • 0x73 — data je šifrirana s lozinkom;
  • 0x13 — data nisu šifrirana s lozinkom.

Drugi bajt je stalna vrednost 0x37.

Ponovno šifrirajte rezultat koristeći AES-GCM, koristeći isti iv = N i istu aad. To daje konačni šifrovani tekst ct.

Spojite bajtove u niz: blob = N .. S .. ct

Pošalji blob na server zajedno s ID. Server vraća blob preko ovog ID i ne može ga zameniti: klijent prvo proverava ID z uporabo N in K pre nego što ga dešifruje, a zatim — kroz aad.

Klijent čuva K. K nikada se ne šalje na server. Pk takođe se ne šalje; sve što se odnosi na lozinku se briše iz memorije.

Klijent formira link: origin/#ID/K

Tukaj ID in K — stringovi u formatu base64url.

Kada primalac otvori link:

  • pretraživač odbacuje sve što počinje sa #; to se zove location.hash;
  • klijentska aplikacija se učitava sa servera;
  • po mom mišljenju, to je glavna rupa: zapravo se ponovo suočavamo sa time da je 'TLS svestan';
  • međutim, ništa ne sprečava da se klijent čuva offline;
  • idealan bi trebao biti poseban standalone klijent.

Klijentski JavaScript proverava location.hash, i ako postoji ID in K, učitava podatke sa servera.

Zatim ih proverava, dešifruje i, ako je potrebno, traži lozinku i dešifruje ponovo.

Licenca

Projekat se distribuira pod GPLv3.

Izvor: linux.org.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster