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.
AWS KMS llaveros
Un AWS KMS anillo de claves utiliza el cifrado simétrico AWS KMS keyspara generar, cifrar y descifrar las claves de datos. AWS Key Management Service (AWS KMS) protege las claves de KMS y realiza operaciones criptográficas dentro del límite del FIPS. Siempre que sea posible, le recomendamos que utilice un AWS KMS anillo de claves o un anillo de claves con propiedades de seguridad similares.
A partir de la versión 2.3, puede utilizar una clave AWS KMS multirregional en un AWS KMS conjunto de claves o en un proveedor de claves maestras. x de la AWS Encryption SDK y la versión 3.0. x de la CLI AWS de cifrado. Para obtener detalles y ejemplos del uso del nuevo símbolo compatible con varias regiones, consulte Uso de AWS KMS keys multirregional. Para obtener más información sobre las claves de varias regiones, consulte Uso de claves de varias regiones en la Guía para desarrolladores de AWS Key Management Service .
nota
Versión 4. x del AWS Encryption SDK para .NET y la versión 3. x de ellas SDK de cifrado de AWS para Java son las únicas implementaciones de lenguajes de programación que admiten conjuntos de AWS KMS claves que utilizan un RSA asimétrico. AWS KMS keys
Si intenta incluir una clave de KMS asimétrica en un conjunto de claves de cifrado en cualquier implementación de otro lenguaje, se produce un error en la llamada de cifrado. Si la incluye en un conjunto de claves de descifrado, se ignora.
Todas las menciones de los llaveros KMS en el se refieren a los llaveros. AWS Encryption SDK AWS KMS
AWS KMS Los llaveros pueden incluir dos tipos de claves de embalaje:
-
Clave generadora: genera una clave de datos en texto no cifrado y la cifra. Un conjunto de claves que cifra datos debe tener una clave generadora.
-
Claves adicionales: cifra la clave de datos de texto sin formato que generó la clave del generador. AWS KMS los llaveros pueden tener cero o más claves adicionales.
Al cifrar, el AWS KMS anillo de claves que utilice debe tener una clave generadora. Al descifrar, la clave generadora omite la distinción entre claves generadoras y claves adicionales.
Cuando un anillo de claves de AWS KMS cifrado solo tiene una AWS KMS clave, esa clave se utiliza para generar y cifrar la clave de datos.
Como todos los llaveros, los AWS KMS llaveros se pueden utilizar de forma independiente o en un conjunto de varios llaveros con otros llaveros del mismo tipo o de un tipo diferente.
Temas
- Permisos necesarios para los conjuntos de claves de AWS KMS
- Identificarse AWS KMS keys en un AWS KMS llavero
- Crear un anillo de claves para el cifrado AWS KMS
- Crear un conjunto de AWS KMS claves para el descifrado
- Uso de un anillo de claves de detección AWS KMS
- Uso de un conjunto de claves de descubrimiento AWS KMS regional
Permisos necesarios para los conjuntos de claves de AWS KMS
AWS Encryption SDK No requiere ni depende Cuenta de AWS de ninguno. Servicio de AWS Sin embargo, para usar un AWS KMS llavero, necesitas tener Cuenta de AWS los siguientes permisos mínimos AWS KMS keys en el llavero.
-
Para cifrar con un AWS KMS anillo de claves, necesita el GenerateDataKey permiso kms: en la clave del generador. Necesita el permiso KMS:Encrypt para todas las claves adicionales del anillo de claves. AWS KMS
-
Para descifrar con un AWS KMS anillo de claves, necesita el permiso KMS:Decrypt en al menos una clave del anillo de claves. AWS KMS
-
Para cifrar con un conjunto de claves múltiples compuesto por AWS KMS anillos de claves, necesita el permiso kms: en la clave generadora del conjunto de claves del generador. GenerateDataKey Necesita el permiso kms:Encrypt en todas las demás claves de los demás conjuntos de claves AWS KMS .
Para obtener información detallada sobre los permisos AWS KMS keys, consulte Autenticación y control de acceso en la Guía para desarrolladores.AWS Key Management Service
Identificarse AWS KMS keys en un AWS KMS llavero
Un AWS KMS llavero puede incluir uno o más. AWS KMS keys Para especificar un elemento AWS KMS key en un conjunto de AWS KMS claves, utilice un identificador de AWS KMS clave compatible. Los identificadores clave que puede utilizar para identificar un elemento de un AWS KMS key conjunto de claves varían según la operación y la implementación del idioma. Para obtener más información sobre los identificadores clave de una AWS KMS key, consulte Identificadores clave en la Guía para desarrolladores de AWS Key Management Service .
Como práctica recomendada, utilice el identificador de clave más práctico que sea práctico para su tarea.
-
En un anillo de claves de cifrado para el SDK de cifrado de AWS para C, puede utilizar un ARN de clave o un alias ARN para identificar las claves de KMS. En todas las implementaciones de otros lenguajes, puede utilizar un identificador de clave, un ARN de clave, un nombre de alias o un ARN de alias para cifrar los datos.
-
En un conjunto de claves de descifrado, debe usar el ARN de una clave para identificar AWS KMS keys. Este requisito se aplica a todas las implementaciones de lenguaje del AWS Encryption SDK. Para obtener más detalles, consulte Seleccionar las claves de empaquetado.
-
En un conjunto de claves usado para cifrar y descifrar, debe usar el ARN de una clave para identificar AWS KMS keys. Este requisito se aplica a todas las implementaciones de lenguaje del AWS Encryption SDK.
Si especifica un nombre de alias o un ARN de alias para una clave de KMS en un conjunto de claves de cifrado, la operación de cifrado guarda el ARN de clave actualmente asociado al alias en los metadatos de la clave de datos cifrada. No guarda el alias. Los cambios en el alias no afectan a la clave de KMS utilizada para descifrar las claves de datos cifrados.
Crear un anillo de claves para el cifrado AWS KMS
Puede configurar cada conjunto de AWS KMS claves con uno AWS KMS key o varios AWS KMS keys en la misma dirección o en una diferente Cuentas de AWS . Regiones de AWS Las AWS KMS keys deben ser claves de cifrado simétricas (SYMMETRIC_DEFAULT). También puede utilizar una clave de KMS multirregional de cifrado simétrico. Como ocurre con todos los conjuntos de claves, puede utilizar uno o varios conjuntos de claves de AWS KMS en un conjunto de claves múltiple.
Al crear un conjunto de AWS KMS claves para cifrar datos, debe especificar una clave generadora, que es la que se utiliza para generar una AWS KMS key clave de datos en texto plano y cifrarla. La clave de datos no está relacionada matemáticamente con la clave de KMS. A continuación, si lo desea, puede especificar otras claves adicionales AWS KMS keys que cifren la misma clave de datos en texto plano.
Para descifrar el mensaje cifrado protegido por este conjunto de claves, el conjunto de claves que utilice debe incluir al menos uno de los elementos AWS KMS keys definidos en el conjunto de claves, o no. AWS KMS keys(Un anillo de AWS KMS claves sin un número AWS KMS keys se conoce como anillo de claves de detección).AWS KMS
En las implementaciones AWS Encryption SDK lingüísticas distintas del SDK de cifrado de AWS para C, todas las claves de empaquetado de un anillo de claves de cifrado o de varios anillos de claves deben poder cifrar la clave de datos. Si alguna de las claves de encapsulamiento no se cifra, el método de cifrado falla. Como resultado, la persona que llama debe tener los permisos necesarios para todas las claves del conjunto de claves. Si utiliza un conjunto de claves de detección para cifrar los datos, solo o en un conjunto de claves múltiple, la operación de cifrado no se realizará correctamente. La excepción es la siguiente SDK de cifrado de AWS para C, en la que la operación de cifrado ignora un anillo de claves de detección estándar, pero falla si se especifica un anillo de claves de descubrimiento multirregional, solo o en un anillo de claves múltiples.
En los ejemplos siguientes se crea un conjunto de claves con una AWS KMS clave generadora y una clave adicional. En estos ejemplos se utilizan ARN de clave para identificar las claves de KMS. Esta es una práctica recomendada para los AWS KMS anillos de claves utilizados para el cifrado y un requisito para los AWS KMS anillos de claves utilizados para el descifrado. Para obtener más detalles, consulte Identificarse AWS KMS keys en un AWS KMS llavero.
Crear un conjunto de AWS KMS claves para el descifrado
También se especifica un AWS KMS anillo de claves al descifrar el mensaje cifrado que devuelve. AWS Encryption SDK Si el conjunto de claves de descifrado lo especifica AWS KMS keys, AWS Encryption SDK utilizará únicamente esas claves de empaquetado para descifrar las claves de datos cifradas del mensaje cifrado. (También puede usar un anillo de claves de AWS KMS detección, que no especifica ninguno). AWS KMS keys
Al descifrar, AWS Encryption SDK busca en el conjunto de AWS KMS claves una AWS KMS key que pueda descifrar una de las claves de datos cifradas. En concreto, AWS Encryption SDK utiliza el siguiente patrón para cada clave de datos cifrados de un mensaje cifrado.
-
AWS Encryption SDK Obtiene la clave ARN de la AWS KMS key que cifró la clave de datos de los metadatos del mensaje cifrado.
-
AWS Encryption SDK Busca en el anillo de claves de descifrado un ARN AWS KMS key con una clave coincidente.
-
Si encuentra un ARN AWS KMS key con una clave coincidente en el anillo de claves, AWS Encryption SDK solicita usar la clave KMS AWS KMS para descifrar la clave de datos cifrados.
-
De lo contrario, pasa a la siguiente clave de datos cifrada, si la hay.
AWS Encryption SDK Nunca intenta descifrar una clave de datos cifrada a menos que el ARN de la clave que cifró esos datos esté incluido en AWS KMS key el anillo de claves de descifrado. Si el conjunto de claves de descifrado no incluye los ARN de ninguna de las claves de datos AWS KMS keys que cifró, AWS Encryption SDK no se realizará la llamada de descifrado sin llamar nunca. AWS KMS
A partir de la versión 1.7. x, al descifrar una clave de datos cifrada, AWS Encryption SDK siempre pasa la clave ARN del al parámetro de AWS KMS keyKeyId
la operación de AWS KMS descifrado. La AWS KMS mejor práctica es identificar el AWS KMS key momento de descifrar la clave de datos cifrados con la clave de empaquetado que se va a utilizar.
Una llamada de descifrado con un AWS KMS anillo de claves tiene éxito cuando al menos una AWS KMS key
de las claves de descifrado puede descifrar una de las claves de datos cifradas del mensaje cifrado. Además, el intermediario debe tener un permiso kms:Decrypt
sobre esa AWS KMS key. Este comportamiento le permite cifrar datos AWS KMS keys en varias cuentas AND, pero proporciona un conjunto de claves de descifrado más limitado Regiones de AWS y adaptado a una cuenta, región, usuario, grupo o función determinados.
Al especificar una AWS KMS key en un anillo de claves de descifrado, debe utilizar su clave ARN. De lo contrario, no AWS KMS key se reconoce. Para obtener ayuda para encontrar el ID de la clave y el ARN, consulte Búsqueda del ID y el ARN de la clave en la Guía para desarrolladores de AWS Key Management Service .
nota
Si reutiliza un conjunto de claves de cifrado para realizar operaciones de descifrado, asegúrese de que las AWS KMS keys del conjunto de claves se identifiquen mediante sus ARN de clave.
Por ejemplo, el siguiente conjunto de AWS KMS claves incluye solo la clave adicional que se utilizó en el conjunto de claves de cifrado. Sin embargo, en lugar de hacer referencia a la clave adicional por su alias, alias/exampleAlias
, el ejemplo utiliza la clave ARN de la clave adicional, tal como requieren las llamadas de descifrado.
Puede utilizar este conjunto de claves para descifrar un mensaje cifrado tanto con la clave generadora como con la clave adicional, siempre y cuando tenga permiso para usar la clave adicional para descifrar datos.
También puede utilizar un conjunto de AWS KMS claves que especifique una clave generadora para el descifrado, como la siguiente. Al descifrar, AWS Encryption SDK ignora la distinción entre claves generadoras y claves adicionales. Puede usar cualquiera de las especificadas AWS KMS keys para descifrar una clave de datos cifrada. La llamada a solo se AWS KMS realiza correctamente cuando la persona que llama tiene permiso para usarla para descifrar datos AWS KMS key .
A diferencia de un conjunto de claves de cifrado que utiliza todo lo especificado AWS KMS keys, puedes descifrar un mensaje cifrado con un conjunto de claves de descifrado que incluya elementos que no estén relacionados con el mensaje cifrado y AWS KMS keys que la persona AWS KMS keys que llama no tenga permiso para utilizarlos. Si una llamada de descifrado a AWS KMS devuelve un error, por ejemplo cuando el intermediario no dispone del permiso necesario, el AWS Encryption SDK pasa a la siguiente clave de datos cifrada.
Uso de un anillo de claves de detección AWS KMS
Al descifrar, se recomienda especificar las claves de empaquetado que AWS Encryption SDK pueden utilizar. Para seguir esta práctica recomendada, utilice un conjunto de claves de AWS KMS descifrado que limite las claves de AWS KMS empaquetado a las que especifique. Sin embargo, también puede crear un anillo de claves de AWS KMS detección, es decir, un anillo de AWS KMS claves que no especifique ninguna clave de empaquetado.
AWS Encryption SDK Incluye un conjunto de claves de AWS KMS detección estándar y un anillo de claves de detección para claves de varias regiones. AWS KMS Para obtener información sobre el uso de claves multirregionales con el, consulte. AWS Encryption SDKUso de AWS KMS keys multirregional
Como no especifica ninguna clave de encapsulamiento, un conjunto de claves de detección no puede cifrar los datos. Si utiliza un conjunto de claves de detección para cifrar los datos, solo o en un conjunto de claves múltiple, la operación de cifrado no se realizará correctamente. La excepción es la SDK de cifrado de AWS para C, en la que la operación de cifrado ignora un conjunto de claves de detección estándar, pero no se produce si se especifica un conjunto de claves de detección multirregional, solo o en un anillo de claves múltiples.
Al descifrar, un anillo de claves de detección permite solicitar AWS KMS el AWS Encryption SDK descifrado de cualquier clave de datos cifrada utilizando la clave AWS KMS key que la cifró, independientemente de quién sea su propietario o tenga acceso a ella. AWS KMS key La llamada se realiza correctamente solo si el intermediario tiene permiso de kms:Decrypt
sobre la AWS KMS key.
importante
Si incluye un anillo de claves de AWS KMS descubrimiento en un conjunto de claves de descifrado múltiple, el anillo de claves de descubrimiento anula todas las restricciones de claves de KMS especificadas por otros conjuntos de claves del conjunto de claves múltiples. El conjunto de claves múltiples se comporta como el menos restrictivo. Un conjunto de claves de AWS KMS detección no tiene ningún efecto sobre el cifrado cuando se utiliza solo o en un conjunto de claves múltiples.
AWS Encryption SDK Incluye un llavero de AWS KMS detección para mayor comodidad. No obstante, recomendamos que utilice un conjunto de claves más limitado siempre que sea posible por los siguientes motivos.
-
Autenticidad: un anillo de claves de AWS KMS detección puede utilizar cualquier clave AWS KMS key que se haya utilizado para cifrar una clave de datos en el mensaje cifrado, solo para que la persona que llama tenga permiso para usarla para descifrarla. AWS KMS key Podría no ser la AWS KMS key que el intermediario quiere utilizar. Por ejemplo, es posible que una de las claves de datos cifradas se haya cifrado con una menos segura AWS KMS key que cualquiera pueda utilizar.
-
Latencia y rendimiento: un AWS KMS conjunto de claves de detección puede ser considerablemente más lento que otros, ya que AWS Encryption SDK intenta descifrar todas las claves de datos cifradas, incluidas las cifradas en otras regiones y AWS KMS keys en otras regiones, Cuentas de AWS y la persona AWS KMS keys que llama no tiene permiso para utilizarlas para descifrarlas.
Si utiliza un conjunto de claves de detección, le recomendamos que utilice un filtro de detección para limitar las claves de KMS que se pueden utilizar a las que se encuentran en particiones Y especificadas. Cuentas de AWS Los filtros de detección son compatibles con las versiones 1.7.x y versiones posteriores del AWS Encryption SDK. Para obtener ayuda para encontrar el ID y la partición de su cuenta, consulte Sus identificadores de Cuenta de AWS y el formato ARN en la Referencia general de AWS.
El siguiente código crea una instancia de un conjunto de claves de AWS KMS detección con un filtro de detección que limita las claves de KMS que se AWS Encryption SDK pueden utilizar a las de la aws
partición y de la cuenta de ejemplo 111122223333.
Antes de usar este código, sustituya los valores del ejemplo Cuenta de AWS y de la partición por valores válidos para la partición y. Cuenta de AWS Si sus claves de KMS se encuentran en regiones de China, use el valor de la partición de aws-cn
. Si sus claves de KMS están incluidas AWS GovCloud (US) Regions, utilice el valor de la aws-us-gov
partición. Para todos los demás Regiones de AWS, utilice el valor de la aws
partición.
Uso de un conjunto de claves de descubrimiento AWS KMS regional
Un conjunto de claves de detección regional de AWS KMS es un conjunto de claves que no especifica los ARN de las claves de KMS. En su lugar, AWS Encryption SDK permite descifrar utilizando únicamente las claves KMS en particular. Regiones de AWS
Al descifrar con un conjunto de claves de detección AWS KMS regional, AWS Encryption SDK
descifra cualquier clave de datos cifrada que se haya cifrado con una AWS KMS key de las especificadas. Región de AWS Para tener éxito, la persona que llama debe tener kms:Decrypt
permiso en al menos una de las especificadas Región de AWS que AWS KMS keys
cifraron una clave de datos.
Al igual que otros conjuntos de claves de detección, el conjunto de claves de detección regional no tiene ningún efecto sobre el cifrado. Solo funciona cuando se descifran mensajes cifrados. Si utiliza un conjunto de claves de detección regional en un conjunto de claves múltiples que se utiliza para cifrar y descifrar, solo es efectivo al descifrar. Si utiliza un conjunto de claves de detección multirregional para cifrar los datos, solo o en un conjunto de claves múltiples, la operación de cifrado no se realizará correctamente.
importante
Si incluye un conjunto de claves de detección AWS KMS regional en un conjunto de claves de descifrado múltiple, el conjunto de claves de detección regional anula todas las restricciones de claves de KMS especificadas en otros anillos de claves del conjunto de claves múltiples. El conjunto de claves múltiples se comporta como el menos restrictivo. Un conjunto de claves de AWS KMS detección no tiene ningún efecto sobre el cifrado cuando se utiliza solo o en un conjunto de claves múltiples.
El conjunto de claves de detección regional SDK de cifrado de AWS para C intenta descifrar únicamente con claves de KMS de la región especificada. Cuando se utiliza un conjunto de claves de detección en SDK de cifrado de AWS para JavaScript y AWS Encryption SDK para .NET, se configura la región en el cliente. AWS KMS Estas AWS Encryption SDK implementaciones no filtran las claves de KMS por región, pero no AWS KMS permiten descifrar las claves de KMS de fuera de la región especificada.
Si utiliza un conjunto de claves de detección, le recomendamos que utilice un filtro de detección para limitar las claves de KMS utilizadas en el descifrado a las de las particiones Y especificadas. Cuentas de AWS Los filtros de detección son compatibles con las versiones 1.7.x y versiones posteriores del AWS Encryption SDK.
Por ejemplo, el código siguiente crea un conjunto de claves de detección AWS KMS regional con un filtro de detección. Este conjunto de claves limita las AWS Encryption SDK claves KMS de la cuenta 111122223333 en la región EE.UU. Oeste (Oregón) (us-west-2).
SDK de cifrado de AWS para JavaScript También exporta una excludeRegions
función para Node.js y el navegador. Esta función crea un conjunto de claves de detección AWS KMS regional que omite determinadas AWS KMS keys regiones. En el siguiente ejemplo, se crea un conjunto de claves de detección AWS KMS regional que se puede usar AWS KMS keys en la cuenta 111122223333 en todos los países Región de AWS excepto en EE. UU. Este (Virginia del Norte) (us-east-1).
No SDK de cifrado de AWS para C tiene un método análogo, pero puede implementarlo creando uno personalizado. ClientSupplier
Este ejemplo muestra el código de Node.js.
const discovery = true const clientProvider = excludeRegions(['us-east-1'], getKmsClient) const keyring = new KmsKeyringNode({ clientProvider, discovery, discoveryFilter: { accountIDs: [
111122223333
], partition: 'aws
' } })