AWS Encryption SDK riferimento al formato dei messaggi - AWS Encryption SDK

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

AWS Encryption SDK riferimento al formato dei messaggi

Le informazioni presenti su questa pagina sono un riferimento per la creazione della tua libreria di crittografia, compatibile con AWS Encryption SDK. Se non stai creando la tua libreria di crittografia compatibile, allora è probabile che queste informazioni non ti serviranno.

Per utilizzarlo AWS Encryption SDK in uno dei linguaggi di programmazione supportati, consultaLinguaggi di programmazione.

Per le specifiche che definiscono gli elementi di una corretta AWS Encryption SDK implementazione, si veda la AWS Encryption SDK Specificazione in GitHub.

Le operazioni di crittografia incluse AWS Encryption SDK restituiscono una singola struttura di dati o un messaggio crittografato che contiene i dati crittografati (testo cifrato) e tutte le chiavi di dati crittografate. Per comprendere questa struttura di dati, oppure per creare librerie per le operazioni di lettura e scrittura, hai bisogno di comprendere il formato del messaggio.

Il formato del messaggio è costituito da almeno due parti: un'intestazione e un corpo. In alcuni casi, il formato del messaggio è composto da una terza parte nota come piè di pagina. Il formato del messaggio definisce una sequenza ordinata di byte nell'ordine dei byte di rete, definito anche formato big-endian. Il formato del messaggio inizia con l'intestazione, seguita dal corpo, seguita dal piè di pagina (quando disponibile).

Le suite di algoritmi supportate da AWS Encryption SDK utilizzano una delle due versioni di formato di messaggio. Le suite di algoritmi senza impegno chiave utilizzano il formato dei messaggi versione 1. Le suite di algoritmi con impegno chiave utilizzano il formato dei messaggi versione 2.

Struttura dell'intestazione

L'intestazione del messaggio contiene la chiave di dati crittografati e le informazioni su come è formato il corpo del messaggio. La tabella seguente descrive i campi che costituiscono l'intestazione nelle versioni 1 e 2 dei formati di messaggio. I byte vengono aggiunti nell'ordine mostrato.

Il valore Non presente indica che il campo non esiste in quella versione del formato del messaggio. Il testo in grassetto indica valori diversi in ogni versione.

Nota

Potrebbe essere necessario scorrere orizzontalmente o verticalmente per visualizzare tutti i dati di questa tabella.

Struttura dell'intestazione
Campo Formato del messaggio (versione 1).

Lunghezza (byte)

Formato dei messaggi versione 2

Lunghezza (byte)

Version 1 1
Type 1 Non presente
Algorithm ID 2 2
Message ID 16 32
AAD Length

2

Quando il contesto di crittografia è vuoto, il valore del campo AAD Lunghezza a 2 byte è 0.

2

Quando il contesto di crittografia è vuoto, il valore del campo AAD Lunghezza a 2 byte è 0.

AAD

Variabile. La lunghezza di questo campo viene visualizzata nei 2 byte precedenti (campo AAD Lunghezza).

Quando il contesto di crittografia è vuoto, non è presente alcun AAD campo nell'intestazione.

Variabile. La lunghezza di questo campo viene visualizzata nei 2 byte precedenti (campo AAD Lunghezza).

Quando il contesto di crittografia è vuoto, non è presente alcun AAD campo nell'intestazione.

Encrypted Data Key Count 2 2
Encrypted Data Key(s) Variabile. Determinato dal numero di chiavi di dati crittografati e dalla lunghezza di ciascuna. Variabile. Determinato dal numero di chiavi di dati crittografati e dalla lunghezza di ciascuna.
Content Type 1 1
Reserved 4 Non presente
IV Length 1 Non presente
Frame Length 4 4
Algorithm Suite Data Non presente Variabile. Determinato dall'algoritmo che ha generato il messaggio.
Header Authentication Variabile. Determinato dall'algoritmo che ha generato il messaggio. Variabile. Determinato dall'algoritmo che ha generato il messaggio.
Versione

