Ad Nihilum 0.4.3

Ilmus Ad Nihilum 0.4.3 — minimalistlik teenus, mis võimaldab vahetada krüptitud sõnumeid põhimõttega «lugesin — põletasin», olles peamiselt suunatud self-hosting'ule.

Server toimib ainult kui kurt hoidla. Krüpteerimine ja dekodeerimine toimuvad ainult kliendi poolel, brauseris (AES-GCM kaudu).

Omadused

  • kohalik krüpteerimine ja dekodeerimine, server ei näe kunagi võtmeid;
  • toetab täiendavat krüpteerimiskihi parooliga, millest (1) server ei saa teada, (2) ei saa teada edastatud lingi kaudu;
  • projekt sisaldab umbes 2200 rida serverikoodi C-s ja 600 rida kliendikoodi JS-s, mis lihtsustab auditeerimist;
  • Ad Nihilum sõltub ainult libmicrohttpd'ist. QR-koodide genereerimiseks on kaasas muudetud versioon QRCode.js-ist;
  • kaasas on juhend kohaliku teenuse kiireks ülesehitamiseks ilma välise IP-eta;
  • Ad Nihilum töötab ka Androidil, lisatud on vastav skript Termuxis kompileerimiseks;
  • üheotstarbeline ja sünkroonne server.

Muutused

Mastaapne uuendus

  • Sõnumite saatmise ja vastuvõtmise lehed on eraldatud, vastav kliendikood.
  • Kokkuvõttes on disain tugevalt muudetud ja kohandatud lorkale antud soovide põhjal.
  • „Lihtne“ ja kohalikud kliendid:
    • lisatud klient lihtsustatud disainiga https://adnihilum.net/simple;
    • kliendilehed saab salvestada kohalikult ja kasutada failist://.

Brauseri poliitikad

  • rakendatud CSP XSS-i vastu võitlemiseks;
  • server saadab HSTS-i.

Muud muudatused

  • projekt on ümber nimetatud Epha-ots;
  • ostetud domeen adnihilum.net;
  • TLS-i tagab Let’s Encrypt, sellega tasub arvestada (raha pole);
  • failide kasutamine on lihtsustatud;
  • üleminek fat-pointeritele;
  • väiksed vead on parandatud;
  • auto-jsminify ja klientfailide koostamine CMake’i kaudu.

Protokolli ülevaade

Genereerige kolm juhuslikku väärtust: võti K, algväljendi vektor N ja sool S. K — 256 bitti, N — 96 bitti, S — 128 bitti.

Väljastada ID kohast K ja S HKDF abil SHA-256 põhjal.

Muu autentimisandmete stringi vormimine aad — see on lihtsalt string, mis näeb välja nagu: id=ID

Kui kasutaja on parooli seadnud:

  • teata Pk paroolist ja S kasutades PBKDF2, SHA-256, 800000 iteratsiooni;
  • sama soola kasutatakse kõike jaoks;
  • andmete krüpteerimine AES-GCM-i abil, kasutades võtit Pk, IV/nonce N ja edastades aad.

Lisage kaks baiti sildi juba krüpteeritud andmetele, kui parool oli, või algandmetele, kui parooli ei olnud.

Esimene bait on: see näitab, kas andmed olid parooliga krüpteeritud:

  • 0x73 — andmed on parooliga krüpteeritud;
  • 0x13 — andmed ei ole parooliga krüpteeritud.

Teine bait on püsiv väärtus 0x37.

Krüpteerige tulemus uuesti AES-GCM abil, kasutades sama iv = N ja sama aad. See annab lõpliku krüpteeritud tekst. ct.

Kleebi baitid stringiks: blob = N .. S .. ct

Saada blob serverisse koos ID. Server tagastab blob selle ID ja ei saa seda asendada: klient kontrollib esmalt ID kasutades N ja K veel enne dekrüpteerimist, ja seejärel — läbi aad.

Klient salvestab K. K kunagi ei saadeta serverisse. Pk samuti ei saadeta; kõik, mis on seotud parooliga, puhastatakse mälust.

Klient loob lingi: origin/#ID/K

Siit ID ja K — stringid base64url formaadis.

Kui saaja avab lingi:

  • brauser kõrvaldab kõik, mis algab #; seda nimetatakse location.hash;
  • klientrakendus laaditakse serverist;
  • minu arvates on see peamine probleem: me tõepoolest jõuame tagasi sellele, et "TLS on lekkiv";
  • kuid miski ei takista klienti offline'ina hoidmast;
  • ideaalis peaks olema eraldi iseseisev klient.

Kliendi JavaScript kontrollib location.hash'i ja kui seal on ID ja K, laadib see andmed serverist.

Seejärel kontrollib see neid, dekrüpteerib ja vajadusel küsib parooli ja dekrüpteerib veel kord.

Litsents

Projekt levitatakse GPLv3 litsentsi alusel.

Allikas: linux.org.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster