# RetroShare

RetroShare ist ein freies Computerprogramm, das verschiedene verschlüsselte Kommunikationsmöglichkeiten und serverloses Filesharing zwischen Freunden (friend-to-friend) und darüber hinaus ermöglicht. Es handelt sich um kein striktes Darknet-Programm, weil der Austausch von Informationen und Dateien auch mit nicht direkt verbundenen Freunden auf zweiter, dritter, vierter, ... Ebene per Turtle-Routing anonym möglich ist. RetroShare kann auch über das Tor- und I2P-Netzwerk verborgen Dienste verwenden, um einen sogenannten versteckten Knoten zu erstellen, dessen IP-Adresse dann selbst für die Freunde auf erster Ebene anonymisiert ist. Freunde werden in der Freundesliste mittels RSA-Schlüsseln zuverlässig identifiziert und authentifiziert. RetroShare bietet mehrere Instant-Messaging-Möglichkeiten, einen E-Mail-Client, IP-Telefonie (VoIP), Videokonferenz, Feedreader sowie interne Foren und Channels, mit denen Mitteilungen öffentlich oder anonym an Freunde und Gruppen gesendet werden können. Der Austausch sämtlicher Informationen und Dateien erfolgt dabei ohne zentrale Dienste wie z. B. Server. Die Verschlüsselung erfolgt nur pro Hop mit OpenSSL: Im Laufe der Zeit hat sich das quell-offene Computerprogramm Spot-On als Nachfolger von Web-of-Trust-Sharing herausgebildet, weil es Ende-zu-Ende verschlüsselt. In RetroShare kann jeder Hop die heruntergeladene Datei sehen – und sie wird entschlüsselt und wieder neu verschlüsselt. Jedem Knotenpunkt muss daher Vertrauen entgegengebracht werden. Aufgrund der Ende-zu-Ende-Verschlüsselung des Friend-to-friend-Sharing Nachfolgers Spot-On, sei die Entwicklung von RetroShare langsamer geworden.

## Eigenschaften
### Authentifizierung und Verbindung

Beim ersten Start erzeugt RetroShare ein Benutzerkonto und den dazugehörigen OpenPGP-Schlüssel. Für dieses Benutzerkonto wird dann ein Knoten erstellt, der vorerst noch keine Verbindungen zu Freunden aufbauen kann und alle Verbindungsversuche von außen ablehnt. Erst wenn mit anderen Knoten von Freunden der Schlüssel ausgetauscht wird, kann eine Verbindung aufgebaut werden. Versuchen Knoten, welche nicht in die Freundesliste hinzugefügt wurden, eine Verbindung aufzubauen, wird diese abgelehnt. Verbindungen werden ausschließlich zu Knoten aufgebaut, welche man manuell zu seiner Freundesliste hinzugefügt hat. Man kann mit einem Benutzerkonto auch mehrere Knoten auf verschiedenen Rechnern erstellen, und diese untereinander befreunden.
Die OpenPGP-Schlüssel der Benutzerkonten können von Freunden untereinander ausgetauscht und beglaubigt werden (siehe auch: Keysigning-Party und Web of Trust). Dabei sollte darauf geachtet werden, dass nur die Schlüssel beglaubigt werden, deren Echtheit man bestätigen kann (z. B. Personen, die man kennt oder denen man vertraut).
Die Netzwerkverbindungen zwischen den Freunden erfolgen direkt und Ende-zu-Ende verschlüsselt.

### Dateitransfer

Freunde von Freunden können sich nicht direkt untereinander verbinden. Es besteht jedoch die Möglichkeit, auf deren Freigaben und Informationen anonym und verschlüsselt zuzugreifen, sofern dies vom Benutzer aktiviert wurde. Suche, Zugriff, sowie Hoch- und Herunterladen dieser Dateien oder sonstigen Informationen erfolgen per „Routing“ über die Freunde. Das heißt, dass die Quelle der Daten (der Hochladende) und das Ziel der Daten (der Herunterladende) nicht direkt, sondern nur mittels gemeinsamer Freunde indirekt kommunizieren. Dabei werden anonyme Tunnel aktuell mit maximal acht Knoten aufgebaut. Somit kann man Informationen und Dateien netzwerkweit austauschen, ohne mit allen Teilnehmern direkt verbunden zu sein. Da alle Daten und Kommunikationen im Netzwerk OpenSSL verschlüsselt vom Absender zum Empfänger übertragen werden, kann niemand (auch keiner der Teilnehmer, die die Kommunikations-Pakete oder Dateien weiterleiten) den Austausch überwachen, kontrollieren oder zensieren. Freunde, mit denen man direkt verbunden ist und über die die Daten geleitet werden, können auch nicht nachvollziehen, ob man eine Datei selbst anfordert (herunterlädt) oder diese zu weiteren Freunden weiterleitet (hochlädt). Dadurch kann nicht nachgewiesen werden, welcher Teilnehmer der wahre ursprüngliche Absender oder Empfänger einer Datei oder Nachricht ist. Jeder RetroShare-Benutzer kann auswählen, ob der anonyme Datenverkehr vom Filesharing, die Beiträge von den internen Foren und Kanälen, sowie die Übersichts-Informationen, von Freunden über seine eigene IP-Adresse geleitet werden darf. Diese Funktion kann für jeden direkt verbundenen Freund einzeln und individuell angepasst sowie jederzeit umgeändert werden.

