Po roku vývoja uzrela svetlo sveta verzia decentralizovanej webovej platformy , ktorá ponúka využívať mechanizmy adresovania a overovania Bitcoin v kombinácii s technológiami distribuovaného doručovania BitTorrent na vytváranie stránok, ktoré nemožno cenzurovať, falšovať alebo blokovať. Obsah stránok sa uchováva v P2P sieti na strojoch návštevníkov a overuje sa podľa digitálneho podpisu vlastníka. Na adresovanie sa používajú alternatívne koreňové DNS servery . Projekt je napísaný v jazyku Python a pod licenciou GPLv2.
Údaje umiestnené na stránke sú overené a pripojené k účtu vlastníka stránky analogicky s pripojením bitcoinových peňaženiek, čo poskytuje aj možnosť kontrolovať aktuálnosť informácií a aktualizovať obsah v reálnom čase. Na skrytie IP adries môže byť použitá anonymná sieť Tor, ktorej podpora je zabudovaná v ZeroNet. Používateľ sa podieľa na poskytovaní všetkých stránok, ku ktorým pristupuje. Po stiahnutí na lokálny systém sa súbory uchovávajú v cache a stávajú sa dostupnými na poskytovanie z aktuálneho stroja, používajúc metódy podobné BitTorrent.
Na prezeranie stránok ZeroNet stačí spustiť skript zeronet.py, po čom je možné otvárať stránky v prehliadači cez URL "http://127.0.0.1:43110/adresa_zeronet" (napríklad "http://127.0.0.1:43110/1HeLLo4uzjaLetFx6NMN3PMwF5qbebTf1D"). Pri otvorení stránky program nájde najbližších peerov a načíta súvisiace súbory s požadovanou stránkou (html, css, obrázky a pod.).
Na vytvorenie vlastnej stránky stačí spustiť príkaz "zeronet.py siteCreate", po čom bude vygenerovaný identifikátor stránky a súkromný kľúč na potvrdenie autorstva podľa digitálneho podpisu.
Pre vytvorenú stránku bude vytvorený prázdny adresár vo formáte "data/1HeLLo4usjaLetFx6NMH5PMwF3qbebTf1D". Po zmene obsahu tohto adresára je potrebné overiť novú verziu pomocou príkazu "zeronet.py siteSign identifikátor_stránky" a zadať súkromný kľúč. Akonáhle bude nový obsah overený, je potrebné oznámiť ho príkazom "zeronet.py sitePublish identifikátor_stránky", aby sa zmenená verzia stala dostupnou peerom (na oznámenie zmien sa používa API WebSocket). Peerovia skontrolujú integritu novej verzie podľa digitálneho podpisu, načítajú nový obsah a prenesú ho ďalším peerom.
Hlavné :
- Neexistencia jediného bodu zlyhania — stránka ostáva dostupná, ak je v sieti aspoň jeden peer;
- Neexistencia referenčného úložiska stránky — stránku nemožno uzavrieť odpojením hostingu, pretože dáta sú uložené na všetkých zariadeniach návštevníkov;
- Všetky predtým zobrazené informácie sú uložené v cache a sú dostupné z aktuálneho zariadenia v offline režime, bez pripojenia k internetu.
- Podpora aktualizácie obsahu v reálnom čase;
- Možnosť adresovania cez registráciu domény v zóne „.bit“;
- Fungovanie bez predchádzajúcej konfigurácie — stačí rozbaliť archív so softvérom a spustiť jeden skript;
- Možnosť klonovania stránok jedným kliknutím;
- Bezpečnostná autorizácia na základe formátu : účet je chránený rovnakou kryptografickou metódou ako kryptomena Bitcoin;
- Vstavaný SQL server s funkciami P2P synchronizácie dát;
- Možnosť používania Tor pre anonymitu a plná podpora skrytých služieb Tor (.onion) namiesto IPv4 adries;
- Podpora TLS šifrovania;
- Automatická dostupnosť cez uPnP;
- Možnosť pripojenia viacerých autorov na stránku, ktorí majú rôzne digitálne podpisy;
- Existencia pluginu pre vytvorenie viacužívateľských konfigurácií (openproxy);
- Podpora prenosu spravodajských kanálov;
- Fungovanie vo všetkých prehliadačoch a operačných systémoch.
Hlavné zmeny v ZeroNet 0.7
- Kód bol prerobený na podporu Python3, bola zabezpečená kompatibilita s Python 3.4-3.8;
- Implementovaný zabezpečený režim synchronizácie DB;
- Pokračovalo sa v odstraňovaní väčšiny tretích knižníc v prospech externých závislostí;
- Zrýchlenie kódu pre overovanie digitálnych podpisov 5-10 krát (využitá knižnica libsecp256k1;
- Pridaná náhodná generácia už vytvorených certifikátov pre obídenie filtrov;
- Aktualizovaný kód P2P, ktorý prešiel na používanie protokolu ZeroNet;
- Pridaný režim offline;
- Pridaný plugin UiPluginManager pre inštaláciu a správu tretích pluginov;
- Zabezpečená plná podpora OpenSSL 1.1;
- Pri pripojení k peerom sú použité fiktívne záznamy SNI a ALPN, aby boli spojenia podobnejšie tým, ktoré vznikajú pri obvyklých HTTPS stránkach;
V ten istý deň, ako bol vydaný ZeroNet 0.7.0 aktualizácia 0.7.1, v ktorej bola odstránená nebezpečná zraniteľnosť, ktorá potenciálne umožňuje vykonávanie kódu na strane klienta. V dôsledku chyby v kóde vykresľovania premenných šablón môže otvorený externý web vytvoriť spojenie so systémom klienta cez WebSocket s neobmedzenými právami ADMIN/NOSANDBOX, čo umožňuje zmeniť konfiguračné parametre a dosiahnuť vykonávanie vlastného kódu na počítači používateľa manipuláciou s parametrom open_browser.
Zraniteľnosť sa prejavuje vo verzii 0.7, ako aj v experimentálnych zostaveniach od revízie (zmena bola vykonaná pred 20 dňami).
Zdroj: opennet.ru
