Aller au contenu

Confiance et admission

Un nœud ne fait pas confiance à un autre nœud parce qu’il peut l’atteindre. Il lui fait confiance parce qu’un document auquel il fait déjà confiance dit qui est ce nœud.

Le registre est un document unique et signé qui liste chaque nœud admis : son domaine, sa clé de signature publique et l’empreinte de cette clé, les versions de protocole qu’il parle, ce qu’il est capable de faire, et s’il est actif ou révoqué.

Chaque nœud détient une clé — la clé publique racine du registre. Cette clé est la seule chose à laquelle un nœud fait confiance sans condition. Tout le reste en découle : le nœud vérifie le document du registre par rapport à cette clé, puis vérifie chaque message entrant par rapport à la clé de signature que le registre publie pour l’expéditeur.

Un nœud sans clé racine configurée ne devine pas. Il refuse de résoudre le moindre pair, et le dit.

Le document est signé, donc l’endroit où il est servi n’a pas d’importance. Il porte une date d’émission et une expiration, et il est réémis régulièrement pour que l’expiration reste toujours devant.

L’admission est un examen, pas une inscription.

Quand un nœud est installé, il produit une charge d’admission. Cette charge ne contient que du matériel public : le domaine du nœud, sa clé publique de signature fédérée et son empreinte, l’empreinte de son certificat client, les versions de protocole et les capacités qu’il déclare. Il n’y a aucune clé privée dedans, et aucune n’est demandée.

L’exploitant soumet la charge. Le nœud signe la soumission avec sa propre clé, ce qui prouve qu’il détient la moitié privée de la clé qu’il revendique. C’est tout ce qu’une signature peut prouver — elle ne dit rien sur qui possède le domaine. La soumission atterrit donc dans une file pour qu’une personne l’examine, et l’exploitant fait vérifier l’empreinte de la clé par un autre canal. Un humain l’approuve.

Une fois approuvé et le registre republié, le nœud fédère. Soumettre à nouveau avant l’approbation rafraîchit l’entrée en attente plutôt que d’en créer une seconde.

Rien dans la charge n’accorde la confiance à lui seul.

Un nœud est retiré en marquant son entrée du registre comme révoquée, puis en republiant. Les entrées révoquées restent dans le document environ un mois au lieu de disparaître, pour qu’on voie encore que le nœud était là et ne l’est plus.

Dès que les autres nœuds récupèrent le document republié, les messages du nœud révoqué sont refusés comme ceux de n’importe quel expéditeur inconnu.

Avant tout autre échange, deux nœuds se serrent la main. Chacun envoie la liste de ce qu’il sait faire ; la réponse est le recoupement. C’est ce recoupement que la paire utilise pour le reste de l’échange.

Ça compte, parce que les nœuds ne sont pas toujours à la même version. Un nœud qui reçoit un message qu’il reconnaît mais n’a pas implémenté le refuse proprement et — surtout — ne le marque pas comme livré, pour que l’expéditeur puisse réessayer une fois que les deux côtés auront la fonctionnalité.

L’admission concerne tout le maillage. Un exploitant peut aussi refuser un nœud particulier localement, sans attendre quoi que ce soit de central : l’application d’administration liste chaque serveur avec lequel le nœud a échangé et permet d’en couper un. Cette décision ne prend effet que sur ton nœud.

Le faire nécessite une permission que ton premier administrateur détient déjà.