Especificaciones de claves asimétricas - AWS Key Management Service

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.

Especificaciones de claves asimétricas

En los siguientes temas se incluye información técnica acerca de las especificaciones de clave que AWS KMS admite para las claves KMS asimétricas. Se incluye información sobre la especificación de la clave SYMMETRIC_DEFAULT para claves de cifrado simétricas para comparar.

Especificaciones de clave de RSA

Cuando utiliza una especificación de clave de RSA, AWS KMS crea una clave KMS asimétrica con un par de claves de RSA. La clave privada nunca deja AWS KMS sin cifrar. Puede utilizar la clave pública en AWS KMS o descargarla para utilizarla fuera de AWS KMS.

aviso

Cuando cifre datos fuera de AWS KMS, asegúrese de que puede descifrar el texto cifrado. Si utiliza la clave pública de una clave KMS que se ha eliminado de AWS KMS, la clave pública de una clave KMS configurada para firma y verificación o un algoritmo de cifrado que no es compatible con la clave KMS, los datos son irrecuperables.

En AWS KMS, puede utilizar las claves KMS asimétricas con pares de claves de RSA para el cifrado y el descifrado o para la firma y la verificación, pero no para ambas acciones. Esta propiedad, conocida como uso de la clave, se determina independientemente de la especificación de clave, pero tiene que tomar esta decisión antes de seleccionar una especificación de clave.

AWS KMS admite las siguientes especificaciones de clave de RSA para el cifrado y el descifrado o para la firma y la verificación:

  • RSA_2048

  • RSA_3072

  • RSA_4096

Las especificaciones de clave de RSA varían en la longitud de la clave de RSA en bits. La especificación de clave de RSA que seleccione puede estar determinada por las normas de seguridad o los requisitos de la tarea. Por regla general, utilice la clave más grande que sea práctica y asequible para la tarea. Las operaciones criptográficas en claves KMS con diferentes especificaciones de clave de RSA tienen un precio diferente. Para obtener información acerca de los precios de AWS KMS, consulte Precios del servicio de gestión de claves de AWS. Para obtener más información acerca de las cuotas de solicitud, consulte Cuotas de solicitudes.

Especificaciones de clave de RSA para el cifrado y el descifrado

Cuando se utiliza una clave KMS asimétrica de RSA para el cifrado y el descifrado, se cifra con la clave pública y se descifra con la clave privada. Cuando llama a la operación Encrypt en AWS KMS para una clave KMS de RSA, AWS KMS utiliza la clave pública del par de claves de RSA y el algoritmo de cifrado que especifique para cifrar los datos. Para descifrar el texto cifrado, llame a la operación Decrypt y especifique la misma clave KMS y el mismo algoritmo de cifrado. AWS KMS utiliza la clave privada del par de claves de RSA para descifrar los datos.

También puede descargar la clave pública y utilizarla para cifrar los datos fuera de AWS KMS. Asegúrese de utilizar un algoritmo de cifrado que AWS KMS admita para las claves KMS de RSA. Para descifrar el texto cifrado, llame a la función Decrypt con la misma clave KMS y el mismo algoritmo de cifrado.

AWS KMS admite dos algoritmos de cifrado para las claves KMS con especificaciones de clave de RSA. Estos algoritmos, que se definen en PKCS #1 v2.2, difieren en la función hash que utilizan de forma interna. En AWS KMS, los algoritmos RSAES_OAEP siempre utilizan la misma función hash para los fines de hash y para la función de generación de máscaras (MGF1). Tiene que especificar un algoritmo de cifrado cuando llame a las operaciones Encrypt y Decrypt. Puede elegir un algoritmo diferente para cada solicitud.

Algoritmos de cifrado compatibles con las especificaciones de clave de RSA
Algoritmo de cifrado Descripción del algoritmo
RSAES_OAEP_SHA_1 PKCS #1 v2.2, sección 7.1. Cifrado de RSA con relleno OAEP mediante SHA-1 para la función de generación de máscaras MGF1 y hash, junto con una etiqueta vacía.
RSAES_OAEP_SHA_256 PKCS #1, sección 7.1. Cifrado de RSA con relleno OAEP mediante SHA-256 para la función de generación de máscaras MGF1 y hash, junto con una etiqueta vacía.

No puede configurar una clave KMS para utilizar un algoritmo de cifrado específico. Sin embargo, puede usar la condición kms: EncryptionAlgorithm policy para especificar los algoritmos de cifrado que los principales pueden usar con la clave KMS.

Para obtener los algoritmos de cifrado de una clave KMS, consulte la configuración criptográfica de la clave KMS en la AWS KMS consola o utilice la DescribeKeyoperación. AWS KMStambién proporciona las especificaciones clave y los algoritmos de cifrado al descargar la clave pública, ya sea en la AWS KMS consola o mediante la GetPublicKeyoperación.

Puede elegir una especificación de clave de RSA en función de la longitud de los datos de texto no cifrado que puede cifrar en cada solicitud. En la siguiente tabla se muestra el tamaño máximo, en bytes, del texto no cifrado que puede cifrar en una única llamada a la operación Encrypt. Los valores varían en función de la especificación de clave y el algoritmo de cifrado. Para realizar una comparación, puede utilizar una clave KMS de cifrado simétrica para cifrar hasta 4096 bytes a la vez.

Para calcular la longitud de texto no cifrado máxima en bytes para estos algoritmos, utilice la siguiente fórmula: (key_size_in_bits / 8) - (2 * hash_length_in_bits/8) - 2. Por ejemplo, para RSA_2048 con SHA-256, el tamaño máximo de texto no cifrado en bytes es (2048/8) - (2 * 256/8) -2 = 190.

Tamaño máximo de texto no cifrado (en bytes) en una operación de cifrado
Algoritmo de cifrado
Especificación de clave RSAES_OAEP_SHA_1 RSAES_OAEP_SHA_256
RSA_2048 214 190
RSA_3072 342 318
RSA_4096 470 446

Especificaciones de clave de RSA para la firma y la verificación

Cuando se utiliza una clave KMS asimétrica de RSA para la firma y la verificación, genera la firma para un mensaje con la clave privada y verifica la firma con la clave pública.

Cuando llama a la operación Sign en AWS KMS para una clave KMS asimétrica, AWS KMS utiliza la clave privada del par de claves de RSA, el mensaje y el algoritmo de firma que especifique para generar una firma. Para verificar la firma, llame a la operación Verify. Especifique la firma, la misma clave KMS, el mismo mensaje y el mismo algoritmo de firma. A continuación, AWS KMS utiliza la clave pública del par de claves de RSA para verificar la firma. También puede descargar la clave pública y utilizarla para verificar la firma fuera de AWS KMS.

AWS KMS admite los siguientes algoritmos de firma para todas las claves KMS con una especificación de clave de RSA. Tiene que especificar un algoritmo de firma cuando llame a las operaciones SignVerify. Puede elegir un algoritmo diferente para cada solicitud. Al firmar con pares de claves de RSA, se prefieren los algoritmos RSASSA-PSS. Incluimos los algoritmos RSASSA-PKCS1-v1_5 para garantizar la compatibilidad con las aplicaciones existentes.