La versione di questo formato di messaggio. La versione è codificata 1 o 2 come byte 01 o 02 in notazione esadecimale

Tipo

Il tipo di questo formato di messaggio. Il tipo indica il tipo di struttura. L'unico tipo supportato viene descritto come dati crittografati autenticati dal cliente. Il valore del tipo è 128, codificato come byte 80 in notazione esadecimale.

Questo campo non è presente nella versione 2 del formato di messaggio.

ID dell'algoritmo

Identificativo dell'algoritmo utilizzato. È un valore a 2 byte interpretato come un numero intero senza segno a 16 bit. Per ulteriori informazioni sugli algoritmi, consulta AWS Encryption SDK riferimento agli algoritmi.

ID del messaggio

Un valore generato casualmente che identifica il messaggio. L'ID del messaggio:

  • Identifica in modo univoco il messaggio crittografato.

  • Associa debolmente l'intestazione del messaggio al corpo del messaggio.

  • Fornisce un meccanismo per riutilizzare una chiave di dati in modo sicuro con più messaggi crittografati.

  • Protegge da un riutilizzo accidentale della chiave di dati o dall'esaurimento delle chiavi nella AWS Encryption SDK.

Questo valore è 128 bit nella versione 1 del formato di messaggio e 256 bit nella versione 2.

AADLunghezza

La lunghezza dei dati autenticati aggiuntivi (AAD). È un valore a 2 byte interpretato come un numero intero senza segno a 16 bit che specifica il numero di byte che contengono. AAD

Quando il contesto di crittografia è vuoto, il valore del campo Lunghezza è 0. AAD

AAD

Dati autenticati aggiuntivi. AADè una codifica del contesto di crittografia, una matrice di coppie chiave-valore in cui ogni chiave e valore è una stringa di UTF -8 caratteri codificati. Il contesto di crittografia viene convertito in una sequenza di byte e utilizzato per il valore. AAD Quando il contesto di crittografia è vuoto, non è presente alcun AAD campo nell'intestazione.

Quando vengono utilizzati gli algoritmi con firma, il contesto di crittografia deve contenere la coppia chiave-valore {'aws-crypto-public-key', Qtxt}. Qtxt rappresenta il punto della curva ellittica Q compresso secondo la versione SEC1 2.0 e quindi codificato in base 64. Il contesto di crittografia può contenere valori aggiuntivi, ma la lunghezza massima del componente costruito è di 2^16 - 1 byte. AAD

La tabella seguente descrive i campi che compongono il. AAD Le coppie chiave-valore vengono ordinate, per chiave, in ordine crescente in base a UTF un codice di -8 caratteri. I byte vengono aggiunti nell'ordine mostrato.

Struttura del AAD
Campo Lunghezza (byte)
Key-Value Pair Count 2
Key Length 2
Key Variabile. Pari al valore specificato nei 2 byte precedenti (lunghezza chiave).
Value Length 2
Value Variabile. Pari al valore specificato nei 2 byte precedenti (lunghezza valore).
Numero di coppie chiave-valore

Il numero di coppie chiave-valore in. AAD È un valore a 2 byte interpretato come un numero intero senza segno a 16 bit che specifica il numero di coppie chiave-valore in. AAD Il numero massimo di coppie chiave-valore in è 2^16 - 1. AAD

Quando non esiste un contesto di crittografia o il contesto di crittografia è vuoto, questo campo non è presente nella struttura. AAD

Lunghezza della chiave

La lunghezza della chiave per la coppia chiave-valore. Si tratta di un valore di 2 byte interpretato come un numero intero senza segno a 16 bit che specifica il numero di byte che contengono la chiave.

Chiave

La chiave per la coppia chiave-valore. È una sequenza di UTF -8 byte codificati.

Lunghezza del valore

