Salut à tous,
La question soulevée par @Nechrom est tout à fait pertinente. Lier directement et automatiquement l’identité monétaire publique (on-chain) à l’identité de communication (off-chain) expose les utilisateurs à du ciblage marketing sauvage ou du siphonnage de clientèle. N’importe quel concurrent pourrait analyser la blockchain, lister les clés publiques des clients d’un commerce et leur envoyer des DMs d’incitation.
Pour résoudre ce problème, l’écosystème UPlanet / Astroport applique un principe de découplage strict des couches de données et utilise un protocole de génération de clés décentralisé et déterministe.
Voici comment sont fabriqués et gérés les clés :
1. Le système de “Double-Clé” déterministe (Découplage des rôles)
Le protocole n’utilise jamais la clé monétaire Ğ1 pour chiffrer ou signer les communications, et n’utilise pas non plus deux phrases de restauration distinctes (ce qui détruirait l’expérience utilisateur).
À la création du compte, l’utilisateur génère un secret unique (un couple SALT / PEPPER issu de Diceware ou dérivé d’une clé SSH). À l’aide de fonctions de dérivation (scrypt), keygen crée plusieurs clés asymétriques totalement distinctes et hermétiques en apparence :
- La clé monétaire Ğ1 (
.secret.dunikey) dédiée à Duniter v2.
- La clé de messagerie Nostr (
.secret.nostr - NSEC/NPUB) dédiée aux DMs chiffrés de bout en bout (NIP-44).
- La clé de nommage IPFS (
.secret.ipns) pour le stockage décentralisé.
L’utilisateur n’a qu’un seul identifiant/secret à sauvegarder, mais ses identités publique (financière) et privée (communication) n’ont aucun lien cryptographique évident.
2. L’association d’identité à consentement (Opt-in)
La liaison entre l’adresse Ğ1 et le profil de messagerie Nostr n’est pas inscrite sur la blockchain et n’est pas automatique. Elle est déclarée de manière décentralisée via un document d’identité DID (Kind 30800) ou des tags de profil Nostr (["i", "g1pub:<adresse_g1>"]), sous le contrôle exclusif de l’utilisateur :
- Le commerçant choisit de lier son portefeuille à son profil de messagerie pour être facilement contacté par ses clients.
- Le client, lui, peut laisser son profil Nostr en mode privé (
public: false), ou tout simplement choisir de ne pas publier l’association entre son adresse de paiement et sa clé Nostr.
Un concurrent qui scrute la blockchain verra passer des Junes vers le portefeuille du commerçant, mais ne pourra pas en déduire la clé Nostr du client pour le démarcher.
3. Le pare-feu décentralisé (Listes blanches N1/N2)
Dans l’éventualité où la clé publique Nostr d’un utilisateur est découverte, les relais locaux (strfry embarqués sur les nœuds Astroport) appliquent des règles de filtrage à l’écriture.
Grâce à un système de liste blanche d’amis et d’amis d’amis (amisOfAmis.txt), la station n’accepte et ne notifie les DMs entrants que s’ils proviennent d’un contact de premier niveau (N1) ou de second niveau (N2). Les messages non sollicités provenant de parfaits inconnus ou de robots de démarchage sont ainsi rejetés à la périphérie du réseau, avant même d’atteindre la boîte de réception de l’utilisateur.
Ce cloisonnement entre la couche financière (Duniter) et la couche de communication (Nostr) est une approche viable pour concilier la transparence nécessaire d’un registre de monnaie libre et le respect de la vie privée des utilisateurs.