AWS Encryption SDK riferimento al formato del messaggio - 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 del messaggio

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, vedere 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)

Versione 1 1
Type 1 Non presente
ID algoritmo 2 2
ID messaggio 16 32
Lunghezza AAD

2

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

2

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

AAD

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

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

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

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

Conteggio chiave dati crittografati 2 2
Chiavi di dati crittografati 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
Riservata 4 Non presente
Lunghezza IV 1 Non presente
Lunghezza del frame 4 4
Algorithm Suite Data Non presente Variabile. Determinato dall'algoritmo che ha generato il messaggio.
Autenticazione dell'intestazione 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

Type

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 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 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 è di 128 bit nella versione 1 del formato di messaggio e di 256 bit nella versione 2.

Lunghezza AAD

La durata dei dati autenticati aggiuntivi (AAD). 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'AAD.

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

AAD

Dati autenticati aggiuntivi. L'AAD è una codifica del contesto di crittografia, un array di coppie chiave-valore in cui ciascuna chiave e il valore sono una stringa di caratteri con codifica UTF-8. Il contesto di crittografia viene trasformato in una sequenza di byte e utilizzato per il valore AAD. Quando il contesto di crittografia è vuoto, non vi è alcun campo AAD 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 la curva ellittica punto Q compressa in base alla SEC 1 versione 2.0 e con codifica base64. Il contesto di crittografia può contenere valori aggiuntivi, ma la durata massima dell'AAD costruito è di 2 ^ 16 - 1 byte.

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

Struttura AAD
Campo Lunghezza (byte)
Conteggio coppia chiave-valore 2
Lunghezza chiave 2
Chiave Variabile. Pari al valore specificato nei 2 byte precedenti (lunghezza chiave).
Lunghezza valore 2
Valore Variabile. Pari al valore specificato nei 2 byte precedenti (lunghezza valore).
Conteggio coppia chiave-valore

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

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

Lunghezza 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. Si tratta di una sequenza di byte con codifica UTF-8.

Lunghezza 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. Si tratta di una sequenza di byte con codifica UTF-8.

Conteggio chiave 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 di dati crittografati

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)
Lunghezza ID provider chiave 2
ID provider chiave Variabile. Pari al valore specificato nei 2 byte precedenti (lunghezza ID provider chiave).
Lunghezza informazioni provider chiave 2
Informazioni provider chiave Variabile. Pari al valore specificato nei 2 byte precedenti (lunghezza informazione provider chiave).
Lunghezza chiave dati crittografati 2
Chiave di dati crittografati Variabile. Pari al valore specificato nei 2 byte precedenti (lunghezza chiave dati crittografati).
Lunghezza ID provider chiave

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 provider chiave

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

Lunghezza informazioni provider chiave

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 provider chiave

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 chiave 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 di dati crittografati

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

Content Type

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.

Riservata

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 dei messaggi.

Lunghezza IV

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 frame

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
Tag di autenticazione 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-framed sono crittografati in un singolo blob con un IV univoco e l'AAD del corpo.

Nota

Quando possibile, usa 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 Lunghezza IV byte dell'intestazione.
Lunghezza contenuti crittografati 8
Contenuto crittografato Variabile. Pari al valore specificato negli 8 byte precedenti (lunghezza contenuto crittografato).
Tag di autenticazione Variabile. Determinato dall'implementazione dell'algoritmo utilizzato.
IV

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

Lunghezza contenuti crittografati

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 SDK limita ulteriormente questo valore a 2 ^ 31 - 1 o 2 gibibyte (2 GiB), a causa di limitazioni nel 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 AAD body univoci.

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 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
Numero sequenza 4
IV Variabile. Pari al valore specificato nei Lunghezza IV byte dell'intestazione.
Contenuto crittografato Variabile. Pari al valore specificato nei Lunghezza del frame dell'intestazione.
Tag di autenticazione Variabile. Stabilito dall'algoritmo utilizzato, come specificato nel ID algoritmo dell'intestazione.
Numero 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. L'SDK utilizza un metodo deterministico per creare un altro IV per ogni frame nel 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
Fine numero sequenza 4
Numero sequenza 4
IV Variabile. Pari al valore specificato nei Lunghezza IV byte dell'intestazione.
Lunghezza contenuti crittografati 4
Contenuto crittografato Variabile. Pari al valore specificato negli 4 byte precedenti (lunghezza contenuto crittografato).
Tag di autenticazione Variabile. Stabilito dall'algoritmo utilizzato, come specificato nel ID algoritmo dell'intestazione.
Fine numero sequenza

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

Numero 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. L'SDK utilizza un metodo deterministico per creare un altro IV per ogni frame nel messaggio. La lunghezza del IV viene specificata dalla suite dell'algoritmo.

Lunghezza contenuti crittografati

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
Lunghezza firma 2
Firma Variabile. Pari al valore specificato nei 2 byte precedenti (lunghezza 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.

La firma.