Concetti in AWS Encryption SDK - 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à.

Concetti in AWS Encryption SDK

Questa sezione introduce i concetti utilizzati in AWS Encryption SDK, e fornisce un glossario e un riferimento. È progettato per aiutarti a capire come AWS Encryption SDK funziona e i termini che utilizziamo per descriverlo.

Serve aiuto?

Crittografia envelope

La sicurezza dei dati crittografati dipende in parte dalla protezione della chiave di dati che può decrittarli. Una best practice accettata per la protezione della chiave di dati è crittografarla. A tale scopo, è necessaria un'altra chiave di crittografia, nota come chiave di crittografia a chiave o chiave di wrapping. La pratica di utilizzare una chiave di wrapping per crittografare le chiavi di dati è nota come crittografia a busta.

Protezione delle chiavi dei dati

AWS Encryption SDKCrittografa ogni messaggio con una chiave dati unica. Quindi crittografa la chiave dati sotto la chiave di avvolgimento specificata. Memorizza la chiave dati crittografata con i dati crittografati nel messaggio crittografato che restituisce.

Per specificare la chiave di avvolgimento, si utilizza un portachiavi o un fornitore di chiavi principali.

Crittografia delle buste con AWS Encryption SDK
Crittografia degli stessi dati con più chiavi di avvolgimento

È possibile crittografare la chiave dati con più chiavi di wrapping. Potresti voler fornire chiavi di avvolgimento diverse per utenti diversi, oppure chiavi di avvolgimento di tipi diversi o in posizioni diverse. Ciascuna delle chiavi di wrapping crittografa la stessa chiave di dati. AWS Encryption SDKMemorizza tutte le chiavi dati crittografate con i dati crittografati nel messaggio crittografato.

Per decrittografare i dati, è necessario fornire una chiave di wrapping in grado di decrittografare una delle chiavi dati crittografate.

Ogni chiave di wrapping crittografa la stessa chiave dati, ottenendo una chiave dati crittografata per ogni chiave di wrapping
Abbinare i punti di forza di più algoritmi

Per crittografare i dati, per impostazione predefinita, AWS Encryption SDK utilizza una sofisticata suite di algoritmi con crittografia simmetrica AES-GCM, una funzione di derivazione delle chiavi (HKDF) e firma. Per crittografare la chiave dati, puoi specificare un algoritmo di crittografia simmetrico o asimmetrico appropriato alla tua chiave di wrapping.

In generale, gli algoritmi di crittografia di chiavi simmetriche sono più rapidi e producono testi cifrati di dimensioni minori rispetto alla crittografia della chiave pubblica o asimmetrica. Tuttavia, gli algoritmi di chiave pubblica forniscono una separazione intrinseca dei ruoli e facilitano la gestione delle chiavi. Per combinare i punti di forza di ciascuno, puoi crittografare i dati con la crittografia a chiave simmetrica e quindi crittografare la chiave dati con la crittografia a chiave pubblica.

Chiave di dati

Una chiave di dati è una chiave di crittografia che l'AWS Encryption SDK utilizza per crittografare i dati. Ogni chiave di dati corrisponde a un array di byte conforme ai requisiti per le chiavi di crittografia. Se non scegli il caching della chiave di dati, l'AWS Encryption SDK utilizza una chiave di dati univoca per crittografare ogni messaggio.

Non è necessario specificare, generare, implementare, estendere, proteggere o utilizzare chiavi dati. L'AWS Encryption SDK si occupa di tutte queste attività quando chiami le operazioni di crittografia e decrittazione.

Per proteggere le chiavi dati, le AWS Encryption SDK crittografa utilizzando una o più chiavi di crittografia a chiave note come chiavi di wrapping o chiavi master. Dopo che l'AWS Encryption SDK ha utilizzato le chiavi di dati di testo normale per crittografare i dati, le elimina dalla memoria appena possibile. Quindi, archivia le chiavi di dati con i dati crittografati nel messaggio crittografato restituito dalle operazioni di crittografia. Per informazioni dettagliate, consultare Come funziona AWS Encryption SDK.

Suggerimento

In AWS Encryption SDK, distinguiamo le chiavi dei dati dalle chiavi di crittografia dei dati. Molteplici suite di algoritmi supportate, tra cui la suite predefinita, utilizzano una funzione di derivazione della chiave che impedisce alla chiave dei dati di toccare i limiti crittografici. La funzione di derivazione della chiave richiede la chiave di dati come input e restituisce una chiave di crittografia dei dati effettivamente utilizzata per crittografare i dati. Per questo motivo, abbiamo spesso detto che i dati sono crittografati "in" una chiave dei dati anziché "da" una chiave di dati.

Ogni chiave di dati crittografata include metadati, incluso l'identificatore della chiave di wrapping che l'ha crittografata. Questi metadati facilitano l'identificazione di chiavi di wrapping valide AWS Encryption SDK durante la decrittografia.

Chiave di avvolgimento

Una chiave di wrapping è una chiave di crittografia a chiave AWS Encryption SDK utilizzata per crittografare la chiave dati che crittografa i dati. Ogni chiave di dati in testo semplice può essere crittografata con una o più chiavi di wrapping. Sei tu a determinare quali chiavi di wrapping vengono utilizzate per proteggere i tuoi dati quando configuri un portachiavi o un fornitore di chiavi master.

Nota

La chiave di avvolgimento si riferisce alle chiavi di un portachiavi o di un fornitore di chiavi principali. La chiave master è in genere associata alla MasterKey classe di cui si crea un'istanza quando si utilizza un provider di chiavi master.

AWS Encryption SDKSupporta diverse chiavi di wrapping di uso comune, come AWS Key Management Service (AWS KMS) simmetriche (incluse le chiavi KMS multiregione), chiavi AES-GCM AWS KMS keys(Advanced Encryption Standard/Galois Counter Mode) non elaborate e chiavi RSA non elaborate. Puoi anche estendere o implementare le tue chiavi di wrapping.

Quando si utilizza la crittografia a busta, è necessario proteggere le chiavi di wrapping da accessi non autorizzati. È possibile eseguire questa operazione in uno dei seguenti modi:

Se non disponi di un sistema di gestione delle chiavi, ti consigliamo AWS KMS. AWS Encryption SDKSi integra con AWS KMS per aiutarti a proteggere e utilizzare le tue chiavi di imballaggio. Tuttavia, AWS Encryption SDK non richiede alcun AWS AWS servizio.

Portachiavi e fornitori di chiavi principali

Per specificare le chiavi di wrapping utilizzate per la crittografia e la decrittografia, si utilizza un portachiavi (C, C# /.NET e JavaScript) o un provider di chiavi master (Java, Python, CLI). È possibile utilizzare i portachiavi e i provider di chiavi master che fornisce o progettare implementazioni personalizzate. AWS Encryption SDK AWS Encryption SDKFornisce portachiavi e fornitori di chiavi principali compatibili tra loro soggetti a vincoli linguistici. Per informazioni dettagliate, consultare Compatibilità dei keyring.

Un keyring genera, crittografa e decritta le chiavi di dati. Quando definisci un portachiavi, puoi specificare le chiavi di avvolgimento che crittografano le tue chiavi dati. La maggior parte dei portachiavi specifica almeno una chiave di avvolgimento o un servizio che fornisce e protegge le chiavi di avvolgimento. È inoltre possibile definire un portachiavi senza chiavi avvolgenti o un portachiavi più complesso con opzioni di configurazione aggiuntive. Per informazioni sulla scelta e sull'utilizzo dei portachiavi che definisce, consultaAWS Encryption SDK. Utilizzo dei keyring I portachiavi sono supportati in C, C# /.NET e nella versione JavaScript 3. x di. SDK di crittografia AWS per Java

Un fornitore di chiavi principali è un'alternativa a un portachiavi. Il provider di chiavi master restituisce le chiavi di wrapping (o chiavi master) specificate. Ogni chiave master è associata a un provider di chiavi master, ma un provider di chiavi master in genere fornisce più chiavi master. I provider di chiavi principali sono supportati in Java, Python e nella AWS CLI di crittografia.

È necessario specificare un portachiavi (o un provider di chiavi principali) per la crittografia. È possibile specificare lo stesso portachiavi (o fornitore di chiavi principali) o uno diverso per la decrittografia. Durante la crittografia, AWS Encryption SDK utilizza tutte le chiavi di wrapping specificate per crittografare la chiave dati. Durante la decrittografia, AWS Encryption SDK utilizza solo le chiavi di wrapping specificate per decrittografare una chiave dati crittografata. Specificare le chiavi di wrapping per la decrittografia è facoltativo, ma è una procedura consigliata. AWS Encryption SDK

Per informazioni dettagliate sulla specificazione delle chiavi di wrapping, consulta. Selezione dei tasti di avvolgimento

Contesto di crittografia

Per migliorare la sicurezza delle operazioni di crittografia, includi un contesto di crittografia in tutte le richieste di crittografia dei dati. L'utilizzo di un contesto di crittografia è facoltativo, ma viene consigliato come best practice.

Un contesto di crittografia è un set di coppie nome-valore che contiene dati autenticati aggiuntivi arbitrari e non segreti. Il contesto di crittografia può contenere qualsiasi tipo di dati scelto, ma in genere consiste in dati utili in registrazioni e monitoraggi, ad esempio i dati relativi al tipo di file, allo scopo o al proprietario. Durante la crittografia dei dati, il contesto di crittografia viene vincolato a livello crittografico ai dati crittografati, per cui dovrai utilizzare lo stesso contesto per decrittarli. L'AWS Encryption SDK include il contesto di crittografia in testo normale nell'intestazione del messaggio crittografato restituito.

Il contesto di crittografia AWS Encryption SDK utilizzato è costituito dal contesto di crittografia specificato e da una coppia di chiavi pubblica aggiunta dal gestore dei materiali crittografici (CMM). Nello specifico, ogni volta che utilizzi un algoritmo di crittografia con firma, il CMM aggiunge una coppia nome-valore al contesto di crittografia, costituita da un nome riservato, aws-crypto-public-key e un valore che rappresenta la chiave di verifica pubblica. Il nome aws-crypto-public-key nel contesto di crittografia è riservato dall'AWS Encryption SDK e non può essere utilizzato come nome di qualsiasi altra coppia nello stesso contesto. Per informazioni dettagliate, consulta AAD in Riferimenti a formati di messaggi.

Il contesto di crittografia nell'esempio seguente include due coppie del contesto specificato nella richiesta e una coppia di chiavi pubblica aggiunta dal CMM.

"Purpose"="Test", "Department"="IT", aws-crypto-public-key=<public key>

Per decrittografare i dati, è necessario passare il messaggio crittografato. Poiché l'AWS Encryption SDK può estrarre il contesto di crittografia dall'intestazione del messaggio crittografato, non devi fornirlo separatamente. Tuttavia, grazie al contesto di crittografia puoi verificare di stare decrittando il messaggio corretto.

  • Nell'interfaccia a riga di comando (CLI) dell'AWS Encryption SDK, se fornisci un contesto di crittografia in un comando di decrittazione, la CLI verifica che i valori siano presenti nel contesto del messaggio crittografato prima di restituire i dati di testo normale.

  • In altre implementazioni del linguaggio di programmazione, la risposta di decrittografia include il contesto di crittografia e i dati in chiaro. La funzione di decrittazione nell'applicazione deve sempre verificare che il contesto di crittografia nella risposta di decrittazione includa il contesto della relativa richiesta (o in un sottoinsieme) prima di restituire i dati di testo normale.

Nota

Con la versione 4. x di AWS Encryption SDK per .NET e versione 3. x di SDK di crittografia AWS per Java, è possibile richiedere un contesto di crittografia in tutte le richieste di crittografia con il contesto di crittografia richiesto CMM.

Quando scegli un contesto di crittografia, ricordati che non è segreto. Il contesto di crittografia viene visualizzato in testo semplice nell'intestazione del messaggio crittografato restituito. AWS Encryption SDK Se stai usando AWS Key Management Service, il contesto di crittografia può comparire in testo non crittografato nei record e nei log di controllo, ad esempio AWS CloudTrail.

Per esempi di invio e verifica di un contesto di crittografia nel codice, consulta gli esempi relativi al linguaggio di programmazione preferito.

Messaggio crittografato

Quando si crittografano i dati con AWS Encryption SDK, viene restituito un messaggio crittografato.

Un messaggio crittografato è una struttura di dati formattata portatile che include i dati crittografati insieme a copie crittografate delle chiavi dati, l'ID dell'algoritmo e, facoltativamente, un contesto di crittografia e una firma digitale. Le operazioni di crittografia in AWS Encryption SDK restituiscono un messaggio crittografato, mentre le operazioni di decrittazione richiedono un messaggio crittografato come input.

Abbinando i dati crittografati e le relative chiavi di dati crittografati è possibile semplificare l'operazione di decrittografia e ti consente di evitare di archiviare e gestire chiavi di dati crittografate in modo indipendente rispetto ai dati che crittografano.

Per informazioni tecniche sui messaggi crittografati, vedi Formato dei messaggi crittografati.

Suite di algoritmi

AWS Encryption SDKUtilizza una suite di algoritmi per crittografare e firmare i dati contenuti nel messaggio crittografato restituito dalle operazioni di crittografia e decrittografia. AWS Encryption SDK supporta diverse suite di algoritmi. Tutte le suite supportate utilizzano Advanced Encryption Standard (AES) come algoritmo primario e lo combinano con altri algoritmi e valori.

AWS Encryption SDK stabilisce una suite di algoritmi consigliata come predefinita per tutte le operazioni di crittografia. L'impostazione predefinita potrebbe cambiare con il migliorare di standard e best practice. È possibile specificare una suite di algoritmi alternativa nelle richieste di crittografia dei dati o durante la creazione di un gestore di materiali crittografici (CMM), ma a meno che non sia richiesta un'alternativa per la propria situazione, è preferibile utilizzare quella predefinita. L'impostazione predefinita attuale è AES-GCM con una funzione di derivazione delle extract-and-expand chiavi (HKDF) basata su HMAC, key commitment, una firma Elliptic Curve Digital Signature Algorithm (ECDSA) e una chiave di crittografia a 256 bit.

Se la tua applicazione richiede prestazioni elevate e gli utenti che crittografano i dati e quelli che decifrano i dati sono altrettanto affidabili, potresti prendere in considerazione la possibilità di specificare una suite di algoritmi senza firma digitale. Tuttavia, consigliamo vivamente una suite di algoritmi che includa l'impegno delle chiavi e una funzione di derivazione delle chiavi. Le suite di algoritmi senza queste funzionalità sono supportate solo per la compatibilità con le versioni precedenti.

Responsabile di materiali crittografici

Il gestore dei materiali crittografici (CMM) assembla i materiali crittografici utilizzati per crittografare e decrittografare i dati. I materiali di crittografia includono chiavi di dati crittografati e testo non crittografato e una chiave facoltativa di firma dei messaggi. Non interagisci mai direttamente con la CMM. I metodi di crittografia e decrittazione lo gestiscono per te.

È possibile utilizzare la CMM predefinita o la CMM di memorizzazione nella cache AWS Encryption SDK fornita oppure scrivere una CMM personalizzata. E puoi specificare una CMM, ma non è obbligatoria. Quando specificate un portachiavi o un fornitore di chiavi principali, AWS Encryption SDK crea automaticamente una CMM predefinita. La CMM predefinita ottiene i materiali di crittografia o decrittografia dal portachiavi o dal provider di chiavi master specificato. Ciò potrebbe comportare una chiamata a un servizio crittografico, come AWS Key Management Service (AWS KMS).

Poiché la CMM funge da collegamento tra il AWS Encryption SDK e un portachiavi (o fornitore di chiavi principali), è il punto ideale per la personalizzazione e l'estensione, ad esempio il supporto per l'applicazione delle policy e la memorizzazione nella cache. AWS Encryption SDK fornisce un CMM di caching per supportare il caching della chiave di dati.

Crittografia simmetrica e asimmetrica

La crittografia simmetrica utilizza la stessa chiave per crittografare e decrittografare i dati.

La crittografia asimmetrica utilizza una coppia di chiavi di dati matematicamente correlate. Una chiave della coppia crittografa i dati; solo l'altra chiave della coppia può decrittografare i dati. Per i dettagli, consulta Algoritmi crittografici nella Guida ai servizi e agli strumenti di AWScrittografia.

AWS Encryption SDKUtilizza la crittografia a busta. Crittografa i dati con una chiave dati simmetrica. Crittografa la chiave dati simmetrica con una o più chiavi di avvolgimento simmetriche o asimmetriche. Restituisce un messaggio crittografato che include i dati crittografati e almeno una copia crittografata della chiave dati.

Crittografia dei dati (crittografia simmetrica)

Per crittografare i dati, AWS Encryption SDK utilizza una chiave dati simmetrica e una suite di algoritmi che include un algoritmo di crittografia simmetrica. Per decrittografare i dati, AWS Encryption SDK utilizza la stessa chiave dati e la stessa suite di algoritmi.

Crittografia della chiave dati (crittografia simmetrica o asimmetrica)

Il portachiavi o il fornitore di chiavi master fornito per un'operazione di crittografia e decrittografia determina il modo in cui la chiave dati simmetrica viene crittografata e decrittografata. Puoi scegliere un portachiavi o un provider di chiavi master che utilizza la crittografia simmetrica, ad esempio un portachiavi, o uno che utilizza la crittografia asimmetrica, come un AWS KMS portachiavi RSA non elaborato o. JceMasterKey

Impegno chiave

AWS Encryption SDKSupporta key commitment (a volte nota come robustezza), una proprietà di sicurezza che garantisce che ogni testo cifrato possa essere decrittografato solo in un singolo testo in chiaro. A tale scopo, key commitment garantisce che solo la chiave dati che ha crittografato il messaggio verrà utilizzata per decrittografarlo. La crittografia e la decrittografia con impegno chiave è una best practice. AWS Encryption SDK

La maggior parte dei cifrari simmetrici moderni (incluso AES) crittografa un testo in chiaro con un'unica chiave segreta, ad esempio la chiave dati univoca utilizzata per crittografare ogni messaggio di testo in chiaro. AWS Encryption SDK La decrittografia di questi dati con la stessa chiave di dati restituisce un testo in chiaro identico all'originale. La decrittografia con una chiave diversa di solito fallisce. Tuttavia, è possibile decrittografare un testo cifrato con due chiavi diverse. In rari casi, è possibile trovare una chiave in grado di decrittografare alcuni byte di testo cifrato in un testo semplice diverso, ma comunque comprensibile.

AWS Encryption SDKCrittografa sempre ogni messaggio di testo in chiaro con un'unica chiave di dati. Potrebbe crittografare quella chiave dati con più chiavi di wrapping (o chiavi master), ma le chiavi di wrapping crittografano sempre la stessa chiave dati. Tuttavia, un messaggio crittografato sofisticato creato manualmente potrebbe effettivamente contenere diverse chiavi di dati, ognuna crittografata da una chiave di wrapping diversa. Ad esempio, se un utente decrittografa il messaggio crittografato, restituisce 0x0 (falso) mentre un altro utente che decrittografa lo stesso messaggio crittografato ottiene 0x1 (vero).

Per evitare questo scenario, supporta l'impegno chiave durante la crittografia e la decrittografiaAWS Encryption SDK. Quando AWS Encryption SDK crittografa un messaggio con impegno chiave, associa crittograficamente la chiave di dati univoca che ha prodotto il testo cifrato alla stringa di impegno chiave, un identificatore di chiave di dati non segreto. Quindi memorizza la stringa di impegno chiave nei metadati del messaggio crittografato. Quando decripta un messaggio con impegno chiave, AWS Encryption SDK verifica che la chiave dati sia l'unica chiave per quel messaggio crittografato. Se la verifica della chiave dati non riesce, l'operazione di decrittografia ha esito negativo.

Il supporto per Key Commitment è stato introdotto nella versione 1.7. x, che può decrittografare i messaggi con un impegno chiave, ma non lo farà con un impegno chiave. È possibile utilizzare questa versione per implementare completamente la capacità di decrittografare il testo cifrato con impegno chiave. Versione 2.0. x include il supporto completo per Key Commitment. Per impostazione predefinita, crittografa e decrittografa solo con l'impegno della chiave. Questa è una configurazione ideale per le applicazioni che non necessitano di decrittografare il testo cifrato crittografato dalle versioni precedenti di. AWS Encryption SDK

Sebbene la crittografia e la decrittografia con impegno chiave siano una best practice, lasciamo che sia tu a decidere quando utilizzarla e a regolare il ritmo con cui adottarla. A partire dalla versione 1.7. x, AWS Encryption SDK supporta una politica di impegno che imposta la suite di algoritmi predefinita e limita le suite di algoritmi che possono essere utilizzate. Questa politica determina se i dati vengono crittografati e decrittografati con un impegno chiave.

Key Commitment si traduce in un messaggio crittografato leggermente più grande (+ 30 byte) e richiede più tempo per l'elaborazione. Se l'applicazione è molto sensibile alle dimensioni o alle prestazioni, è possibile scegliere di disattivare l'impegno chiave. Ma fatelo solo se necessario.

Per ulteriori informazioni sulla migrazione alle versioni 1.7. x e 2.0. x, incluse le loro principali funzionalità di impegno, vediMigrazione della tuaAWS Encryption SDK. Per informazioni tecniche su Key Commitment, vedere AWS Encryption SDK riferimento agli algoritmi eAWS Encryption SDK riferimento al formato del messaggio.

Politica di impegno

Una policy di impegno è un'impostazione di configurazione che determina se l'applicazione esegue la crittografia e la decrittografia con un impegno chiave. La crittografia e la decrittografia con impegno chiave è una best practice. AWS Encryption SDK

La politica di impegno ha tre valori.

Nota

Potrebbe essere necessario scorrere orizzontalmente o verticalmente per visualizzare l'intera tabella.

Impegno, politica, valori
Valore Crittografa con impegno chiave Crittografa senza impegno chiave Decripta con impegno chiave Decripta senza impegno chiave
ForbidEncryptAllowDecrypt
RequireEncryptAllowDecrypt
RequireEncryptRequireDecrypt

L'impostazione della politica di impegno è stata introdotta nella AWS Encryption SDK versione 1.7. x. È valido in tutti i linguaggi di programmazione supportati.

  • ForbidEncryptAllowDecryptdecrittografa con o senza impegno chiave, ma non crittografa con impegno chiave. Questo è l'unico valore valido per la politica di impegno nella versione 1.7. x e viene utilizzato per tutte le operazioni di crittografia e decrittografia. È progettato per preparare tutti gli host che eseguono l'applicazione alla decrittografia con impegno chiave prima che incontrino un testo cifrato crittografato con impegno chiave.

  • RequireEncryptAllowDecryptcrittografa sempre con impegno chiave. Può decriptare con o senza impegno chiave. Questo valore, introdotto nella versione 2.0. x, consente di iniziare a crittografare con l'impegno delle chiavi, ma di decrittografare comunque i testi cifrati precedenti senza l'impegno di chiave.

  • RequireEncryptRequireDecryptcrittografa e decrittografa solo con un impegno chiave. Questo valore è l'impostazione predefinita per la versione 2.0. x. Usa questo valore quando sei certo che tutti i tuoi testi cifrati siano crittografati con l'impegno della chiave.

L'impostazione della politica di impegno determina quali suite di algoritmi è possibile utilizzare. A partire dalla versione 1.7. x, AWS Encryption SDK supporta suite di algoritmi per l'impegno chiave, con e senza firma. Se specificate una suite di algoritmi che è in conflitto con la vostra politica di impegno, AWS Encryption SDK restituisce un errore.

Per informazioni sull'impostazione della politica di impegno, consultaImpostazione della politica di impegno.

Firme digitali

Per garantire l'integrità di un messaggio digitale durante lo spostamento tra i sistemi, è possibile applicare una firma digitale al messaggio. Le firme digitali sono sempre asimmetriche. La chiave privata viene utilizzata per creare la firma e aggiungerla al messaggio originale. Il destinatario utilizza una chiave pubblica per verificare che il messaggio non sia stato modificato dopo la firma.

AWS Encryption SDKCrittografa i dati utilizzando un algoritmo di crittografia autenticato, AES-GCM, e il processo di decrittografia verifica l'integrità e l'autenticità di un messaggio crittografato senza utilizzare una firma digitale. Tuttavia, poiché AES-GCM utilizza chiavi simmetriche, chiunque sia in grado di decrittografare la chiave dati utilizzata per decrittografare il testo cifrato potrebbe anche creare manualmente un nuovo testo cifrato crittografato, causando potenziali problemi di sicurezza. Ad esempio, se si utilizza una AWS KMS chiave come chiave di avvolgimento, ciò significa che è possibile per un utente con autorizzazioni KMS Decrypt creare testi cifrati crittografati senza chiamare KMS Encrypt.

Per evitare questo problema, AWS Encryption SDK supporta l'aggiunta di una firma Elliptic Curve Digital Signature Algorithm (ECDSA) alla fine dei messaggi crittografati. Quando viene utilizzata una suite di algoritmi di firma, AWS Encryption SDK genera una chiave privata temporanea e una coppia di chiavi pubbliche per ogni messaggio crittografato. AWS Encryption SDKMemorizza la chiave pubblica nel contesto di crittografia della chiave dati e scarta la chiave privata, e nessuno può creare un'altra firma che verifichi con la chiave pubblica. Poiché l'algoritmo associa la chiave pubblica alla chiave dati crittografata come dati autenticati aggiuntivi nell'intestazione del messaggio, un utente che può solo decrittografare i messaggi non può alterare la chiave pubblica.

La verifica della firma comporta un notevole costo in termini di prestazioni per la decrittografia. Se gli utenti che crittografano i dati e gli utenti che decifrano i dati sono altrettanto affidabili, prendi in considerazione l'utilizzo di una suite di algoritmi che non includa la firma.