Die Veröffentlichung von ZeroNet 0.7, einer Plattform zur Erstellung dezentralisierter Websites

Nach einem Jahr der Entwicklung wurde die dezentrale Web-Plattform ZeroNet 0.7, die die Mechanismen der Adressierung und Verifizierung von Bitcoin mit den Technologien der verteilten Bereitstellung von BitTorrent kombiniert, um Webseiten zu erstellen, die nicht zensiert, gefälscht oder blockiert werden können. Der Inhalt der Webseiten wird im P2P-Netzwerk auf den Maschinen der Besucher gespeichert und anhand der digitalen Signatur des Eigentümers überprüft. Für die Adressierung wird ein System alternativer Stamm-DNS-Server Namecoin. Das Projekt ist in Python geschrieben und wird verbreitet unter der GPLv2-Lizenz.

Die auf der Website veröffentlichten Daten sind verifiziert und an das Benutzerkonto des Website-Eigentümers gebunden, ähnlich der Bindung von Bitcoin-Wallets, was auch die Möglichkeit bietet, die Aktualität der Informationen zu kontrollieren und den Inhalt in Echtzeit zu aktualisieren. Zur Verschleierung der IP-Adressen kann das anonyme Netzwerk Tor verwendet werden, dessen Unterstützung in ZeroNet integriert ist. Der Benutzer beteiligt sich an der Verbreitung aller Webseiten, auf die zugegriffen wurde. Nach dem Herunterladen auf das lokale System werden die Dateien im Cache gespeichert und werden von der aktuellen Maschine zur Verfügung gestellt, wobei Methoden verwendet werden, die BitTorrent ähneln.

Um Webseiten in ZeroNet anzusehen, reicht es aus, das Skript zeronet.py zu starten, danach können Webseiten über die URL “http://127.0.0.1:43110/адрес_zeronet” (zum Beispiel “http://127.0.0.1:43110/1HeLLo4uzjaLetFx6NMN3PMwF5qbebTf1D”) im Browser geöffnet werden. Beim Öffnen der Webseite sucht das Programm nach den nächstgelegenen Peers und lädt die mit der angeforderten Seite verbundenen Dateien (html, css, Bilder usw.) herunter.
Um eine eigene Webseite zu erstellen, reicht es aus, den Befehl “zeronet.py siteCreate” auszuführen, danach wird eine Website-ID und ein privater Schlüssel zur Bestätigung der Autorenschaft durch digitale Signatur generiert.

Für die erstellte Webseite wird ein leeres Verzeichnis in der Form “data/1HeLLo4usjaLetFx6NMH5PMwF3qbebTf1D” generiert. Nach der Änderung des Inhalts dieses Verzeichnisses ist eine Bestätigung der neuen Version mittels des Befehls “zeronet.py siteSign identifikator_der_webseite” und der Eingabe des privaten Schlüssels erforderlich. Sobald der neue Inhalt bestätigt ist, muss er mit dem Befehl “zeronet.py sitePublish identifikator_der_webseite” angekündigt werden, damit die geänderte Version den Peers zur Verfügung steht (für die Ankündigung der Änderungen wird die WebSocket-API verwendet). Die Peers überprüfen in der Kette die Integrität der neuen Version anhand der digitalen Signatur, laden den neuen Inhalt herunter und übertragen ihn an andere Peers.

Haupt- Möglichkeiten:

  • Das Fehlen eines einzelnen Ausfallpunkts — die Website bleibt erreichbar, wenn mindestens ein Peer in der Verteilung vorhanden ist;
  • Das Fehlen eines Referenzspeichers für die Website — die Website kann nicht durch das Deaktivieren des Hostings geschlossen werden, da die Daten auf allen Maschinen der Besucher gespeichert sind;
  • Alle zuvor angesehenen Informationen sind im Cache gespeichert und sind mit dem aktuellen Rechner im Offline-Modus verfügbar, ohne auf das globale Netzwerk zugreifen zu müssen.
  • Unterstützung für die Aktualisierung von Inhalten in Echtzeit;
  • Möglichkeit der Adressierung durch Registrierung einer Domain in der Zone „.bit“;
  • Betrieb ohne vorherige Konfiguration — es genügt, das Archiv mit der Software zu entpacken und ein Skript zu starten;
  • Möglichkeit, Websites mit einem Klick zu klonen;
  • Passwortlose Authentifizierung auf der Grundlage des Formats BIP32: Das Konto ist durch dasselbe kryptografische Verfahren geschützt wie die Kryptowährung Bitcoin;
  • Integrierter SQL-Server mit P2P-Datenbanksynchronisationsfunktionen;
  • Möglichkeit der Nutzung von Tor für Anonymität und vollständige Unterstützung der Verwendung von versteckten Tor-Diensten (.onion) anstelle von IPv4-Adressen;
  • Unterstützung für TLS-Verschlüsselung;
  • Automatische Erreichbarkeit über uPnP;
  • Möglichkeit, mehrere Autoren mit unterschiedlichen digitalen Signaturen an die Website anzuhängen;
  • Vorhandensein eines Plugins zur Erstellung von Mehrbenutzerkonfigurationen (openproxy);
  • Unterstützung für die Übertragung von Nachrichtenfeeds;
  • Betrieb in allen Browsern und Betriebssystemen.

Hauptänderungen in ZeroNet 0.7

  • Der Code wurde überarbeitet, um Python3 zu unterstützen, die Kompatibilität mit Python 3.4-3.8 wurde sichergestellt;
  • Ein sicheres Datenbanksynchronisationsschema wurde realisiert;
  • Es wurde, wenn möglich, die Bereitstellung der meisten Drittanbieterbibliotheken zugunsten externer Abhängigkeiten eingestellt;
  • Der Code zur Überprüfung digitaler Signaturen wurde 5-10 mal beschleunigt (die Bibliothek libsecp256k1 wurde verwendet);
  • Die Randomisierung bereits generierter Zertifikate wurde hinzugefügt, um Filter zu umgehen;
  • Der P2P-Code wurde aktualisiert und auf das ZeroNet-Protokoll umgestellt;
  • Ein Offline-Betriebsmodus wurde hinzugefügt;
  • Das Plugin UiPluginManager wurde hinzugefügt, um die Installation und Verwaltung von Drittanbieter-Plugins zu ermöglichen;
  • Vollständige Unterstützung für OpenSSL 1.1 wurde sichergestellt;
  • Bei der Verbindung zu Peers wurden SNI- und ALPN-Platzhalter verwendet, um die Verbindungen wie Anfragen an normale Websites über HTTPS aussehen zu lassen;

Am selben Tag wie das Release von ZeroNet 0.7.0 gebildet Update 0.7.1, in dem eine gefährliche Sicherheitsanfälligkeit behoben wurde, die potenziell die Ausführung von Code auf der Clientseite ermöglicht. Aufgrund eines Fehlers im Code zur Darstellung von Vorlagenvariablen kann eine offene externe Website eine Verbindung zum Client-System über WebSocket mit uneingeschränkten ADMIN/NOSANDBOX-Rechten herstellen, was die Möglichkeit gibt, die Konfigurationseinstellungen zu ändern und den eigenen Code auf dem Computer des Benutzers durch Manipulation des Parameters open_browser auszuführen.
Die Sicherheitsanfälligkeit tritt im Zweig 0.7 sowie in experimentellen Builds ab Revision auf. 4188 (Änderung wurde vor 20 Tagen vorgenommen).

Quelle: opennet.ru

60GB SSD 8Gb DDR4