Algoritmos de firma compatibles con las especificaciones de clave de RSA
Algoritmo de firma Descripción del algoritmo
RSASSA_PSS_SHA_256 PKCS #1 v2.2, sección 8.1, firma de RSA con relleno PSS mediante SHA-256 para la función de generación de máscaras MGF1 y resumen de mensaje, junto con una sal de 256 bits.
RSASSA_PSS_SHA_384 PKCS #1 v2.2, sección 8.1, firma de RSA con relleno PSS mediante SHA-384 para la función de generación de máscaras MGF1 y resumen de mensaje, junto con una sal de 384 bits.
RSASSA_PSS_SHA_512 PKCS #1 v2.2, sección 8.1, firma de RSA con relleno PSS mediante SHA-512 para la función de generación de máscaras MGF1 y resumen de mensaje, junto con una sal de 512 bits.
RSASSA_PKCS1_V1_5_SHA_256 PKCS #1 v2.2, sección 8.2, firma de RSA con relleno PKCS #1 v1.5 y SHA-256
RSASSA_PKCS1_V1_5_SHA_384 PKCS #1 v2.2, sección 8.2, firma de RSA con relleno PKCS #1 v1.5 y SHA-384
RSASSA_PKCS1_V1_5_SHA_512 PKCS #1 v2.2, sección 8.2, firma de RSA con relleno PKCS #1 v1.5 y SHA-512

No puede configurar una clave de KMS para utilizar algoritmos de firma específicos. Sin embargo, puedes usar la condición de SigningAlgorithm política kms: para especificar los algoritmos de firma que los principales pueden usar con la clave KMS.

Para obtener los algoritmos de firma de una clave KMS, consulte la configuración criptográfica de la clave KMS en la AWS KMS consola o utilice la DescribeKeyoperación. AWS KMStambién proporciona las especificaciones clave y los algoritmos de firma al descargar la clave pública, ya sea en la AWS KMS consola o mediante la GetPublicKeyoperación.

Especificaciones de clave de curva elíptica

Cuando utiliza una especificación de clave de curva elíptica (ECC), AWS KMS crea una clave KMS asimétrica con un par de claves de ECC para la firma y la verificación. La clave privada que genera la firma nunca deja AWS KMS sin cifrar. Puede utilizar la clave pública para verificar firmas en AWS KMS o descargar la clave pública para utilizarla fuera de AWS KMS.

AWS KMS es compatible con las siguientes especificaciones de clave de ECC para las clave KMS asimétricas.

  • Pares de claves de curva elíptica asimétricas recomendadas por NIST (firma y verificación)

    • ECC_NIST_P256 (secp256r1)

    • ECC_NIST_P384 (secp384r1)

    • ECC_NIST_P521 (secp521r1)

  • Otros pares de claves de curva elíptica asimétricas (firma y verificación)

    • ECC_SECG_P256K1 (secp256k1), que se suele utilizar para las criptomonedas.

La especificación de clave de ECC que selecciona puede estar determinada por las normas de seguridad o los requisitos de la tarea. Por regla general, utilice la curva con más puntos que sea práctica y asequible para la tarea.

Si va a crear una clave KMS asimétrica para utilizarla con criptomonedas, utilice la especificación de clave ECC_SECG_P256K1. También puede utilizar esta especificación de clave para otros fines, pero es obligatoria para Bitcoin y otras criptomonedas.

Las claves KMS con diferentes especificaciones de clave de ECC tienen un precio diferente y están sujetas a diferentes cuotas de solicitud. Para obtener más información acerca de los precios de AWS KMS, consulte Precios de AWS Key Management Service. Para obtener más información acerca de las cuotas de solicitud, consulte Cuotas de solicitudes.

En la siguiente tabla se muestran los algoritmos de firma que AWS KMS admite para cada especificación de clave de ECC. No puede configurar una clave de KMS para utilizar algoritmos de firma específicos. Sin embargo, puedes usar la condición de SigningAlgorithm política kms: para especificar los algoritmos de firma que los directores pueden usar con la clave KMS.

Algoritmos de firma compatibles con las especificaciones de clave de ECC
Especificación de clave Algoritmo de firma Descripción del algoritmo
ECC_NIST_P256 ECDSA_SHA_256 NIST FIPS 186-4, sección 6.4, firma de ECDSA mediante la curva que especifican la clave y SHA-256 para el resumen de mensaje.
ECC_NIST_P384 ECDSA_SHA_384 NIST FIPS 186-4, sección 6.4, firma de ECDSA mediante la curva que especifican la clave y SHA-384 para el resumen de mensaje.
ECC_NIST_P521 ECDSA_SHA_512 NIST FIPS 186-4, sección 6.4, firma de ECDSA mediante la curva que especifican la clave y SHA-512 para el resumen de mensaje.
ECC_SECG_P256K1 ECDSA_SHA_256 NIST FIPS 186-4, sección 6.4, firma de ECDSA mediante la curva que especifican la clave y SHA-256 para el resumen de mensaje.

Especificación de clave SM2 (solo en las regiones de China)

La especificación de clave SM2 es una especificación clave de curva elíptica definida dentro de la serie de especificaciones GM/T publicada por la Oficina de Administración Estatal de Criptografía Comercial de China (OSCCA). La especificación de clave SM2 solo está disponible en las regiones de China. Cuando utiliza una especificación de clave SM2, AWS KMS crea una clave KMS asimétrica con un par de claves SM2. Puede utilizar la clave pública en AWS KMS o descargarla para utilizarla fuera de AWS KMS.

A diferencia de la especificación de clave ECC, puede utilizar una clave SM2 de KMS para la firma y la verificación, o el cifrado y descifrado. Debe especificar el uso de claves al crear la clave KMS y no se la puede cambiar una vez creada.

AWS KMS admite los siguientes algoritmos de cifrado y firma SM2:

  • Algoritmo de cifrado SM2PKE

    SM2PKE es un algoritmo de cifrado basado en curvas elípticas definido por OSCCA en GM/T 0003.4-2012.

  • Algoritmo de firma SM2DSA

    SM2DSA es un algoritmo de cifrado basado en curvas elípticas definido por OSCCA en GM/T 0003.2-2012. SM2DSA requiere un identificador distintivo que se cifra con hash con el algoritmo hash SM3 y, a continuación, se combina con el mensaje, o resumen del mensaje, que se pasa a AWS KMS. A continuación, este valor concatenado es cifrado con hash y firmado por AWS KMS.

Operaciones fuera de línea con SM2 (solo en las regiones de China)

Puede descargar la clave pública del par de claves SM2 para uso en operaciones fuera de línea, es decir, operaciones fuera de AWS KMS. Sin embargo, cuando utilice su clave pública de SM2 sin conexión, es posible que tenga que realizar conversiones y cálculos adicionales de forma manual. Las operaciones de SM2DSA pueden requerir que proporcione un identificador distintivo o que calcule un resumen del mensaje. Las operaciones de cifrado SM2PKE pueden requerir que convierta la salida de texto cifrado sin procesar a un formato que AWS KMS puede aceptar.

Para ayudarle con estas operaciones, la clase de SM2OfflineOperationHelper para Java tiene métodos que realizan las tareas por usted. Puede usar esta clase auxiliar como modelo para otros proveedores de cifrado.

importante

El código de referencia SM2OfflineOperationHelper está diseñado para ser compatible con Bouncy Castle versión 1.68. Para obtener ayuda con otras versiones, póngase en contacto con bouncycastle.org.

Verificación sin conexión con pares de claves SM2 (solo en las regiones de China)

Para verificar una firma fuera de AWS KMS con una clave pública SM2, debe especificar el identificador distintivo. Cuando pasa un mensaje sin formato, MessageType:RAW, a la API Sign, AWS KMS utiliza el identificador distintivo predeterminado, 1234567812345678, definido por la OSCCA en GM/T 0009-2012. No puede especificar su propio identificador distintivo en AWS KMS.

Sin embargo, si está generando un resumen de mensajes fuera de AWS, puede especificar su propio identificador distintivo y, a continuación, pasar el resumen del mensaje, MessageType:DIGEST, a AWS KMS para su firma. Para ello, cambie el valor DEFAULT_DISTINGUISHING_ID en la clase SM2OfflineOperationHelper. El identificador distintivo que especifique puede ser cualquier cadena de hasta 8192 caracteres. Después de que AWS KMS firma el resumen del mensaje, necesita el resumen del mensaje o el mensaje y el identificador distintivo utilizados para calcular el resumen y verificarlo sin conexión.

Classe SM2OfflineOperationHelper

Dentro de AWS KMS, las conversiones de texto cifrado sin procesar y los cálculos de resumen de mensajes SM2DSA se producen automáticamente. No todos los proveedores de cifrado implementan SM2 de la misma manera. Algunas bibliotecas, como OpenSSL versiones 1.1.1 y posteriores, realizan estas acciones de forma automática. AWS KMS confirmó este comportamiento en pruebas con OpenSSL versión 3.0. Utilice la siguiente clase de SM2OfflineOperationHelper con bibliotecas, como Bouncy Castle, que requieren que realice estas conversiones y cálculos manualmente.

La clase SM2OfflineOperationHelper proporciona métodos para las siguientes operaciones fuera de línea:

  • Cálculo del resumen del mensaje

    Para generar un resumen de mensajes sin conexión que pueda usar para la verificación sin conexión o que pueda pasar a AWS KMS para su firma, utilice el método calculateSM2Digest. El método calculateSM2Digest genera un resumen de mensajes con el algoritmo hash SM3. La GetPublicKeyAPI devuelve la clave pública en formato binario. Debe analizar la clave binaria para convertirla en una versión Java PublicKey. Proporcione la clave pública analizada con el mensaje. El método combina automáticamente el mensaje con el identificador distintivo predeterminado, 1234567812345678, pero puede establecer su propio identificador distintivo cambiando el valor DEFAULT_DISTINGUISHING_ID.

  • Verificar

    Para verificar una firma sin conexión, utilice el método offlineSM2DSAVerify. El método offlineSM2DSAVerify utiliza el resumen del mensaje calculado a partir del identificador distintivo especificado y el mensaje original que proporciona para verificar la firma digital. La GetPublicKeyAPI devuelve la clave pública en formato binario. Debe analizar la clave binaria para convertirla en una versión Java PublicKey. Proporcione la clave pública analizada con el mensaje original y la firma que desea verificar. Para obtener más información, consulte Verificación sin conexión con pares de claves SM2.

  • Encrypt

    Para cifrar texto sin formato sin conexión, utilice el método offlineSM2PKEEncrypt. Este método garantiza que el texto cifrado esté en un formato que AWS KMS puede descifrar. El método offlineSM2PKEEncrypt cifra el texto sin formato y, a continuación, convierte el texto cifrado sin procesar producido por SM2PKE al formato ASN.1. La GetPublicKeyAPI devuelve la clave pública en formato binario. Debe analizar la clave binaria para convertirla en una versión Java PublicKey. Proporcione la clave pública analizada con el texto sin formato que desea cifrar.

    Si no está seguro de si necesita realizar la conversión, utilice la siguiente operación de OpenSSL para probar el formato del texto cifrado. Si la operación falla, debe convertir el texto cifrado al formato ASN.1.

    openssl asn1parse -inform DER -in ciphertext.der

De forma predeterminada, la clase SM2OfflineOperationHelper usa el identificador distintivo predeterminado, 1234567812345678, al generar resúmenes de mensajes para operaciones SM2DSA.

package com.amazon.kms.utils; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import java.io.IOException; import java.math.BigInteger; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import java.security.InvalidKeyException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.NoSuchProviderException; import java.security.PrivateKey; import java.security.PublicKey; import org.bouncycastle.crypto.CryptoException; import org.bouncycastle.jce.interfaces.ECPublicKey; import java.util.Arrays; import org.bouncycastle.asn1.ASN1EncodableVector; import org.bouncycastle.asn1.ASN1Integer; import org.bouncycastle.asn1.DEROctetString; import org.bouncycastle.asn1.DERSequence; import org.bouncycastle.asn1.gm.GMNamedCurves; import org.bouncycastle.asn1.x9.X9ECParameters; import org.bouncycastle.crypto.CipherParameters; import org.bouncycastle.crypto.params.ParametersWithID; import org.bouncycastle.crypto.params.ParametersWithRandom; import org.bouncycastle.crypto.signers.SM2Signer; import org.bouncycastle.jcajce.provider.asymmetric.util.ECUtil; public class SM2OfflineOperationHelper { // You can change the DEFAULT_DISTINGUISHING_ID value to set your own distinguishing ID, // the DEFAULT_DISTINGUISHING_ID can be any string up to 8,192 characters long. private static final byte[] DEFAULT_DISTINGUISHING_ID = "1234567812345678".getBytes(StandardCharsets.UTF_8); private static final X9ECParameters SM2_X9EC_PARAMETERS = GMNamedCurves.getByName("sm2p256v1"); // ***calculateSM2Digest*** // Calculate message digest public static byte[] calculateSM2Digest(final PublicKey publicKey, final byte[] message) throws NoSuchProviderException, NoSuchAlgorithmException { final ECPublicKey ecPublicKey = (ECPublicKey) publicKey; // Generate SM3 hash of default distinguishing ID, 1234567812345678 final int entlenA = DEFAULT_DISTINGUISHING_ID.length * 8; final byte [] entla = new byte[] { (byte) (entlenA & 0xFF00), (byte) (entlenA & 0x00FF) }; final byte [] a = SM2_X9EC_PARAMETERS.getCurve().getA().getEncoded(); final byte [] b = SM2_X9EC_PARAMETERS.getCurve().getB().getEncoded(); final byte [] xg = SM2_X9EC_PARAMETERS.getG().getXCoord().getEncoded(); final byte [] yg = SM2_X9EC_PARAMETERS.getG().getYCoord().getEncoded(); final byte[] xa = ecPublicKey.getQ().getXCoord().getEncoded(); final byte[] ya = ecPublicKey.getQ().getYCoord().getEncoded(); final byte[] za = MessageDigest.getInstance("SM3", "BC") .digest(ByteBuffer.allocate(entla.length + DEFAULT_DISTINGUISHING_ID.length + a.length + b.length + xg.length + yg.length + xa.length + ya.length).put(entla).put(DEFAULT_DISTINGUISHING_ID).put(a).put(b).put(xg).put(yg).put(xa).put(ya) .array()); // Combine hashed distinguishing ID with original message to generate final digest return MessageDigest.getInstance("SM3", "BC") .digest(ByteBuffer.allocate(za.length + message.length).put(za).put(message) .array()); } // ***offlineSM2DSAVerify*** // Verify digital signature with SM2 public key public static boolean offlineSM2DSAVerify(final PublicKey publicKey, final byte [] message, final byte [] signature) throws InvalidKeyException { final SM2Signer signer = new SM2Signer(); CipherParameters cipherParameters = ECUtil.generatePublicKeyParameter(publicKey); cipherParameters = new ParametersWithID(cipherParameters, DEFAULT_DISTINGUISHING_ID); signer.init(false, cipherParameters); signer.update(message, 0, message.length); return signer.verifySignature(signature); } // ***offlineSM2PKEEncrypt*** // Encrypt data with SM2 public key public static byte[] offlineSM2PKEEncrypt(final PublicKey publicKey, final byte [] plaintext) throws NoSuchPaddingException, NoSuchAlgorithmException, NoSuchProviderException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException, IOException { final Cipher sm2Cipher = Cipher.getInstance("SM2", "BC"); sm2Cipher.init(Cipher.ENCRYPT_MODE, publicKey); // By default, Bouncy Castle returns raw ciphertext in the c1c2c3 format final byte [] cipherText = sm2Cipher.doFinal(plaintext); // Convert the raw ciphertext to the ASN.1 format before passing it to AWS KMS final ASN1EncodableVector asn1EncodableVector = new ASN1EncodableVector(); final int coordinateLength = (SM2_X9EC_PARAMETERS.getCurve().getFieldSize() + 7) / 8 * 2 + 1; final int sm3HashLength = 32; final int xCoordinateInCipherText = 33; final int yCoordinateInCipherText = 65; byte[] coords = new byte[coordinateLength]; byte[] sm3Hash = new byte[sm3HashLength]; byte[] remainingCipherText = new byte[cipherText.length - coordinateLength - sm3HashLength]; // Split components out of the ciphertext System.arraycopy(cipherText, 0, coords, 0, coordinateLength); System.arraycopy(cipherText, cipherText.length - sm3HashLength, sm3Hash, 0, sm3HashLength); System.arraycopy(cipherText, coordinateLength, remainingCipherText, 0,cipherText.length - coordinateLength - sm3HashLength); // Build standard SM2PKE ASN.1 ciphertext vector asn1EncodableVector.add(new ASN1Integer(new BigInteger(1, Arrays.copyOfRange(coords, 1, xCoordinateInCipherText)))); asn1EncodableVector.add(new ASN1Integer(new BigInteger(1, Arrays.copyOfRange(coords, xCoordinateInCipherText, yCoordinateInCipherText)))); asn1EncodableVector.add(new DEROctetString(sm3Hash)); asn1EncodableVector.add(new DEROctetString(remainingCipherText)); return new DERSequence(asn1EncodableVector).getEncoded("DER"); } }

Especificación de clave SYMMETRIC_DEFAULT

La especificación de clave predeterminada, SYMMETRIC_DEFAULT, es la especificación de clave para las claves KMS de cifrado simétricas. Cuando selecciona el tipo de clave Symmetric (Simétrica) y Encrypt and decrypt (Cifrar y descifrar) en la consola de AWS KMS, esta selecciona la especificación de clave SYMMETRIC_DEFAULT. En la CreateKeyoperación, si no especifica ningún KeySpec valor, se selecciona SYMMETRIC_DEFAULT. Si no tiene un motivo para utilizar una especificación de clave diferente, SYMMETRIC_DEFAULT es una buena opción.

SYMMETRIC_DEFAULT actualmente representa AES-256-GCM, un algoritmo simétrico basado en el estándar de cifrado avanzado (AES) en el modo de contador Galois (GCM) con claves de 256 bits, un estándar del sector para conseguir un cifrado seguro. El texto cifrado que este algoritmo genera admite datos autenticados adicionales (AAD), como un contexto de cifrado, y GCM ofrece una comprobación de integridad adicional en el texto cifrado. Para obtener más detalles, consulte.Detalles criptográficos de AWS Key Management Service.

Los datos cifrados con AES-256-GCM están protegidos ahora y en el futuro. Los criptógrafos consideran que este algoritmo es resistente a la informática cuántica. Los futuros e hipotéticos ataques de informática cuántica a gran escala a textos cifrados creados con claves AES-GCM de 256 bits reducen la seguridad nominal de la clave a 128 bits. No obstante, este nivel de seguridad es suficiente para hacer inviables los ataques de fuerza bruta en los textos cifrados de AWS KMS.

La única excepción es en las regiones de China, donde SYMMETRIC_DEFAULT representa una clave simétrica de 128 bits que utiliza el cifrado SM4. Solo puede crear una clave SM4 de 128 bits dentro de las regiones de China. No puede crear una clave KMS con cifrado AES-GCM de 256 bits en las regiones de China.

Puede utilizar una clave de KMS de cifrado simétrica en AWS KMS para cifrar, descifrar y volver a cifrar los datos y para proteger claves de datos y pares de claves de datos generados. Los servicios de AWS que están integrados con AWS KMS utilizan claves de KMS de cifrado simétricas para cifrar los datos en reposo. Puede importar su propio material de claves en una clave KMS de cifrado simétrica y crear claves KMS de cifrado simétricas en almacenes de claves personalizadas. Para obtener una tabla en la que se comparan las operaciones que puede realizar en las claves de KMS simétricas y asimétricas, consulte Comparación de claves de KMS simétricas y asimétricas.

Para obtener más información técnica sobre AWS KMS y claves de cifrado simétricas, consulte Información criptográfica de AWS Key Management Service.