# RetroShare

Retroshare est un logiciel libre de pair à pair privé créant un réseau informatique (plus exactement un réseau overlay) acentré. Il permet (de façon chiffrée) : partage de fichiers en pair à pair, courrier électronique sans serveur, messagerie instantanée, salons de discussion, forums. Il s'agit d'un type particulier de réseau pair à pair, nommé ami à ami.
Il est doté d'une interface graphique réalisée avec Qt5, disponible sur Windows, macOS et GNU/Linux. La gestion et l'authentification des amis s'effectue par l'intermédiaire du système de clés de chiffrement au format GNU Privacy Guard.
En 2013, le site web prism-break.org recommande RetroShare (parmi d'autres logiciels).
Le nombre d'utilisateurs simultanés est, en janvier 2014, de plus de 5 800.
La popularité du service a augmenté à plusieurs reprises à la suite des actions anti-piratage, en particulier après la fermeture de Megaupload en 2012.
En 2019, des indépendantistes catalans développent une application basée sur Retroshare pour organiser des manifestations sans en informer la police.

## Authentification et connexion

Après l'installation, RetroShare génère une paire de clés de chiffrement GPG (GNU Privacy Guard) (technologie utilisant la cryptographie asymétrique) servant à l'identification du propriétaire des nœuds du réseau RetroShare gérés par l'utilisateur. Le système de signatures associé à la technologie GnuPg permet de témoigner du niveau de confiance de chaque participant pour ses amis. Les connexions entre amis sont chiffrées par OpenSSL, et seuls les paires d'amis l'ayant explicitement autorisé peuvent se connecter entre eux.
La gestion du réseau est confiée à l'utilisateur, qui décide lui-même quelles personnes il inclut dans son cercle d'amis. Une première connexion nécessite donc l'échange d'une paire de clefs. Ensuite, un service de RetroShare gère la mise à disposition des clefs publiques d'amis, ce qui permet de constituer un cercle de correspondants.
Les adresses IP des amis sont récupérées de différentes manières : par une DHT (distributed Hash Table partagée avec le réseau BitTorrent), mais aussi par propagation chez les amis communs. Ces deux fonctionnalités sont optionnelles. Les désactiver permet de transformer le réseau RetroShare en un Darknet.

## Partage de fichiers

RetroShare permet de partager des fichiers sous forme de listes (appelées collections).
Le transfert de fichier s'effectue soit directement entre amis, soit par l'intermédiaire de tunnels anonymes pouvant relier des personnes séparées par une chaîne d'amis. Il s'agit d'une mise en œuvre de l'algorithme de Turtle Hopping (traduction : « saute tortue ») issu du projet Turtle F2F (mais implémenté différemment). Les fichiers sont représentés par leur condensat (ou hash) SHA-1, et un système de liens permet d'exporter ou d'importer des références vers les fichiers partagés. Les amis avec lesquels vous êtes connectés directement et via lesquels les données sont transmises, ne peuvent pas comprendre, si vous demandez à télécharger un fichier ou même de le transmettre à d'autres amis.

## Communication

RetroShare offre plusieurs services permettant aux utilisateurs de RetroShare de communiquer entre eux :
* des salons de discussion publics/privés permettant la discussion instantanée en groupe (type IRC mais plus simple d'emploi)
* une fonction messagerie instantanée privée ou en groupe ;
* une fonction courrier électronique ;
* des forums internes anonymes ou signés ;
* ainsi qu'un système de chaines de diffusion — inspirées du format de données RSS — qui permettent aux personnes qui y souscrivent de télécharger automatiquement les données qui y sont postées. Le contenu de ces chaînes est automatiquement supprimé après quelques mois.

## Interface utilisateur

Le cœur de RetroShare est une bibliothèque logicielle qui gère la couche de cryptographie, l'authentification des amis, ainsi qu'un système de fichiers cache sur lequel sont basés les différents services : forums, messages, etc.
Il existe deux interfaces utilisateur (lesquelles sont connectées au cœur de RetroShare) :
* l'une très basique, en interface en ligne de commande, permet toutefois de lancer RetroShare à distance ;
* l'autre est une interface graphique implémentée en Qt4, et dotée de fonctionnalités classiques : recherche de fichiers, transferts, etc. Ainsi que de divers systèmes de visualisation graphique du réseau proche, de la liste des amis et de leur clef GPG.

## Sécurité et anonymat

La sécurité des échanges d'un réseau RetroShare est assurée par de la cryptographie asymétrique RSA 2048 bits, et par le fait que seules les personnes autorisées peuvent échanger des informations avec le client. Toutes les communications étant chiffrées, il est impossible d'identifier ce qui est transféré.
Afin de permettre au réseau de s'agrandir, RetroShare offre la possibilité à vos amis de se connaître. Ainsi, quand on se connecte chez un ami, on récupère les clefs publiques des amis directs de cette personne. Cela ne permet cependant ni de savoir ce que ces personnes mettent à disposition, ni d'échanger des fichiers avec eux : il faut pour cela que ces amis signent à leur tour votre clef, et autorisent la connexion. Seules les clefs des amis de premier niveau sont propagées, et elles ne le sont qu'à destination des amis directs. Cette fonctionnalité est d'autre part optionnelle. Il n'y a donc pas de propagation incontrôlée de clefs sur le réseau.
En 2011, Linux Magazine évalue la sécurité fournie par RetroShare, et observe plusieurs défauts de sécurité comme l'absence anonymisation, le manque de documentation technique, la possibilité de donner un mot de passe faible ou encore des réglages permissifs par défaut. Selon le journal, l'isolation permise par le service améliore la sécurité, mais au prix d'une mesure semblable à une liste blanche, qui risque de décourager les utilisateurs potentiels.

## Liste des caractéristiques

* Rechercher des amis
* Rechercher des fichiers
* Transmission de données chiffré de messages de type tchat, de courrier électronique, de fichiers, sans utiliser un serveur
* Stockage des messages (tchat et courrier électronique)
* Le tchat propose 54 émoticônes (des smileys par exemple)
* Conversation de groupe (salon de discussion)
* Le chiffrement OpenSSL
* Interface utilisateur graphique créée en utilisant la boîte à outils Qt4
* Une interface utilisateur personnalisable
* Multilingue : actuellement neuf langues sont prises en charge ; d'autres suivront.
* Intégration dans la barre des tâches
* Support de modules (plugins)
* UPnP / NAT-PMP : redirection de ports
* Vue d'ensemble de tous les fichiers partagés
* Les données anonymes partagées avec vos amis
* Plusieurs chargements(téléchargements descendants) et/ou déchargements (téléchargements montants) simultanés
* Reprise des chargements/déchargements après avoir quitté le programme
* Chargement simultané à partir de plusieurs sources (Segmented file transfer (en))
* Essaimage : redistribution d'un fichier avant qu'il ne soit complètement chargé
* Collections : chargement/déchargement groupé de plusieurs fichiers
* Ajout des chargements via des liens webs (à la manière de Magnet (standard))
* Forums chiffrés
* Prise en charge des chaines chiffrées
* Les amis directs peuvent être recommandés à d'autres amis directs
* Aperçu des statistiques de routeur interne
* Assistant de démarrage rapide (pour une installation rapide et facile du logiciel RetroShare)
* Localisation par IP-IP via table de hachage distribuée
* Réglage (en avant) et les ports du routeur est automatiquement hérité de RetroShare.