Conjunto de claves de RSA sin formato - AWS Cifrado de bases SDK

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.

Conjunto de claves de RSA sin formato

Se cambió el nombre de nuestra biblioteca de cifrado del lado del cliente por el de SDK de cifrado de AWS bases de datos. En esta guía para desarrolladores, se sigue proporcionando información sobre el cliente de cifrado de DynamoDB.

El conjunto de claves de RSA sin formato realiza un cifrado y descifrado asimétrico de las claves de datos en la memoria local con las claves privadas y públicas de RSA que especifique. Debe generar, almacenar y proteger la clave privada, preferiblemente en un módulo de seguridad de hardware (HSM) o en un sistema de administración de claves. La función de cifrado cifra la clave de datos bajo la clave pública de RSA. La función de descifrado descifra la clave de datos utilizando la clave privada. Puede seleccionar de entre los diversos modos de rellenado de RSA.

Un conjunto de claves de RSA sin formato que cifra y descifra debe incluir una clave pública asimétrica y un par de claves privadas. Sin embargo, puede cifrar datos con un conjunto de claves de RSA sin formato que solo tenga una clave pública y puede descifrar datos con un conjunto de claves de RSA sin formato que solo tenga una clave privada. Y puede incluir cualquier conjunto de claves de RSA sin formato en un conjunto de claves múltiple. Si configura un conjunto de claves de RSA sin procesar con una clave pública y una privada, asegúrese de que formen parte del mismo par de claves.

El conjunto de claves RSA sin procesar es equivalente al del RSA e interactúa con él SDK de cifrado de AWS para Java cuando se utiliza con claves de cifrado asimétricas RSA. JceMasterKey

nota

El conjunto de claves RSA no admite claves de KMS asimétricas. Para usar claves RSA KMS asimétricas, cree un conjunto de claves de AWS KMS.

Espacios de nombres y nombres

Para identificar el par de claves, el conjunto de claves de RSA sin formato utiliza un espacio de nombres y nombre que usted facilite. Estos valores no son secretos. Aparecen en texto plano en la descripción del material que el SDK de cifrado de AWS bases de datos añade al registro. Recomendamos usar el espacio de nombres y el nombre de clave que identifican el par de claves RSA (o su clave privada) en su HSM o sistema de administración de claves.

nota

El espacio de nombres de clave y el nombre de clave son equivalentes a los campos ID de proveedor (o proveedor) e ID de clave del. JceMasterKey

Si crea diferentes conjuntos de claves para cifrar y descifrar un registro determinado, el espacio de nombres y los valores de los nombres son fundamentales. Si el espacio de nombres de clave y el nombre de clave del conjunto de claves de descifrado no coinciden exactamente y distinguen mayúsculas de minúsculas entre el espacio de nombres de clave y el nombre de clave del conjunto de claves de cifrado, no se utiliza el conjunto de claves de descifrado, incluso si las claves son del mismo par de claves.

El espacio de nombres de clave y el nombre de clave del material clave de los conjuntos de claves de cifrado y descifrado deben ser los mismos independientemente de que el conjunto de claves contenga la clave pública RSA, la clave privada RSA o ambas claves del par de claves. Por ejemplo, supongamos que cifra los datos con un conjunto de claves de RSA sin procesar para una clave pública RSA con el espacio de nombres HSM_01 y el nombre de la clave RSA_2048_06. Para descifrar esos datos, cree un conjunto de claves de RSA sin procesar con la clave privada (o el mismo par de claves) y el mismo espacio de nombres y nombre de claves.

Modo de relleno

Debe especificar un modo de relleno para los conjunto de claves RSA sin formato utilizados para el cifrado y descifrado, o utilizar características de la implementación de su lenguaje que lo especifiquen por usted.

AWS Encryption SDK Admite los siguientes modos de relleno, sujetos a las limitaciones de cada idioma. Recomendamos un modo de relleno OAEP, especialmente el OAEP con SHA-256 y el MGF1 con relleno SHA-256. El modo de relleno PKCS1 solo se admite por motivos de compatibilidad con versiones anteriores.

  • OAEP con SHA-1 y MGF1 con relleno SHA-1

  • OAEP con SHA-256 y MGF1 con relleno SHA-256

  • OAEP con relleno SHA-384 y MGF1 con relleno SHA-384

  • OAEP con SHA-512 y MGF1 con relleno SHA-512

  • Relleno PKCS1 v1.5

El siguiente ejemplo de Java muestra cómo crear un conjunto de claves RSA sin procesar con la clave pública y privada de un par de claves RSA y el OAEP con SHA-256 y MGF1 con el modo de relleno SHA-256. RSAPublicKeyRSAPrivateKeyLas variables y representan el material clave que proporciona.

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);
C# / .NET
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 keyringInput = new CreateRawRsaKeyringInput { KeyNamespace = keyNamespace, KeyName = keyName, PaddingScheme = PaddingScheme.OAEP_SHA512_MGF1, PublicKey = publicKey, PrivateKey = privateKey }; // Create the keyring var matProv = new MaterialProviders(new MaterialProvidersConfig()); var rawRsaKeyring = matProv.CreateRawRsaKeyring(keyringInput);