Qual è il punto della sequenza di tasti AES (con JSON Web Encryption)?

12

Sto guardando JSON Web Encryption (JWE) e sono lasciato un po 'confuso sul motivo per cui useresti AES key wrapping .

Il documento parla anche dell'uso di corrispondenti punti di forza dell'algoritmo chiave :

Algorithms of matching strengths should be used together whenever possible. For instance, when AES Key Wrap is used with a given key size, using the same key size is recommended when AES GCM is also used. If the key encryption and content encryption algorithms are different, the effective security is determined by the weaker of the two algorithms.

In sostanza, mi chiedo perché useresti la funzione AES per l'avvolgimento delle chiavi.

Esempio

Quindi per un confronto di esempio, utilizzando l'algoritmo di crittografia A256GCM ho bisogno di una chiave a 256 bit. Per essere semplice, la mia chiave sarà "secret0123456789secret0123456789" e sto codificando "Test".

DIR

Utilizzare l'algoritmo della chiave direct (DIR) (così usando la mia chiave come chiave dei contenuti), ottengo:

eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0..Vlf_WdLm-spHbfJe.RxMPrw.5VC8Y_qSPdSubbGNGyfn6A

Questo si rompe come:

         JWE Header:  {"alg":"dir","enc":"A256GCM"}
Encrypted key (CEK):  (blank)
                 IV:  Vlf_WdLm-spHbfJe
         Ciphertext:  RxMPrw
 Authentication Tag:  5VC8Y_qSPdSubbGNGyfn6A

A256KW

Corrispondente all'algoritmo dell'involucro chiave con l'algoritmo di crittografia, userò un Chiave AES 256 bit , che produce:

eyJhbGciOiJBMjU2S1ciLCJlbmMiOiJBMjU2R0NNIn0.66xZoxFI18zfvLMO6WU1zzqqX1tT8xu_qZzMQyPcfVuajPNkOJUXQA.X5ZL8yaOektXmfny.brz-Lg.xG-EvM-9hrw0XRiuRW7HrA

Questo si rompe come:

         JWE Header:  {"alg":"A256KW","enc":"A256GCM"}                         
Encrypted key (CEK):  66xZoxFI18zfvLMO6WU1zzqqX1tT8xu_qZzMQyPcfVuajPNkOJUXQA   
                 IV:  X5ZL8yaOektXmfny                                         
         Ciphertext:  brz-Lg                                                   
 Authentication Tag:  xG-EvM-9hrw0XRiuRW7HrA                                   

A quanto ho capito, la chiave del contenuto è crittografata usando Chiave Web JSON ( JWK) , ma in sostanza ciò che sta facendo è:

  • creazione di una chiave di crittografia del contenuto a 256 bit casuale (CEK)
  • crittografando i dati effettivi con questo CEK (e un IV casuale)
  • crittografia del CEK con la chiave fornita

I dati crittografati CEK, IV e crittografati fanno tutti parte dell'oggetto JWE risultante (tutti codificati in base 64url).

Direct JWE comporta un payload più piccolo da inviare over-the-wire, e presumo che sia leggermente più veloce sia per crittografare che per decriptare perché salta un passaggio.

L'uso del wrapper AES offre maggiore sicurezza e, in tal caso, perché? In caso contrario, perché dovresti usarlo invece della semplice crittografia diretta dei contenuti?

    
posta gregmac 05.02.2015 - 18:47
fonte

4 risposte

7

Se è necessario memorizzare una grande quantità di dati, il vantaggio di avvolgere la chiave all'interno di un livello di crittografia significa che se è necessario modificare la chiave in un secondo momento, non sarà necessario ricodificare tutti i dati. È sufficiente modificare KEK (Key Encrypting Key) e ricodificare il CEK senza dover trasferire nuovamente tutto il testo cifrato.

Ad esempio, supponiamo che tu stia utilizzando JSON per trasmettere dati al tuo server per l'archiviazione sicura. È possibile trasmettere tutti questi dati utilizzando A256KW e il proprio server all'altra estremità lo memorizza semplicemente.

Cioè, il seguente è trasferito e quindi memorizzato sul lato server:

Encrypted key (CEK):  66xZoxFI18zfvLMO6WU1zzqqX1tT8xu_qZzMQyPcfVuajPNkOJUXQA   
                 IV:  X5ZL8yaOektXmfny                                         
         Ciphertext:  brz-Lg                                                   
 Authentication Tag:  xG-EvM-9hrw0XRiuRW7HrA       

Se avevi bisogno di cambiare la chiave potresti semplicemente tirare il CEK al client, decrittografarlo con il vecchio KEK e cifrare il CEK con la nuova chiave e poi inviarlo di nuovo al server per aggiornare tutti i record rilevanti.

Solo per scopi di trasmissione a breve termine, questo non è importante e sarebbe più facile usare Direct per un payload più piccolo.

    
risposta data 06.02.2015 - 16:08
fonte
4

KW ti consente di stabilire un segreto a lungo termine, ma usa comunque un CEK diverso per ogni messaggio, questo è importante per alcuni casi d'uso, ma non per tutti.

Nel caso in cui si utilizzi JWE per inviare un singolo messaggio a più destinatari che hanno tutti chiavi a lungo termine differenti, questo è essenziale in quanto è necessario avvolgere il CEK più volte una volta per ciascun destinatario.

JWE supporta una serie di casi d'uso avanzati, ma l'uso comune è quello di crittografare il JWT tra due parti utilizzando direttamente.

Quando stavamo sviluppando JWE alcune persone volevano supportare solo l'opzione KW e abbandonare l'ottimizzazione diretta. Alla fine della giornata ci siamo ritrovati con due opzioni a seconda del caso d'uso. Direct crea token più piccoli ed è più facile da implementare. Se non hai bisogno di KW, non preoccuparti.

    
risposta data 27.05.2016 - 02:18
fonte
0

C'è un motivo per utilizzare il conteggio dei tasti AES. Una volta che hai crittografato qualcosa, la chiave è la parte debole. Tutti i tentativi di ottenere i dati richiedono la conoscenza della chiave. Poiché il software key and decrypt / decrypt non è crittografato, un utente malintenzionato potrebbe rubare la chiave e usarla. Questo è il punto di avvolgimento delle chiavi, aiuta a proteggere la tua chiave.

    
risposta data 06.02.2015 - 04:29
fonte
-2

L'uso del "key wrapping" consiste nel creare una chiave di sessione unica che genera un seed casuale e fa in modo che la chiave pubblica venga utilizzata per crittografare il contenuto del messaggio che l'altra mano decodificherà scartando la chiave pubblica con il chiave di sessione e usa la sua chiave privata per decodificare il messaggio.

    
risposta data 02.10.2018 - 18:37
fonte

Leggi altre domande sui tag