Cryptographie
PASETO : Platform-Agnostic SEcurity TOkens. « Jetons de sécurité indépendants de la plateforme », par analogie avec un composteur qui n'a qu'une seule fente : impossible d'y glisser autre chose que le bon billet.
Pas de choix d'algorithme : Chaque version du format fixe ses primitives ; le jeton ne désigne pas lui-même son algorithme. On retire ainsi à l'émetteur la liberté de choisir sa serrure, liberté dont les attaquants avaient fait un usage enthousiaste avec JWT.
Deux usages : Le mode « local » chiffre et authentifie le contenu avec une clé symétrique (un AEAD) ; le mode « public » le signe avec une clé asymétrique, sans le chiffrer. Il faut choisir le bon, les deux ne protègent pas la même chose.
Versions : Le préfixe indique version et usage, par exemple v4.local ou v4.public. Changer d'algorithme, c'est changer de version : un événement rare et délibéré, plutôt qu'un champ modifiable par n'importe qui.
Limites : PASETO ne règle ni l'expiration, ni la révocation, ni la distribution des clés : il faut toujours vérifier les dates et l'audience. Un bon format ne sauve pas une mauvaise politique de jetons.
Ce qui arrive si on s'en passe
Sans un format comme PASETO, où la version impose les primitives, c'est souvent l'en-tête du jeton, donc potentiellement l'attaquant, qui désigne l'algorithme de vérification. Une bibliothèque mal configurée peut alors accepter un jeton déclaré non signé, ou vérifier une signature symétrique en utilisant comme secret une clé publique connue de tous, ce qui permet de forger des jetons valides à volonté. La souplesse des formats généralistes multiplie aussi les combinaisons de paramètres à valider, donc les oublis. Sans chiffrement dans le mode local, enfin, un jeton simplement signé laisse lire son contenu à quiconque l'intercepte ou le trouve dans un journal.
Explication de la marmotte
Quand on se connecte à un site, il nous remet souvent un jeton, une sorte de bracelet de festival numérique qui prouve qu'on est bien entré. Certains formats de jetons laissent le bracelet lui-même annoncer comment il faut le vérifier, ce qui permet à un tricheur d'écrire « pas besoin de vérifier ». Ce format-ci ne laisse pas ce choix : les règles de vérification sont fixées une fois pour toutes, et le bracelet ne fait que dire quelle version de ces règles il suit. Il y a donc beaucoup moins de manières de se tromper.
Où ce terme est utilisé
- Formats, bibliothèques et API : rendre la crypto utilisable (4 occurrences)
