@mostajs/enrollment
v0.2.1
Published
Enrôler une machine chez un client distant, sans configuration : code dictable au téléphone (usage unique, 7 jours), identité Ed25519 générée sur la machine, approbation par un clic dans la console, re-tentative automatique. Compose crypto-box et schedule
Downloads
435
Maintainers
Readme
@mostajs/enrollment
Auteur : Dr Hamid MADANI [email protected] · Licence : AGPL-3.0-or-later
Niveau : N1 · Dépendance : @mostajs/crypto-box
Enrôler une machine chez un client distant — sans configuration.
Ce que ce module n'est PAS
Ce n'est pas de la licence. Deux questions distinctes, qu'il ne faut jamais fusionner :
| Question | Module |
|---|---|
| « Ce client a-t-il le droit d'utiliser le logiciel ? » | @mostajs/licensing |
| « Cette machine est-elle bien la sienne ? » | ce module |
Les mélanger interdirait de révoquer un enrôlement (machine volée) sans couper la licence.
Les trois verrous
1. Pas de jeton générique dans le binaire. Un jeton d'amorçage embarqué dans chaque .exe
est une faille : quiconque possède le binaire pourrait s'enrôler et devenir un « site »
légitime de votre console.
→ Un code par client, dictable au téléphone, usage unique, 7 jours.
2. machineId n'authentifie pas — il identifie. C'est une valeur publique et
falsifiable.
→ Une paire Ed25519 générée sur la machine ; la clé privée ne sort jamais. Un jeton volé
(fichier de config, sauvegarde, capture réseau) est rejouable ; une clé qui ne bouge pas, non.
3. La console peut être usurpée (DNS détourné, certificat frauduleux). TLS prouve qu'on parle
à console.example — pas qu'on parle à LA console.
→ Chaque approbation est signée Ed25519, vérifiée avec la clé publique embarquée dans le
binaire. Même si TLS tombait, un faux jeton ne pourrait pas être forgé.
Rien à configurer chez le client
L'enrôlement est sortant : la machine appelle la console, jamais l'inverse. Aucun certificat, aucun port ouvert, aucun reverse proxy. Fonctionne derrière une box, un NAT, un pare-feu d'entreprise.
Le code, dictable au téléphone
MJSE-7K4P-2XQ9-M3TACrockford Base32 — ni I, ni L, ni O, ni U. Fini le « c'est un zéro ou un O ? », la
question qui fait échouer une installation à distance. Insensible à la casse, tirets décoratifs.
10 caractères aléatoires + 2 de contrôle : une faute de frappe est rejetée hors ligne, le client voit « code invalide » tout de suite — pas après trente secondes d'attente pour un refus qui ne lui dit pas si c'est lui ou le serveur.
Jamais stocké en clair côté console : seule son empreinte HMAC est conservée. Une fuite de la base ne donne aucun code utilisable.
Le clic est indolore
L'approbation est humaine — mais l'agent re-sonde en boucle. Le client installe et part travailler ; vous approuvez quand vous voulez ; la machine se rattache toute seule. Personne ne refait rien.
Sans cette re-tentative, le client qui installe un dimanche à 8 h devrait tout recommencer lundi.
Le piège du ré-enrôlement
Une machine déjà enrôlée qui revient avec une clé publique différente : disque remplacé chez le client, ou usurpation ? On ne peut pas deviner — donc on ne décide pas. La console lève une alerte explicite et refuse d'approuver sans confirmation consciente.
Tests
npm test # 16 tests mjs-unitUn protocole d'enrôlement se juge sur ce qu'il refuse : force brute verrouillée, faute de frappe qui ne verrouille pas le client maladroit, code expiré, code réutilisé, ré-enrôlement non confirmé, approbation forgée par un imposteur.
