Best practice per 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à.

Best practice per AWS Encryption SDK

LaAWS Encryption SDKè progettato per rendere ancora più semplice la protezione dei dati utilizzando best practice e standard di settore. Sebbene molte best practice siano selezionate per te nei valori predefiniti, alcune pratiche sono facoltative ma consigliate ogni volta che è pratico.

Usa la versione più recente

Quando avviiAWS Encryption SDK, usa l'ultima versione offerta nel tuo preferitoLinguaggio. Se hai utilizzato ilAWS Encryption SDK, esegui l'aggiornamento a ogni 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 i dettagli sulle versioni supportate, comprese le linee guida per la migrazione e la distribuzione, vedereSupport e manutenzioneeVersioni di AWS Encryption SDK.

Se una nuova versione depreca gli elementi nel tuo codice, sostituiscili il prima possibile. Gli avvisi di deprecazione e i commenti sul codice in genere consigliano una buona alternativa.

Per rendere gli aggiornamenti significativi più facili e meno soggetti a errori, di tanto in tanto forniamo una versione temporanea o di transizione. Usa queste release e la relativa documentazione di accompagnamento per assicurarti di poter aggiornare l'applicazione senza interrompere il flusso di lavoro di produzione.

Usa i valori predefiniti

LaAWS Encryption SDKprogetta le best practice nei suoi valori predefiniti. Quando possibile, usali. Per i casi in cui l'impostazione predefinita non è pratica, forniamo alternative, come suite di algoritmi senza firma. Offriamo anche opportunità di personalizzazione agli utenti avanzati, come portachiavi personalizzati, fornitori di chiavi master e gestori di materiali crittografici (CMM). Usa queste alternative avanzate con cautela e fai verificare le tue scelte da un tecnico della sicurezza ogni volta che è possibile.

Utilizzo di un contesto di crittografia

Per migliorare la sicurezza delle operazioni di crittografia, includiContesto di crittografia dicon 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 aggiuntivi autenticati (AAD) per la crittografia autenticataAWS Encryption SDK. Sebbene non sia un segreto, il contesto di crittografia può aiutartiproteggere l'integrità e l'autenticitàdei tuoi dati crittografati.

NellaAWS Encryption SDK, si specifica un contesto di crittografia solo durante la crittografia. Durante la decrittografia, ilAWS Encryption SDKutilizza il contesto di crittografia nell'intestazione del messaggio crittografatoAWS Encryption SDKrestituisce. Prima che l'applicazione restituisca i dati di testo normale, verifica che il contesto di crittografia utilizzato per crittografare il messaggio sia incluso nel contesto di crittografia utilizzato per decrittare il messaggio. Per ulteriori informazioni, consulta gli esempi nel tuo linguaggio di programmazione.

Quando utilizzi l'interfaccia a riga di comando,AWS Encryption SDKverifica il contesto di crittografia per te.

Proteggi i tuoi incarti

LaAWS Encryption SDKgenera una chiave di dati univoca per crittografare ogni messaggio di testo normale. Quindi crittografa la chiave dati con le chiavi di wrapping fornite. Se le chiavi di avvolgimento vengono perse o eliminate, i dati crittografati non sono recuperabili. Se le tue chiavi non sono protette, i tuoi dati potrebbero essere vulnerabili.

Utilizzare chiavi di wrapping protette da un'infrastruttura di chiavi sicura, ad esempioAWS Key Management Service(AWS KMS). Quando utilizzi chiavi AES o RSA raw, usa una fonte di casualità e storage durevole che soddisfa i tuoi requisiti di sicurezza. Generazione e archiviazione delle chiavi di wrapping in un modulo di sicurezza hardware (HSM) o in un servizio che fornisce HSM, ad esempioAWS CloudHSM, è una best practice.

Usa i meccanismi di autorizzazione della tua infrastruttura di chiavi per limitare l'accesso alle tue chiavi di wrapping solo agli utenti che lo richiedono. Implementare i principi delle best practice, come il privilegio minimo. Quando utilizziAWS KMS keys, utilizza le policy delle chiavi e le policy IAMPrincipi di best practice.

Specifica le tue chiavi di avvolgimento

È sempre una best practicespecifica le tue chiavi di avvolgimentoesplicitamente durante la decrittografia e la crittografia. Quando lo fai, ilAWS Encryption SDKusa solo le chiavi specificate. Questa pratica ti assicura di utilizzare solo le chiavi di crittografia che intendi. PerAWS KMSavvolgendo le chiavi, migliora anche le prestazioni impedendo di utilizzare inavvertitamente chiavi in un altroAccount AWSo Regione, o il tentativo di decrittografare con chiavi che non hai il permesso di utilizzare.

Durante la crittografia, i portachiavi e i fornitori di chiavi master cheAWS Encryption SDKi materiali di consumo richiedono di specificare le chiavi a capo. Usano tutte e solo le chiavi di avvolgimento specificate. È inoltre necessario specificare le chiavi di wrapping durante la crittografia e la decrittografia con portachiavi AES grezzi, portachiavi RSA grezzi e JCEMasterKeys.

Tuttavia, durante la decrittografia conAWS KMSportachiavi e fornitori di chiavi master, non è necessario specificare le chiavi di avvolgimento. LaAWS Encryption SDKpuò ottenere l'identificatore della chiave dai metadati della chiave di dati crittografata. Tuttavia, la specifica delle chiavi è una best practice che ti consigliamo.

Per supportare questa best practice quando si lavora conAWS KMSWrapping delle chiavi, ti consigliamo quanto segue:

  • UtilizzaAWS KMSportachiavi che specificano le chiavi di avvolgimento. Durante la crittografia e la decrittografia, questi portachiavi utilizzano solo le chiavi di wrapping specificate dall'utente.

  • Quando utilizziAWS KMSmaster keys e master key provider, utilizzano i costruttori in modalità rigorosa introdotti inversione 1.7.xdelAWS Encryption SDK. Creano provider che crittografano e decrittografano solo con le chiavi di wrapping specificate. I costruttori per i fornitori di chiavi master che decrittografano sempre con qualsiasi chiave di wrapping sono deprecati nella versione 1.7.xe cancellato nella versione 2.0.x.

Quando si specificaAWS KMSil wrapping delle chiavi per la decrittografia non è pratico, è possibile utilizzare i provider di scoperta. LaAWS Encryption SDKin C e JavaScript supportareAWS KMSKeyring. I fornitori di chiavi master con una modalità di rilevamento sono disponibili per Java e Python nelle versioni 1.7.xe versioni successive. Questi provider di rilevamento, che vengono utilizzati solo per la decrittografia conAWS KMSavvolgendo le chiavi, dirigere esplicitamente ilAWS Encryption SDKper utilizzare qualsiasi chiave di wrapping che crittografa una chiave dati.

Se è necessario utilizzare un provider di rilevamento, utilizzare il relativofiltrofunzionalità per limitare le chiavi di avvolgimento che utilizzano. Ad esempio, le ricetteAWS KMSKeyringusa solo le chiavi di avvolgimento in un particolareRegione AWS. Puoi inoltre configurareAWS KMSKeyringAWS KMS Provider di chiaviusare solo ilWrappingin particolareAccount AWS. Inoltre, come sempre, utilizza le policy delle chiavi e le policy IAM per controllare l'accessoAWS KMSchiavi di avvolgimento.

Usa le firme digitali

È consigliabile utilizzare una suite di algoritmi con la firma. Firme digitaliverificare che il mittente del messaggio sia stato autorizzato a inviare il messaggio e proteggere l'integrità del messaggio. Tutte le versioniAWS Encryption SDKusa suite di algoritmi con la firma per impostazione predefinita.

Se i tuoi requisiti di sicurezza non includono le firme digitali, puoi selezionare una suite di algoritmi senza firme digitali. Tuttavia, si consiglia di utilizzare le firme digitali, soprattutto quando un gruppo di utenti crittografa i dati e un gruppo diverso di utenti decrittografa tali dati.

Scadenza impegno

È consigliabile utilizzare la funzione di sicurezza dell'impegno chiave. Verificando l'identità dell'Chiaveche ha crittografato i tuoi dati,Scadenza impegnoimpedisce di decrittografare qualsiasi testo cifrato che potrebbe generare più di un messaggio in chiaro.

LaAWS Encryption SDKfornisce supporto completo per la crittografia e la decrittografia con impegno chiave a partire daversione 2.0.x. Per impostazione predefinita, tutti i tuoi messaggi sono crittografati e decrittografati con impegno chiave. Versione 1.7.xdelAWS Encryption SDKpuò decrittografare testi cifrati con impegno chiave. È progettato per aiutare gli utenti delle versioni precedenti a distribuire la versione 2.0.xcon successo.

Support per l'impegno chiave includenuove suite di algoritmie unnuovo formatoche produce un testo cifrato di soli 30 byte più grande di un testo cifrato senza impegno chiave. Il design riduce al minimo il suo impatto sulle prestazioni in modo che la maggior parte degli utenti possa godere dei vantaggi dell'impegno chiave. Se la tua applicazione è molto sensibile alle dimensioni e alle prestazioni, potresti decidere di utilizzare ilScadenza impegnoimpostazione per disabilitare l'impegno chiave o consentire ilAWS Encryption SDKper decrittografare i messaggi senza impegno, ma farlo solo se è necessario.

Limita il numero di chiavi di dati crittografati

È una best practice perlimitare il numero di chiavi di dati crittografatinei messaggi decrittografati, in particolare nei messaggi provenienti da fonti non attendibili. La decrittografia di un messaggio con numerose chiavi dati crittografate che non è possibile decrittografare può causare ritardi prolungati, aumentare le spese, limitare l'applicazione e altri che condividono il tuo account e potenzialmente esaurire l'infrastruttura delle chiavi. Senza limiti, un messaggio crittografato può avere fino a 65.535 (2^16 - 1) chiavi dati crittografate. Per dettagli, consulta Limitazione delle chiavi di dati crittografate.

Per ulteriori informazioni suAWS Encryption SDKle caratteristiche di sicurezza che sono alla base di queste best practice, consultaCrittografia lato client Esplic KeyIds Scadenza impegnonellaAWSBlog.