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á.
RSAChaveiros Raw
O RSA chaveiro Raw executa criptografia e descriptografia assimétricas de chaves de dados na memória local com as chaves RSA públicas e privadas fornecidas por você. Você precisa gerar, armazenar e proteger a chave privada, preferencialmente em um módulo de segurança de hardware (HSM) ou sistema de gerenciamento de chaves. A função de criptografia criptografa a chave de dados sob a chave RSA pública. A função de descriptografia descriptografa a chave de dados usando a chave privada. Você pode selecionar entre os vários modos de RSA preenchimento.
Um RSA chaveiro bruto que criptografa e descriptografa deve incluir um par assimétrico de chave pública e chave privada. No entanto, você pode criptografar dados com um RSA chaveiro bruto que tenha apenas uma chave pública e descriptografar dados com um RSA chaveiro bruto que tenha apenas uma chave privada. Você pode incluir qualquer RSA chaveiro Raw em um chaveiro múltiplo. Se você configurar um RSA chaveiro Raw com uma chave pública e privada, certifique-se de que eles façam parte do mesmo par de chaves. Algumas implementações de linguagem do não AWS Encryption SDK construirão um RSA chaveiro Raw com chaves de pares diferentes. Outras pessoas confiam em você para verificar se suas chaves são do mesmo par de chaves.
O RSA chaveiro Raw é equivalente e interopera com o JceMasterKeyin the AWS Encryption SDK for Java e o RawMasterKeyin the AWS Encryption SDK for Python quando são usados com chaves de criptografia RSA assimétricas. 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.
O RSA chaveiro Raw não suporta teclas assimétricasKMS. Se você quiser usar RSA KMS chaves assimétricas, versão 4. x do AWS Encryption SDK formulário. NETe a versão 3. x dos AWS KMS chaveiros de AWS Encryption SDK for Java
suporte que usam criptografia simétrica (SYMMETRIC_DEFAULT
) ou assimétrica. RSA AWS KMS keys
Se você criptografar dados com um RSA chaveiro Raw que inclua a chave pública de uma RSA KMS chave, nem o AWS Encryption SDK nem AWS KMS poderá decifrá-la. Você não pode exportar a chave privada de uma chave AWS KMS assimétrica para um KMS chaveiro RawRSA. A operação de AWS KMS descriptografia não pode descriptografar a mensagem criptografada retornada. AWS Encryption SDK
Ao criar um RSA chaveiro Raw no AWS Encryption SDK for C, certifique-se de fornecer o conteúdo do PEM arquivo que inclui cada chave como uma string C terminada em nulo, não como um caminho ou nome de arquivo. Ao criar um RSA chaveiro Raw JavaScript, esteja ciente da possível incompatibilidade com outras implementações de linguagem.
Namespaces e nomes
Para identificar o material RSA chave em um chaveiro, o RSA 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 o namespace e o nome da chave que identificam o par de chaves (ou sua RSA chave privada) no seu HSM sistema ou no sistema de gerenciamento de chaves.
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 reserva o valor do namespace da aws-kms
chave para KMS as chaves. Não o use em um AES chaveiro Raw ou em um RSA chaveiro Raw com o. AWS Encryption SDK for C
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 descriptografia 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 descriptografia não será usado, mesmo que as chaves sejam do mesmo par de chaves.
O namespace da chave e o nome da chave do material da chave nos chaveiros de criptografia e decodificação devem ser os mesmos, independentemente de o chaveiro conter a chave RSA pública, a chave RSA privada ou ambas as chaves no par de chaves. Por exemplo, suponha que você criptografe dados com um RSA chaveiro bruto para uma chave RSA pública com namespace HSM_01
e nome de chave. RSA_2048_06
Para descriptografar esses dados, construa um RSA chaveiro Raw com a chave privada (ou par de chaves) e o mesmo namespace e nome de chave.
Modo de preenchimento
Você deve especificar um modo de preenchimento para RSA chaveiros Raw usados para criptografia e descriptografia, ou usar recursos de sua implementação de linguagem que o especifiquem para você.
O AWS Encryption SDK suporta os seguintes modos de preenchimento, sujeitos às restrições de cada idioma. Recomendamos um modo OAEPde preenchimento, especialmente OAEP com SHA -256 e MGF1 com SHA -256 Padding. O modo PKCS1de preenchimento é suportado somente para compatibilidade com versões anteriores.
-
OAEPcom SHA -1 e MGF1 com SHA -1 Padding
-
OAEPcom SHA -256 e MGF1 com SHA -256 Padding
-
OAEPcom SHA -384 e MGF1 com SHA preenchimento -384
-
OAEPcom SHA -512 e MGF1 com SHA -512 Padding
-
PKCS1Acolchoamento v1.5
Os exemplos a seguir mostram como criar um RSA chaveiro Raw com a chave pública e privada de um par de RSA chaves e o modo de preenchimento OAEP com SHA -256 e MGF1 SHA -256. As variáveis RSAPublicKey
e RSAPrivateKey
representam o material principal fornecido por você.
- C
-
Para criar um RSA chaveiro Raw no AWS Encryption SDK for C, useaws_cryptosdk_raw_rsa_keyring_new
.
Ao criar um RSA chaveiro Raw no AWS Encryption SDK for C, certifique-se de fornecer o conteúdo do PEM arquivo que inclui cada chave como uma string C terminada em nulo, não como um caminho ou nome de arquivo. Para obter um exemplo completo, consulte raw_rsa_keyring.c.
struct aws_allocator *alloc = aws_default_allocator();
AWS_STATIC_STRING_FROM_LITERAL(key_namespace, "HSM_01");
AWS_STATIC_STRING_FROM_LITERAL(key_name, "RSA_2048_06
");
struct aws_cryptosdk_keyring *rawRsaKeyring = aws_cryptosdk_raw_rsa_keyring_new(
alloc,
key_namespace,
key_name,
private_key_from_pem,
public_key_from_pem,
AWS_CRYPTOSDK_RSA_OAEP_SHA256_MGF1);
- C# / .NET
-
Para instanciar um RSA chaveiro Raw no formulário. AWS Encryption SDK NET, use o materialProviders.CreateRawRsaKeyring()
método. Para ver um exemplo completo, consulte R awRSAKeyring 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 = "RSA_2048_06
";
// Get public and private keys from PEM files
var publicKey = new MemoryStream(System.IO.File.ReadAllBytes("RSAKeyringExamplePublicKey.pem"));
var privateKey = new MemoryStream(System.IO.File.ReadAllBytes("RSAKeyringExamplePrivateKey.pem"));
// Create the keyring input
var createRawRsaKeyringInput = new CreateRawRsaKeyringInput
{
KeyNamespace = keyNamespace,
KeyName = keyName,
PaddingScheme = PaddingScheme.OAEP_SHA512_MGF1,
PublicKey = publicKey,
PrivateKey = privateKey
};
// Create the keyring
var rawRsaKeyring = materialProviders.CreateRawRsaKeyring(createRawRsaKeyringInput);
- JavaScript Browser
-
O AWS Encryption SDK para JavaScript no navegador obtém suas primitivas criptográficas da WebCryptobiblioteca. Antes de construir o chaveiro, você deve usar importPublicKey()
e/ou importar importPrivateKey()
a matéria-prima da chave para o WebCrypto backend. Isso garante que o chaveiro esteja completo, mesmo que todas as chamadas sejam WebCrypto assíncronas. O objeto usado pelos métodos de importação inclui o algoritmo de encapsulamento e seu modo de preenchimento.
Depois de importar o material da chave, use o método RawRsaKeyringWebCrypto()
para instanciar o token de autenticação. Ao criar um RSA chaveiro Raw JavaScript, esteja ciente da possível incompatibilidade com outras implementações de linguagem.
O exemplo a seguir usa a buildClient
função para especificar a política de compromisso padrão,REQUIRE_ENCRYPT_REQUIRE_DECRYPT
. Você também pode usar o buildClient
para limitar o número de chaves de dados criptografadas em uma mensagem criptografada. Para obter mais informações, consulte Limitar as chaves de dados criptografadas.
Para ver um exemplo completo, consulte rsa_simple.ts (Browser). JavaScript
import {
RsaImportableKey,
RawRsaKeyringWebCrypto,
buildClient,
CommitmentPolicy,
} from '@aws-crypto/client-browser'
const { encrypt, decrypt } = buildClient(
CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT
)
const privateKey = await RawRsaKeyringWebCrypto.importPrivateKey(
privateRsaJwKKey
)
const publicKey = await RawRsaKeyringWebCrypto.importPublicKey(
publicRsaJwKKey
)
const keyNamespace = 'HSM_01
'
const keyName = 'RSA_2048_06
'
const keyring = new RawRsaKeyringWebCrypto({
keyName,
keyNamespace,
publicKey,
privateKey,
})
- JavaScript Node.js
-
Para instanciar um RSA chaveiro Raw no AWS Encryption SDK para JavaScript Node.js, crie uma nova instância da classe. RawRsaKeyringNode
O parâmetro wrapKey
contém a chave pública. O parâmetro unwrapKey
contém a chave privada. O construtor RawRsaKeyringNode
calcula um modo de preenchimento padrão, embora você possa especificar um modo de preenchimento preferencial.
Ao criar um RSA chaveiro bruto JavaScript, esteja ciente da possível incompatibilidade com outras implementações de linguagem.
O exemplo a seguir usa a buildClient
função para especificar a política de compromisso padrão,REQUIRE_ENCRYPT_REQUIRE_DECRYPT
. Você também pode usar o buildClient
para limitar o número de chaves de dados criptografadas em uma mensagem criptografada. Para obter mais informações, consulte Limitar as chaves de dados criptografadas.
Para ver um exemplo completo, consulte rsa_simple.ts (Node.js). JavaScript
import {
RawRsaKeyringNode,
buildClient,
CommitmentPolicy,
} from '@aws-crypto/client-node'
const { encrypt, decrypt } = buildClient(
CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT
)
const keyNamespace = 'HSM_01
'
const keyName = 'RSA_2048_06
'
const keyring = new RawRsaKeyringNode({ keyName, keyNamespace, rsaPublicKey, rsaPrivateKey})
- Java
-
final CreateRawRsaKeyringInput keyringInput = CreateRawRsaKeyringInput.builder()
.keyName("RSA_2048_06
")
.keyNamespace("HSM_01
")
.paddingScheme(PaddingScheme.OAEP_SHA256_MGF1
)
.publicKey(RSAPublicKey
)
.privateKey(RSAPrivateKey
)
.build();
final MaterialProviders matProv = MaterialProviders.builder()
.MaterialProvidersConfig(MaterialProvidersConfig.builder().build())
.build();
IKeyring rawRsaKeyring = matProv.CreateRawRsaKeyring(keyringInput);
- Python
-
O exemplo a seguir instancia o AWS Encryption SDK cliente com a política de compromisso padrão,. REQUIRE_ENCRYPT_REQUIRE_DECRYPT
Para ver um exemplo completo, consulte raw_rsa_keyring_example.py no AWS Encryption SDK for Python repositório em GitHub.
# Define the key namespace and key name
key_name_space = "HSM_01
"
key_name = "RSA_2048_06
"
# Instantiate the material providers
mat_prov: AwsCryptographicMaterialProviders = AwsCryptographicMaterialProviders(
config=MaterialProvidersConfig()
)
# Create Raw RSA keyring
keyring_input: CreateRawRsaKeyringInput = CreateRawRsaKeyringInput(
key_namespace=key_name_space,
key_name=key_name,
padding_scheme=PaddingScheme.OAEP_SHA256_MGF1
,
public_key=RSAPublicKey
,
private_key=RSAPrivateKey
)
raw_rsa_keyring: IKeyring = mat_prov.create_raw_rsa_keyring(
input=keyring_input
)