La lunghezza del valore per la coppia chiave-valore. Si tratta di un valore di 2 byte interpretato come un numero intero senza segno a 16 bit che specifica il numero di byte che contengono il valore.

Valore

Il valore per la coppia chiave-valore. È una sequenza di UTF -8 byte codificati.

Conteggio delle chiavi di dati crittografati

Il numero di chiavi di dati crittografati. Si tratta di un valore di 2 byte interpretato come un numero intero senza segno a 16 bit che specifica il numero di chiavi di dati crittografati. Il numero massimo di chiavi dati crittografate in ogni messaggio è 65.535 (2^16 - 1).

Chiavi dati crittografate

Sequenza di chiavi di dati crittografati. La lunghezza della sequenza è determinata dal numero di chiavi di dati crittografati e dalla lunghezza di ciascuna. La sequenza contiene almeno una chiave di dati crittografati.

La tabella seguente descrive i campi che costituiscono ogni chiave di dati crittografati. I byte vengono aggiunti nell'ordine mostrato.

Struttura chiave dati crittografati
Campo Lunghezza (byte)
Key Provider ID Length 2
Key Provider ID Variabile. Pari al valore specificato nei 2 byte precedenti (lunghezza ID provider chiave).
Key Provider Information Length 2
Key Provider Information Variabile. Pari al valore specificato nei 2 byte precedenti (lunghezza informazione provider chiave).
Encrypted Data Key Length 2
Encrypted Data Key Variabile. Pari al valore specificato nei 2 byte precedenti (lunghezza chiave dati crittografati).
Lunghezza dell'ID del fornitore di chiavi

Lunghezza dell'identificatore del provider della chiave. Si tratta di un valore di 2 byte interpretato come un numero intero senza segno a 16 bit che specifica il numero di byte che contengono l'ID del provider della chiave.

ID del fornitore di chiavi

Identificatore del provider della chiave. Viene utilizzato per indicare il provider della chiave dei dati crittografati ed è destinato a essere ampliabile.

Lunghezza delle informazioni chiave del fornitore

Lunghezza delle informazioni del provider della chiave. Si tratta di un valore di 2 byte interpretato come un numero intero senza segno a 16 bit che specifica il numero di byte che contengono le informazioni del provider della chiave.

Informazioni chiave sul fornitore

Informazioni provider chiave. Dipende dal provider di chiavi.

Quando AWS KMS è il fornitore della chiave principale o utilizzi un AWS KMS portachiavi, questo valore contiene l'Amazon Resource Name (ARN) di AWS KMS key.

Lunghezza della chiave di dati crittografati

La lunghezza della chiave di dati crittografati. Si tratta di un valore di 2 byte interpretato come un numero intero senza segno a 16 bit che specifica il numero di byte che contengono la chiave di dati crittografati.

Chiave dati crittografata

Chiave di dati crittografati. È la chiave di crittografia dei dati crittografati dal provider di chiavi.

Tipo di contenuto

Il tipo di dati crittografati, senza frame o incorniciati.

Nota

Quando possibile, utilizza dati con frame. AWS Encryption SDK Supporta dati senza frame solo per uso precedente. Alcune implementazioni linguistiche di AWS Encryption SDK possono ancora generare testo cifrato senza frame. Tutte le implementazioni linguistiche supportate possono decrittografare testo cifrato con e senza frame.

I dati con frame sono suddivisi in parti di uguale lunghezza; ogni parte viene crittografata separatamente. Il contenuto framed è di tipo 2, codificato come byte 02 in notazione esadecimale.

I dati senza frame non vengono divisi; si tratta di un singolo blob crittografato. Il contenuto non-framed è di tipo 1, codificato come byte 01 in notazione esadecimale.

È riservato

Una sequenza riservata di 4 byte. Questo valore deve essere 0. E' codificato come byte 00 00 00 00 in notazione esadecimale (una sequenza a 4 byte di un valore intero a 32 bit pari a 0).

Questo campo non è presente nella versione 2 del formato di messaggio.

IV. Lunghezza

La lunghezza del vettore di inizializzazione (IV). Si tratta di un valore di 1 byte interpretato come un numero intero senza segno a 8 bit che specifica il numero di byte che contengono l'IV. Tale valore viene determinato dal valore dell'IV in byte dell'algoritmo che ha generato il messaggio.

Questo campo non è presente nella versione 2 del formato di messaggio, che supporta solo suite di algoritmi che utilizzano valori IV deterministici nell'intestazione del messaggio.

Lunghezza del fotogramma

La lunghezza di ogni frame di dati incorniciati. È un valore a 4 byte interpretato come un numero intero senza segno a 32 bit che specifica il numero di byte in ogni frame. Quando i dati non sono inclusi in frame, ovvero quando il valore del Content Type campo è 1, questo valore deve essere 0.

Nota

Quando possibile, usa dati incorniciati. AWS Encryption SDK Supporta dati senza frame solo per uso precedente. Alcune implementazioni linguistiche di AWS Encryption SDK possono ancora generare testo cifrato senza frame. Tutte le implementazioni linguistiche supportate possono decrittografare testo cifrato con e senza frame.

Algorithm Suite Data

Dati supplementari necessari all'algoritmo che ha generato il messaggio. La lunghezza e il contenuto sono determinati dall'algoritmo. La sua lunghezza potrebbe essere 0.

Questo campo non è presente nella versione 1 del formato di messaggio.

Autenticazione dell'intestazione

L'autenticazione dell'intestazione viene determinata dall'algoritmo che ha generato il messaggio. L'autenticazione dell'intestazione viene calcolata in base all'intera intestazione. È costituito da un IV e un tag di autenticazione. I byte vengono aggiunti nell'ordine mostrato.

Struttura autenticazione dell'intestazione
Campo Lunghezza nella versione 1.0 (byte) Lunghezza nella versione 2.0 (byte)
IV Variabile. Determinato dal valore dell'IV in byte dell'algoritmo che ha generato il messaggio. N/D
Authentication Tag Variabile. Determinato dal valore in byte del tag di autenticazione dell'algoritmo che ha generato il messaggio. Variabile. Determinato dal valore in byte del tag di autenticazione dell'algoritmo che ha generato il messaggio.
IV

Il vettore di inizializzazione (IV) utilizzato per calcolare il tag di autenticazione dell'intestazione.

Questo campo non è presente nell'intestazione del formato dei messaggi versione 2. La versione 2 del formato dei messaggi supporta solo suite di algoritmi che utilizzano valori IV deterministici nell'intestazione del messaggio.

Tag di autenticazione

Il valore di autenticazione per l'intestazione. È utilizzato per autenticare l'intero contenuto dell'intestazione.

Struttura corpo

Il corpo del messaggio contiene i dati crittografati, denominati testo codificato. La struttura del corpo dipende dal tipo di contenuto (non-framed o framed). Le seguenti sezioni descrivono il formato del corpo del messaggio per ogni tipo di contenuto. La struttura del corpo del messaggio è la stessa nelle versioni 1 e 2 del formato dei messaggi.

Dati non-framed

I dati non inclusi in frame vengono crittografati in un unico blob con un IV e un corpo univoci. AAD

Nota

Quando possibile, utilizza dati con frame. AWS Encryption SDK Supporta dati senza frame solo per uso precedente. Alcune implementazioni linguistiche di AWS Encryption SDK possono ancora generare testo cifrato senza frame. Tutte le implementazioni linguistiche supportate possono decrittografare testo cifrato con e senza frame.

La tabella seguente descrive i campi che costituiscono i dati non-framed. I byte vengono aggiunti nell'ordine mostrato.

Struttura del corpo non-framed
Campo Lunghezza, in byte
IV Variabile. Pari al valore specificato nei IV Length byte dell'intestazione.
Encrypted Content Length 8
Encrypted Content Variabile. Pari al valore specificato negli 8 byte precedenti (lunghezza contenuto crittografato).
Authentication Tag Variabile. Determinato dall'implementazione dell'algoritmo utilizzato.
IV

Il vettore di inizializzazione (IV) da usare con l'algoritmo di crittografia.

Lunghezza del contenuto crittografato

La lunghezza dei contenuti crittografati, o il testo cifrato. Si tratta di un valore di 8 byte interpretato come un numero intero senza segno a 64 bit che specifica il numero di byte che contengono il contenuto crittografato.

Tecnicamente, il valore massimo consentito è di 2 ^ 63 - 1 o 8 exbibyte EiB (8). Tuttavia, in pratica, il valore massimo è 2 ^ 36 - 32 o 64 gibibytes (64 GiB), a causa delle limitazioni imposte dagli algoritmi implementati.

Nota

L'implementazione Java di questo limita SDK ulteriormente questo valore a 2^31 - 1 o 2 gibibyte (2 GiB), a causa delle restrizioni del linguaggio.

Contenuto crittografato

I contenuti crittografati (testo codificato) come sono restituiti dall'algoritmo di crittografia.

Tag di autenticazione

Il valore di autenticazione per il corpo. Viene utilizzato per autenticare il corpo del messaggio.

Dati framed

Nei dati incorniciati, i dati di testo normale sono divisi in parti di uguale lunghezza denominate frame. AWS Encryption SDK Crittografa ogni frame separatamente con un IV e un corpo AAD unici.

Nota

Quando possibile, usa dati incorniciati. AWS Encryption SDK Supporta dati senza frame solo per uso precedente. Alcune implementazioni linguistiche di AWS Encryption SDK possono ancora generare testo cifrato senza frame. Tutte le implementazioni linguistiche supportate possono decrittografare testo cifrato con e senza frame.

La lunghezza del frame, ovvero la lunghezza del contenuto crittografato nel frame, può essere diversa per ogni messaggio. Il numero massimo di byte in un frame è 2^32 - 1. Il numero massimo di frame in un messaggio è 2^32 - 1.

Sono disponibili due tipi di frame: periodici e finali. Ogni messaggio deve essere costituito da o includere un frame finale.

Tutti i frame normali di un messaggio hanno la stessa lunghezza del frame. Il frame finale può avere una lunghezza del frame diversa.

La composizione dei frame nei dati framed varia a seconda della lunghezza del contenuto crittografato.

  • Uguale alla lunghezza del frame: quando la lunghezza del contenuto crittografato è uguale alla lunghezza del frame dei frame normali, il messaggio può essere costituito da un frame normale che contiene i dati, seguito da un frame finale di lunghezza zero (0). In alternativa, il messaggio può essere costituito solo da un frame finale contenente i dati. In questo caso, il frame finale ha la stessa lunghezza del frame normale.

  • Multiplo della lunghezza del frame: quando la lunghezza del contenuto crittografato è un multiplo esatto della lunghezza del frame dei frame normali, il messaggio può terminare in un frame normale che contiene i dati, seguito da un frame finale di lunghezza zero (0). In alternativa, il messaggio può terminare in un frame finale contenente i dati. In questo caso, il frame finale ha la stessa lunghezza del frame normale.

  • Non è un multiplo della lunghezza del frame: quando la lunghezza del contenuto crittografato non è un multiplo esatto della lunghezza del frame dei frame normali, il frame finale contiene i dati rimanenti. La lunghezza del frame finale è inferiore alla lunghezza del frame dei frame normali.

  • Lunghezza del frame inferiore alla lunghezza del frame: quando la lunghezza del contenuto crittografato è inferiore alla lunghezza del frame normale, il messaggio è costituito da un frame finale che contiene tutti i dati. La lunghezza del frame finale è inferiore alla lunghezza del frame dei frame normali.

Le tabelle seguenti descrivono i campi che costituiscono i frame. I byte vengono aggiunti nell'ordine mostrato.

Struttura corpo framed, frame periodico
Campo Lunghezza, in byte
Sequence Number 4
IV Variabile. Pari al valore specificato nei IV Length byte dell'intestazione.
Encrypted Content Variabile. Pari al valore specificato nei Frame Length dell'intestazione.
Authentication Tag Variabile. Stabilito dall'algoritmo utilizzato, come specificato nel Algorithm ID dell'intestazione.
Numero di sequenza

Il numero di sequenza del frame. Si tratta di un numero di contatori incrementale per il frame. È un valore a 4 byte interpretato come un numero intero senza segno a 32 bit.

I dati framed devono iniziare al numero di sequenza 1. I frame successivi devono essere in ordine e devono contenere un incremento di 1 del frame precedente. In caso contrario, il processo di decrittografia arresta e segnala un errore.

IV

Il vettore di inizializzazione (IV) per il frame. SDKUtilizza un metodo deterministico per costruire un IV diverso per ogni frame del messaggio. La lunghezza viene specificata dalla suite dell'algoritmo utilizzato.

Contenuto crittografato

I contenuti crittografati (testo codificato) per il frame come sono restituiti dall'algoritmo di crittografia.

Tag di autenticazione

Il valore di autenticazione per il frame. Viene utilizzato per autenticare il frame completo.

Struttura corpo con frame, frame finale
Campo Lunghezza, in byte
Sequence Number End 4
Sequence Number 4
IV Variabile. Pari al valore specificato nei IV Length byte dell'intestazione.
Encrypted Content Length 4
Encrypted Content Variabile. Pari al valore specificato negli 4 byte precedenti (lunghezza contenuto crittografato).
Authentication Tag Variabile. Stabilito dall'algoritmo utilizzato, come specificato nel Algorithm ID dell'intestazione.
Fine del numero di sequenza

Un indicatore per il frame finale. Il valore è codificato come 4 byte FF FF FF FF in notazione esadecimale.

Numero di sequenza

Il numero di sequenza del frame. Si tratta di un numero di contatori incrementale per il frame. È un valore a 4 byte interpretato come un numero intero senza segno a 32 bit.

I dati framed devono iniziare al numero di sequenza 1. I frame successivi devono essere in ordine e devono contenere un incremento di 1 del frame precedente. In caso contrario, il processo di decrittografia arresta e segnala un errore.

IV

Il vettore di inizializzazione (IV) per il frame. SDKUtilizza un metodo deterministico per costruire un IV diverso per ogni frame del messaggio. La lunghezza del IV viene specificata dalla suite dell'algoritmo.

Lunghezza del contenuto crittografato

La lunghezza del contenuto crittografato. Si tratta di un valore di 4 byte interpretato come un numero intero senza segno a 32 bit che specifica il numero di byte che contengono il contenuto crittografato per il frame.

Contenuto crittografato

I contenuti crittografati (testo codificato) per il frame come sono restituiti dall'algoritmo di crittografia.

Tag di autenticazione

Il valore di autenticazione per il frame. Viene utilizzato per autenticare il frame completo.

Quando vengono utilizzati gli algoritmi con firma , il formato del messaggio contiene un piè di pagina. Il piè di pagina del messaggio contiene una firma digitale calcolata sull'intestazione e sul corpo del messaggio. La tabella seguente descrive i campi che costituiscono il piè di pagina. I byte vengono aggiunti nell'ordine mostrato. La struttura del piè di pagina del messaggio è la stessa nelle versioni 1 e 2 del formato dei messaggi.

Struttura piè di pagina
Campo Lunghezza, in byte
Signature Length 2
Signature Variabile. Pari al valore specificato nei 2 byte precedenti (lunghezza firma).
Lunghezza della firma

La lunghezza della firma. Si tratta di un valore di 2 byte interpretato come un numero intero senza segno a 16 bit che specifica il numero di byte che contengono la firma.

Firma

La firma.