Comme vous le savez sûrement, seules les clés privées de membres peuvent calculer de nouveaux blocs. C’est-à-dire que pour calculer un bloc, votre nœud doit être en possession de votre clé privée d’individu membre de la Ğ1.
C’est une fonctionnalité voulue, qui permet notamment un calcul très efficace en énergie pour la preuve de travail, comparé au Bitcoin et autres altcoins qui font la course à la puissance.
Cela apporte également une sécurité générale, car il ne suffit pas d’avoir une armée de machines pour venir casser la monnaie. Et même avec une telle armée, si seul 1 individu est derrière, alors l’impact relatif de ces machines n’est que de (1 / nombre de membres calculant).
De plus, il est dangereux de donner sa clé privée : celui qui la possède peut récupérer toute la monnaie de votre compte, se faire passer pour vous, certifier n’importe qui et révoquer votre compte. Donc partager sa clé privée avec d’autres personnes est risqué pour soi-même. C’est sur ce principe que Duniter pose le postulat 1 utilisateur = 1 voix, et que sa voix ne peut être transmise à un tiers. Ou si transmission il y a, que ça ne soit pas à grande échelle.
Il reste le problème que la clé privée est disponible sur la machine dont le nœud calcule des blocs. Elle est a minima dans la mémoire, au pire en clair sur le disque dur. Ce n’est pas très rassurant en termes de sécurité, le vol est tout à fait possible, et avec un peu de malchance si la révocation n’a pas été sauvegardée quelque part, le voleur peut se faire passer pour vous et repart avec la cagnotte !
La clé déléguée
L’idée de la clé déléguée consiste à pouvoir déléguer le calcul des blocs à une sous-clé, afin de mettre le trousseau principal en sécurité.
Cette idée est présente depuis longtemps, mais nous n’avions pas encore trouvé de solution assez satisfaisante pour l’implémenter. Pourquoi ? Parce que si je suis capable de créer une clé qui calcule sans risque pour mon propre compte, alors je peux très bien la filer à Google qui s’occupera de calculer à ma place. Et ce même Google de réitérer l’opération avec plein d’autres membres (moyennant quelques UNL), qui dispose alors d’une armée de clés et de machines pour calculer tous les blocs, et donc prendre le contrôle de la blockchain Ğ1. Autant dire qu’il a pouvoir de vie ou de mort sur la monnaie.
Mais l’idée qui m’est venue que l’on pourrait avoir comme règle :
Une clé déléguée peut révoquer le compte membre qui lui est associé.
Voilà, c’est simple, clair, limpide. Créer une clé déléguée permet de calculer des blocs avec cette clé, et donc de sécuriser la clé privée du compte membre en la retirant de la machine. Mais la corruption de la clé déléguée (vol par quelqu’un d’autre, don à Google) reste risqué pour soi, car notre compte peut être révoquer contre notre gré : adieu la production du DU, la certification de membres, et le calcul de blocs. Il faut tout recommencer.
A noter que la monnaie présente sur le compte ne peut pas être volée, tout comme il n’est pas possible de certifier des individus ni faire perdurer le compte. La clé déléguée peut seulement calculer des blocs au nom du membre à qui elle est associée, ou révoquer le compte du membre.
Il y aussi l’idée que l’on peut changer à tout moment de clé déléguée, afin d’annuler la précédente. Ce peut être parce qu’on pense sa clé corrompue par exemple.
Effet bénéfique également : on dispose de 2 clés pour révoquer son compte : la clé principale, et la clé déléguée. On double les chances de pouvoir révoquer son compte en cas de pépin.
Voilà, je laisse cette idée mûrir, et vos commentaires la juger.