### Dateienfreigabe

Die Freigaben sämtlicher Dateien lassen sich ähnlich verwalten wie z. B. bei eMule. Jeder RetroShare Benutzer kann bestimmen, ob er einzelne Dateien, Verzeichnisse oder ganze Festplattenlaufwerke freigibt.
Es kann ausgewählt werden, ob alle verbundenen Freunde oder nur gewisse Freunde auf bestimmte Dateien direkt zugreifen dürfen. Für jeden Freund kann man somit andere Dateien, Verzeichnisse oder Festplattenlaufwerke zur Verfügung stellen. Auch besteht die Möglichkeit, sämtliche freigegebene Dateien dem kompletten Netzwerk (Freunde von Freunden usw.) oder nur direkt verbundenen Freunden, gegebenenfalls beiden, anonym zur Verfügung zu stellen. Die Dateien können dann zum Schutz der Anonymität nur über die interne Suche oder per veröffentlichtem Hyperlink z. B. in den internen oder externen Foren gefunden werden. Ein direkter Zugriff auf die Freigaben ist dann nicht mehr möglich. Durch die Routingfunktion in RetroShare kann mit dieser Option nicht eindeutig nachgewiesen werden, welcher Benutzer der wirkliche Sender (Uploader) oder Empfänger (Downloader) einer Datei oder Information ist.
Bei der Auswahl des direkten Zugriff auf Dateien oder Verzeichnisse können die Freunde die Freigaben per Baumansicht oder Listenansicht durchsuchen. Die freigegebenen Dateien lassen sich dabei nach dem Alter, der Größe und den Namen sortiert anzeigen. Mit dieser Option können die direkt verbundenen Freunde nachvollziehen, welche Dateien von dem Freund freigegeben werden.
Alle Funktionen der Datenfreigabe lassen sich individuell anpassen und bei Bedarf jederzeit ändern.

### Kommunikation

