Sujet : Re: usage de cancel-clock
De : schaefer (at) *nospam* alphanet.ch (Marc SCHAEFER)
Groupes : fr.comp.usenet.serveursDate : 09. Sep 2022, 10:19:13
Autres entêtes
Organisation : Posted through news.alphanet.ch
Message-ID : <tff0eh$dom$1@shakotay.alphanet.ch>
References : 1 2 3 4 5 6
User-Agent : tin/2.4.3-20181224 ("Glen Mhor") (UNIX) (Linux/4.19.0-21-amd64 (x86_64))
jdd <
jdd@dodin.org> wrote:
c'est là que ça blesse, le cancel-lock utilise une clé sha, donc une
authentification très forte.
Non, c'est un simple hachage. Toute la beauté du truc est de ne pas
utiliser de système de chiffrement asymétrique (à clé publique), et donc
de ne pas nécessiter de moyen d'authentifier les clés (PKI).
En bref, sur chaque article vient un code, Cancel-Lock, généré comme
hachage(secret, Message-ID). Et celui qui veut l'effacer ou le remplacer
doit prouver sa connaissance du secret en le publiant (Cancel-Key).
Les serveurs vérifient alors que hachage(Cancel-Key, Message-ID) est
le bon!
Là où c'est génial c'est qu'en fait le secret n'est pas statique, mais
peut être généré par secret = hachage(très_secret, Message-ID). Ou par
tout autre moyen qui fait que chaque article a un autre secret, et donc
qu'éventer le secret lors du cancel ou Supersedes: n'a pas d'impact.
Tout ceci est basé sur le fait que les hachage cryptographiques sont
difficilement inversibles.
Maintenant, si tu veux que ton serveur AJOUTE un Cancel-Lock de plus
(soit car l'utilisateur n'en a en fait pas mis, ou pour te donner le
droit de supprimer plus tard!), il faut trouver un moyen de générer
des secrets "par utilisateur" (ce n'est pas strictement obligatoire),
souvent on fait:
secret = hachage(très_secret_du_serveur, utilisateur, Message-ID)
Et donc, quand l'utilisateur-qui-ne-génère-pas-soi-même-les-Cancel-Lock
veut supprimer ou remplacer un article, ton serveur dévoilera ce secret.
Mais pour qu'il le fasse, il faut être sûr que c'est le bon utilisateur.
Pour faire cela, ben on vérifie l'authentification ... ah zut, donc chez
toi, le plus proche est l'adresse IP du posteur, donc du genre:
secret = hachage(très_secret_du_serveur, adresse IP, Message-ID)
Tu peux même te PASSER de vérifier que c'est le bon utilisateur: si
l'adresse IP est différente dans l'article à supprimer/remplacer de
celle de l'article qui supprime/remplace, le secret ne sera alors pas
le bon.
Attention: l'adresse IP, lors du calcul du secret, doit toujours être
celle de l'article courant (soit le message original pour le
Cancel-Lock, soit le message de remplacement/suppression pour le
Cancel-Key).