Date de publication du RFC : Juillet 2022
Auteur(s) du RFC : D. Eastlake 3rd (Futurewei Technologies)
Chemin des normes
Première rédaction de cet article le 14 janvier 2025
Il existe tout un ensemble de normes pour assurer la sécurité de documents XML, par exemple les protéger contre la lecture non autorisée, ou bien permettre leur authentification. Ces normes dépendent d'algorithmes cryptographiques identifiés par un URI. Ce RFC met à jour la liste précédente de ces URI (qui était dans le RFC 6931) avec les nouveaux algorithmes et corrige quelques erreurs du précédent RFC.
Ces normes de sécurité de XML étaient à l'origine un travail conjoint de l'IETF et du W3C. C'était par exemple le cas des signatures XML du RFC 3275, du XML canonique des RFC 3076 ou RFC 3741. Elles sont désormais maintenues par le W3C qui a produit des versions plus récentes (par exemple pour les signatures XML, le XML canonique ou le chiffrement XML).
Dans un monde dynamique comme celui de la
cryptographie, où les progrès de la
cryptanalyse nécessitent des changements
d'algorithmes, les normes ne sont pas liées à un algorithme
particulier. Elles permettent l'agilité cryptographique (le
changement d'algorithme) et il faut donc pouvoir indiquer quel
algorithme est utilisé pour signer ou chiffrer un document
donné. Pour une norme W3C, on ne s'étonnera pas que l'indication
se fait par le biais d'un URI (RFC 3986). Les
nouveaux algorithmes commencent désormais par le préfixe
http://www.w3.org/2021/04/xmldsig-more#
(les
anciens algorithmes pouvant avoir d'autres préfixes). Ces nouveaux
algorithmes (avec 2021/04
dans leur
identificateur) sont relativement rares dans ce RFC : on n'invente
quand même pas un bon algorithme de cryptographie tous les jours et
la plupart des exemples dans cet article utilisent donc le vieux
préfixe. Un exemple récent ? EdDSA (RFC 8032) a l'URI
http://www.w3.org/2021/04/xmldsig-more#eddsa-ed25519
. Rappelez-vous
qu'il s'agit d'URI, pas forcément d'URL et que vous
n'obtiendrez donc pas forcément un résultat en pointant votre
navigateur Web vers
http://www.w3.org/2001/04/xmlenc#sha256
(cf. section 5.1).
Notons que notre RFC 9231 ne prend pas position sur la qualité cryptographique des algorithmes : il fournit un moyen de les désigner sans ambiguïté, c'est tout. Si on veut étudier cette qualité cryptographique, il faut lire d'autres documents (comme le RFC 6194 pour SHA-1).
Un exemple d'un ancien algorithme est
SHA-1 pour calculer les condensats
cryptographiques. Son URI est
http://www.w3.org/2000/09/xmldsig#sha1
. Sa
sécurité est aujourd'hui sérieusement battue en brèche (cf. RFC 6194). Autre exemple d'un algorithme qui était
déjà dans le RFC 6931, SHA-512,
identifié par http://www.w3.org/2001/04/xmlenc#sha512
.
Il existe aussi des identificateurs pour les MAC combinés
avec une condensation, par exemple
http://www.w3.org/2001/04/xmldsig-more#hmac-sha512
(RFC 6234).
Et pour les signatures avec un système à clé publique ?
L'identificateur indique l'algorithme de cryptographie asymétrique
et celui de condensation, par exemple
http://www.w3.org/2001/04/xmldsig-more#rsa-sha256
(voir aussi le RFC 3447). Si on trouve RSA ennuyeux, il existe
aussi des identificateurs pour un algorithme à courbes
elliptiques (RFC 6090 mais notez
ses
errata), ECDSA, par exemple
http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha512
.
Enfin, il y a les algorithmes de chiffrement symétrique. Par exemple,
Camellia (RFC 3713) sera identifié par
http://www.w3.org/2001/04/xmldsig-more#camellia256-cbc
. Le
plus récent SEED (RFC 4269) sera
http://www.w3.org/2007/05/xmldsig-more#seed128-cbc
.
Un exemple d'utilisation donné par notre RFC, pour de la cryptographie symétrique :
<EncryptionMethod Algorithm="http://www.w3.org/2021/04/xmldsig-more#chacha20"> <Nonce>0123456789abcdef01234567</Nonce> <Counter>fedcba09</Counter> </EncryptionMethod>
Voici pour la cryptographie. Mais les normes de sécurité XML
prévoient aussi une étape de canonicalisation avant chiffrement ou
signature, et là aussi, il y a plusieurs algorithmes, identifiés par
des URI comme
http://www.w3.org/2000/09/xmldsig#minimal
ou
http://www.w3.org/2006/12/xmlc14n11#WithComments
.
Quelle est la politique d'allocation dans le registre ? La
section 5 décrit celle du W3C (le préfixe
http://www.w3.org/2007/05/xmldsig-more#
est
figé, a priori, on n'y mettra pas de nouveaux algorithmes) et celle
de l'IETF : comme il est facile d'obtenir un URI (n'importe qui peut
en créer un), la seule question est celle de leur enregistrement. Il
se fera après un examen par un expert (voir le RFC 8126 pour les politiques d'allocation IETF) après
publication d'un texte décrivant le nouvel algorithme.
Quels changements depuis la version précédente de ce RFC, le RFC 6931 ? L'annexe A les liste. Les principaux, à mon avis, sont :
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)