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

Bleni hostin e besueshĂ«m pĂ«r faqet me mbrojtje nga DDoS, VPS VDS servera đŸ”„ Bli hostin e besueshĂ«m pĂ«r faqet me mbrojtje nga DDoS, VPS VDS servera | ProHoster