Ad Nihilum 0.4.3

Është publikuar Ad Nihilum 0.4.3—një shërbim minimalist, i vetë-strehuar dhe i koduar mesazhesh, i bazuar në parimin "lexo dhe djeg".

Serveri vepron vetëm si një pajisje ruajtjeje e heshtur. Enkriptimi dhe dekriptimi ndodhin ekskluzivisht në anën e klientit, në shfletues (duke përdorur AES-GCM).

Features

  • enkriptimi dhe dekriptimi lokal, server nuk e sheh kurrë çelësin;
  • mbështetje për një shtresë shtesë të enkriptimit me fjalëkalim që (1) serveri nuk mund ta dijë, (2) nuk mund të zbulohet nga lidhja e transmetuar;
  • Projekti përmban afërsisht 2200 rreshta kodi serveri në C dhe 600 rreshta kodi klienti në JS, gjë që thjeshton auditimin;
  • Ad Nihilum varet vetëm nga libmicrohttpd. Një version i modifikuar i QRCode.js është dhënë për gjenerimin e kodeve QR;
  • Përfshihen udhëzime për konfigurimin e shpejtë të një shërbimi lokal pa një IP të jashtëm;
  • Ad Nihilum funksionon në Android, skripti përkatës për asamblenë në Termux është bashkëngjitur;
  • server me një fije të vetme dhe sinkron.

ndryshimet

Ridizajnim në shkallë të gjerë

  • Faqet për dërgimin dhe marrjen e mesazheve dhe kodi përkatës i klientit janë të ndara.
  • Në përgjithësi, dizajni u ndryshua dhe u rregullua shumë duke marrë parasysh dëshirat e Lorkhanëve.
  • Klientë "të thjeshtë" dhe vendas:
    • Është shtuar një klient me një dizajn të thjeshtuar https://adnihilum.net/simple;
    • Faqet e klientëve mund të ruhen lokalisht dhe të përdoren nga file://.

Politikat e shfletuesit

  • CSP është zbatuar për të luftuar XSS;
  • Serveri dërgon HSTS.

Ndryshime të tjera

  • projekti u riemërua nga Epha-ots;
  • domeni adnihilum.net u ble;
  • TLS ofrohet duke përdorur Let's Encrypt, kjo ia vlen të mbahet mend (nuk përfshihen para);
  • Puna me skedarë është thjeshtuar;
  • kalimi në treguesit e dhjamit;
  • gabime të vogla të rregulluara;
  • auto-jsminify dhe ndërtimi i skedarëve të klientit gjatë ndërtimit nëpërmjet CMake.

Përmbledhje e protokollit

Gjeneroni tre vlera të rastësishme: çelësi K, vektor i inicializimit N dhe kripë S. K — 256 bit, N — 96 bit, S — 128 bit.

Të tërheqë ID nga K и S duke përdorur HKDF të bazuar në SHA-256.

Gjeneroni një varg të dhënash shtesë të autentifikuara adi - është vetëm një varg si: id=ID

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

  • tërheqë Pk nga fjalëkalimi dhe S duke përdorur PBKDF2, SHA-256, 800000 përsëritje;
  • e njëjta kripë përdoret për gjithçka;
  • Enkripto të dhënat duke përdorur AES-GCM duke përdorur çelësin Pk, IV/nonce N dhe duke kaluar tutje adi.

Shtoni një etiketë dy bajtëshe në të dhënat e koduara tashmë nëse ka pasur fjalëkalim, ose në të dhënat origjinale nëse nuk ka pasur fjalëkalim.

Bajti i parë është i rëndësishëm: tregon nëse të dhënat janë koduar me fjalëkalim:

  • 0x73 - të dhënat janë të koduara me një fjalëkalim;
  • 0x13 - të dhënat nuk janë të koduara me fjalëkalim.

Bajti i dytë është vlera konstante 0x37.

Enkripto rezultatin përsëri me AES-GCM duke përdorur të njëjtin iv = N dhe të njëjtin adiKjo jep tekstin përfundimtar të koduar. ct.

Bashkoni bajtet në një varg: blob = N .. S .. ct

Dërgoj pikë në server së bashku me IDServeri kthen pikë Kjo është arsyeja pse ID dhe nuk mund ta zëvendësojë atë: klienti do të kontrollojë së pari ID me N и K edhe para deshifrimit, dhe pastaj - përmes adi.

Dyqanet e klientëve K. K nuk dërgohet kurrë në server. Pk gjithashtu nuk dërgohet; gjithçka që lidhet me fjalëkalimin fshihet nga kujtesa.

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

Këtu ID и K — vargjet në formatin base64url.

Kur marrësi hap lidhjen:

  • Shfletuesi hedh poshtë gjithçka që fillon me #; kjo quhet location.hash;
  • aplikacioni i klientit shkarkohet nga serveri;
  • Sipas mendimit tim, kjo është e meta kryesore: në thelb po hasim përsëri në faktin se "TLS ka probleme me rrjedhjen";
  • Megjithatë, asgjë nuk ju pengon ta ruani klientin jashtë linje;
  • Idealisht, duhet të ketë një klient të veçantë dhe të pavarur.

JavaScript në anën e klientit kontrollon location.hash dhe nëse është aty. ID и K, shkarkon të dhëna nga serveri.

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

leje

Projekti shpërndahet sipas GPLv3.

Burimi: linux.org.ru

Bleni një host të besueshëm për faqet me mbrojtje DDoS, serverë VPS VDS 🔥 Bleni hosting të besueshëm të faqeve të internetit me mbrojtje DDoS, servera VPS VDS | ProHoster