Les listes de discussion chiffrées sont gérées par Schleuder, et utilisent GPG. Les clefs privées de Schleuder (une par liste), ainsi que leurs phrases de passe, se trouvent sur bulbe, et les clefs publiques correspondantes sont disponibles sur les serveurs de clefs.
Plusieurs raisons peuvent amener à révoquer ces clefs, par exemple le départ
d'un membre de l'équipe admin. sys, ou encore la perte du contrôle de bulbe.
Procédure
La procédure qui suit, qui consiste à envoyer à chaque membre de l'équipe admin. sys. un fragment de certificat de révocation pour chaque clef privée de Schleuder, est à exécuter lors de tout changement dans la composition de l'équipe admin. sys. :
sudo -u schleuder -H schleuder-gen-revoke [-n N] [-i] [LIST [LIST]]
Une partie de la commande schleuder-gen-revoke est interactive si on
l'utilise avec l'option -i : pour chaque certificat de révocation à générer,
gpg va poser quatre questions dont les réponses fournies par le script en
mode non-interactif sont les suivantes :
- si on veut réellement générer un certificat de révocation pour cette clef : oui ;
- le motif de révocation à inclure dans le certificat :
0(aucune raison) ; - un commentaire éventuel à inclure dans le certificat : aucun commentaire ;
- confirmer une dernière fois avant de générer le certificat : oui.
Le reste se fait tout seul.
Au besoin, il est aussi possible de générer un certificat de révocation pour une liste particulière en fournissant son nom comme argument du script.
Détails
Le script shell /usr/local/bin/schleuder-gen-revoke opère comme suit :
1. Initialisation
Quelques variables utiles sont initialisées, notamment :
GF_SHARES- Correspond au nombre de membres de la liste chiffrée ayant pour alias
rootdans le fichier/etc/aliases(typiquement, dans notre cas, c'est soitadminsys, soitmachines). Cette variable sera utilisée comme argument de l'option-mde la commandegfsplit. THRESHOLD- Nombre de fragments nécessaires et suffisants à réunir pour reconstruire
un certificat de révocation avec la commande
gfcombine. Cette variable sera utilisée comme argument de l'option-nde la commandegfsplit. Ici,THRESHOLDvaut3pour une valeur deGF_SHAREScomprise entre4et8; sa valeur peut être modifiée en passant l'option-n Nau scriptschleuder-gen-revoke.
2. Check-points
Avant de faire quoi que ce soit, le script échouera lamentablement si :
- les valeurs de
GF_SHARESetTHRESHOLDsont incohérentes ; - l'user effectif n'est pas
schleuder; - l'user appelant n'est pas membre du groupe
sudo; - la variable
HOMEne correspond pas à celle deschleuder.
Puis le répertoire de travail est modifié : tout se fera dans un répertoire
temporaire (tmpfs) aux permissions restreintes (schleuder:schleuder,
mode=0700).
3. Génération des certificats
Pour chaque clef privée (donc pour chaque liste de discussion chiffrée),
la phrase de passe de la clef est extraite du fichier de configuration
correspondant (dans /etc/schleuder/lists/nos-oignons.net/) et passée à
gpg --gen-revoke à travers un pipe.
NOTE : Cette étape est par défaut entièrement automatisée. Le choix de l'interactivité reste possible, mais il convient alors de répondre correctement aux questions posées (voir plus haut).
4. Division des certificats
Au fur et à mesure de leur création, les certificats de révocation sont
fragmentés avec gfsplit -n ${THRESHOLD} -m ${GF_SHARES} et immédiatement
supprimés.
5. Chiffrement des fragments
Les fragments sont ensuite chiffrés à destination des membres de l'équipe admin.
sys.
Pour chaque certificat de révocation (donc pour chaque clef privée de schleuder),
chaque fragment est chiffré pour un et un seul admin. sys., et signé avec la
clef privée de la liste adminsys.
6. Envoi des fragments
Enfin un mail individualisé (lui aussi chiffré et signé) est envoyé à chaque
membre de la liste adminsys ou machines. Le corps du message dit bonjour
Untel, indique les valeurs de THRESHOLD et GF_SHARES utilisées pour spliter
les certificats de révocation, et finit avec l'heure et l'identifiant de l'opérateur.