RetroShare enthält einen E-Mail-Client, Instant Messaging, Rundsenden, Foren, Newsgroups, Chat-Lobbys, Fernchat, VoIP, Videokonferenz und Web-Crawling. Alle Kommunikationsmöglichkeiten sind dabei verschlüsselt und funktionieren ohne die Benutzung eines Servers oder andere Zwischendienste.
Der E-Mail-Client ermöglicht es, Offline-Nachrichten an Freunde zu senden. Er verfügt über Ordner für eingehende, ausgehende und gesendete Nachrichten sowie Entwürfe und einen Papierkorb um gelöschte Nachrichten wiederherzustellen. Nachrichten können nach ihrer Wichtigkeit sortiert und verwaltet werden. Dafür stehen bereits vorgegebene Schlagwörter zur Verfügung, die sich durch eigene individuell erstellte Wörter erweitern lassen. Weitere Optionen des E-Mail-Client sind: auf eingehende E-Mails direkt antworten, E-Mails drucken sowie E-Mails Dateianhänge hinzufügen. Dafür können, wie auch bei den meisten anderen RetroShare-Kommunikationsmöglichkeiten, verschiedene Schriftarten und -Größen, Farben sowie Symbole genutzt werden.
Mit dem Instant Messaging Chat ist es möglich, mit direkt verbundenen Freunden privat zu chatten, ohne dass andere verbundene Freunde daran beteiligt werden oder davon mitbekommen. Zur besseren Übersicht oder Erkennung ist es möglich, eigene Avatare für den privaten Chat anzulegen. Per Drag and Drop lassen sich bei Bedarf schnell und einfach Dateien mit dem privaten Chat verschicken. Das funktioniert bei allen Kommunikationsmöglichkeiten in RetroShare.
Das Rundsenden ermöglicht es, alle direkt verbundenen Freunde auf einmal anzuschreiben. Freunde, die nicht direkt miteinander verbunden sind, können jedoch nur die Beiträge des direkt verbundenen Freundes lesen oder darauf antworten.
Die internen Foren sind direkt über RetroShare erreichbar und werden in den Cache der RetroShare-Anwender verteilt und verschlüsselt gespeichert. Somit sind die RetroShare-Foren unabhängig von externen Diensten wie Servern. Die Foren in RetroShare lassen sich ähnlich verwalten wie die externen Internetforen. Es können öffentlich oder anonym Hauptthemen und Unterthemen erstellt werden. Ob das komplette RetroShare-Netzwerk Zugriff auf den Forumbereich hat oder nur ausgewählte Freunde oder Gruppen, kann der Ersteller beim Erstellen der Foren auswählen. Auch bestimmt der Ersteller, ob in seinem Forumbereich ein Kommentar öffentlich (mit Nickname) oder anonym (ohne Namen) veröffentlicht werden darf. Sobald ein Forumbereich öffentlich ist, können die Beiträge nur veröffentlicht werden, wenn der RetroShare-Benutzer seinen Kommentar mit seinem Passwort beglaubigt. Im Anschluss werden seine Beiträge mit seinem RetroShare-Account Nickname veröffentlicht. Die Haupt- und Unterthemen in den Foren lassen sich auch nach mehreren Schlagwörtern durchsuchen. Der Beliebtheitsgrad der Foren wird anhand der Anzahl der Abonnements ausgewertet und per Diagramm neben jedem Forum angezeigt. Abonnierte Foren lassen sich zu jeder Zeit auch wieder abbestellen.
Die internen RetroShare-Newsgroups können wie auch die Foren selbst erstellt werden. Im Vergleich zu den Foren können jedoch die Newsgroups jederzeit vom Ersteller geändert werden. Auch können die Newsgroups mit ausgewählten direkt verbundenen Freunden geteilt werden. Diese Freunde besitzen dann, wie auch der Ersteller, volle Schreib- und Zugriffsrechte auf der erstellten Newsgroup. Eine weitere Möglichkeit besteht darin, zu bestimmen, ob jeder RetroShare-Benutzer die Inhalte der Newsgroup sehen und herunterladen darf oder nur ausgewählte Freunde. Die Inhalte der verschiedenen RetroShare-Newsgroups lassen sich außerdem auf Wunsch automatisch herunterladen wenn diese abonniert wurden. Sobald von dem/den Ersteller(n) neue Informationen oder Dateien in seinen/ihren Newsgroups zur Verfügung gestellt wurden, beginnt der Download von diesen veröffentlichten Dateien. Die Newsgroups werden in „eigene Kanäle“, „abonnierte Kanäle“, „beliebte Kanäle“ sowie andere Kanäle eingeteilt. Der Beliebtheitsgrad der Newsgroup wird anhand der Anzahl der Abonnements ausgewertet und per Diagramm neben jeder öffentlichen Newsgroup angezeigt. Die abonnierten Newsgroups lassen sich zu jeder Zeit auch wieder abbestellen.
Mit den Chat-Lobbys kann der RetroShare-Benutzer über die IP-Adressen der direkten Freunde und wiederum deren Freunde usw. mit anderen nicht verbundenen RetroShare-Benutzern anonym chatten. Um die Identität in den Chat-Lobbys auch vor den direkt verbundenen Freunden zu verschleiern, besteht die Option, seinen RetroShare-Benutzerkonto Nickname in den Chat-Lobbys jederzeit in einen anderen pseudonymen Nickname zu ändern. Um Spam sowie Trolle zu vermeiden, können alle RetroShare-Benutzer in den Chat-Lobbys die eingehenden Nachrichten jedes einzelnen Nicknames, von denen Spam oder ein Troll ausgeht, einfach und schnell deaktivieren. Es besteht die Möglichkeit, eigene Chat-Lobbys zu erstellen und zu bestimmen, ob auf diese Lobbys das komplette RetroShare-Netzwerk zugreifen darf oder nur ausgewählte Freunde.
Der Fernchat ermöglicht die Option, über die IP-Adressen der direkt verbundenen Freunde, mit anderen nicht verbundenen RetroShare-Teilnehmern, privates, anonymes und verschlüsseltes Instant Messaging zu betreiben. Dazu wählt sich der Ersteller des Fernchat seinen entfernten Kommunikationspartner aus, sichert den Fernchat mit seinem erstellten RetroShare-Passwort und veröffentlicht den Fernchat per URL-Link in einer der verschiedenen Chat-Lobbys. Der gewünschte Kommunikationspartner kann dann von den Chat-Lobbys aus den Fernchat mit seinem individuell erstellten Passwort betreten. Alle anderen Teilnehmer in der Chat-Lobby haben keinen Zugriff auf den erstellten Fernchat. Der Ersteller des Fernchat kann in Minuten, Stunden oder Tagen bestimmen wie lange dieser Fernchat gültig ist.
Per Plug-in ist verschlüsselte IP-Telefonie mit den direkt verbundenen Freunden möglich, und es kann ausgewählt werden, ob die Übertragung kontinuierlich, stimm-aktiviert oder nur manuell durch Drücken einer Taste erfolgt.
Die serverlose und verschlüsselte Kommunikationsplattform bietet die technische Grundlage, um weitere Plug-ins einfach zu implementieren oder wieder zu entfernen. So besteht mit dem Plug-in „Web-Crawling“ die Möglichkeit, öffentlich oder anonym gepostete Hyperlinks, URLs oder sonstige Informationen von anderen RetroShare-Benutzern beurteilen und bewerten zu lassen. Mit einem Fotografie-Plug-in lassen sich Bilder oder Fotoalben erstellen und verwalten wie bei sozialen Netzwerken für direkt verbundene Freunde.
Es sind Gruppenchats mit Freunden oder Arbeitskollegen möglich, beispielsweise um gemeinsame Besprechungen abzuhalten. Die direkt verbundenen RetroShare-Freunde lassen sich bei Bedarf in selbst benannte oder vorgegebene Gruppen wie z. B. Familie, Freunde oder Favoriten etc. sortieren und verwalten. Auch besteht die Möglichkeit, dass definierte Benutzergruppen gemeinsam an Dokumenten arbeiten, welche dann direkt, mit schneller Verbindung und sicher per RetroShare synchronisiert werden.

