59. pepsi-stage-vks-confirm

Suivre le lien de vérification d’adresse d’un serveur de clés, et rien d’autre.

59.1. Rôle

Une clé téléversée vers un serveur de clés vérificateur est stockée mais introuvable par adresse tant que quelqu’un n’a pas suivi un lien dans un courrier que le serveur envoie à cette adresse. pepsi-stage-vks-confirm s’en charge, sur le chemin entrant, afin que la publication de clé s’achève sans qu’un humain lise la boîte aux lettres de chaque utilisateur.

C’est un programme distinct parce qu’il va chercher des URL trouvées dans le courrier entrant. C’est une primitive dangereuse, et le garder dans sa propre petite étape non privilégiée le tient à l’écart des programmes qui détiennent du matériel de clé ou analysent du texte chiffré hostile, et rend sa position dans le pipeline visible dans la configuration. Référence : pepsi-stage-vks-confirm(1).

Tout ce sur quoi elle n’agit pas — la quasi-totalité du courrier — est avancé vers NEXT_STAGE sans être touché, de sorte que le placement est indulgent.

59.2. Ce qu’elle refuse

Chacune de ces conditions doit être remplie avant qu’un seul octet ne soit récupéré. En manquer une signifie que le message est remis à la place, et l’utilisateur peut cliquer lui-même sur le lien — ce qui permet à ces conditions d’être aussi strictes.

  • Le domaine de l’expéditeur d’enveloppe est exactement VKS_HOST, pas un sous-domaine, pas une correspondance de suffixe, et pas l’en-tête From:.

  • SPF ou DMARC a réussi (sauf si REQUIRE_AUTHENTICATION = no). Un MAIL FROM est une prétention ; c’est ceci qui la transforme en preuve. dkim=pass ne compte délibérément pas — cela dit qu’une signature a été vérifiée, pas de qui elle est.

  • Chaque lien est en https vers ce même hôte, sur le port par défaut. Un message nommant un autre hôte est refusé entièrement plutôt que de voir le lien étranger sauté : un vrai courrier de vérification renvoie vers le serveur de clés et nulle part ailleurs. L’hôte est lu après tout userinfo, car https://keys.example.org@evil.test/ est une requête vers evil.test.

  • Un destinataire est une adresse que nous attendons réellement — publiée, téléversée, pas encore vérifiée. Un courrier de vérification non sollicité est remis, non cliqué, ce qui empêche aussi un inconnu de faire émettre des requêtes par Pepsi en écrivant à une adresse servie.

  • Au plus MAX_LINKS par message, récupérés par le même client durci qu’emploie la découverte de clés : HTTPS uniquement, certificats vérifiés, adresse résolue passée au crible de la protection SSRF, corps plafonné pendant le flux.

59.3. La confirmation est vérifiée, non supposée

Un 200 sur le lien est la réponse du serveur à une requête, non une déclaration que l’adresse est désormais publiée. L’étape demande donc au serveur de clés s’il sert notre clé pour cette adresse, et seule une correspondance d’empreinte note l’identité comme vérifiée — la marquer sur le 200 empêcherait à jamais la tâche de réessai de pepsi-keys de réessayer. La même vérification décide du sort du courrier : il n’est supprimé (DISCARD_CONFIRMED) que lorsqu’au moins une identité a été vérifiée, et remis sinon, de sorte qu’une confirmation restée sans effet puisse encore être achevée à la main.

Chaque décision et chaque récupération est journalisée au niveau info sur la cible vks-confirm, ce qui constitue la piste d’audit.

59.4. Configuration

[stage-<name>] : PROGRAM = pepsi-stage-vks-confirm, NEXT_STAGE (requis — voir ci-dessus), VKS_HOST (par défaut l’hôte de [pepsi-keys] VKS_SERVER ; pepsi-setup refuse une valeur nommant un autre hôte, puisque l’étape ignorerait alors toute confirmation), MAX_LINKS (3), DISCARD_CONFIRMED (yes : un courrier de confirmation qui a vérifié une identité est du courrier machine à propos d’une action que Pepsi a menée) et REQUIRE_AUTHENTICATION (yes). Voir pepsi-stage-vks-confirm(1).

59.5. État

  • Entrées : state.auth.spf / state.auth.dmarc, l’expéditeur d’enveloppe et le corps du message.

  • Sorties : aucune. L’étape n’écrit jamais dans state et ne réécrit jamais le message ; ce qu’elle modifie, c’est la comptabilité de publication du magasin de clés.

59.6. Voir aussi

Gestion des clés, pepsi-keys, pepsi-httpd, pepsi-keydisc, pepsi-stage-vks-confirm(1).