AWS Encryption SDK référence de format de message - AWS Encryption SDK

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

AWS Encryption SDK référence de format de message

Les informations de cette page constituent une référence pour le développement de votre propre bibliothèque de chiffrement compatible avec le kit AWS Encryption SDK. Si vous ne créez pas votre propre bibliothèque de chiffrement compatible, vous n'aurez probablement pas besoin de ces informations.

Pour utiliser le AWS Encryption SDK dans l'un des langages de programmation pris en charge, voirLangages de programmation.

Pour la spécification qui définit les éléments d'une AWS Encryption SDK implémentation appropriée, voir la AWS Encryption SDK spécification dans GitHub.

Les opérations de chiffrement AWS Encryption SDK renvoient une structure de données unique ou un message chiffré contenant les données chiffrées (texte chiffré) et toutes les clés de données chiffrées. Pour comprendre cette structure de données, ou pour créer des bibliothèques capables de la lire et de l'écrire, vous devez comprendre le format de message.

Le format de message se compose d'au moins deux parties : un en-tête et un corps. Dans certains cas, le format de message se compose d'une troisième partie, un pied de page. Le format de message définit une séquence ordonnée d'octets dans l’ordre des octets réseau, également appelé format de poids fort. Le format de message commence par l'en-tête, est suivi du corps, puis du pied de page (le cas échéant).

Les suites d'algorithmes prises en charge AWS Encryption SDK utilisent l'une des deux versions de format de message. Les suites d'algorithmes sans engagement clé utilisent le format de message version 1. Les suites d'algorithmes avec engagement clé utilisent le format de message version 2.

Structure de l'en-tête

L'en-tête du message contient la clé de données chiffrée, ainsi que des informations sur la manière dont le corps du message est formé. Le tableau suivant décrit les champs qui constituent l'en-tête dans les versions 1 et 2 du format de message. Les octets sont ajoutés dans l'ordre indiqué.

La valeur Non présent indique que le champ n'existe pas dans cette version du format de message. Le texte en gras indique des valeurs différentes dans chaque version.

Note

Il peut être nécessaire de faire défiler horizontalement ou verticalement pour afficher toutes les données de ce tableau.

Structure de l'en-tête
Champ Format de message version 1

Longueur (octets)

Format de message version 2

Longueur (octets)

Version 1 1
Type 1 Absent
Algorithm ID 2 2
Message ID 16 32
AAD Length

2

Lorsque le contexte de chiffrement est vide, la valeur du champ AAD Longueur de 2 octets est 0.

2

Lorsque le contexte de chiffrement est vide, la valeur du champ AAD Longueur de 2 octets est 0.

AAD

Variable. La longueur de ce champ apparaît dans les 2 octets précédents (champ AAD Longueur).

Lorsque le contexte de chiffrement est vide, il n'y a aucun AAD champ dans l'en-tête.

Variable. La longueur de ce champ apparaît dans les 2 octets précédents (champ AAD Longueur).

Lorsque le contexte de chiffrement est vide, il n'y a aucun AAD champ dans l'en-tête.

Encrypted Data Key Count 2 2
Encrypted Data Key(s) Variable. Déterminé par le nombre de clés de données chiffrées et la longueur de chacune. Variable. Déterminé par le nombre de clés de données chiffrées et la longueur de chacune.
Content Type 1 1
Reserved 4 Absent
IV Length 1 Absent
Frame Length 4 4
Algorithm Suite Data Absent Variable. Déterminé par l'algorithme ayant généré le message.
Header Authentication Variable. Déterminé par l'algorithme ayant généré le message. Variable. Déterminé par l'algorithme ayant généré le message.
Version

Version de ce format de message. La version est codée en 1 ou 2 sous forme d'octet 01 ou 02 en notation hexadécimale

Type

Type de ce format de message. Le type indique le type de structure. Le seul type pris en charge est décrit comme données chiffrées authentifiées client. Sa valeur type est 128, codée en tant qu'octet 80, au format hexadécimal.

