Выпуск ZeroNet 0.7, платформы для стварэння дэцэнтралізаваных сайтаў

Пасля года распрацоўкі ўбачыў свет выпуск дэцэнтралізаванай web-платформы ZeroNet 0.7, якая прапануе выкарыстоўваць механізмы адрасавання і верыфікацыі Bitcoin у спалучэнні з тэхналогіямі размеркаванай дастаўкі BitTorrent для стварэння сайтаў, якія немагчыма падвергнуць цэнзуры, падрабіць ці заблакаваць. Змесціва сайтаў захоўваецца ў P2P-сеткі на машынах наведвальнікаў і правяраецца па лічбавым подпісе ўладальніка. Для адрасавання выкарыстоўваюцца сістэма альтэрнатыўных каранёвых DNS-сервераў. Namecoin. Праект напісаны на мове Python і распаўсюджваецца пад ліцэнзіяй GPLv2.

Дадзеныя верыфікаваныя і прывязаныя да ўліковага запісу ўладальніка сайта па аналогіі з прывязкай кашалькоў Bitcoin, што таксама дае магчымасць кантраляваць актуальнасць інфармацыі і абнаўляць кантэнт у рэжыме рэальнага часу. Для ўтойвання IP-адрасоў можа выкарыстоўвацца ананімная сетка Tor, падтрымка якой убудавана ў ZeroNet. Карыстальнік удзельнічае ў раздачы ўсіх сайтаў да якіх звяртаўся. Пасля загрузкі на лакальную сістэму файлы захоўваюцца ў кэшы і становяцца даступныя для раздачы з бягучай машыны, выкарыстоўваючы метады, якія нагадваюць BitTorrent.

Для прагляду сайтаў ZeroNet дастаткова запусціць скрыпт zeronet.py, пасля чаго ў браўзэры можна адчыняць сайты праз URL "http://127.0.0.1:43110/адрас_zeronet" (напрыклад, "http://127.0.0.1:43110/1HeLLo4uzjaLetFx" . Пры адкрыцці сайта праграма знаходзіць бліжэйшых peer-ов і загружае звязаныя з запытанай старонкай файлы (html, css, карцінкі і да т.п.).
Для стварэння свайго сайта дастаткова запусціць каманду "zeronet.py siteCreate" пасля чаго будзе згенераваны ідэнтыфікатар сайта і закрыты ключ для пацверджання аўтарства па лічбавым подпісе.

Для створанага сайта будзе сфарміравана пустая дырэкторыя выгляду "data/1HeLLo4usjaLetFx6NMH5PMwF3qbebTf1D". Пасля змены змесціва дадзенай дырэкторыі, патрабуецца запэўненне новай версіі пры дапамозе каманды "zeronet.py siteSign ідэнтыфікатар_сайта" і ўвядзення закрытага ключа. Як толькі новае змесціва будзе заверана, патрабуецца анансаваць яго камандай "zeronet.py sitePublish ідэнтыфікатар_сайта", каб зменены варыянт стаў даступны peer-ам (для анонсу змен выкарыстоўваецца API WebSocket). Па ланцужку peer-ы правераць цэласнасць новай версіі па лічбавым подпісе, загрузяць новае змесціва і перададуць іншым peer-ам.

Асноўныя магчымасці:

  • Адсутнасць адзінай кропкі адмовы - сайт застаецца даступны, калі ў раздачы маецца хаця б адзін peer;
  • Адсутнасць эталоннага сховішча сайта - сайт немагчыма закрыць адключыўшы хостынг, бо дадзеныя размешчаны на ўсіх машынах наведвальнікаў;
  • Уся раней прагледжаная інфармацыя маецца ў кэшы і даступная з бягучай машыны ў рэжыме offline, без вынахаду ў глабальную сетку.
  • Падтрымка абнаўлення змесціва ў рэжыме рэальнага часу;
  • Магчымасць адрасавання праз рэгістрацыю дамена ў зоне ".bit";
  • Праца без папярэдняй наладкі - дастаткова распакаваць архіў з ПЗ і запусціць адзін скрыпт;
  • Магчымасць кланавання сайтаў у адзін клік;
  • Беспарольная аўтарызацыя на аснове фармату BIP32: уліковы запіс абаронены тым жа крыптаграфічным метадам, што і крыптавалюта Bitcoin;
  • Убудаваны SQL-сервер з функцыямі P2P-сінхранізацыі дадзеных;
  • Магчымасць выкарыстання Tor для ананімнасці і поўная падтрымка выкарыстання ўтоеных сэрвісаў Tor (.onion) замест IPv4-адрасоў;
  • Падтрымка TLS-шыфравання;
  • Аўтаматычная даступнасць праз uPnP;
  • Магчымасць прымацавання да сайта некалькіх аўтараў, якія маюць розныя лічбавыя подпісы;
  • Наяўнасць плагіна для стварэння шматкарыстальніцкіх канфігурацый (openproxy);
  • Падтрымка трансляцыі стужак навін;
  • Праца ў любых браўзэрах і аперацыйных сістэмах.

Асноўныя змены ў ZeroNet 0.7

  • Код перапрацаваны для падтрымкі Python3, забяспечана сумяшчальнасць з Python 3.4-3.8;
  • Рэалізаваны абаронены рэжым сінхранізацыі БД;
  • Па магчымасці спынена пастаўка ў асноўным складзе іншых бібліятэк на карысць знешніх залежнасцей;
  • У 5-10 разоў паскораны код для верыфікацыі лічбавых подпісаў (задзейнічана бібліятэка libsecp256k1);
  • Дададзена рандамізацыя ўжо згенераваных сертыфікатаў для абыходу фільтраў;
  • Абноўлены код P2P, які пераведзены на выкарыстанне пратакола ZeroNet;
  • Дададзены рэжым працы ў Offline;
  • Дададзены ўбудова UiPluginManager для ўсталёўкі і кіраванні іншымі ўбудовамі;
  • Забяспечана поўная падтрымка OpenSSL 1.1;
  • Пры злучэнні з peer-амі задзейнічаны фіктыўныя запісы SNI і ALPN, каб зрабіць злучэнні больш падобнымі да зваротаў да звычайных сайтаў па HTTPS;

У той жа дзень, што і рэліз ZeroNet 0.7.0 сфарміравана абнаўленне 0.7.1, у якім ухіленая небяспечная ўразлівасць, якая патэнцыйна дазваляе арганізаваць выкананне кода на боку кліента. З-за памылкі ў кодзе адмалёўкі зменных шаблонаў, адчынены вонкавы сайт можа ўсталяваць злучэнне да сістэмы кліента праз WebSocket з неабмежаванымі правамі ADMIN/NOSANDBOX, што дае магчымасць змяніць параметры канфігурацыі і дамагчыся выкананні свайго кода на кампутары карыстача праз маніпуляцыі з параметрам open_browser.
Уразлівасць выяўляецца ў галінцы 0.7, а таксама ў эксперыментальных зборках пачынальна з рэвізіі. 4188 (змена ўнесена 20 дзён таму).

Крыніца: opennet.ru

Дадаць каментар