Aller au contenu

KU : Key Usage (extension X.509)

Gestion des clés

KU : Key Usage, extension des certificats X.509 qui indique quelles opérations cryptographiques la clé publique du certificat a le droit d'effectuer. « La liste des usages permis, gravée dans le certificat par l'autorité qui l'a signé », par analogie avec le permis de conduire qui précise les catégories de véhicules, et que l'on ne consulte malheureusement qu'après l'accident de bus.

Définition : L'extension est définie par la RFC 5280 (section 4.2.1.3), sous l'OID 2.5.29.15. Elle contient une série de bits : digitalSignature, contentCommitment (anciennement nonRepudiation), keyEncipherment, dataEncipherment, keyAgreement, keyCertSign, cRLSign, encipherOnly et decipherOnly. La RFC demande qu'elle soit marquée critique quand elle est présente.

Usages typiques : Un certificat d'autorité porte keyCertSign et cRLSign ; un certificat de serveur TLS moderne porte digitalSignature, et keyEncipherment seulement s'il sert encore à un échange de clé RSA. Il ne faut pas la confondre avec l'extension EKU (Extended Key Usage), qui précise la finalité applicative, comme l'authentification de serveur ou la signature de code.

Absence : Un certificat sans extension KU n'est pas pour autant autorisé à tout : la norme laisse une marge d'interprétation aux applications, et deux bibliothèques peuvent prendre des décisions différentes sur le même certificat, ce qui est exactement la situation que l'on souhaite éviter en sécurité.

Ce qui arrive si on s'en passe

Une autorité qui délivre des certificats de serveur avec le bit keyCertSign, ou sans contrainte d'usage, risque de voir l'un de ses clients signer à son tour des certificats acceptés par les logiciels les plus laxistes, et donc usurper n'importe quel site. Une application qui ne contrôle pas le Key Usage accepte une clé de signature là où il fallait une clé de chiffrement, ce qui ouvre la porte à des attaques croisées entre protocoles. L'incident se découvre généralement à la lecture d'un certificat frauduleux, dont la chaîne était pourtant valide aux yeux de tous ceux qui n'ont pas regardé.

Explication de la marmotte

Un certificat numérique est une sorte de carte d'identité pour un site ou une personne, signée par une autorité de confiance. Il contient une clé, et le champ Key Usage précise à quoi cette clé a le droit de servir : signer, chiffrer, ou signer d'autres certificats. C'est comme un permis qui autorise la voiture mais pas le camion. Si les logiciels ne vérifient pas ce champ, une clé prévue pour un usage peut être détournée pour un autre plus dangereux.

Où ce terme est utilisé

← Tout le glossaire