Ce champ n'est pas présent dans le format de message version 2.

ID de l'algorithme

Identifiant de l'algorithme utilisé. Il s'agit d'une valeur de 2 octets interprétée comme un entier 16 bits non signé. Pour plus d'informations sur ces algorithmes, consultez AWS Encryption SDK référence aux algorithmes.

ID du message

Une valeur générée aléatoirement qui identifie le message. L'ID de message :

  • identifie de façon unique le message chiffré ;

  • lie faiblement l'en-tête du message au corps du message ;

  • fournit un mécanisme pour réutiliser une clé de données en toute sécurité avec plusieurs messages chiffrés ;

  • protège contre la réutilisation accidentelle d'une clé de données ou l'épuisement des clés dans le kit AWS Encryption SDK.

Cette valeur est de 128 bits dans le format de message version 1 et de 256 bits dans la version 2.

AADLongueur

Longueur des données authentifiées supplémentaires (AAD). Il s'agit d'une valeur de 2 octets interprétée comme un entier non signé de 16 bits qui indique le nombre d'octets contenant le. AAD

Lorsque le contexte de chiffrement est vide, la valeur du champ AAD Longueur est 0.

AAD

Données authentifiées supplémentaires. AADIl s'agit d'un encodage du contexte de chiffrement, un tableau de paires clé-valeur où chaque clé et chaque valeur sont une chaîne de UTF -8 caractères codés. Le contexte de chiffrement est converti en une séquence d'octets et utilisé pour la AAD valeur. Lorsque le contexte de chiffrement est vide, il n'y a aucun AAD champ dans l'en-tête.

Lorsque les algorithmes de signature sont utilisés, le contexte de chiffrement doit contenir la paire clé-valeur {'aws-crypto-public-key', Qtxt}. Qtxt représente le point de courbe elliptique Q compressé selon SEC1 version 2.0 puis codé en base64. Le contexte de chiffrement peut contenir des valeurs supplémentaires, mais la longueur maximale de la construction AAD est de 2 ^16 à 1 octets.

Le tableau suivant décrit les champs qui forment leAAD. Les paires clé-valeur sont triées, par clé, par ordre croissant selon un code de UTF -8 caractères. Les octets sont ajoutés dans l'ordre indiqué.

AADStructure
Champ Longueur (octets)
Key-Value Pair Count 2
Key Length 2
Key Variable. Est égal à la valeur spécifiée dans les 2 octets précédents (Longueur de clé).
Value Length 2
Value Variable. Est égal à la valeur spécifiée dans les 2 octets précédents (Longueur de valeur).
Nombre de paires clé-valeur

Le nombre de paires clé-valeur dans le. AAD Il s'agit d'une valeur de 2 octets interprétée comme un entier non signé de 16 bits qui indique le nombre de paires clé-valeur dans le. AAD Le nombre maximum de paires clé-valeur dans le AAD est de 2^16 - 1.

Lorsqu'il n'existe aucun contexte de chiffrement ou que le contexte de chiffrement est vide, ce champ n'est pas présent dans la AAD structure.

Longueur de la clé

Longueur de la clé pour la paire clé-valeur. Il s'agit d'une valeur de 2 octets interprétée comme un entier 16 bits non signé qui spécifie le nombre d'octets qui contiennent la clé.

Clé

Clé de la paire clé-valeur. Il s'agit d'une séquence de UTF -8 octets codés.

Longueur de la valeur

Longueur de la valeur pour la paire clé-valeur. Il s'agit d'une valeur de 2 octets interprétée comme un entier 16 bits non signé qui spécifie le nombre d'octets qui contiennent la valeur.

Valeur

Valeur de la paire clé-valeur. Il s'agit d'une séquence de UTF -8 octets codés.

Nombre de clés de données cryptées

Nombre de clés de données chiffrées. Il s'agit d'une valeur de 2 octets interprétée comme un entier 16 bits non signé qui spécifie le nombre de clés de données chiffrées. Le nombre maximum de clés de données chiffrées dans chaque message est de 65 535 (2^16 - 1).

Clé (s) de données cryptée (s)

Séquence de clés de données chiffrées. La longueur de la séquence est déterminée par le nombre de clés de données chiffrées et la longueur de chacune. La séquence contient au moins une clé de données chiffrée.

Le tableau suivant décrit les champs qui composent chaque clé de données chiffrée. Les octets sont ajoutés dans l'ordre indiqué.

Structure de la clé de données chiffrée
Champ Longueur (octets)
Key Provider ID Length 2
Key Provider ID Variable. Est égal à la valeur spécifiée dans les 2 octets précédents (Longueur de l'ID du fournisseur de clés).
Key Provider Information Length 2
Key Provider Information Variable. Est égal à la valeur spécifiée dans les 2 octets précédents (Longueur de l'information du fournisseur de clés).
Encrypted Data Key Length 2
Encrypted Data Key Variable. Est égal à la valeur spécifiée dans les 2 octets précédents (Longueur de la clé de données chiffrée).
Longueur de l'identifiant du fournisseur clé

Longueur de l'identifiant du fournisseur de clés. Il s'agit d'une valeur de 2 octets interprétée comme un entier 16 bits non signé qui spécifie le nombre d'octets qui contiennent l'ID du fournisseur des clés.

Identifiant du fournisseur clé

Identifiant du fournisseur de clés. Il est utilisé pour indiquer le fournisseur de la clé de données chiffrée et doit être extensible.

Longueur des informations sur les fournisseurs clés

Longueur de l'information du fournisseur de clés. Il s'agit d'une valeur de 2 octets interprétée comme un entier 16 bits non signé qui spécifie le nombre d'octets qui contiennent l'information du fournisseur des clés.

Informations clés sur les fournisseurs

Information sur le fournisseur de clés. Il est déterminé par le fournisseur de clés.

Lorsqu'il AWS KMS s'agit du fournisseur de la clé principale ou que vous utilisez un AWS KMS trousseau de clés, cette valeur contient le nom de ressource Amazon (ARN) du AWS KMS key.

Longueur de la clé de données cryptée

Longueur de la clé de données chiffrée. Il s'agit d'une valeur de 2 octets interprétée comme un entier 16 bits non signé qui spécifie le nombre d'octets qui contiennent la clé de données chiffrée.

Clé de données cryptée

Clé de données chiffrée. Il s'agit de la clé de chiffrement des données chiffrée par le fournisseur de clés.

Type de contenu

Type de données chiffrées, non encadrées ou encadrées.

Note

Dans la mesure du possible, utilisez des données encadrées. Il AWS Encryption SDK prend en charge les données non encadrées uniquement pour une utilisation traditionnelle. Certaines implémentations linguistiques du AWS Encryption SDK peuvent toujours générer du texte chiffré non encadré. Toutes les implémentations linguistiques prises en charge peuvent déchiffrer le texte chiffré encadré et non cadré.

Les données encadrées sont divisées en parties de même longueur ; chaque partie est cryptée séparément. Le type du contenu encadré est 2, codé en tant qu'octet 02 au format hexadécimal.

Les données non encadrées ne sont pas divisées ; il s'agit d'un seul blob chiffré. Le type du contenu non encadré est 1, codé en tant qu'octet 01 au format hexadécimal.

Réservé

Séquence réservée de 4 octets. La valeur doit être 0. Elle est codée en tant qu'octets 00 00 00 00 en notation hexadécimale (c'est-à-dire, une séquence de 4 octets d'une valeur d'entier 32 bits égale à 0).

Ce champ n'est pas présent dans le format de message version 2.

Longueur IV

Longueur du vecteur d'initialisation. Il s'agit d'une valeur de 1 octet interprétée comme un entier 8 bits non signé qui spécifie le nombre d'octets qui contiennent le vecteur d'initialisation. Cette valeur est déterminée par la valeur d'octets du vecteur d'initialisation de l'algorithme qui a généré le message.

Ce champ n'est pas présent dans la version 2 du format de message, qui prend uniquement en charge les suites d'algorithmes utilisant des valeurs IV déterministes dans l'en-tête du message.

Longueur du cadre

La longueur de chaque trame de données encadrées. Il s'agit d'une valeur de 4 octets interprétée comme un entier non signé de 32 bits qui indique le nombre d'octets dans chaque trame. Lorsque les données ne sont pas encadrées, c'est-à-dire lorsque la valeur du Content Type champ est 1, cette valeur doit être 0.

Note

Dans la mesure du possible, utilisez des données encadrées. Il AWS Encryption SDK prend en charge les données non encadrées uniquement pour une utilisation traditionnelle. Certaines implémentations linguistiques du AWS Encryption SDK peuvent toujours générer du texte chiffré non encadré. Toutes les implémentations linguistiques prises en charge peuvent déchiffrer le texte chiffré encadré et non cadré.

Données de la suite d'algorithmes

Données supplémentaires nécessaires à l'algorithme qui a généré le message. La longueur et le contenu sont déterminés par l'algorithme. Sa longueur peut être de 0.

Ce champ n'est pas présent dans le format de message version 1.

Authentification d'en-tête

L'authentification de l'en-tête est déterminée par l'algorithme qui a généré le message. L'authentification de l'en-tête est calculée sur l'ensemble de l'en-tête. Elle se compose d'un vecteur d'initialisation et d'une balise d'authentification. Les octets sont ajoutés dans l'ordre indiqué.

Structure de l'authentification de l'en-tête
Champ Longueur dans la version 1.0 (octets) Longueur dans la version 2.0 (octets)
IV Variable. Déterminée par la valeur d'octets du vecteur d'initialisation de l'algorithme qui a généré le message. N/A
Authentication Tag Variable. Déterminée par la valeur d'octets de la balise d'authentification de l'algorithme qui a généré le message. Variable. Déterminée par la valeur d'octets de la balise d'authentification de l'algorithme qui a généré le message.
IV

Vecteur d'initialisation utilisé pour calculer la balise d'authentification de l'en-tête.

Ce champ n'est pas présent dans l'en-tête du format de message version 2. La version 2 du format de message ne prend en charge que les suites d'algorithmes qui utilisent des valeurs IV déterministes dans l'en-tête du message.

Tag d'authentification

Valeur d'authentification pour l'en-tête. Elle est utilisée pour authentifier l'ensemble du contenu de l'en-tête.

Structure du corps

Le corps du message contient les données chiffrées, appelées texte chiffré. La structure du corps dépend du type de contenu (non encadré ou encadré). Les sections suivantes décrivent le format du corps du message pour chaque type de contenu. La structure du corps du message est la même dans les versions 1 et 2 du format de message.

Données non encadrées

Les données non encadrées sont cryptées dans un seul blob avec un IV et un corps uniques. AAD

Note

Dans la mesure du possible, utilisez des données encadrées. Il AWS Encryption SDK prend en charge les données non encadrées uniquement pour une utilisation traditionnelle. Certaines implémentations linguistiques du AWS Encryption SDK peuvent toujours générer du texte chiffré non encadré. Toutes les implémentations linguistiques prises en charge peuvent déchiffrer le texte chiffré encadré et non cadré.

Le tableau suivant décrit les champs qui composent les données non encadrées. Les octets sont ajoutés dans l'ordre indiqué.

Structure du corps non encadré
Champ Longueur, en octets
IV Variable. Est égal à la valeur spécifiée dans l'octet IV Length de l'en-tête.
Encrypted Content Length 8
Encrypted Content Variable. Est égal à la valeur spécifiée dans les 8 octets précédents (Longueur du contenu chiffré).
Authentication Tag Variable. Déterminé par l'implémentation d'algorithme utilisée.
IV

Vecteur d'initialisation à utiliser avec l'algorithme de chiffrement.

Longueur du contenu crypté

Longueur du contenu chiffré, ou texte chiffré. Il s'agit d'une valeur de 8 octets interprétée comme un entier 64 bits non signé qui spécifie le nombre d'octets qui contiennent le contenu chiffré.

Techniquement, la valeur maximale autorisée est de 2^63 - 1, ou 8 exbioctets (8 Eio). Toutefois, dans la pratique, la valeur maximale est de 2^36 - 32, ou 64 gibioctets (64 Gio), en raison des restrictions imposées par les algorithmes implémentés.

Note

L'implémentation Java restreint SDK encore cette valeur à 2^31 - 1, soit 2 Gibioctets (2 GiB), en raison des restrictions du langage.

Contenu crypté

Contenu chiffré (texte chiffré), tel que renvoyé par l'algorithme de chiffrement.

Tag d'authentification

Valeur d'authentification pour le corps. Elle est utilisée pour authentifier le corps du message.

Données encadrées

Dans les données encadrées, les données en texte brut sont divisées en parties de longueur égale appelées trames. Il AWS Encryption SDK chiffre chaque image séparément avec un IV et un corps AAD uniques.

Note

Dans la mesure du possible, utilisez des données encadrées. Il AWS Encryption SDK prend en charge les données non encadrées uniquement pour une utilisation traditionnelle. Certaines implémentations linguistiques du AWS Encryption SDK peuvent toujours générer du texte chiffré non encadré. Toutes les implémentations linguistiques prises en charge peuvent déchiffrer le texte chiffré encadré et non cadré.

La longueur du cadre, qui est la longueur du contenu chiffré dans le cadre, peut être différente pour chaque message. Le nombre maximal d'octets dans une trame est de 2^32 - 1. Le nombre maximal d'images dans un message est de 2^32 - 1.

Il existe deux types de cadres : régulier et final. Chaque message doit comporter ou inclure une image finale.

Toutes les images régulières d'un message ont la même longueur d'image. Le cadre final peut avoir une longueur de cadre différente.

La composition des cadres dans les données encadrées varie en fonction de la longueur du contenu chiffré.

  • Égal à la longueur de trame — Lorsque la longueur du contenu chiffré est identique à celle des trames normales, le message peut consister en une trame normale contenant les données, suivie d'une trame finale de longueur nulle (0). Ou bien, le message peut être composé d'un seul cadre final contenant les données. Dans ce cas, le cadre final a la même longueur de cadre que les cadres normaux.

  • Multiple de la longueur de trame — Lorsque la longueur du contenu chiffré est un multiple exact de la longueur d'image des trames normales, le message peut se terminer par une trame normale contenant les données, suivie d'une trame finale de longueur nulle (0). Ou bien, le message peut se terminer dans un cadre final contenant les données. Dans ce cas, le cadre final a la même longueur de cadre que les cadres normaux.

  • Pas un multiple de la longueur d'image — Lorsque la longueur du contenu chiffré n'est pas un multiple exact de la longueur d'image des images normales, la dernière image contient les données restantes. La longueur du cadre final est inférieure à la longueur de cadre des cadres normaux.

  • Moins que la longueur de trame — Lorsque la longueur du contenu chiffré est inférieure à la longueur de trame des trames normales, le message consiste en une trame finale contenant toutes les données. La longueur du cadre final est inférieure à la longueur de cadre des cadres normaux.

Les tableaux suivants décrivent les champs qui composent les cadres. Les octets sont ajoutés dans l'ordre indiqué.

Structure de corps encadré, cadre régulier
Champ Longueur, en octets
Sequence Number 4
IV Variable. Est égal à la valeur spécifiée dans l'octet IV Length de l'en-tête.
Encrypted Content Variable. Est égal à la valeur spécifiée dans le Frame Length de l'en-tête.
Authentication Tag Variable. Déterminé par l'algorithme utilisé, comme spécifié dans le Algorithm ID de l'en-tête.
Numéro de séquence

Numéro de séquence du cadre. Il s'agit d'un numéro du compteur incrémentiel pour le cadre. Il s'agit d'une valeur de 4 octets interprétée comme un entier 32 bits non signé.

Les données encadrées doivent démarrer au numéro de séquence 1. Les cadres suivants doivent être dans l'ordre et doivent être incrémentés de 1 par rapport au cadre précédent. Dans le cas contraire, le processus de déchiffrement s'arrête et indique une erreur.

IV

Vecteur d'initialisation du cadre. Il SDK utilise une méthode déterministe pour construire un IV différent pour chaque image du message. Sa longueur est spécifiée par la suite d'algorithmes utilisée.

Contenu crypté

Contenu chiffré (texte chiffré) du cadre, tel que renvoyé par l'algorithme de chiffrement.

Tag d'authentification

Valeur d'authentification pour le cadre. Elle est utilisée pour authentifier l'ensemble du cadre.

Structure de corps encadré, cadre final
Champ Longueur, en octets
Sequence Number End 4
Sequence Number 4
IV Variable. Est égal à la valeur spécifiée dans l'octet IV Length de l'en-tête.
Encrypted Content Length 4
Encrypted Content Variable. Est égal à la valeur spécifiée dans les 4 octets précédents (Longueur du contenu chiffré).
Authentication Tag Variable. Déterminé par l'algorithme utilisé, comme spécifié dans le Algorithm ID de l'en-tête.
Fin du numéro de séquence

Indicateur pour le dernier cadre. La valeur est codée en tant que 4 octets FF FF FF FF au format hexadécimal.

Numéro de séquence

Numéro de séquence du cadre. Il s'agit d'un numéro du compteur incrémentiel pour le cadre. Il s'agit d'une valeur de 4 octets interprétée comme un entier 32 bits non signé.

Les données encadrées doivent démarrer au numéro de séquence 1. Les cadres suivants doivent être dans l'ordre et doivent être incrémentés de 1 par rapport au cadre précédent. Dans le cas contraire, le processus de déchiffrement s'arrête et indique une erreur.

IV

Vecteur d'initialisation du cadre. Il SDK utilise une méthode déterministe pour construire un IV différent pour chaque image du message. La longueur du vecteur d'initialisation est spécifiée par la suite d'algorithmes.

Longueur du contenu crypté

Longueur du contenu chiffré. Il s'agit d'une valeur de 4 octets interprétée comme un entier 32 bits non signé qui spécifie le nombre d'octets qui contiennent le contenu chiffré pour le cadre.

Contenu crypté

Contenu chiffré (texte chiffré) du cadre, tel que renvoyé par l'algorithme de chiffrement.

Tag d'authentification

Valeur d'authentification pour le cadre. Elle est utilisée pour authentifier l'ensemble du cadre.

Lorsque les algorithmes de signature sont utilisés, le format de message contient un pied de page. Le pied de page du message contient une signature numérique calculée sur l'en-tête et le corps du message. Le tableau suivant décrit les champs qui composent le pied de page. Les octets sont ajoutés dans l'ordre indiqué. La structure du pied de page du message est identique dans les versions 1 et 2 du format de message.

Structure du pied de page
Champ Longueur, en octets
Signature Length 2
Signature Variable. Est égal à la valeur spécifiée dans les 2 octets précédents (Longueur de signature).
Durée de la signature

Longueur de la signature. Il s'agit d'une valeur de 2 octets interprétée comme un entier 16 bits non signé qui spécifie le nombre d'octets qui contiennent la signature.

Signature

Signature.