Aller au contenu

CBOR : Concise Binary Object Representation

Cryptographie

CBOR : Concise Binary Object Representation. « Représentation binaire concise d'objets », par analogie avec la valise sous vide : le même contenu qu'en JSON, moins de place, mais plus moyen de lire l'étiquette à l'œil nu.

Modèle de données : CBOR reprend le modèle de JSON (nombres, chaînes, tableaux, dictionnaires) et y ajoute des chaînes d'octets natives et des étiquettes typées. Il vise des messages compacts et un décodeur léger, pour les objets contraints.

Usages : COSE en est la déclinaison cryptographique, pendant de JOSE pour les signatures et le chiffrement. WebAuthn l'emploie pour les objets d'attestation et les clés publiques des authentificateurs.

Encodage déterministe : Un même objet peut s'encoder de plusieurs façons. Pour signer, on fixe une forme déterministe (ordre des clés, longueur minimale des entiers) ou on signe les octets reçus tels quels ; sinon deux parties honnêtes vérifient deux documents différents et se donnent chacune raison, ce qui, en informatique comme ailleurs, n'augure rien de bon.

Parser strict : Rejeter les clés dupliquées et les encodages non minimaux ferme la porte aux divergences d'interprétation entre implémentations.

Ce qui arrive si on s'en passe

Signer du CBOR sans fixer d'encodage déterministe, ou sans signer les octets reçus tels quels, laisse deux implémentations honnêtes vérifier deux documents différents à partir du même objet. Un analyseur laxiste qui accepte les clés dupliquées aggrave le cas : l'un retient la première valeur, l'autre la seconde, et un attaquant glisse entre les deux une donnée que le vérificateur n'a jamais vue. Dans COSE ou dans les objets d'attestation de WebAuthn, ce désaccord porte sur des clés publiques et des signatures, pas sur des préférences de couleur. Le format est concis ; la divergence, elle, sait se montrer très éloquente.

Explication de la marmotte

Quand deux programmes échangent des informations, il leur faut un format commun. Certains formats sont lisibles par une personne, comme une liste de courses écrite à la main. Celui-ci est une version compactée, faite de données binaires : les ordinateurs la lisent très vite et elle prend peu de place, ce qui compte pour les petits objets connectés ou les clés de sécurité qu'on branche sur un ordinateur. En échange, un humain ne peut pas la lire directement : il faut un outil pour la déplier.

Où ce terme est utilisé

← Tout le glossaire