Ad Nihilum 0.4.3

Lëshimi i Ad Nihilum 0.4.3 — një shërbim minimalistik për shkëmbimin e mesazheve të enkriptuara sipas parimit "lexo - digj" që synon kryesisht self-hosting.

Serveri vepron vetëm si një depo e shurdhët. Enkriptimi dhe dekriptimi ndodhin ekskluzivisht në anën e klientit, në shfletues (nëpërmjet AES-GCM).

Karakteristikat

  • enkriptimi dhe dekriptimi lokal, server kurrë nuk e sheh çelësin;
  • mbështetje për një shtesë të enkriptimit me fjalëkalim, për të cilin (1) serveri nuk mund të dijë, (2) nuk mund të kuptohet përmes lidhjes që transmetohet;
  • projekti përmban rreth 2200 rreshta kodi serveri në C dhe 600 rreshta kodi klienti në JS, gjë që e thjeshton auditin;
  • Ad Nihilum varet vetëm nga libmicrohttpd. Për gjenerimin e kodit QR ofrohet një version i modifikuar i QRCode.js;
  • vjen me një udhëzues për ngritjen e shpejtë të shërbimit lokal pa një IP të jashtme;
  • Ad Nihilum funksionon edhe në Android, me një skenar për ndërtim në Termux;
  • server një-fije dhe sinkron;

Ndryshimet

Redesign masiv

  • Faqet e dërgimit dhe marrjes së mesazheve janë ndarë, kodi përkatës për klientin.
  • Në përgjithësi, dizajni është ndryshuar dhe rregulluar në përputhje me kërkesat e lorchanëve
  • Klientët "e thjeshtë" dhe lokalë:
    • shtuar një klient me një dizajn të thjeshtuar https://adnihilum.net/simple;
    • faqet e klientëve mund të ruhet lokalisht dhe të përdoren nga file://.

Politikat e shfletuesit

  • CSP është implementuar për të luftuar XSS;
  • serveri dërgon HSTS.

Ndryshime të tjera

  • projekti është ribërë nga Epha-ots;
  • blerë domenin adnihilum.net;
  • TLS sigurohet nëpërmjet Let’s Encrypt, është e rëndësishme ta keni parasysh (nuk ka para);
  • punimi me skedarët është thjeshtuar;
  • kalimi në fat-pointer;
  • u rregulluan disa defekte të vogla;
  • auto-jsminify dhe ndërtimi i skedarëve të klientëve gjatë ndërtimit përmes CMake.

Përmbledhja e protokollit

Gjeneroni tre valore të rastësishme: çelësi K, vektori i inicializimit N dhe kripa S. K — 256 bit, N — 96 bit, S — 128 bit.

Shfaq ID nga K dhe S me HKDF të bazuar në SHA-256.

Formoni një varg të dhënash të verifikuara të dhënash aad — kjo është thjesht një varg me formë: id=ID

Nëse përdoruesi ka vendosur një fjalëkalim:

  • shfaq Pk nga fjalëkalimi dhe S nëpërmjet PBKDF2, SHA-256, 800000 iteracione;
  • e njëjta kripë përdoret për të gjitha;
  • enkripto të dhënat duke përdorur AES-GCM, duke përdorur çelësin Pk, IV/nonce N dhe duke e transmetuar aad.

Shtoni një etiketë dy-byte në të dhënat e enkriptuara, nëse ka pasur një fjalëkalim, ose në të dhënat origjinale, nëse nuk ka pasur fjalëkalim.

Bajti i parë ka rëndësi: ai tregon nëse të dhënat janë enkriptuar me fjalëkalim:

  • 0x73 — të dhënat janë enkriptuar me fjalëkalim;
  • 0x13 — të dhënat nuk janë enkriptuar me fjalëkalim.

Bajti i dytë — një vlerë e qëndrueshme 0x37.

Rënia e rezultatit përsëri me AES-GCM, duke përdorur të njëjtin iv = N dhe të njëjtin aad. Kjo jep tekstin përfundimtar të enkriptimit ct.

Kombino bajtët në një varg: blob = N .. S .. ct

Dërgo blob në server së bashku me ID. Serveri kthen blob në këtë ID dhe nuk mund ta zëvendësojë: klienti kontrollon fillimisht ID duke përdorur N dhe K edhe para se të dekrijptohet, dhe pastaj — përmes aad.

Klienti ruan K. K kurrë nuk dërgohet në server. Pk as nuk dërgohet; gjithçka që lidhet me fjalëkalimin pastrohet nga memoria.

Klienti formon lidhjen: origin/#ID/K

Këtu ID dhe K — vargje në formatin base64url.

Kur marrësi hap lidhjen:

  • navigatori hedh gjithçka që fillon me #; kjo quhet location.hash;
  • aplikacioni klient ngarkohet nga serveri;
  • sipas mendimit tim, kjo është vrima kryesore: ne me të vërtetë kthehemi në atë që «TLS është i çarë»;
  • megjithatë nuk ka asgjë që ndalon ruajtjen e klientit offline;
  • idealisht duhet të ketë një klient të veçantë standalone.

JavaScript i klientit kontrollon location.hash, dhe nëse ka ID dhe K, ai ngarkohet të dhënat nga serveri.

Pastaj ai i kontrollon, i dekrijpton dhe, nëse është e nevojshme, kërkon fjalëkalimin dhe dekrijpton përsëri.

Licenca

Projekti shpërndahet nën GPLv3.

Burimi: linux.org.ru

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster