Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
AESLlaveros sin procesar
AWS Encryption SDK Permite utilizar una clave AES simétrica que se proporciona como clave de empaquetado que protege la clave de datos. Debe generar, almacenar y proteger el material clave, preferiblemente en un módulo de seguridad de hardware (HSM) o en un sistema de administración de claves. Utilice un conjunto de AES claves RAW cuando necesite proporcionar la clave de empaquetado y cifre las claves de datos de forma local o fuera de línea.
El AES anillo de claves Raw cifra los datos mediante el GCM algoritmo AES - y una clave de ajuste que se especifica como matriz de bytes. Puede especificar solo una clave de empaquetado en cada conjunto de AES claves RAW, pero puede incluir varios AES llaveros RAW, solos o con otros, en un conjunto de claves múltiples.
El AES anillo de claves Raw es equivalente e interactúa con la JceMasterKeyclase del SDK de cifrado de AWS para Java y la clase del SDK de cifrado de AWS para Python cuando se utiliza RawMasterKeycon una clave de cifrado. AES Puede cifrar los datos con una implementación y descifrarlos con cualquier otra implementación mediante la misma clave de encapsulamiento. Para obtener más información, consulte Compatibilidad de conjuntos de claves.
Nombres y espacios de nombres clave
Para identificar la AES clave de un conjunto de claves, el anillo de claves Raw AES utiliza un espacio de nombres y un nombre de clave que usted proporciona. Estos valores no son secretos. Aparecen en texto no cifrado en el encabezado del mensaje cifrado que devuelve la operación de cifrado. Se recomienda utilizar un espacio de nombres clave para su HSM sistema de administración de claves y un nombre de clave que identifique la clave en ese sistema. AES
El espacio de nombres y el nombre de clave son equivalentes a los campos ID de proveedor (o proveedor) e ID de clave en JceMasterKey
y RawMasterKey
.
El SDK de cifrado de AWS para C y para. AWS Encryption SDK NETreserve el valor del espacio de nombres aws-kms
clave para KMS las claves. No utilice este valor de espacio de nombres en un conjunto de AES claves Raw o Raw RSA con estas bibliotecas.
Si crea diferentes conjuntos de claves para cifrar y descifrar un mensaje determinado, el espacio de nombres y los valores de los nombres son fundamentales. Si el espacio de nombres y el nombre de la clave del conjunto de claves de descifrado no coinciden exactamente y distinguen mayúsculas de minúsculas entre el espacio de nombres de la clave y el nombre de la clave del conjunto de claves de cifrado, no se utiliza el conjunto de claves de descifrado, incluso si los bytes del material de la clave son idénticos.
Por ejemplo, puede definir un conjunto de AES claves Raw con el espacio de nombres y el nombre de la clave. HSM_01
AES_256_012
A continuación, utilice ese conjunto de claves para cifrar algunos datos. Para descifrar esos datos, cree un AES anillo de claves sin procesar con el mismo espacio de nombres, nombre y material clave.
Los siguientes ejemplos muestran cómo crear un anillo de claves RAW. AES La AESWrappingKey
variable representa el material clave que proporciona.
- C
-
Para crear una instancia de un AES llavero Raw en el, utilice. SDK de cifrado de AWS para Caws_cryptosdk_raw_aes_keyring_new()
Para ver un ejemplo completo, consulte 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
-
Para crear un AES llavero Raw en forma de. AWS Encryption SDK NET, utilice el materialProviders.CreateRawAesKeyring()
método. Para ver un ejemplo completo, consulte R awAESKeyring Example.cs.
En el siguiente ejemplo se utiliza la versión 4. x del AWS Encryption SDK formulario. 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
-
El SDK de cifrado de AWS para JavaScript del navegador obtiene sus primitivas criptográficas de. WebCryptoAPI Antes de construir el llavero, debe utilizarlo RawAesKeyringWebCrypto.importCryptoKey()
para importar el material clave sin procesar al backend. WebCrypto Esto garantiza que el conjunto de claves esté completo aunque todas las llamadas sean asíncronas. WebCrypto
A continuación, para crear una instancia de un conjunto de claves Raw, utilice el método. AES RawAesKeyringWebCrypto()
Debe especificar el algoritmo de AES empaquetado («paquete de empaquetado») en función de la longitud del material clave. Para ver un ejemplo completo, consulte aes_simple.ts (Browser). JavaScript
En el siguiente ejemplo, se utiliza la buildClient función para especificar la política de compromiso predeterminada,. REQUIRE_ENCRYPT_REQUIRE_DECRYPT
También puede utilizarla buildClient
para limitar el número de claves de datos cifradas en un mensaje cifrado. Para obtener más información, consulte Limitar las claves de datos cifrados.
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
-
Para crear una instancia de un conjunto de AES claves sin procesar en el SDK de cifrado de AWS para JavaScript archivo Node.js, cree una instancia de la clase. RawAesKeyringNode
Debe especificar el algoritmo de AES empaquetado («paquete de empaquetado») en función de la longitud del material clave. Para ver un ejemplo completo, consulte aes_simple.ts (Node.js). JavaScript
En el siguiente ejemplo, se utiliza la buildClient función para especificar la política de compromiso predeterminada,. REQUIRE_ENCRYPT_REQUIRE_DECRYPT
También puede utilizarla buildClient
para limitar el número de claves de datos cifradas en un mensaje cifrado. Para obtener más información, consulte Limitar las claves de datos cifrados.
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
-
Para crear una instancia de un conjunto de AES claves Raw en el SDK de cifrado de AWS para Java, utilice. matProv.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
-
En el siguiente ejemplo, se crea una instancia del AWS Encryption SDK cliente con la política de compromiso predeterminada,. REQUIRE_ENCRYPT_REQUIRE_DECRYPT
Para ver un ejemplo completo, consulte raw_aes_keyring_example.py en el SDK de cifrado de AWS para Python repositorio de. 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
)