Aller au contenu

ALPN : Application-Layer Protocol Negotiation

Réseau

ALPN : Application-Layer Protocol Negotiation. « Négociation du protocole de la couche application », par analogie avec le standardiste qui demande dans quelle langue on souhaite poursuivre avant de transférer l'appel.

Le mécanisme : Une extension de la poignée de main TLS : le client annonce la liste des protocoles qu'il parle (« h2 », « http/1.1 », « h3 »…), le serveur en retient un. Le choix est fait avant le premier octet applicatif, sans aller-retour supplémentaire.

Un port, plusieurs langues : Plusieurs protocoles cohabitent ainsi derrière le même port 443. HTTP/2 sur TLS en dépend, QUIC l'exige.

Autres usages : Le défi ACME « tls-alpn-01 » s'appuie dessus pour prouver le contrôle d'un domaine. Les répartiteurs de charge s'en servent pour aiguiller les flux vers le bon service.

Confusion de protocoles : Un serveur qui ignore l'ALPN annoncé peut accepter un flux destiné à un autre service partageant le même certificat. La politesse de répondre à tout le monde n'a jamais été une qualité en réseau.

Ce qui arrive si on s'en passe

Sans négociation du protocole dans la poignée de main, il faut soit dédier un port à chaque protocole, soit négocier après coup, au prix d'allers-retours supplémentaires et de mises à niveau que des intermédiaires peuvent perturber. Plus sérieux : un serveur qui ne contrôle pas le protocole annoncé accepte n'importe quel flux chiffré présentant un certificat valide pour son nom. Un attaquant en position d'intercepter le trafic peut alors rediriger une requête web vers un autre service couvert par le même certificat (messagerie, transfert de fichiers) et exploiter les écarts d'interprétation. Refuser toute connexion dont l'identifiant de protocole ne correspond pas au service, et restreindre les noms couverts par chaque certificat, réduit ce risque.

Explication de la marmotte

Quand un navigateur se connecte à un site de façon sécurisée, les deux commencent par une courte présentation. Au milieu de cette présentation, le navigateur glisse la liste des « langues » qu'il sait parler pour échanger des pages, des plus modernes aux plus anciennes. Le site choisit celle qu'il préfère parmi elles. Ainsi, dès que la conversation commence vraiment, les deux savent déjà quelle langue employer, sans perdre de temps en essais.

Où ce terme est utilisé

← Tout le glossaire