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à.
Dettagli di caching della chiave dei dati
La maggior parte delle applicazioni possono utilizzare l'impostazione predefinita del caching della chiavi dei dati senza la necessità di scrivere codice personalizzato. Questa sezione descrive l'implementazione predefinita e alcuni dettagli sulle opzioni.
Argomenti
In che modo funziona il caching della chiave dei dati
Quando utilizzi il caching della chiave dei dati in una richiesta di crittografia o decrittografia dei dati, AWS Encryption SDK prima cerca la cache per una chiave di dati in grado di soddisfare la richiesta. Se trova una corrispondenza valida, utilizza la chiave di dati memorizzati per crittografare i dati. In caso contrario, genera una nuova chiave di dati, come farebbe in assenza della cache.
Il caching della chiave di dati non viene utilizzato per i dati di dimensione sconosciuta, come, ad esempio i dati in streaming. Ciò consente alla CMM di memorizzazione nella cache di applicare correttamente la soglia massima di byte. Per evitare questo comportamento, aggiungi le dimensioni del messaggio alla richiesta di crittografia.
Oltre alla cache, la memorizzazione nella cache delle chiavi di dati utilizza un gestore di materiali crittografici per la memorizzazione nella cache (caching CMM). La CMM con memorizzazione nella cache è una CMM (Cryptographic Materials Manager) specializzata che interagisce con una cache e una CMM sottostante. Creazione di una cache di materiali crittografici Responsabile di materiali crittografici (Quando si specifica un provider di chiavi master o un portachiavi, AWS Encryption SDK viene creata una CMM predefinita). La CMM con cache memorizza nella cache le chiavi di dati restituite dalla CMM sottostante. La CMM per la memorizzazione nella cache impone inoltre le soglie di sicurezza della cache impostate dall'utente.
Per evitare che venga selezionata la chiave di dati errata dalla cache, tutti i CMM di caching compatibili richiedono che le proprietà seguenti dei materiali crittografici memorizzati nella cache corrispondano alla richiesta di materiali.
-
Contesto di crittografia (anche se vuoto)
-
Nome della partizione (una stringa che identifica la CMM per la memorizzazione nella cache)
-
(Solo decrittazione) Chiavi di dati crittografate
Nota
Le chiavi di dati vengono memorizzate nella AWS Encryption SDK cache solo quando la suite di algoritmi utilizza una funzione di derivazione delle chiavi. https://en.wikipedia.org/wiki/Key_derivation_function
I seguenti flussi di lavoro mostrano il modo in cui una richiesta di crittografia dei dati viene elaborata con e senza il caching della chiave dei dati. Mostrano come i componenti di caching creati, tra cui la cache e la CMM di caching, vengono utilizzati nel processo.
Crittografia dei dati senza caching
Per ottenere i materiali di crittografia senza caching:
-
Un'applicazione chiede loro di AWS Encryption SDK crittografare i dati.
La richiesta specifica un fornitore di chiavi master o un portachiavi. AWS Encryption SDK Crea una CMM predefinita che interagisce con il fornitore di chiavi master o il portachiavi.
-
AWS Encryption SDK Richiede alla CMM i materiali crittografici (richiedi materiali crittografici).
-
La CMM richiede il materiale crittografico al suo portachiavi (C e JavaScript) o al suo fornitore di chiavi master (Java e Python). Ciò potrebbe comportare una chiamata a un servizio di crittografia, come (). AWS Key Management Service AWS KMS La CMM restituisce i materiali di crittografia a. AWS Encryption SDK
-
AWS Encryption SDK Utilizza la chiave di dati in testo normale per crittografare i dati. Archivia i dati crittografati e le chiavi di dati crittografate in un messaggio crittografato che viene restituito all'utente.
Crittografia dei dati con il caching
Per ottenere i materiali di crittografia con il caching della chiave di dati:
-
Un'applicazione chiede loro di AWS Encryption SDK crittografare i dati.
La richiesta specifica un gestore di materiali crittografici per la memorizzazione nella cache (CMM) associato a un gestore di materiali crittografici (CMM) sottostante. Quando si specifica un fornitore di chiavi master o un portachiavi, viene creata automaticamente una CMM predefinita. AWS Encryption SDK
-
L'SDK richiede alla CMM di memorizzazione nella cache specificata i materiali di crittografia.
-
La CMM di memorizzazione nella cache richiede materiali di crittografia dalla cache.
-
Se la cache trova una corrispondenza, aggiorna l'età e i valori di utilizzo della voce della cache corrispondente e restituisce i materiali di crittografia memorizzati nella cache alla CMM di memorizzazione nella cache.
Se la voce della cache è conforme alle soglie di sicurezza, la CMM per la memorizzazione nella cache la restituisce all'SDK. In caso contrario, comunica alla cache di eliminare la voce e di procedere come se non ci fossero corrispondenze.
-
Se la cache non riesce a trovare una corrispondenza valida, la CMM di memorizzazione nella cache chiede alla CMM sottostante di generare una nuova chiave di dati.
La CMM sottostante ottiene il materiale crittografico dal suo portachiavi (C e JavaScript) o dal suo fornitore di chiavi master (Java e Python). Questo potrebbe comportare una chiamata a un servizio, come AWS Key Management Service. La CMM sottostante restituisce le copie in testo normale e crittografate della chiave di dati alla CMM di memorizzazione nella cache.
La CMM con cache salva i nuovi materiali di crittografia nella cache.
-
-
La CMM di memorizzazione nella cache restituisce i materiali di crittografia a. AWS Encryption SDK
-
AWS Encryption SDK Utilizza la chiave di dati in testo normale per crittografare i dati. Archivia i dati crittografati e le chiavi di dati crittografate in un messaggio crittografato che viene restituito all'utente.
Creazione di una cache di materiali crittografici
AWS Encryption SDK Definisce i requisiti per una cache di materiali crittografici utilizzata nella memorizzazione nella cache delle chiavi di dati. Fornisce inoltre una cache locale, che è una cache configurabile, in memoria, utilizzata meno di recente (LRU). LocalCryptoMaterialsCache costruttore in Java e Python, la LocalCryptographicMaterialsCache funzione get in o il costruttore in JavaScript C. aws_cryptosdk_materials_cache_local_new
La cache locale include la logica per la gestione di base della cache, tra cui l'aggiunta, l'eliminazione e la corrispondenza delle voci memorizzate nella cache e la manutenzione della cache. Non è necessario scrivere una logica di gestione della cache personalizzata. È possibile utilizzare la cache locale così com'è, personalizzarla o sostituire qualsiasi cache compatibile.
Quando si crea una cache locale, si imposta la sua capacità, ovvero il numero massimo di voci che la cache può contenere. Questa impostazione consente di progettare una cache efficiente con un riutilizzo della chiave dei dati limitato.
La SDK di crittografia AWS per Java e la forniscono SDK di crittografia AWS per Python anche una cache dei materiali crittografici nulla ()NullCryptoMaterialsCache. NullCryptoMaterialsCache Restituisce un errore per tutte le GET operazioni e non risponde alle PUT operazioni. È possibile utilizzarlo NullCryptoMaterialsCache in fase di test o per disabilitare temporaneamente la memorizzazione nella cache in un'applicazione che include codice di memorizzazione nella cache.
In AWS Encryption SDK, ogni cache dei materiali crittografici è associata a un gestore di materiali crittografici di memorizzazione nella cache (caching CMM). La CMM per la memorizzazione nella cache ottiene le chiavi di dati dalla cache, le inserisce nella cache e applica le soglie di sicurezza impostate. Impostazione delle soglie di sicurezza della cache Quando si crea una CMM con memorizzazione nella cache, si specifica la cache utilizzata e il provider di chiavi master o CMM sottostante che genera le chiavi di dati memorizzate nella cache.
Creazione di un responsabile della cache di materiali crittografici
Per abilitare la memorizzazione nella cache delle chiavi di dati, è necessario creare una cache e un gestore dei materiali crittografici per la memorizzazione nella cache (CMM con cache). Quindi, nelle richieste di crittografia o decrittografia dei dati, si specifica una CMM per la memorizzazione nella cache, anziché una CMM (Cryptographic Materials Manager) standard, un provider di chiavi master o un portachiavi. Portachiavi e fornitori di chiavi principali
Esistono due tipi di CMM. Entrambi ottengono le chiavi dei dati (e relativo materiale crittografico), ma in modi diversi, come segue:
-
Una CMM è associata a un portachiavi (C o JavaScript) o a un provider di chiavi master (Java e Python). Quando l'SDK richiede alla CMM i materiali di crittografia o decrittografia, la CMM riceve i materiali dal suo fornitore di portachiavi o chiave master. In Java e Python, il CMM utilizza le chiavi master per generare, crittografare o decrittare le chiavi di dati. In C and JavaScript, il portachiavi genera, crittografa e restituisce i materiali crittografici.
-
Una CMM con cache è associata a una cache, ad esempio una cache Creazione di una cache di materiali crittografici locale, e a una CMM sottostante. Quando l'SDK richiede alla CMM di memorizzazione nella cache i materiali crittografici, la CMM di memorizzazione nella cache tenta di recuperarli dalla cache. Se non riesce a trovare una corrispondenza, la CMM di memorizzazione nella cache chiede i materiali alla CMM sottostante. Quindi, memorizza nella cache i nuovi materiali crittografici prima di restituirli all'intermediario.
La CMM per la memorizzazione nella cache impone inoltre le soglie di sicurezza impostate per ogni voce della cache. Poiché le soglie di sicurezza sono impostate e applicate dalla CMM di memorizzazione nella cache, è possibile utilizzare qualsiasi cache compatibile, anche se la cache non è progettata per materiale sensibile.
Cosa c'è in una voce della cache della chiave di dati?
Il caching della chiave di dati memorizza le chiavi di dati e i relativi materiali crittografici in una cache. Ogni voce include gli elementi elencati di seguito. Esistono cache separate per la crittografia e la decrittografia, pertanto la crittografia di un messaggio non comporta l'esaurimento di una voce della cache per la decrittografia. Queste informazioni potrebbero essere utili per decidere se utilizzare la funzionalità di memorizzazione nella cache delle chiavi di dati e quando imposti le soglie di sicurezza su un gestore di materiali crittografici per la memorizzazione nella cache (CMM con cache).
Voci nella cache per le richieste di crittografia
Le voci che vengono aggiunte a una cache della chiave di dati in seguito a un'operazione di crittografia includono i seguenti elementi:
-
Chiave di dati di testo non crittografato
-
Chiavi di dati crittografati (una o più)
-
Chiave di firma del messaggio (se ne viene utilizzata una)
-
Metadati, inclusi i contatori di utilizzo per applicare le soglie di sicurezza
Voci nella cache per le richieste di decrittografia
Le voci che vengono aggiunte a una cache della chiave di dati in seguito a un'operazione di decrittografia includono i seguenti elementi:
-
Chiave di dati di testo non crittografato
-
Chiave di verifica della firma (se ne viene utilizzata una)
-
Metadati, inclusi i contatori di utilizzo per applicare le soglie di sicurezza
Contesto di crittografia: come selezionare le voci di cache
È possibile specificare un contesto di crittografia in qualsiasi richiesta per crittografare i dati. Tuttavia, il contesto di crittografia svolge un ruolo speciale nel contesto del caching della chiave dei dati. Consente di creare sottogruppi di chiavi di dati nella cache, anche quando le chiavi di dati provengono dalla stessa CMM di memorizzazione nella cache.
Un contesto di crittografia è un set di coppie chiave-valore che contiene dati arbitrari non segreti. Durante la crittografia, il contesto di crittografia è legato ai dati crittografati, in modo che lo stesso contesto di crittografia è necessario per decrittografare i dati. In AWS Encryption SDK, il contesto di crittografia viene archiviato nel messaggio crittografato con i dati e le chiavi di dati crittografati.
Quando utilizzi una cache di chiavi di dati, è anche possibile utilizzare il contesto di crittografia per selezionare chiavi di dati specifiche nella cache per le tue operazioni di crittografia. Il contesto di crittografia viene salvato nella voce della cache con la chiave dei dati (fa parte dell'ID della voce della cache). Le chiavi dei dati nella cache vengono riutilizzate solo quando i contesti di crittografia corrispondono. Se desideri riutilizzare alcune chiavi dei dati per una richiesta di crittografia, specificare lo stesso contesto di crittografia. Se desideri evitare tali chiavi di dati, specifica un contesto di crittografia diverso.
Il contesto di crittografia è sempre facoltativo, ma consigliato. Se non specifichi un contesto di crittografia nella tua richiesta, un contesto di crittografia vuoto è incluso nell'identificatore della voce di cache e corrisponde a ogni richiesta.
La mia applicazione utilizza chiavi dati memorizzate nella cache?
La memorizzazione nella cache delle chiavi dati è una strategia di ottimizzazione molto efficace per determinate applicazioni e carichi di lavoro. Tuttavia, poiché comporta un certo rischio, è importante determinare quanto sia efficace per la propria situazione e quindi decidere se i benefici superano i rischi.
Poiché la memorizzazione nella cache delle chiavi dati riutilizza le chiavi dati, l'effetto più evidente è ridurre il numero di chiamate per generare nuove chiavi dati. Quando viene implementata la memorizzazione nella cache delle chiavi di dati, AWS Encryption SDK chiama l' AWS KMS GenerateDataKeyoperazione solo per creare la chiave di dati iniziale e quando la cache è mancante. Tuttavia, la memorizzazione nella cache migliora sensibilmente le prestazioni solo nelle applicazioni che generano numerose chiavi dati con le stesse caratteristiche, tra cui lo stesso contesto di crittografia e suite di algoritmi.
Per determinare se l'implementazione di utilizza effettivamente le chiavi di dati dalla cache, prova le seguenti tecniche. AWS Encryption SDK
-
Nei log della tua infrastruttura a chiave master, controlla la frequenza delle chiamate per creare nuove chiavi di dati. Quando la memorizzazione nella cache delle chiavi dati è efficace, il numero di chiamate per creare nuove chiavi dovrebbe diminuire sensibilmente. Ad esempio, se utilizzi un provider di chiavi AWS KMS master o un portachiavi, cerca nei CloudTrail registri le GenerateDataKey chiamate.
-
Confrontare i messaggi crittografati restituiti da AWS Encryption SDK in risposta a diverse richieste di crittografia. Ad esempio, se stai utilizzando SDK di crittografia AWS per Java, confronta l'ParsedCiphertext
oggetto proveniente da diverse chiamate crittografate. In SDK di crittografia AWS per JavaScript, confronta il contenuto della encryptedDataKeysproprietà di MessageHeader. Quando le chiavi dati vengono riutilizzate, le chiavi dati crittografate nel messaggio crittografato sono identiche.