Ad Nihilum 0.4.3

Megjelent az Ad Nihilum 0.4.3 — egy minimalista szolgáltatás titkosított üzenetek cseréjére a „olvastam — elégettem” elv alapján, amely elsősorban a saját hosztolásra összpontosít.

A szerver csupán egy zárt tárolóként működik. A titkosítás és a visszafejtés kizárólag az ügyfél oldalán, a böngészőben történik (AES-GCM használatával).

Jellemzők

  • helyi titkosítás és visszafejtés, szerver soha nem látja a kulcsot;
  • további titkosítási réteg jelszóval, amelyről (1) a szerver nem tudhat, (2) nem lehet kideríteni a továbbított hivatkozás alapján;
  • a projekt körülbelül 2200 sor szerveroldali kódot tartalmaz C nyelven és 600 sor kliensoldali kódot JS nyelven, ami megkönnyíti az auditálást;
  • Az Ad Nihilum csupán a libmicrohttpd-től függ. A QR kódok generálásához egy módosított verziót biztosítanak a QRCode.js-ból;
  • csatolt egy gyors telepítési útmutatót helyi szolgáltatás indításához külső IP nélkül;
  • Az Ad Nihilum Androidon is működik, csatolva van a szükséges script a Termux-hoz való összeállításhoz;
  • egyszálú és szinkron szerver.

Változások

Átfogó újratervezés

  • Az üzenetek küldési és fogadási oldala el lett választva, a megfelelő kliensoldali kód.
  • A dizájn lényegesen megváltozott és korrigálva lett a lórchanya kívánságainak figyelembevételével.
  • „Egyszerű” és helyi kliensek:
    • hozzáadva egy egyszerűsített dizájnnal rendelkező kliens https://adnihilum.net/simple;
    • a kliensoldali oldalak helyben menthetők el és a file:/// -ből használhatók.

Böngészői politikák

  • CSP-t vezettek be az XSS ellen;
  • a szerver HSTS-t küld.

nem tekinthetők

  • a projekt átnevezésre került Epha-ots-ból;
  • megvásárolva az adnihilum.net domén;
  • a TLS-t a Let’s Encrypt biztosítja, ezt érdemes figyelembe venni (nincs pénz);
  • a fájlok kezelése egyszerűsödött;
  • átállás fat-pointerekre;
  • kisebb hibák javítva;
  • auto-jsminify és kliensoldali fájlok összeállítása CMake-en keresztül.

A protokoll áttekintése

Generáljon három véletlenszerű értéket: kulcs K, inicializáló vektor N és só S. K — 256 bit, N — 96 bit, S — 128 bit.

[user@testhost ~]$ tail -1 temp Lalalala... ) és a K és S HKDF SHA-256 alapú alkalmazásával.

Hozzon létre egy kiterjesztett azonosított adatokból álló sort aad — ez egyszerűen a következő formátumú szöveg: id=ID

Ha a felhasználó megadta a jelszót:

  • azt jelenítse meg Pk a jelszóból és S PBKDF2, SHA-256, 800000 iteráción keresztül;
  • ugyanaz a só kerül felhasználásra mindvégig;
  • az adatokat AES-GCM használatával titkosítja, a kulcs használatával Pk, IV/nonce N és továbbítva aad.

Adjon hozzá egy kéthetes címkét a már titkosított adatokhoz, ha jelszó volt, vagy az alapadatokhoz, ha nem volt jelszó.

Az első byte értéke: megmutatja, hogy az adatokat jelszóval titkosították-e:

  • 0x73 — az adatok jelszóval vannak titkosítva;
  • 0x13 — az adatok nincsenek jelszóval titkosítva.

A második bájt állandó értéke 0x37.

Ismét titkosítani az AES-GCM segítségével, ugyanazzal az iv = N és ugyanazzal aad. Ez adja a végső titkos szöveget ct.

Bájtok összefűzése egy sorba: blob = N .. S .. ct

Küldés blob a szerverre a következővel: ) és. A szerver visszaadja blob azon keresztül ) és és nem tudja azt megváltoztatni: az ügyfél először ellenőrizni fogja ) és a N és K még a dekódolás előtt, majd — keresztül aad.

Az ügyfél tárolja K. K soha nem küldik a szerverre. Pk ez sem küldődik el; minden, ami a jelszóval kapcsolatos, törlésre kerül a memóriából.

Az ügyfél létrehoz egy linket: origin/#ID/K

Itt ) és és K — base64url formátumban.

Amikor a címzett megnyitja a linket:

  • a böngésző elvet mindent, ami # karakterrel kezdődik; ezt location.hash-nak hívják;
  • az ügyfélalkalmazás betöltődik a szerverről;
  • véleményem szerint ez a fő lyuk: valójában újra a "TLS lyukas" problémával találkozunk;
  • azonban semmi sem akadályozza meg az ügyfél offline tárolását;
  • ideális esetben legyen egy különálló, önálló ügyfél.

Az ügyfél JavaScript ellenőrzi a location.hash-t, és ha abban van ) és és K, adatok töltődnek le a szerverről.

Ezután ellenőrzi őket, dekódolja, és ha szükséges, kéri a jelszót, és ismét dekódolja.

Licenc

A projekt GPLv3 alatt terjed.

Forrás: linux.org.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster