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à.
Le migliori pratiche per AWS Encryption SDK
AWS Encryption SDK È progettato per semplificare la protezione dei dati utilizzando gli standard e le migliori pratiche del settore. Sebbene molte best practice siano selezionate automaticamente nei valori predefiniti, alcune pratiche sono opzionali ma consigliate ogniqualvolta ciò sia possibile.
- Usa la versione più recente
-
Quando inizi a usare AWS Encryption SDK, usa l'ultima versione disponibile nel tuo linguaggio di programmazione preferito. Se hai utilizzato il AWS Encryption SDK, esegui l'aggiornamento a ciascuna versione più recente il prima possibile. Questo ti assicura di utilizzare la configurazione consigliata e di sfruttare le nuove proprietà di sicurezza per proteggere i tuoi dati. Per informazioni dettagliate sulle versioni supportate, incluse le linee guida per la migrazione e l'implementazione, consulta Support e manutenzione e. Versioni di AWS Encryption SDK
Se una nuova versione rende obsoleti gli elementi del codice, sostituiscili il prima possibile. Gli avvisi di deprecazione e i commenti al codice in genere consigliano una buona alternativa.
Per rendere gli aggiornamenti significativi più semplici e meno soggetti a errori, occasionalmente forniamo una versione temporanea o transitoria. Utilizzate queste versioni e la relativa documentazione per assicurarvi di poter aggiornare l'applicazione senza interrompere il flusso di produzione.
- Usa valori predefiniti
-
The AWS Encryption SDK progetta le migliori pratiche nei suoi valori predefiniti. Quando possibile, usali. Nei casi in cui l'impostazione predefinita non è pratica, forniamo alternative, come suite di algoritmi senza firma. Offriamo anche opportunità di personalizzazione agli utenti esperti, ad esempio portachiavi personalizzati, fornitori di chiavi master e gestori di materiali crittografici (CMM). Utilizzate queste alternative avanzate con cautela e fate verificare le vostre scelte da un tecnico della sicurezza quando possibile.
- Usa un contesto di crittografia
-
Per migliorare la sicurezza delle operazioni crittografiche, includi un contesto di crittografia con un valore significativo 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 fornisce dati autenticati (AAD) aggiuntivi per la crittografia autenticata in. AWS Encryption SDK Sebbene non sia segreto, il contesto di crittografia può aiutarti a proteggere l'integrità e l'autenticità
dei tuoi dati crittografati. In AWS Encryption SDK, si specifica un contesto di crittografia solo durante la crittografia. Durante la decrittografia, AWS Encryption SDK utilizza il contesto di crittografia nell'intestazione del messaggio crittografato restituito. AWS Encryption SDK Prima che l'applicazione restituisca dati in chiaro, verificate che il contesto di crittografia utilizzato per crittografare il messaggio sia incluso nel contesto di crittografia utilizzato per decrittografare il messaggio. Per informazioni dettagliate, consultate gli esempi nel vostro linguaggio di programmazione.
Quando utilizzate l'interfaccia a riga di comando, AWS Encryption SDK verifica automaticamente il contesto di crittografia.
Contesto di crittografia richiesto con la Material Providers Library
A partire dalle versioni di AWS Encryption SDK che integrano la AWS Cryptographic Material Providers Library
(MPL) (ad esempio, la versione 3). x e versioni successive della versione SDK di crittografia AWS per Java 4. x e versioni successive di SDK di crittografia AWS per Python), è possibile configurare un contesto di crittografia obbligatorio (CMM) che contrassegni le chiavi del contesto di crittografia selezionate come obbligatorie. Le chiavi di contesto di crittografia richieste e i relativi valori sono ancora associati al testo cifrato come dati autenticati aggiuntivi (AAD), ma le chiavi non vengono memorizzate nell'intestazione del messaggio crittografato. Il chiamante deve fornire le stesse chiavi e gli stessi valori di contesto di crittografia richiesti durante la decrittografia; in caso contrario, la decrittografia non riesce. Ciò riduce le dimensioni del testo cifrato per il contesto di crittografia che il chiamante possiede già, preservando al contempo le proprietà di autenticazione e integrità del contesto di crittografia. Cross-version e compatibilità tra più lingue
I messaggi che includono l'intero contesto di crittografia nell'intestazione (prodotti da AWS Encryption SDK versioni che non configurano un contesto di crittografia richiesto (CMM) possono essere decrittografati da qualsiasi AWS Encryption SDK versione compatibile, comprese le versioni precedenti all'integrazione MPL. I messaggi prodotti con un contesto di crittografia richiesto (CMM) possono essere decrittografati solo dalle AWS Encryption SDK versioni che integrano l'MPL e il chiamante deve fornire le chiavi e i valori del contesto di crittografia richiesti al momento della decrittografia. Per ulteriori informazioni sulle versioni linguistiche che integrano l'MPL, vedere. AWS Encryption SDK linguaggi di programmazione Per dettagli sulla compatibilità tra versioni, vedere. Versioni di AWS Encryption SDK
- Proteggi le tue chiavi di imballaggio
-
AWS Encryption SDK Genera una chiave dati univoca per crittografare ogni messaggio in chiaro. Quindi crittografa la chiave di dati con le chiavi di wrapping fornite dall'utente. Se le chiavi di wrapping vengono perse o eliminate, i dati crittografati sono irrecuperabili. Se le tue chiavi non sono protette, i tuoi dati potrebbero essere vulnerabili.
Usa chiavi di wrapping protette da un'infrastruttura di chiavi sicura, come AWS Key Management Service (AWS KMS). Quando utilizzi chiavi AES o RSA non elaborate, utilizza una fonte di casualità e di archiviazione durevole che soddisfi i tuoi requisiti di sicurezza. Generare e archiviare chiavi di wrapping in un modulo di sicurezza hardware (HSM) o in un servizio che fornisce HSM, ad esempio, è una procedura AWS CloudHSM consigliata.
Utilizza i meccanismi di autorizzazione della tua infrastruttura chiave per limitare l'accesso alle tue chiavi di wrapping solo agli utenti che ne hanno bisogno. Implementa i principi delle migliori pratiche, come il privilegio minimo. Quando lo usi AWS KMS keys, utilizza politiche chiave e politiche IAM che implementano i principi delle migliori pratiche.
- Specifica le tue chiavi di wrapping
-
È sempre consigliabile specificare esplicitamente le chiavi di wrapping durante la decrittografia e la crittografia. Quando lo fai, AWS Encryption SDK utilizza solo le chiavi specificate. Questa pratica garantisce che vengano utilizzate solo le chiavi di crittografia desiderate. Per quanto riguarda il AWS KMS wrapping delle chiavi, migliora anche le prestazioni impedendo di utilizzare inavvertitamente chiavi in una regione o in un'altra regione Account AWS o di tentare di decrittografare con chiavi che non si è autorizzati a utilizzare.
Durante la crittografia, i portachiavi e i fornitori di chiavi master richiesti dai fornitori richiedono di specificare le AWS Encryption SDK chiavi di wrapping. Utilizzano tutte e solo le chiavi di wrapping specificate dall'utente. È inoltre necessario specificare le chiavi di wrapping durante la crittografia e la decrittografia con portachiavi AES non elaborati, portachiavi RSA non elaborati e. JCEMasterKeys
Tuttavia, quando si esegue la decrittografia con AWS KMS portachiavi e provider di chiavi master, non è necessario specificare le chiavi di wrapping. AWS Encryption SDK È possibile ottenere l'identificatore della chiave dai metadati della chiave di dati crittografata. Tuttavia, specificare le chiavi di wrapping è una best practice che consigliamo.
Per supportare questa best practice quando si lavora con il AWS KMS wrapping delle chiavi, consigliamo quanto segue:
-
Utilizzate AWS KMS portachiavi che specificano la disposizione delle chiavi. Durante la crittografia e la decrittografia, questi portachiavi utilizzano solo le chiavi di wrapping specificate dall'utente.
-
Quando si utilizzano chiavi AWS KMS master e provider di chiavi master, utilizzate i costruttori in modalità rigorosa introdotti nella versione 1.7. x di. AWS Encryption SDK Creano provider che crittografano e decrittografano solo con le chiavi di wrapping specificate dall'utente. I costruttori per i provider di chiavi master che decifrano sempre con qualsiasi chiave di wrapping sono obsoleti nella versione 1.7. x ed eliminato nella versione 2.0. x.
Quando non è pratico specificare le chiavi di AWS KMS wrapping per la decrittografia, è possibile utilizzare i discovery provider. I portachiavi AWS Encryption SDK in C e support discovery. JavaScript AWS KMS I provider di chiavi master con modalità di rilevamento sono disponibili per Java e Python nelle versioni 1.7. x e versioni successive. Questi provider di rilevamento, utilizzati solo per la decrittografia con chiavi di AWS KMS wrapping, indicano esplicitamente di utilizzare qualsiasi chiave di wrapping che AWS Encryption SDK crittografa una chiave di dati.
Se devi utilizzare un discovery provider, utilizza le sue funzionalità di filtro di scoperta per limitare le chiavi di wrapping utilizzate. Ad esempio, il keyring AWS KMS regionale Discovery utilizza solo le chiavi di raggruppamento in una determinata area. Regione AWSÈ inoltre possibile configurare i AWS KMS portachiavi e i fornitori di chiavi AWS KMS master in modo che utilizzino solo le chiavi di raggruppamento in particolare. Account AWS Inoltre, come sempre, utilizzate le policy chiave e le policy IAM per controllare l'accesso alle vostre chiavi di AWS KMS wrapping.
-
- Usa le firme digitali
-
È consigliabile utilizzare una suite di algoritmi con firma. Le firme digitali verificano che il mittente del messaggio è stato autorizzato a inviare il messaggio e ne proteggono l'integrità. Tutte le versioni AWS Encryption SDK utilizzano suite di algoritmi con firma predefinita.
Se i requisiti di sicurezza non includono le firme digitali, puoi selezionare una suite di algoritmi senza firme digitali. Tuttavia, ti consigliamo di utilizzare le firme digitali, soprattutto quando un gruppo di utenti crittografa i dati e un altro set di utenti li decrittografa.
- Usa l'impegno chiave
-
È consigliabile utilizzare la funzionalità di sicurezza Key Commitment. Verificando l'identità della chiave di dati univoca che ha crittografato i dati, key commitment impedisce di decrittografare qualsiasi testo cifrato che potrebbe generare più di un messaggio di testo in chiaro.
AWS Encryption SDK Fornisce il supporto completo per la crittografia e la decrittografia con key commit a partire dalla versione 2.0. x. Per impostazione predefinita, tutti i messaggi sono crittografati e decrittografati con key commit. Versione 1.7. x di AWS Encryption SDK può decifrare testi cifrati con key commit. È progettato per aiutare gli utenti delle versioni precedenti a implementare la versione 2.0. x con successo.
Il supporto per l'impegno delle chiavi include nuove suite di algoritmi e un nuovo formato di messaggio che produce un testo cifrato più grande di soli 30 byte rispetto a un testo cifrato senza l'impegno della chiave. Il design riduce al minimo l'impatto sulle prestazioni in modo che la maggior parte degli utenti possa godere dei vantaggi di Key Commitment. Se l'applicazione è molto sensibile alle dimensioni e alle prestazioni, è possibile decidere di utilizzare l'impostazione dei criteri di impegno per disabilitare l'impegno delle chiavi o consentire la decrittografia dei messaggi senza impegno, ma solo se AWS Encryption SDK necessario.
- Limita il numero di chiavi di dati crittografate
È consigliabile limitare il numero di chiavi di dati crittografate nei messaggi da decrittografare, in particolare i messaggi provenienti da fonti non attendibili. La decrittografia di un messaggio con numerose chiavi di dati crittografate che non è possibile decifrare può causare ritardi prolungati, aumentare le spese, limitare l'applicazione e gli altri utenti che condividono l'account e potenzialmente esaurire l'infrastruttura delle chiavi. Senza limiti, un messaggio crittografato può contenere fino a 65.535 (2^16 - 1) chiavi dati crittografate. Per informazioni dettagliate, vedi Limitazione delle chiavi di dati crittografate.
Per ulteriori informazioni sulle funzionalità di AWS Encryption SDK sicurezza alla base di queste best practice, consulta Crittografia migliorata sul lato client: impegno esplicito KeyIds e fondamentale nel blog sulla sicurezza.