Aller au contenu

JOSE : JSON Object Signing and Encryption

Cryptographie

JOSE : JSON Object Signing and Encryption. « Signature et chiffrement d'objets JSON », par analogie avec la valise diplomatique dont l'étiquette annonce elle-même comment l'ouvrir.

La famille : JWS pour la signature, JWE pour le chiffrement, JWK (JSON Web Key) pour représenter les clés, JWA (JSON Web Algorithms) pour nommer les algorithmes. Le JWT n'est qu'un jeu de revendications transporté dans un JWS ou un JWE.

Usages : Jetons d'accès, jetons d'identité OIDC, clés publiées par un fournisseur d'identité : JOSE est partout où le web échange des preuves signées.

L'en-tête qui décide : L'algorithme est annoncé par l'en-tête du message, que l'attaquant contrôle. Laisser le jeton choisir comment il sera vérifié revient à confier au prévenu la rédaction du verdict ; d'où les célèbres jetons acceptés avec l'algorithme « none » ou une clé publique utilisée comme secret HMAC.

Alternatives : PASETO retire la négociation d'algorithme ; COSE transpose les mêmes idées au format binaire CBOR.

Ce qui arrive si on s'en passe

Ignorer le fonctionnement de JOSE, c'est laisser l'en-tête du jeton, rédigé par qui l'envoie, choisir la manière dont il sera vérifié. Une bibliothèque qui accepte l'algorithme « none » valide alors un jeton sans signature ; une autre qui confond clé publique et secret HMAC laisse l'attaquant signer lui-même avec la clé publique du serveur, publiée pour que tout le monde la voie. Les jetons d'accès et d'identité deviennent des déclarations sur l'honneur. Fixer côté serveur l'algorithme attendu suffit à éviter l'essentiel, précaution si simple qu'elle a naturellement mis des années à se répandre.

Explication de la marmotte

Sur le web, les applications s'échangent sans arrêt de petits billets du genre « cette personne est bien connectée » ou « elle a le droit de lire ce dossier ». Cette famille de règles décrit comment écrire ces billets dans un format texte facile à lire pour les machines, comment y apposer une signature pour prouver qu'ils sont authentiques, et comment les mettre sous enveloppe pour que seul le bon destinataire les lise. C'est un peu la grammaire commune des laissez-passer numériques.

Où ce terme est utilisé

← Tout le glossaire