Réseau P2P

← Retour à l'accueil · Le contrat · Qui êtes-vous ? · Cryptographie

En résumé : Au lieu d'utiliser un seul serveur central (comme Gmail ou Facebook), le système utilise plusieurs relais qui fonctionnent comme des boîtes aux lettres publiques. Vos messages chiffrés sont stockés dans ces relais, et vous pouvez choisir lesquels utiliser.

Qu'est-ce qu'un réseau P2P ?

Imaginez que vous voulez envoyer une lettre. Dans un système classique (comme la poste traditionnelle), tous les courriers passent par un seul bureau central. Si ce bureau tombe en panne, plus rien ne fonctionne.

Avec un réseau pair-à-pair (P2P), c'est différent : il y a plusieurs relais (comme plusieurs boîtes aux lettres) répartis sur Internet. Vous pouvez choisir où déposer vos messages, et si un relais ne fonctionne plus, vous pouvez utiliser un autre.

Les avantages de cette approche :

Comment fonctionnent les relais ?

Un relais, c'est comme une boîte aux lettres publique sur Internet. Quand vous voulez communiquer avec quelqu'un, vous déposez trois choses séparément dans cette boîte :

  1. Le message chiffré : votre message codé (comme une lettre dans une enveloppe scellée)
  2. La signature : une preuve que c'est bien vous qui avez envoyé le message (comme votre signature manuscrite)
  3. La clé de déchiffrement : la clé pour décoder le message (comme la clé de votre boîte aux lettres)
Pourquoi séparer ces trois éléments ? C'est comme mettre votre lettre, votre signature et votre clé dans trois enveloppes différentes. Même si quelqu'un trouve une enveloppe, il ne peut pas tout faire sans les autres. C'est plus sûr !

Comment récupérer vos messages ?

Le système fonctionne comme une boîte aux lettres classique : vous allez vérifier régulièrement s'il y a du courrier. C'est ce qu'on appelle le modèle "pull-only" (vous tirez les informations, elles ne vous sont pas poussées).

Cette méthode fonctionne partout, même dans les environnements les plus restrictifs, car elle utilise simplement le protocole HTTP (comme quand vous visitez un site web).

Les relais se parlent entre eux

Les relais peuvent être configurés pour se copier mutuellement les messages :

Exemple : Si vous déposez un message sur le relais A, et que A est configuré pour copier vers B et C, votre message sera disponible sur les trois relais. Si A tombe en panne, vous pouvez toujours récupérer votre message depuis B ou C.

Quels relais utiliser ?

Par défaut, un relais principal est configuré. Vous pouvez en ajouter d'autres, jusqu'à 8 relais au maximum. L'application tente de se connecter à tous les relais activés pour déposer et récupérer les messages.

Jusqu'à 8 relais : Dans les paramètres de UserWallet, vous pouvez ajouter vos propres relais (comme plusieurs boîtes aux lettres). Maximum 8 au total. Vous activez ou désactivez chaque relais, et choisissez l'ordre de priorité. L'application utilise tous les relais activés pour déposer et récupérer.

Pourquoi dupliquer les relais et les flux ?

Plus vous utilisez de relais, plus vos messages ont de chances d'être disponibles et de circuler.

En résumé : configurer jusqu'à 8 relais et tous les activer, c'est maximiser les chemins pour envoyer et recevoir, sans dépendre d'un seul point.

Les actions possibles avec un relais

Un relais offre plusieurs "actions" (appelées endpoints) que vous pouvez utiliser. C'est comme une boîte aux lettres avec plusieurs fonctions : déposer, récupérer, vérifier l'état, etc.

Note technique : Ces actions utilisent le protocole HTTP (comme les sites web) avec des méthodes GET (lire) et POST (écrire).

Méthode Endpoint Description
GET /health Vérifier si le relais fonctionne correctement
GET /messages?start=<ts>&end=<ts>&service=<uuid> Récupérer les messages entre deux dates (optionnel : filtrer par service)
POST /messages Déposer un message chiffré dans le relais
GET /messages/:hash Récupérer un message précis grâce à son identifiant unique (hash)
GET /signatures/:hash Récupérer les signatures associées à un message
POST /signatures Déposer une signature dans le relais
GET /keys/:hash Récupérer les clés pour déchiffrer un message
POST /keys Déposer une clé de déchiffrement dans le relais
GET /metrics Consulter les statistiques du relais (nombre de messages, signatures, clés stockées)
GET /bloom Obtenir une liste des messages déjà vus (pour éviter de demander plusieurs fois le même message)

Comment les relais stockent les données

Organisation du stockage

Les relais organisent les données comme une bibliothèque bien rangée :

Protection contre les abus

Les relais sont protégés contre les utilisations abusives :

Éviter les doublons

Chaque message a une empreinte unique (comme une empreinte digitale). Le système utilise cette empreinte pour s'assurer qu'un même message n'est pas stocké plusieurs fois, même s'il arrive depuis plusieurs relais. Cela évite aussi que les messages tournent en boucle entre les relais.

Détails techniques pour les développeurs

Configuration des relais pairs

Les administrateurs de relais peuvent configurer leurs relais pour se copier mutuellement les messages. Cela se fait via une variable de configuration :

PEER_RELAYS=http://relay1:3019,http://relay2:3019

Quand un message arrive sur un relais, il est automatiquement copié vers tous les relais pairs configurés (si le message n'a pas déjà été vu).

Bloom filter

Le endpoint /bloom retourne une liste compacte des messages déjà vus par le relais. Les applications peuvent utiliser cette liste pour éviter de demander plusieurs fois le même message, ce qui réduit la charge sur le réseau et améliore les performances.

Statistiques du relais

Le endpoint /metrics expose des statistiques au format Prometheus (pour le monitoring) :

Gestion des erreurs et timeouts

Les applications utilisent un délai d'attente de 15 secondes pour toutes les requêtes vers les relais. Si une requête échoue ou prend trop de temps, l'application peut essayer un autre relais configuré, ou réessayer plus tard avec un délai progressif (backoff exponentiel).

Pourquoi cette architecture ?

Cette façon de faire a été choisie pour plusieurs raisons importantes :

En résumé, c'est un système simple, fiable et qui vous donne le contrôle, tout en étant sécurisé.

← Retour à l'accueil · Le contrat · Qui êtes-vous ? · Cryptographie