## Fähigkeiten

* sämtliche Verbindungen zwischen den Knoten sind OpenSSL-Verschlüsselt
* Authentifizierung der Freundesliste über OpenPGP-Schlüssel (Unterstützung bis zu 4096bit)
* Turtle Routing erlaubt sicheren und anonymen Datei- und Informationstransfer mit bis zu sechs Hops weit entfernten Knoten
* dezentrale Chats, Newsgroups, E-Mail, Foren, IP-Telefonie, Videokonferenz und Datenübertragung ohne Benutzung eines Servers
* IP-Lokalisierung per DHT ist möglich
* Betrieb eines Knotens als Hidden Service mit .onion Adresse
* Übersicht der internen Routerstatistiken
* Freie Auswahl der Port-Konfiguration, UPnP / NAT-PMP-Port-Öffnung
* Plug-in-Unterstützung
* Qt5-Benutzeroberfläche, dessen Aussehen sich vielfältig gestalten und anpassen lässt
* Integration in die Betriebssystem-Taskleiste
* Webschnittstelle-Unterstützung um Retroshare über den Webbrowser zu benutzen
* Gruppenverwaltung der Kontakte in z. B.:Familie, Bekannte, Arbeitskollegen etc.
* Individuelle und anpassbare Berechtigung pro Freund oder Gruppe
* Erstellung von mehreren pseudonymen Accounts und Nicknames mit deren [ID] anonym Beiträge erstellt oder bewertet werden können
* Erstellung von dezentralen Chat-Räumen möglich; öffentlich oder privat nur mit Einladung
* Schnellstartassistent
* Direkte Freunde können per interner Einladung an andere direkte Freunde weiter empfohlen und auf diesem Wege auch angenommen werden
* Paralleler Download von mehreren Quellen
* Swarming (Weiterverteilen von Dateien, noch bevor sie komplett geladen wurden)
* Unterstützung für die Wiederaufnahme der Downloads nach Beenden des Programms
* Hinzufügen von Downloads über Webseiten-Links
* Anonyme Freigaben von Ordnern und Dateien können per Turtle Routing im Netzwerk gefunden und als Quelle verwendet werden
* Datenfreigabe von durchsuchbaren Ordnern für Freunde mit Berechtigungskonzept
* Kollektionen von Dateien können erstellt werden, ähnlich wie Torrent Files

## Verwandte Projekte

* I2P
* GNUnet
* Tox (Protokoll)