Ad Nihilum 0.4.3

Objavljen je Ad Nihilum 0.4.3 — minimalistička usluga za razmjenu šifriranih poruka prema principu 'pročitao — spalio', prvenstveno namijenjena self-hostingu.

Poslužitelj služi samo kao gluhi spremnik. Šifriranje i dešifriranje odvijaju se isključivo na strani klijenta, u pregledniku (putem AES-GCM).

Karakteristike

  • lokalno šifriranje i dešifriranje, server nikada ne vidi ključ;
  • podrška za dodatni sloj šifriranja lozinkom, o kojoj (1) poslužitelj ne može saznati, (2) ne može se saznati prema prenesenoj vezi;
  • projekt sadrži oko 2200 redaka poslužiteljskog koda u C-u i 600 redaka klijentskog koda u JS-u, što olakšava reviziju;
  • Ad Nihilum ovisi samo o libmicrohttpd. Za generiranje QR kodova isporučena je modificirana verzija QRCode.js;
  • priložena je uputa za brzo postavljanje lokalne usluge bez vanjske IP adrese;
  • Ad Nihilum radi i na Androidu, priložen je odgovarajući skript za izgradnju u Termuxu;
  • jednoprocessni i sinkroni poslužitelj.

Promjene

Opsežan redizajn

  • Stranice za slanje i primanje poruka su odvojene, odgovarajući klijentski kod.
  • Dizajn je uvelike promijenjen i prilagođen u skladu s povratnim informacijama korisnika.
  • Jednostavni i lokalni klijenti:
    • dodani klijent s pojednostavljenim dizajnom https://adnihilum.net/simple;
    • klijentske stranice mogu se sačuvati lokalno i koristiti iz file://.

Politike preglednika

  • implementiran je CSP za borbu protiv XSS;
  • poslužitelj šalje HSTS.

Ostale izmjene

  • projekt je preimenovan iz Epha-ots;
  • kupljena je domena adnihilum.net;
  • TLS se osigurava putem Let’s Encrypt, to treba imati na umu (nema novca);
  • olakšana je obrada datoteka;
  • prelazak na fat-pointere;
  • ispravljene su manje greške;
  • auto-jsminify i izgradnja klijentskih datoteka prilikom izgradnje putem CMake-a.

Pregled protokola

Generirati tri nasumične vrijednosti: ključ K, vektor inicijalizacije N i sol S. K — 256 bita, N — 96 bita, S — 128 bita.

Isplati ID iz K i S uz pomoć HKDF temeljenog na SHA-256.

Formirati niz dodatnih autentificiranih podataka aad — to je samo niz oblika: id=ID

Ako je korisnik postavio lozinku:

  • izlaziti Pk iz lozinke i S uz pomoć PBKDF2, SHA-256, 800000 iteracija;
  • ista sol koristi se za sve;
  • šifrirati podatke pomoću AES-GCM, koristeći ključ Pk, IV/nonce N i poslati aad.

Dodati dvo-bajtni tag već šifriranim podacima ako je lozinka bila, ili izvornih podacima ako lozinke nije bilo.

Prvi bajt ima vrijednost: pokazuje jesu li podaci šifrirani lozinkom:

  • 0x73 — podaci su šifrirani lozinkom;
  • 0x13 — podaci nisu šifrirani lozinkom.

Drugi bajt — stalna vrijednost 0x37.

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

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

Pošaljite blob na server zajedno s ID. Server vraća blob prema tome ID i ne može ga zamijeniti: klijent prvo provjerava ID s korištenjem N i K još prije dešifriranja, a zatim — putem aad.

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

Klijent formira vezu: origin/#ID/K

Ovdje ID i K — stringovi u formatu base64url.

Kada primatelj otvori vezu:

  • pregledač odbacuje sve što počinje s #; to se zove location.hash;
  • klijentska aplikacija se učitava sa servera;
  • smatram da je to glavna rupa: zapravo se ponovo suočavamo s problemom da je 'TLS probojan';
  • međutim, ništa ne sprječava da klijent bude offline;
  • u idealnom slučaju trebao bi biti odvojeni standalone-klijent.

Klijentski JavaScript provjerava location.hash, i ako ima ID i K, preuzima podatke s poslužitelja.

Zatim ih provjerava, dešifrira i, ako je potrebno, traži lozinku i dešifrira ponovno.

Licenca

Projekt se distribuira pod GPLv3.

Izvor: linux.org.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster