Ad Nihilum 0.4.3

Byla vydána verze Ad Nihilum 0.4.3 – minimalistická, samostatně hostovaná, šifrovaná služba pro zasílání zpráv založená na principu „přečti a vypal“.

Server funguje pouze jako tiché úložné zařízení. Šifrování a dešifrování probíhá výhradně na straně klienta, v prohlížeči (pomocí AES-GCM).

Vlastnosti

  • lokální šifrování a dešifrování, serveru nikdy nevidí klíč;
  • podpora další vrstvy šifrování hesla, kterou (1) server nemůže znát, (2) nelze zjistit z přenášeného odkazu;
  • Projekt obsahuje přibližně 2 200 řádků serverového kódu v jazyce C a 600 řádků klientského kódu v jazyce JS, což zjednodušuje audit;
  • Ad Nihilum závisí pouze na libmicrohttpd. Pro generování QR kódů je k dispozici upravená verze QRCode.js;
  • Součástí jsou pokyny pro rychlé nastavení lokální služby bez externí IP adresy;
  • Ad Nihilum funguje dál Android, je přiložen odpovídající skript pro assembler v Termuxu;
  • jednovláknový a synchronní server.

Změny

Rozsáhlá přestavba

  • Stránky pro odesílání a příjem zpráv a odpovídající klientský kód jsou oddělené.
  • Obecně byl design výrazně změněn a upraven s ohledem na přání Lorchanů.
  • „Jednoduchí“ a lokální klienti:
    • Byl přidán klient se zjednodušeným designem. https://adnihilum.net/simple;
    • Klientské stránky lze ukládat lokálně a používat ze souboru file://.

Zásady prohlížeče

  • CSP byl implementován pro boj s XSS;
  • Server odesílá HSTS.

Další změny

  • projekt byl přejmenován z Epha-ots;
  • doména adnihilum.net zakoupena;
  • TLS je poskytováno pomocí Let's Encrypt, což je dobré mít na paměti (není zapojeno do žádných peněz);
  • Práce se soubory byla zjednodušena;
  • přechod na ukazatele tuku;
  • opraveny drobné chyby;
  • automatické jsminify a sestavování klientských souborů při sestavování pomocí CMake.

Přehled protokolu

Generovat tři náhodné hodnoty: klíč K, inicializační vektor N a sůl S. K — 256 bitů, N — 96 bitů, S — 128 bitů.

ustoupit ID z K и S pomocí HKDF založeného na SHA-256.

Vygenerujte řetězec dalších ověřených dat Aad - je to jen řetězec jako: id=ID

Pokud si uživatel nastavil heslo:

  • stáhnout Pk z hesla a S s použitím PBKDF2, SHA-256, 800 000 iterací;
  • na všechno se používá stejná sůl;
  • Šifrování dat pomocí AES-GCM s použitím klíče Pk, IV/jednorázový kód N a předávání dál Aad.

Přidejte dvoubajtový tag k již zašifrovaným datům, pokud bylo heslo použito, nebo k původním datům, pokud heslo nebylo použito.

První bajt je významný: označuje, zda byla data zašifrována heslem:

  • 0x73 - data jsou šifrována heslem;
  • 0x13 - data nejsou šifrována heslem.

Druhý bajt je konstantní hodnota 0x37.

Výsledek znovu zašifrujte pomocí AES-GCM s použitím stejného iv = N a stejného AadTím se získá finální šifrovaný text. ct.

Zřetězení bajtů do řetězce: blob = N .. S .. ct

Odeslat kapka na server spolu s IDServer vrací kapka Proto ID a nelze jej nahradit: klient nejprve zkontroluje ID použití N и K ještě před dešifrováním a poté - skrz Aad.

Klient obchoduje K. K se nikdy neodesílá na server. Pk se také neodesílá; vše související s heslem se z paměti vymaže.

Klient vygeneruje odkaz: origin/#ID/K

Zde ID и K — řetězce ve formátu base64url.

Když příjemce otevře odkaz:

  • Prohlížeč zahodí vše, co začíná znakem #; toto se nazývá location.hash;
  • klientská aplikace se stáhne ze serveru;
  • Podle mého názoru je tohle hlavní díra: v podstatě se opět setkáváme s faktem, že „TLS je děravý“;
  • Nic vám však nebrání v uložení klienta offline;
  • V ideálním případě by měl existovat samostatný klient.

JavaScript na straně klienta kontroluje location.hash a zda je přítomen. ID и K, stahuje data ze serveru.

Pak je zkontroluje, dešifruje a v případě potřeby se zeptá na heslo a znovu je dešifruje.

Licence

Projekt je distribuován pod licencí GPLv3.

Zdroj: linux.org.ru

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster