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à.
AESPortachiavi grezzi
Ti AWS Encryption SDK consente di utilizzare una chiave AES simmetrica fornita come chiave di avvolgimento per proteggere la tua chiave dati. È necessario generare, archiviare e proteggere il materiale chiave, preferibilmente in un modulo di sicurezza hardware (HSM) o in un sistema di gestione delle chiavi. Usa un AES portachiavi Raw quando devi fornire la chiave di wrapping e crittografare le chiavi dati localmente o offline.
Il AES portachiavi Raw crittografa i dati utilizzando l'GCMalgoritmo AES - e una chiave di wrapping specificata come array di byte. Puoi specificare solo una chiave di avvolgimento in ogni portachiavi Raw, ma puoi includere più AES portachiavi Raw, da soli o con altri AES portachiavi, in un portachiavi multiplo.
Il AES portachiavi Raw è equivalente e interagisce con la JceMasterKeyclasse in e la classe in the SDK di crittografia AWS per Python quando viene SDK di crittografia AWS per Java utilizzato con una chiave di crittografia. RawMasterKeyAES È possibile crittografare e decrittare i dati con implementazioni diverse, ma utilizzando la stessa chiave di wrapping. Per informazioni dettagliate, consultare Compatibilità dei keyring.
Namespace e nomi chiave
Per identificare la AES chiave in un portachiavi, il AES portachiavi Raw utilizza uno spazio dei nomi e un nome chiave forniti dall'utente. Questi valori non sono segreti. Vengono visualizzati in testo semplice nell'intestazione del messaggio crittografato restituito dall'operazione di crittografia. Si consiglia di utilizzare uno spazio dei nomi delle chiavi nel sistema di gestione delle chiavi e un nome di chiave che identifichi la AES chiave in quel sistema. HSM
Lo spazio dei nomi e il nome della chiave sono equivalenti ai campi Provider ID (o Provider) e Key ID presenti nel e. JceMasterKey
RawMasterKey
Il SDK di crittografia AWS per C e per. AWS Encryption SDK NETriserva il valore dello spazio dei nomi della aws-kms
chiave per le KMS chiavi. Non utilizzate questo valore dello spazio dei nomi in un portachiavi Raw o in un AES portachiavi Raw con queste librerie. RSA
Se si creano portachiavi diversi per crittografare e decrittografare un determinato messaggio, lo spazio dei nomi e i valori dei nomi sono fondamentali. Se lo spazio dei nomi della chiave e il nome della chiave nel portachiavi di decrittografia non corrispondono esattamente, con distinzione tra maiuscole e minuscole, per lo spazio dei nomi della chiave e il nome della chiave nel portachiavi di crittografia, il portachiavi di decrittografia non viene utilizzato, anche se i byte del materiale della chiave sono identici.
Ad esempio, è possibile definire un portachiavi Raw con lo spazio dei nomi e il nome della chiave. AES HSM_01
AES_256_012
Quindi, usi quel portachiavi per crittografare alcuni dati. Per decrittografare quei dati, crea un portachiavi Raw con lo stesso spazio dei nomi delle AES chiavi, nome chiave e materiale chiave.
I seguenti esempi mostrano come creare un portachiavi Raw. AES La AESWrappingKey
variabile rappresenta il materiale chiave fornito.
- C
-
Per istanziare un AES portachiavi Raw in, usa. SDK di crittografia AWS per Caws_cryptosdk_raw_aes_keyring_new()
Per un esempio completo, vedi raw_aes_keyring.c.
struct aws_allocator *alloc = aws_default_allocator();
AWS_STATIC_STRING_FROM_LITERAL(wrapping_key_namespace, "HSM_01");
AWS_STATIC_STRING_FROM_LITERAL(wrapping_key_name, "AES_256_012");
struct aws_cryptosdk_keyring *raw_aes_keyring = aws_cryptosdk_raw_aes_keyring_new(
alloc, wrapping_key_namespace, wrapping_key_name, aes_wrapping_key
, wrapping_key_len);
- C# / .NET
-
Per creare AES un AWS Encryption SDK portachiavi Raw in for. NET, usa il materialProviders.CreateRawAesKeyring()
metodo. Per un esempio completo, vedere R awAESKeyring Example.cs.
L'esempio seguente utilizza la versione 4. x del AWS Encryption SDK modulo. NET.
// Instantiate the AWS Encryption SDK and material providers
var esdk = new ESDK(new AwsEncryptionSdkConfig());
var mpl = new MaterialProviders(new MaterialProvidersConfig());
var keyNamespace = "HSM_01";
var keyName = "AES_256_012";
// This example uses the key generator in Bouncy Castle to generate the key material.
// In production, use key material from a secure source.
var aesWrappingKey = new MemoryStream(GeneratorUtilities.GetKeyGenerator("AES256").GenerateKey());
// Create the keyring that determines how your data keys are protected.
var createKeyringInput = new CreateRawAesKeyringInput
{
KeyNamespace = keyNamespace,
KeyName = keyName,
WrappingKey = aesWrappingKey
,
WrappingAlg = AesWrappingAlg.ALG_AES256_GCM_IV12_TAG16
};
var keyring = materialProviders.CreateRawAesKeyring(createKeyringInput);
- JavaScript Browser
-
The SDK di crittografia AWS per JavaScript in the browser ottiene le sue primitive crittografiche da. WebCryptoAPI Prima di costruire il portachiavi, è necessario RawAesKeyringWebCrypto.importCryptoKey()
importare il materiale grezzo della chiave nel backend. WebCrypto Ciò garantisce che il portachiavi sia completo anche se tutte le chiamate a sono asincrone. WebCrypto
Quindi, per creare un'istanza di un portachiavi Raw, usa il metodo. AES RawAesKeyringWebCrypto()
È necessario specificare l'algoritmo di AES wrapping («wrapping suite») in base alla lunghezza del materiale chiave. Per un esempio completo, vedete aes_simple.ts (Browser). JavaScript
L'esempio seguente utilizza la buildClient funzione per specificare la politica di impegno predefinita,. REQUIRE_ENCRYPT_REQUIRE_DECRYPT
È inoltre possibile utilizzare il buildClient
per limitare il numero di chiavi di dati crittografate in un messaggio crittografato. Per ulteriori informazioni, consulta Limitazione delle chiavi di dati crittografate.
import {
RawAesWrappingSuiteIdentifier,
RawAesKeyringWebCrypto,
synchronousRandomValues,
buildClient,
CommitmentPolicy,
} from '@aws-crypto/client-browser'
const { encrypt, decrypt } = buildClient(
CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT
)
const keyNamespace = 'HSM_01
'
const keyName = 'AES_256_012
'
const wrappingSuite =
RawAesWrappingSuiteIdentifier.AES256_GCM_IV12_TAG16_NO_PADDING
/* Import the plaintext AES key into the WebCrypto backend. */
const aesWrappingKey = await RawAesKeyringWebCrypto.importCryptoKey(
rawAesKey,
wrappingSuite
)
const rawAesKeyring = new RawAesKeyringWebCrypto({
keyName,
keyNamespace,
wrappingSuite,
aesWrappingKey
})
- JavaScript Node.js
-
Per creare un'istanza di un AES portachiavi Raw in SDK di crittografia AWS per JavaScript for Node.js, create un'istanza della classe. RawAesKeyringNode
È necessario specificare l'algoritmo di AES wrapping («wrapping suite») in base alla lunghezza del materiale chiave. Per un esempio completo, vedete aes_simple.ts (Node.js). JavaScript
L'esempio seguente utilizza la buildClient funzione per specificare la politica di impegno predefinita,. REQUIRE_ENCRYPT_REQUIRE_DECRYPT
È inoltre possibile utilizzare il buildClient
per limitare il numero di chiavi di dati crittografate in un messaggio crittografato. Per ulteriori informazioni, consulta Limitazione delle chiavi di dati crittografate.
import {
RawAesKeyringNode,
buildClient,
CommitmentPolicy,
RawAesWrappingSuiteIdentifier,
} from '@aws-crypto/client-node'
const { encrypt, decrypt } = buildClient(
CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT
)
const keyName = 'AES_256_012
'
const keyNamespace = 'HSM_01
'
const wrappingSuite =
RawAesWrappingSuiteIdentifier.AES256_GCM_IV12_TAG16_NO_PADDING
const rawAesKeyring = new RawAesKeyringNode({
keyName,
keyNamespace,
aesWrappingKey
,
wrappingSuite,
})
- Java
-
Per creare un'istanza di un AES portachiavi Raw in, usa. SDK di crittografia AWS per JavamatProv.CreateRawAesKeyring()
final CreateRawAesKeyringInput keyringInput = CreateRawAesKeyringInput.builder()
.keyName("AES_256_012
")
.keyNamespace("HSM_01
")
.wrappingKey(AESWrappingKey
)
.wrappingAlg(AesWrappingAlg.ALG_AES256_GCM_IV12_TAG16)
.build();
final MaterialProviders matProv = MaterialProviders.builder()
.MaterialProvidersConfig(MaterialProvidersConfig.builder().build())
.build();
IKeyring rawAesKeyring = matProv.CreateRawAesKeyring(keyringInput);
- Python
-
L'esempio seguente crea un'istanza del AWS Encryption SDK client con la politica di impegno predefinita,. REQUIRE_ENCRYPT_REQUIRE_DECRYPT
Per un esempio completo, vedere raw_aes_keyring_example.py nel SDK di crittografia AWS per Python repository in. GitHub
# Instantiate the AWS Encryption SDK client
client = aws_encryption_sdk.EncryptionSDKClient(
commitment_policy=CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT
)
# Define the key namespace and key name
key_name_space = "HSM_01
"
key_name = "AES_256_012
"
# Optional: Create an encryption context
encryption_context: Dict[str, str] = {
"encryption": "context",
"is not": "secret",
"but adds": "useful metadata",
"that can help you": "be confident that",
"the data you are handling": "is what you think it is",
}
# Instantiate the material providers
mat_prov: AwsCryptographicMaterialProviders = AwsCryptographicMaterialProviders(
config=MaterialProvidersConfig()
)
# Create Raw AES keyring
keyring_input: CreateRawAesKeyringInput = CreateRawAesKeyringInput(
key_namespace=key_name_space,
key_name=key_name,
wrapping_key=AESWrappingKey
,
wrapping_alg=AesWrappingAlg.ALG_AES256_GCM_IV12_TAG16
)
raw_aes_keyring: IKeyring = mat_prov.create_raw_aes_keyring(
input=keyring_input
)