Ad Nihilum 0.4.3

Prezentácia Ad Nihilum 0.4.3 – minimalistickej služby na výmenu zašifrovaných správ podľa princípu „prečítal – spálil“, zameranej predovšetkým na self-hosting.

Server funguje iba ako hluché úložisko. Šifrovanie a dešifrovanie prebieha výhradne na strane klienta, v prehliadači (cez AES-GCM).

Vlastnosti

  • lokálne šifrovanie a dešifrovanie, server nikdy nevidí kľúč;
  • podpora dodatočnej vrstvy šifrovania heslom, o ktorej (1) server nemôže vedieť, (2) nemožno ju zistiť cez prenosový odkaz;
  • projekt obsahuje približne 2200 riadkov serverového kódu v jazyku C a 600 riadkov klientského kódu v JS, čo uľahčuje audit;
  • Ad Nihilum závisí iba od libmicrohttpd. Na generovanie QR kódov je dodávaná modifikovaná verzia QRCode.js;
  • je priložený návod na rýchle spustenie lokálnej služby bez externého IP;
  • Ad Nihilum funguje aj na Android, je priložený príslušný skript na zostavenie v Termux;
  • jednozdrojový a synchronný server.

Zmeny

Rozsiahly redesign

  • Stránky na odosielanie a prijímanie správ boli oddelené, príslušný klientský kód.
  • Celkový dizajn bol výrazne zmenený a upravený na základe požiadaviek komunity.
  • „Jednoduché“ a lokálne klienti:
    • pridaný klient s jednoduchším dizajnom https://adnihilum.net/simple;
    • klientské stránky je možné uložiť lokálne a používať z file://.

Prehliadačové politiky

  • vložené CSP na boj proti XSS;
  • server posiela HSTS.

Iné zmeny

  • projekt bol premenovaný z Epha-ots;
  • kúpená doména adnihilum.net;
  • TLS je zabezpečené pomocou Let’s Encrypt, na to treba mať na pamäti (nemáme peniaze);
  • zjednodušená práca s súbormi;
  • prechod na fat-pointery;
  • opravené drobné chyby;
  • auto-jsminify a zostavenie klientských súborov pri zostavovaní cez CMake.

Prehľad protokolu

Vygenerovať tri náhodné hodnoty: kľúč K, inicializačný vektor N a soľ S. K — 256 bitov, N — 96 bitov, S — 128 bitov.

Zobraziť ID z K a S s pomocou HKDF na základe SHA-256.

Vytvoriť reťazec dodatočných autentifikovaných údajov aad — je to jednoducho reťazec vo formáte: id=ID

Ak používateľ zadá heslo:

  • vydať Pk z hesla a S s pomocou PBKDF2, SHA-256, 800000 iterácií;
  • rovnaká soľ sa používa pre všetko;
  • zašifrovať údaje pomocou AES-GCM, pomocou kľúča Pk, IV/nonce N a odoslať aad.

Pridať dvojbytový tag k už zašifrovaným údajom, ak bolo heslo, alebo k pôvodným údajom, ak heslo nebolo.

Prvý bajt má hodnotu: ukazuje, či boli údaje zašifrované heslom:

  • 0x73 — údaje sú zašifrované heslom;
  • 0x13 — údaje nie sú zašifrované heslom.

Druhý bajt — konštantná hodnota 0x37.

Znovu zašifrovať výsledok pomocou AES-GCM, s použitím toho istého iv = N a toho istého aad. To dáva konečný šifrovací text ct.

Spojiť bajty do reťazca: blob = N .. S .. ct

Odoslať blob na server spolu s ID. Server vracia blob podľa tohto ID a nemôže ho zmeniť: klient najprv overí ID s využitím N a K ešte pred dešifrovaním, a potom — cez aad.

Klient uchováva K. K nikdy nie je odoslané na server. Pk taktiež nie je odoslané; všetko, čo má súvislosť s heslom, sa vymazáva z pamäte.

Klient vytvára odkaz: origin/#ID/K

Tu ID a K — reťazce vo formáte base64url.

Keď príjemca otvorí odkaz:

  • prehľadávač odmieta všetko, čo začína s #; to sa nazýva location.hash;
  • klientská aplikácia sa načíta zo servera;
  • podľa môjho názoru, to je hlavný problém: vlastne sa opäť dostávame k tomu, že "TLS je dieravý";
  • avšak nič nebráni uložiť klienta offline;
  • ideálne by mal byť samostatný standalone klient.

Klientsky JavaScript kontroluje location.hash, a ak tam je ID a K, načíta dáta zo servera.

Potom ich skontroluje, dešifruje a, ak je to potrebné, požaduje heslo a dešifruje znova.

Licencia

Projekt sa šíri pod GPLv3.

Zdroj: linux.org.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster