1.1. Conventions et terminologie (Conventions and Terminology)
1.1. Conventions et terminologie
Les mots-clés « DOIT », « NE DOIT PAS », « REQUIS », « DEVRAIT », « NE DEVRAIT PAS », « RECOMMANDÉ », « NON RECOMMANDÉ », « PEUT » et « FACULTATIF », lorsqu'ils apparaissent en majuscules comme ici, sont à interpréter comme décrit dans le BCP 14 [RFC2119] [RFC8174] lorsque, et seulement lorsque, ils figurent ainsi en toutes capitales (y compris les équivalents anglais MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT, RECOMMENDED, NOT RECOMMENDED, MAY, OPTIONAL).
Les termes « message HTTP », « requête HTTP », « réponse HTTP », « URI cible (target URI) », « passerelle (gateway) », « champ d'en-tête (header field) », « intermédiaire (intermediary) », « cible de requête (request target) », « champ de fin de message (trailer field) », « émetteur (sender) », « méthode (method) » et « destinataire (recipient) » sont employés tels que définis dans [HTTP].
Par brièveté, le terme seul « signature » désigne dans ce document à la fois les signatures numériques (cryptographie asymétrique) et les MAC à clé (cryptographie symétrique). De même, le verbe « signer » désigne la génération d'une signature numérique ou d'un MAC à clé sur une base de signature donnée. Le terme qualifié « signature numérique » désigne spécifiquement le résultat d'une opération de signature cryptographique asymétrique.
Ce document utilise la terminologie de la Section 3 de [STRUCTURED-FIELDS] pour préciser les types de données: List, Inner List, Dictionary, Item, String, Integer, Byte Sequence et Boolean.
Ce document définit plusieurs constructions de chaînes au moyen de l'ABNF [ABNF] et utilise les règles ABNF suivantes: VCHAR, SP, DQUOTE et LF. Il utilise les règles ABNF de [STRUCTURED-FIELDS]: sf-string, inner-list et parameters. Il utilise les règles ABNF de [HTTP] et [HTTP/1.1]: field-content, obs-fold et obs-text.
Outre celles énumérées ci-dessus, ce document emploie les termes suivants:
Signature de message HTTP (HTTP Message Signature): Une signature numérique ou un MAC à clé qui couvre une ou plusieurs parties d'un message HTTP. Un même message HTTP peut contenir plusieurs signatures de message HTTP.
Signataire (Signer): L'entité qui génère ou a généré une signature de message HTTP. Plusieurs entités peuvent agir comme signataires et appliquer des signatures de message HTTP distinctes à un même message HTTP.
Vérificateur (Verifier): Une entité qui vérifie ou a vérifié une signature de message HTTP par rapport à un message HTTP. Une signature de message HTTP peut être vérifiée plusieurs fois, éventuellement par des entités différentes.
Composant de message HTTP (HTTP Message Component): Une partie d'un message HTTP susceptible d'être couverte par une signature de message HTTP.
Composant dérivé (Derived Component): Un composant de message HTTP dérivé du message HTTP par un algorithme ou un processus spécifié. Voir Section 2.2.
Nom de composant de message HTTP (HTTP Message Component Name): Une String qui identifie la source d'un composant de message HTTP, par exemple un nom de champ ou un nom de composant dérivé.
Identifiant de composant de message HTTP (HTTP Message Component Identifier): La combinaison d'un nom de composant de message HTTP et de paramètres éventuels. Cette combinaison identifie de façon unique un composant de message HTTP donné pour une signature de message HTTP particulière et le message HTTP auquel elle s'applique.
Valeur de composant de message HTTP (HTTP Message Component Value): La valeur associée à un identifiant de composant donné dans le contexte d'un message HTTP particulier. Les valeurs de composant sont dérivées du message HTTP et sont en général soumises à un processus de canonisation.
Composants couverts (Covered Components):
Un ensemble ordonné d'identifiants de composants de message pour les champs (Section 2.1) et les composants dérivés (Section 2.2) indiquant l'ensemble des composants de message couverts par la signature, sans jamais inclure l'identifiant @signature-params lui-même. L'ordre de cet ensemble est préservé et communiqué entre le signataire et le vérificateur pour faciliter la reconstruction de la base de signature.
Base de signature (Signature Base): La séquence d'octets générée par le signataire et le vérificateur à partir de l'ensemble des composants couverts et du message HTTP. La base de signature est traitée par l'algorithme cryptographique pour produire ou vérifier la signature de message HTTP.
Algorithme de signature de message HTTP (HTTP Message Signature Algorithm): Un algorithme cryptographique qui décrit le processus de signature et de vérification pour la signature, défini en termes des primitives HTTP_SIGN et HTTP_VERIFY décrites à la Section 3.3.
Matériel de clé (Key Material): Le matériel de clé requis pour créer ou vérifier la signature. Il est souvent identifié par un identifiant de clé explicite, permettant au signataire d'indiquer au vérificateur quelle clé a été utilisée.
Heure de création (Creation Time): Un horodatage représentant l'instant où la signature a été générée, selon l'assertion du signataire.
Heure d'expiration (Expiration Time): Un horodatage représentant l'instant après lequel la signature ne devrait plus être acceptée par le vérificateur, selon l'assertion du signataire.
Message cible (Target Message): Le message HTTP auquel une signature de message HTTP est appliquée.
Contexte de signature (Signature Context): La source de données à partir de laquelle sont tirées les valeurs des composants de message HTTP. Le contexte comprend le message cible et toute information supplémentaire dont disposent le signataire ou le vérificateur, comme l'URI cible complète d'une requête ou la requête associée pour une réponse.
Le terme « horodatage UNIX » désigne ce que la Section 4.16 de [POSIX.1] appelle « secondes depuis l'époque ».
Ce document contient des exemples non normatifs de messages HTTP partiels ou complets. Certains exemples utilisent une barre oblique inverse finale () pour indiquer le retour à la ligne de valeurs longues, conformément à [RFC8792]. Le caractère \ et les espaces en tête des lignes enveloppées ne font pas partie de la valeur.