AESChaveiros Raw - AWS Encryption SDK

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

AESChaveiros Raw

O AWS Encryption SDK permite que você use uma chave AES simétrica que você fornece como uma chave de empacotamento que protege sua chave de dados. Você precisa gerar, armazenar e proteger o material da chave, preferencialmente em um módulo de segurança de hardware (HSM) ou sistema de gerenciamento de chaves. Use um AES chaveiro Raw quando precisar fornecer a chave de empacotamento e criptografar as chaves de dados local ou offline.

O AES chaveiro Raw criptografa os dados usando o GCM algoritmo AES - e uma chave de encapsulamento que você especifica como uma matriz de bytes. Você pode especificar somente uma chave de embalagem em cada chaveiro Raw, mas você pode incluir vários AES chaveiros Raw, sozinhos ou com outros AES chaveiros, em um chaveiro múltiplo.

O AES chaveiro Raw é equivalente e interopera com a JceMasterKeyclasse no AWS Encryption SDK for Java e com a RawMasterKeyclasse no AWS Encryption SDK for Python quando eles são usados com uma chave de AES criptografia. Você pode criptografar dados com uma implementação e descriptografá-los com qualquer outra implementação usando a mesma chave de encapsulamento. Para obter detalhes, consulte Compatibilidade dos tokens de autenticação.

Nomes e namespaces de chaves

Para identificar a AES chave em um chaveiro, o AES chaveiro Raw usa um namespace e um nome de chave fornecidos por você. Esses valores não são secretos. Eles aparecem em texto simples no cabeçalho da mensagem criptografada que a operação de criptografia retorna. Recomendamos usar um namespace de chave para seu HSM sistema de gerenciamento de chaves e um nome de chave que identifique a AES chave nesse sistema.

nota

O namespace da chave e o nome da chave são equivalentes aos campos ID do provedor (ou provedor) e ID da chave no JceMasterKey e no RawMasterKey.

O AWS Encryption SDK for C e AWS Encryption SDK para. NETreserve o valor do namespace aws-kms chave para KMS as chaves. Não use esse valor de namespace em um chaveiro Raw ou em um AES chaveiro Raw com essas RSA bibliotecas.

Se você cria tokens de autenticação diferentes para criptografar e descriptografar determinada mensagem, o namespace e os valores do nome são cruciais. Se o namespace e o nome da chave no token de autenticação de decodificação não corresponderem exatamente e com distinção entre maiúsculas e minúsculas ao namespace e ao nome da chave no token de autenticação de criptografia, o token de autenticação de decodificação não será usado, mesmo que os bytes do material da chave sejam idênticos.

Por exemplo, você pode definir um AES chaveiro Raw com namespace HSM_01 e nome de chave. AES_256_012 Em seguida, você usa esse token de autenticação para criptografar alguns dados. Para descriptografar esses dados, construa um AES chaveiro Raw com o mesmo namespace de chave, nome de chave e material de chave.

Os exemplos a seguir mostram como criar um AES chaveiro Raw. A variável AESWrappingKey representa o material principal que você fornece.

C

Para instanciar um AES chaveiro Raw no AWS Encryption SDK for C, use. aws_cryptosdk_raw_aes_keyring_new() Para obter um exemplo 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 criar um AES chaveiro Raw em AWS Encryption SDK para. NET, use o materialProviders.CreateRawAesKeyring() método. Para ver um exemplo completo, consulte R awAESKeyring Example.cs.

O exemplo a seguir usa a versão 4. x do AWS Encryption SDK formulário. 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

O AWS Encryption SDK para JavaScript no navegador obtém suas primitivas criptográficas do. WebCryptoAPI Antes de construir o chaveiro, você deve usá-lo RawAesKeyringWebCrypto.importCryptoKey() para importar o material bruto da chave para o WebCrypto backend. Isso garante que o chaveiro esteja completo, mesmo que todas as chamadas sejam WebCrypto assíncronas.

Em seguida, para instanciar um AES chaveiro Raw, use o método. RawAesKeyringWebCrypto() Você deve especificar o algoritmo de AES empacotamento (“pacote de empacotamento”) com base no comprimento do seu material chave. Para obter um exemplo completo, consulte aes_simple.ts (Browser). JavaScript

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 instanciar um AES chaveiro Raw no AWS Encryption SDK para JavaScript for Node.js, crie uma instância da classe. RawAesKeyringNode Você deve especificar o algoritmo de AES embalagem (“suíte de embalagem”) com base no comprimento do material chave. Para obter um exemplo completo, consulte aes_simple.ts (Node.js). JavaScript

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 instanciar um AES chaveiro Raw no AWS Encryption SDK for Java, use. 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);