Ad Nihilum 0.4.3

Ad Nihilum 0.4.3 har nu slĂ€ppts — en minimalistisk tjĂ€nst för att utbyta krypterade meddelanden enligt principen "lĂ€st — brĂ€nt", som frĂ€mst Ă€r inriktad pĂ„ self-hosting.

Servern fungerar endast som en passiv lagringsplats. Kryptering och dekryptering sker uteslutande pÄ klientsidan, i webblÀsaren (via AES-GCM).

Egenskaper

  • lokal kryptering och dekryptering, server ser aldrig nyckeln;
  • stöd för ett extra lager av kryptering med ett lösenord, som (1) servern inte kan kĂ€nna till, (2) inte kan avslöjas genom den överförda lĂ€nken;
  • projektet innehĂ„ller cirka 2200 rader serverkod pĂ„ C och 600 rader klientkod pĂ„ JS, vilket förenklar granskningen;
  • Ad Nihilum Ă€r endast beroende av libmicrohttpd. För att generera QR-koder levereras en modifierad version av QRCode.js;
  • en snabbguide för att starta en lokal tjĂ€nst utan extern IP inkluderas;
  • Ad Nihilum fungerar Ă€ven pĂ„ Android, med ett motsvarande skript som medföljer för byggnation i Termux;
  • entrĂ„dad och synkroniserad server.

Ändringar

Stor omdesign

  • Sidorna för att skicka och ta emot meddelanden har delats upp, med motsvarande klientkod.
  • Överlag har designen förĂ€ndrats och justerats med hĂ€nsyn till önskemĂ„l frĂ„n anvĂ€ndarna.
  • "Enkel" och lokal klient:
    • en klient med förenklad design har lagts till https://adnihilum.net/simple;
    • klient sidor kan sparas lokalt och anvĂ€ndas frĂ„n file://.

WebblÀsarpolicyer

  • CSP har införts för att bekĂ€mpa XSS;
  • servern skickar HSTS.

Övriga Ă€ndringar

  • projektet har bytt namn frĂ„n Epha-ots;
  • domĂ€nen adnihilum.net har köpts;
  • TLS hanteras med Let’s Encrypt, detta Ă€r vĂ€rt att notera (ingen budget);
  • arbetet med filer har förenklats;
  • övergĂ„ng till fat-pointers;
  • smĂ„buggar har fixats;
  • auto-jsminify och bygg av klientfiler vid kompilering via CMake.

Översikt av protokollet

Generera tre slumpmĂ€ssiga vĂ€rden: nyckel K, initialiseringsvektor N och salt S. K — 256 bitar, N — 96 bitar, S — 128 bitar.

Skriv ut ID frÄn K och S med HKDF baserat pÄ SHA-256.

Skapa en strĂ€ng av ytterligare autentiserad data aad — det Ă€r helt enkelt en strĂ€ng av typen: id=ID

Om anvÀndaren har angett ett lösenord:

  • skriv ut Pk frĂ„n lösenordet och S med hjĂ€lp av PBKDF2, SHA-256, 800000 iterationer;
  • samma salt anvĂ€nds för allt;
  • kryptera data med AES-GCM, med nyckel Pk, IV/nonce N och överföra aad.

LÀgg till en tvÄbytes-tag till redan krypterade data, om lösenordet angavs, annars till de ursprungliga data.

Den första byte har betydelse: den visar om data har krypterats med ett lösenord:

  • 0x73 — data har krypterats med ett lösenord;
  • 0x13 — data har inte krypterats med ett lösenord.

Den andra byte Àr ett konstant vÀrde 0x37.

Kryptera resultatet igen med AES-GCM, med samma iv = N och samma aad. Detta ger den slutliga chiffertexten ct.

Koppla ihop byte till en strÀng: blob = N .. S .. ct

Skicka blob till servern tillsammans med ID. Servern returnerar blob genom detta ID och kan inte Ă€ndra det: klienten kommer först att kontrollera ID med hjĂ€lp av N och K Ă€ven innan avkodning, och sedan — genom aad.

Klienten lagrar K. K skickas aldrig till servern. Pk skickas inte heller; allt som rör lösenordet rensas frÄn minnet.

Klienten bildar en lÀnk: origin/#ID/K

HĂ€r ID och K — strĂ€ngar i base64url-format.

NÀr mottagaren öppnar lÀnken:

  • webblĂ€saren slĂ€nger allt som börjar med #; detta kallas location.hash;
  • klientapplikationen laddas frĂ„n servern;
  • enligt min Ă„sikt Ă€r detta den största sĂ€kerhetsluckan: vi stöter faktiskt igen pĂ„ det faktum att "TLS Ă€r osĂ€kert";
  • men inget hindrar att klienten lagras offline;
  • idealiskt skulle det finnas en separat fristĂ„ende klient.

Klientens JavaScript kontrollerar location.hash, och om det finns ID och K, laddar det data frÄn servern.

Sedan kontrollerar den dem, avkodar och, om det behövs, begÀr lösenord och avkodar igen.

Licens

Projektet distribueras under GPLv3.

KĂ€lla: linux.org.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster