Domande frequenti - 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à.

Domande frequenti

In che modo il AWS Encryption SDK è diverso dagli SDK AWS?

LaAWSSDKfornire librerie per l'interazione con Amazon Web Services (AWS), inclusoAWS Key Management Service(AWS KMS). Alcune delle implementazioni linguistiche delAWS Encryption SDK, come ad esempio ilAWS Encryption SDKper .NET, richiede sempre ilAWSSDK nello stesso linguaggio di programmazione. Le implementazioni di altre lingue richiedono il corrispondenteAWSSDK solo quando si utilizzaAWS KMSchiavi nei tuoi portachiavi o master key provider. Per ulteriori informazioni, consulta l'argomento relativo al tuo linguaggio di programmazione inLinguaggi di programmazione AWS Encryption SDK.

Puoi utilizzare il pluginAWSSDK con cui interagireAWS KMS, inclusa la crittografia e la decrittografia di piccole quantità di dati (fino a 4.096 byte con una chiave di crittografia simmetrica) e la generazione di chiavi dati per la crittografia lato client. Tuttavia, quando si genera una chiave dati, è necessario gestire l'intero processo di crittografia e decrittografia, inclusa la crittografia dei dati con la chiave dati esterna aAWS KMS, scartando in modo sicuro la chiave dati in testo chiaro, memorizzando la chiave dati crittografata e quindi decrittografando la chiave dati e decrittografando i tuoi dati. LaAWS Encryption SDKgestisce questo processo per te.

LaAWS Encryption SDKfornisce una libreria che crittografa e decrittazione dei dati utilizzando standard e best practice del settore. Genera la chiave dati, la crittografa sotto le chiavi di wrapping specificate e restituisce unmessaggio crittografatoun oggetto di dati portatile che include i dati crittografati e le chiavi di dati crittografate necessarie per decrittare. Quando è il momento di decrittografare, si passa il messaggio crittografato e almeno una delle chiavi di wrapping (facoltative) eAWS Encryption SDKrestituisce i dati di testo normale.

È possibile utilizzareAWS KMS keyscome avvolgimento di chiavi nelAWS Encryption SDKma non è obbligatorio. È possibile utilizzare le chiavi di crittografia generate e quelle dal gestore di chiavi o dal modulo di sicurezza hardware locale. Puoi utilizzare il pluginAWS Encryption SDKanche se non disponi di unAWSconto.

Com'èAWS Encryption SDKdiverso dal client di crittografia Amazon S3?

LaClient di crittografia Amazon S3nellaAWSGli SDK di forniscono crittografia e decrittografia per i dati archiviati in Amazon Simple Storage Service (Amazon S3). Questi client sono strettamente accoppiati per Amazon S3 e sono destinati a essere utilizzati solo con i dati ivi memorizzati.

Il AWS Encryption SDK fornisce la crittografia e la decrittazione per i dati che puoi memorizzare in qualsiasi luogo. LaAWS Encryption SDKe il client di crittografia Amazon S3 non sono compatibili perché producono testi cifrati con diversi formati di dati.

Quali algoritmi di crittografia sono supportati dal AWS Encryption SDK e qual è l'impostazione predefinita?

LaAWS Encryption SDKutilizza l'algoritmo simmetrico Advanced Encryption Standard (AES) in Galois/Counter Mode (GCM), noto come AES-GCM, per crittografare i dati. Consente di scegliere tra diversi algoritmi simmetrici e asimmetrici per crittografare le chiavi dati che crittografano i dati.

Per AES-GCM, la suite di algoritmi predefinita è AES-GCM con una chiave a 256 bit, derivazione della chiave (HKDF),firme digitali, eimpegno chiave.AWS Encryption SDKsupporta inoltre chiavi di crittografia a 192 bit e 128 bit e algoritmi di crittografia senza firme digitali e impegno chiave.

In tutti i casi, la lunghezza del vettore di inizializzazione (IV) è pari a 12 byte; la lunghezza del tag di autenticazione è pari a 16 byte. Per impostazione predefinita, il kit SDK utilizza la chiave di dati come input per l'HMAC extract-and-expand funzione di derivazione della chiave (HKDF) per ottenere la chiave di crittografia AES-GCM e inoltre aggiungere una firma ECDSA (Elliptic Curve Digital Signature Algorithm).

Per ulteriori informazioni sulla scelta degli algoritmi da utilizzare, consulta Suite di algoritmi supportate.

Per dettagli relativi all'implementazione degli algoritmi supportati, consulta Riferimenti agli algoritmi.

In che modo viene generato il vettore di inizializzazione (IV) e dove viene memorizzato?

LaAWS Encryption SDKutilizza un metodo deterministico per creare un valore IV diverso per ciascun frame. Questa procedura garantisce che le IVs non vengano mai ripetute all'interno di un messaggio. (Prima della versione 1.3.0 delSDK di crittografia AWS per Javae laSDK di crittografia AWS per Python, ilAWS Encryption SDKgenerava casualmente un valore IV univoco per ciascun frame.)

Il IV è memorizzato nel messaggio crittografatoAWS Encryption SDKrestituisce. Per ulteriori informazioni, consultare la Riferimenti a formati di messaggi AWS Encryption SDK.

Come viene generata, crittografata e decrittografata ciascuna chiave di dati?

Il metodo dipende dal keyring o dal fornitore di chiavi master utilizzate.

LaAWS KMSportachiavi e master key provider nelAWS Encryption SDKusa il linkAWS KMS GenerateDataKeyOperazione API per generare ogni chiave dati e crittografarla sotto la sua chiave di wrapping. Per crittografare le copie della chiave dati con chiavi KMS aggiuntive, utilizzano ilAWS KMS Encryptoperazione. Per decrittografare le chiavi dati, utilizzano ilAWS KMS Decryptoperazione. Per informazioni dettagliate, consulta .AWS KMSKeyringnellaAWS Encryption SDKSpecifiche in GitHub.

Altri portachiavi generano la chiave dati, crittografano e decifrano utilizzando metodi di best practice per ciascun linguaggio di programmazione. Per ulteriori informazioni, vedere le specifiche del portachiavi o del fornitore di chiavi master nellaSezione del frameworkdelAWS Encryption SDKSpecifiche in GitHub.

Come posso tenere traccia dei dati delle chiavi utilizzati per crittografare i miei dati?

AWS Encryption SDK lo fa per te Quando crittografi i dati, il kit SDK crittografa la chiave dei dati e archivia la chiave crittografata con i dati crittografati nel messaggio crittografato che restituisce. Quando esegui la decrittazione dei dati, il AWS Encryption SDK estrae la chiave di dati crittografata dal messaggio crittografato, la decritta, quindi la utilizza per decrittare i dati.

In che modo AWS Encryption SDK memorizza le chiavi di dati crittografati con i dati crittografati?

Le operazioni di crittografia in AWS Encryption SDK restituiscono un messaggio crittografato, una struttura di dati singola che contiene i dati crittografati e le chiavi dei dati crittografati. Il formato del messaggio è costituito da almeno due parti: un'intestazione e un corpo. L'intestazione del messaggio contiene le chiavi di dati crittografati e le informazioni su come è formato il corpo del messaggio. Il corpo del messaggio contiene i dati crittografati. Se la suite di algoritmi include unfirma digitaleil formato del messaggio include unapiè di paginacontiene la firma. Per ulteriori informazioni, consulta la pagina Riferimenti a formati di messaggi AWS Encryption SDK .

Quale sovraccarico aggiunge il formato di messaggi del AWS Encryption SDK ai miei dati crittografati?

La quantità di sovraccarico aggiunta dal AWS Encryption SDK dipende da diversi fattori, tra cui:

  • La dimensione dei dati di testo non crittografato

  • Quale degli algoritmi supportati viene utilizzato

  • Se vengono forniti dati autenticati aggiuntivi (AAD) e la lunghezza di tale AAD

  • Il numero e tipo di chiavi di wrapping o chiavi master

  • Le dimensioni del frame (quando vengono utilizzati i dati framed)

Quando utilizzi il fileAWS Encryption SDKcon la sua configurazione predefinita (unaAWS KMS keyIn quanto chiave di wrapping (o chiave master), nessun AAD, dati non framed e algoritmi di crittografia con firma), il sovraccarico è di circa 600 byte. In generale, puoi ragionevolmente presumere che il AWS Encryption SDK aggiunga un sovraccarico di 1 KB al massimo, senza includere gli AAD forniti. Per ulteriori informazioni, consulta la pagina Riferimenti a formati di messaggi AWS Encryption SDK .

È possibile usare il proprio provider di chiavi master?

Sì. I dettagli di implementazione variano a seconda di quale dei linguaggi di programmazione supportati utilizzi. Tuttavia, tutte le lingue supportate consentono di definire personalizzatigestori di materiali crittografici (CMM), master key provider, portachiavi, chiavi master e chiavi di avvolgimento.

È possibile crittografare i dati in più di una chiave di wrapping?

Sì. È possibile crittografare la chiave di dati con le aggiuntive chiavi di wrapping (o chiavi master) per aggiungere ridondanza quando la chiave è in un'altra regione o non è disponibile per la decrittografia.

Per crittografare i dati in più chiavi di wrapping, crea un keyring o fornitore di chiavi master con più chiavi di wrapping. Quando utilizzi i keyring puoi creare un singolo keyring con più chiavi di wrapping o un keyring multiplo.

Quando si crittografano i dati con più chiavi di wrapping,AWS Encryption SDKutilizza un tasto wrapping per generare una chiave dati in testo normale. La chiave dati è unica e matematicamente estranea alla chiave di avvolgimento. L'operazione restituisce la chiave di dati di testo normale e una copia della chiave di dati crittografata dalla chiave di wrapping. Quindi, il metodo di crittografia, crittografa la chiave di dati con le altre chiavi di wrapping. Il risultatomessaggio crittografatoinclude i dati crittografati e una chiave di dati crittografati per ciascuna chiave di wrapping.

Il messaggio crittografato può essere decrittografato utilizzando una qualsiasi delle chiavi di wrapping utilizzate nell'operazione di crittografia. LaAWS Encryption SDKutilizza una chiave di wrapping per decodificare una chiave di dati crittografati. Quindi, utilizza la chiave di dati di testo normale per decrittare i dati.

Quali tipi di dati è possibile crittografare con il AWS Encryption SDK?

La maggior parte delle implementazioni del linguaggio di programmazioneAWS Encryption SDKpuò crittografare byte non elaborati (array di byte), flussi I/O (flussi di byte) e stringhe. LaAWS Encryption SDKper .NET non supporta flussi I/O. Forniamo il codice di esempio per ciascuno dei linguaggi di programmazione supportati.

In che modo il AWS Encryption SDK crittografa e decritta i flussi di input/output (I/O)?

AWS Encryption SDK crea un flusso di crittografia o decrittazione che racchiude un flusso di I/O sottostante. Il flusso di crittografia e decrittografia esegue un'operazione di crittografia su una chiamata di lettura o di scrittura. Ad esempio, può leggere dati di testo non crittografati nel flusso sottostante e crittografarlo prima di restituire il risultato. In alternativa, può leggere testo cifrato da un flusso sottostante e decifrarlo prima di restituire il risultato. Forniamo il codice di esempio per crittografare e decrittografare flussi per ciascuno deilinguaggi di programmazione supportatiche supporta lo streaming.

LaAWS Encryption SDKper .NET non supporta flussi I/O.