Ad Nihilum 0.4.3

Ishulli Ad Nihilum 0.4.3 — njĂ« shĂ«rbim minimalist pĂ«r shkĂ«mbimin e mesazheve tĂ« enkriptuara sipas parimit "lexo - djeg", i orientuar kryesisht drejt self-hosting.

Serveri vepron vetëm si një depo e verbër. Enkriptimi dhe dekryptimi ndodhin ekskluzivisht nga ana e klientit, në shfletues (përmes AES-GCM).

Karakteristikat

  • enkriptim dhe dekryptim lokal, server kurrĂ« nuk sheh çelĂ«sin;
  • mbĂ«shtetje pĂ«r njĂ« shtresĂ« shtesĂ« enkriptimi me fjalĂ«kalim, pĂ«r tĂ« cilin (1) serveri nuk mund tĂ« dijĂ«, (2) nuk mund tĂ« dihet nga lidhja e dĂ«rguar;
  • projekti pĂ«rmban rreth 2200 rreshta kodi serveri nĂ« C dhe 600 rreshta kodi klienti nĂ« JS, 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 shĂ«rbimit lokal pa njĂ« IP tĂ« jashtme;
  • Ad Nihilum funksionon gjithashtu nĂ« Android, Ă«shtĂ« dhĂ«nĂ« njĂ« skenar pĂ«r ndĂ«rtimin nĂ« Termux;
  • server njĂ«njĂ«sor dhe sinkron.

Ndryshimet

Rindizajn Masiv

  • JanĂ« ndarĂ« faqet e dĂ«rgimit dhe marrjes sĂ« mesazheve, kodi pĂ«rkatĂ«s i klientit.
  • PĂ«rgjithĂ«sisht, dizajni Ă«shtĂ« ndryshuar dhe korrigjuar ndjeshĂ«m nĂ« pĂ«rputhje me kĂ«rkesat e lorchan
  • «E thjeshtë» dhe klientĂ«t lokalĂ«:
    • u shtua njĂ« klient me dizajn tĂ« thjeshtuar https://adnihilum.net/simple;
    • faqet e klientĂ«ve mund tĂ« ruhen lokalmente dhe tĂ« pĂ«rdoren nga file://.

Politikat e shfletuesit

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

Ndryshime të tjera

  • projekti u rinovua nga Epha-ots;
  • u bleu domeni adnihilum.net;
  • TLS sigurohet pĂ«rmes Let’s Encrypt, Ă«shtĂ« mirĂ« tĂ« mbahet mend (nuk ka para);
  • Ă«shtĂ« lehtĂ«suar puna me skedarĂ«t;
  • kalimi nĂ« fat-pointerĂ«;
  • janĂ« korrigjuar bugs 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 vlera tĂ« rastĂ«sishme: çelĂ«si K, vektori i inicializimit N dhe kripa S. K — 256 bit, N — 96 bit, S — 128 bit.

Shfaqni ID nga K dhe S nëpërmjet HKDF bazuar në SHA-256.

Formoni njĂ« varg tĂ« dhĂ«nash tĂ« verifikuara shtesĂ« aad — ky Ă«shtĂ« thjesht njĂ« varg i tipit: id=ID

Nëse përdoruesi cakton fjalëkalimin:

  • shfaqni Pk nga fjalĂ«kalimi dhe S nĂ«pĂ«rmjet PBKDF2, SHA-256, 800000 iteracione;
  • i njĂ«jti krip Ă«shtĂ« pĂ«rdorur pĂ«r gjithçka;
  • kriptoni tĂ« dhĂ«nat me AES-GCM, duke pĂ«rdorur çelĂ«sin Pk, IV/nonce N dhe dĂ«rgoni aad.

Shtoni një etiketë dy-byte në të dhënat tashmë të kriptuara, nëse kishte fjalëkalim, ose në të dhënat origjinale, nëse nuk kishte fjalëkalim.

Baiti i parë ka vlerën: tregon nëse të dhënat janë kriptuar me fjalëkalim:

  • 0x73 — tĂ« dhĂ«nat janĂ« tĂ« koduara me fjalĂ«kalim;
  • 0x13 — tĂ« dhĂ«nat nuk janĂ« tĂ« koduara me fjalĂ«kalim.

Byte i dytĂ« — njĂ« vlerĂ« konstante 0x37.

Rivendosni rezultatin duke përdorur AES-GCM, duke përdorur të njëjtin iv = N dhe të njëjtin aad. Kjo jep tekstin përfundimtar ct.

Kombinoni bajtat 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 verifikon mĂ« parĂ« ID duke pĂ«rdorur N dhe K para se tĂ« dekriptojĂ«, dhe mĂ« pas — pĂ«rmes aad.

Klienti ruan K. K asnjëherë nuk dërgohet në server. Pk as nuk dërgohet; gjithçka që lidhet me fjalëkalimin, fshihet nga memoria.

Klienti formon një lidhje: origin/#ID/K

KĂ«tu ID dhe K — vargje nĂ« formatin base64url.

Kur marrësi hap lidhjen:

  • shfletuesi hedh gjithçka qĂ« fillon me #; kjo quhet location.hash;
  • aplikacioni klient ngarkohet nga serveri;
  • sipĂ«r mendimit tim, kjo Ă«shtĂ« vrima kryesore: ne nĂ« fakt po pĂ«rballeshim pĂ«rsĂ«ri me atĂ« qĂ« "TLS Ă«shtĂ« e çarĂ«";
  • megjithatĂ«, asgjĂ« nuk e pengon mbajtjen e klientit offline;
  • nĂ« njĂ« mĂ«nyrĂ« ideale duhet tĂ« jetĂ« njĂ« klient i veçantĂ« standalone.

JavaScript klient kontrollon location.hash, dhe nëse ka ID dhe K, ai ngarkon të dhënat nga serveri.

Pastaj verifikon ato, dekriptohet dhe, nëse është e nevojshme, kërkon fjalëkalimin dhe dekriptohet përsëri.

Licenca

Projekti distribuohet nën GPLv3.

Burimi: linux.org.ru

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster