Conceptos en el AWS Encryption SDK - AWS Encryption 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.

Conceptos en el AWS Encryption SDK

En esta sección se presentan los conceptos utilizados en el y AWS Encryption SDK se proporciona un glosario y una referencia. Está diseñado para ayudarte a entender cómo AWS Encryption SDK funciona y los términos que utilizamos para describirlo.

¿Necesita ayuda?

Cifrado de sobre

La seguridad de los datos cifrados depende en parte de la protección de la clave de datos que permite descifrarlos. Una práctica recomendada aceptada para proteger la clave de datos consiste en cifrarla. Para ello, necesita otra clave de cifrado, conocida como clave de cifrado clave o clave de encapsulamiento. Esta práctica de utilizar una clave de encapsulamiento para cifrar las claves de datos se denomina cifrado de sobre.

Protección de las claves de datos

AWS Encryption SDK Encripta cada mensaje con una clave de datos única. Luego, cifra la clave de datos con la clave de encapsulamiento que especifique. Almacena las claves de datos cifradas con los datos cifrados en el mensaje cifrado que devuelve.

Para especificar la clave de encapsulamiento, utilice un conjunto de claves o proveedor de claves maestras.

Cifrado de sobres con AWS Encryption SDK
Cifrado de los mismos datos con varias claves múltiples

Puede cifrar la clave de datos con varias claves de encapsulamiento. Es posible que desee proporcionar diferentes claves de encapsulamiento para distintos usuarios, o claves de encapsulamiento de diferentes tipos o en diferentes ubicaciones. Cada una de las claves de encapsulamiento cifra la misma clave de datos. AWS Encryption SDK Almacena todas las claves de datos cifrados con los datos cifrados del mensaje cifrado.

Para descifrar los datos, debe proporcionar al menos una clave de encapsulamiento que pueda descifrar una de las claves de datos cifrados.

Cada clave de encapsulamiento cifra la misma clave de datos, lo que da como resultado una clave de datos cifrada para cada clave de encapsulamiento
Combinación de los puntos fuertes de varios algoritmos

Para cifrar los datos, de forma predeterminada, AWS Encryption SDK utiliza un sofisticado conjunto de algoritmos con AES cifrado GCM simétrico, una función de derivación de claves (HKDF) y firma. Para cifrar la clave de datos, puede especificar un algoritmo de cifrado simétrico o asimétrico adecuado a su clave de encapsulamiento.

En general, los algoritmos de cifrado de clave simétrica son más rápidos y producen textos cifrados más pequeños que el cifrado de clave pública o asimétrico. Sin embargo, los algoritmos de clave pública proporcionan una separación inherente entre las funciones y facilitan la administración de las claves. Para combinar las fortalezas de cada uno, puede cifrar datos sin procesar mediante el cifrado de clave simétrica y, a continuación, cifrar la clave de datos con el cifrado de clave pública.

Clave de datos

Una clave de datos es una clave de cifrado que AWS Encryption SDK utiliza para cifrar sus datos. Cada clave de datos es una matriz de bytes que es conforme a los requisitos para claves criptográficas. A menos que utilices el almacenamiento en caché de claves de datos, AWS Encryption SDK utiliza una clave de datos única para cifrar cada mensaje.

No es necesario especificar, generar, implementar, extender, proteger ni usar claves de datos. El AWS Encryption SDK se encarga de la tarea automáticamente cuando llama a las operaciones de cifrado y descifrado.

Para proteger sus claves de datos, las AWS Encryption SDK cifra en una o más claves de cifrado, conocidas como claves de empaquetado o claves maestras. Una vez que AWS Encryption SDK utiliza las claves de datos de texto sin formato para cifrar los datos, las elimina de la memoria lo antes posible. A continuación, almacena las claves de datos cifradas con los datos cifrados en el mensaje cifrado que devuelven las operaciones de cifrado. Para obtener más información, consulte Funcionamiento del AWS Encryption SDK.

sugerencia

En el AWS Encryption SDK, distinguimos las claves de datos de las claves de cifrado de datos. Varios de los conjuntos de algoritmos compatibles, incluido el conjunto predeterminado, utilizan una función de derivación de clave que impide que la clave de datos alcance sus límites criptográficos. La función de derivación de clave toma la clave de datos como entrada y devuelve una clave de cifrado de datos que es la que se utiliza realmente para cifrar los datos. Por este motivo, a menudo decimos que los datos se cifran "bajo" una clave de datos, en lugar de "por" una clave de datos.

Cada clave de datos cifrados incluye metadatos, incluido el identificador de la clave de encapsulamiento que la cifró. Estos metadatos facilitan la identificación de AWS Encryption SDK las claves de empaquetado válidas al descifrar.

Clave de encapsulamiento

Una clave de encapsulamiento es una clave de cifrado de claves que el AWS Encryption SDK utiliza para cifrar la clave de datos que cifra sus datos. Cada clave de datos de texto no cifrado se puede cifrar en una o varias claves de encapsulamiento. Usted determina qué claves de encapsulamiento se utilizan para proteger sus datos al configurar un conjunto de claves o un proveedor de claves maestras.

nota

La clave de encapsulamiento hace referencia a las claves de un conjunto de claves o de un proveedor de claves maestras. La clave maestra suele estar asociada a la clase MasterKey de la que se crea una instancia cuando utiliza un proveedor de claves maestras.

AWS Encryption SDK Admite varias claves de empaquetado de uso común, como las simétricas AWS Key Management Service (AWS KMS) AWS KMS keys(incluidas las claves multirregionales), KMS las claves sin procesar AES GCM (estándar de cifrado avanzado/modo contador de Galois) y las claves sin procesar. RSA También puede ampliar o implementar sus propias claves de encapsulamiento.

Cuando se utiliza el cifrado de sobre, es necesario proteger las claves de encapsulamiento contra el acceso no autorizado. Esto lo puede hacer de cualquiera de las siguientes maneras:

Si no tiene un sistema de administración de claves, le recomendamos que lo haga AWS KMS. Se AWS Encryption SDK integra AWS KMS para ayudarte a proteger y usar tus llaves de embalaje. Sin embargo, AWS Encryption SDK no requiere AWS ningún AWS servicio.

Conjuntos de claves y proveedores de claves maestras

Para especificar las claves de empaquetado que se utilizan para el cifrado y el descifrado, utilice un anillo de claves (C, C#/. NET, y JavaScript) o un proveedor de claves maestras (Java, Python,CLI). Puede utilizar los llaveros y los proveedores de claves maestras que AWS Encryption SDK ofrecen o diseñar sus propias implementaciones. El AWS Encryption SDK proporciona conjuntos de claves y proveedores de llaves maestras que son compatibles entre sí y están sujetos a restricciones de idioma. Para obtener más información, consulte Compatibilidad de conjuntos de claves.

Un conjunto de claves genera, cifra y descifra claves de datos. Al definir un conjunto de claves, puede especificar las claves de encapsulamiento que cifran sus claves de datos. La mayoría de los conjuntos de claves especifican al menos una clave de encapsulamiento o un servicio que proporciona y protege las claves de encapsulamiento. También puede definir un conjunto de claves sin claves de encapsulamiento o un conjunto de claves más complejo con opciones de configuración adicionales. Si necesita ayuda para elegir y usar los llaveros que AWS Encryption SDK definen, consulte. Uso de conjuntos de claves Los llaveros se admiten en C, C#/. NET, y JavaScript la versión 3. x del SDK de cifrado de AWS para Java.

Un proveedor de claves maestras es una alternativa a un conjunto de claves. El proveedor de claves maestras devuelve las claves de encapsulamiento (o claves maestras) que especifique. Cada clave maestra está asociada a un proveedor de claves maestras, pero un proveedor de claves maestras suele proporcionar varias claves maestras. Los proveedores de claves maestras son compatibles con Java, Python y el AWS cifradoCLI.

Debe especificar un conjunto de claves (o un proveedor de claves maestras) para el cifrado. Puede especificar el mismo conjunto de claves (o proveedor de claves maestras) o uno diferente para el descifrado. Al cifrar, AWS Encryption SDK utiliza todas las claves de empaquetado que especifique para cifrar la clave de datos. Al descifrar, el AWS Encryption SDK utiliza únicamente las claves de encapsulamiento que especifique para descifrar una clave de datos cifrados. Especificar las claves de empaquetado para el descifrado es opcional, pero es una AWS Encryption SDK práctica recomendada.

Para obtener más información sobre la especificación de claves de encapsulamiento, consulte Seleccionar las claves de encapsulamiento.

Contexto de cifrado

Para mejorar la seguridad de las operaciones criptográficas, incluya un contexto de cifrado en todas las solicitudes de cifrado de datos. El uso de un contexto de cifrado es opcional, pero es una práctica criptográfica recomendada que le aconsejamos.

Un contexto de cifrado es un conjunto de pares de nombre-valor que contienen datos autenticados adicionales no secretos y arbitrarios. El contexto de cifrado puede contener todos los datos que elija, pero suele constar de datos que son útiles para el registro y el seguimiento, tales como los datos sobre el tipo de archivo, la finalidad o la propiedad. Cuando se descifran los datos, el contexto de cifrado se vincula criptográficamente a los datos cifrados, de tal forma que se requiere el mismo contexto de cifrado para descifrar los datos. El AWS Encryption SDK incluye el contexto de cifrado en texto no cifrado en el encabezado del mensaje cifrado que devuelve.

El contexto de cifrado que AWS Encryption SDK utilizan consiste en el contexto de cifrado que especifique y un par de claves públicas que agrega el administrador de materiales criptográficos (CMM). En concreto, cada vez que se utiliza un algoritmo de cifrado con firma, se CMM añade un par nombre-valor al contexto de cifrado compuesto por un nombre reservado y un valor que representa la clave de verificación pública. aws-crypto-public-key El aws-crypto-public-key nombre en el contexto de cifrado lo reserva el nombre AWS Encryption SDK y no se puede utilizar como nombre en ningún otro par del contexto de cifrado. Para obtener más información, consulte AADla Referencia sobre el formato de los mensajes.

El siguiente ejemplo de contexto de cifrado consta de dos pares de contextos de cifrado especificados en la solicitud y el par de claves públicas que CMM agrega.

"Purpose"="Test", "Department"="IT", aws-crypto-public-key=<public key>

Para descifrar los datos, se transfieren en el mensaje cifrado. Como AWS Encryption SDK pueden extraer el contexto de cifrado del encabezado del mensaje cifrado, no es necesario que proporcione el contexto de cifrado por separado. No obstante, el contexto de cifrado puede ayudarle a confirmar que está descifrando el mensaje cifrado correcto.

  • En la interfaz de línea de AWS Encryption SDK comandos (CLI), si proporciona un contexto de cifrado en un comando de descifrado, CLI comprueba que los valores estén presentes en el contexto de cifrado del mensaje cifrado antes de que devuelva los datos en texto plano.

  • En otras implementaciones de lenguaje de programación, la respuesta de descifrado incluye el contexto de cifrado y los datos en texto no cifrado. La función de descifrado en la aplicación debería comprobar siempre que el contexto de cifrado en la respuesta de descifrado incluya el contexto de cifrado en la solicitud de cifrado (o un subconjunto) antes de devolver los datos en texto no cifrado.

nota

Con la versión 4. x de AWS Encryption SDK los cuatro. NETy versión 3. x de SDK de cifrado de AWS para Java, puede requerir un contexto de cifrado en todas las solicitudes de cifrado con el contexto CMM de cifrado requerido.

Al elegir un contexto de cifrado, recuerde que no es un secreto. El contexto de cifrado se muestra en texto no cifrado en el encabezado del mensaje cifrado que devuelve AWS Encryption SDK . Si lo está utilizando AWS Key Management Service, es posible que el contexto de cifrado también aparezca en texto plano en los registros y registros de auditoría, por ejemplo. AWS CloudTrail

Para ver ejemplos de cómo enviar y verificar un contexto de cifrado en el código, consulte los ejemplos de su lenguaje de programación preferido.

Mensaje cifrado

Al cifrar los datos con el AWS Encryption SDK, devuelve un mensaje cifrado.

Un mensaje cifrado es una estructura de datos formateados que incluye los datos cifrados junto con copias cifradas de las claves de datos, el ID del algoritmo y, opcionalmente, un contexto de cifrado y una firma digital. Las operaciones de cifrado del AWS Encryption SDK devuelven un mensaje cifrado y las operaciones de descifrado toman el mensaje cifrado como entrada.

Combinar los datos cifrados y sus claves de datos cifradas simplifica la operación de descifrado y evita tener que almacenar y administrar claves de datos cifradas de forma independiente de los datos que cifran.

Para obtener información técnica sobre el mensaje cifrado, consulte Formato del mensaje cifrado.

Conjunto de algoritmos

AWS Encryption SDK Utiliza un conjunto de algoritmos para cifrar y firmar los datos del mensaje cifrado que devuelven las operaciones de cifrado y descifrado. AWS Encryption SDK admite varios conjuntos de algoritmos. Todos los conjuntos compatibles utilizan el estándar de cifrado avanzado (AES) como algoritmo principal y lo combinan con otros algoritmos y valores.

AWS Encryption SDK Establece un conjunto de algoritmos recomendado como predeterminado para todas las operaciones de cifrado. Este conjunto predeterminado puede cambiar en función de las mejoras aportadas a los estándares y las prácticas recomendadas. Puede especificar un conjunto de algoritmos alternativo en las solicitudes de cifrado de datos o al crear un administrador de materiales criptográficos (CMM), pero a menos que se requiera un algoritmo alternativo para su situación, lo mejor es utilizar el predeterminado. El valor predeterminado actual esAES: GCM con una función de derivación de extract-and-expand claves HMAC basada en (HKDF), un compromiso de clave, una firma con un algoritmo de firma digital de curva elíptica (ECDSA) y una clave de cifrado de 256 bits.

Si su aplicación requiere un alto rendimiento y los usuarios que cifran los datos y los que los descifran gozan de la misma confianza, puede considerar la posibilidad de especificar un conjunto de algoritmos sin firma digital. Sin embargo, recomendamos encarecidamente un conjunto de algoritmos que incluya el compromiso clave y una función de derivación de claves. Los conjuntos de algoritmos sin estas características solamente se admiten con fines de compatibilidad con versiones anteriores.

Administrador de materiales criptográficos

El administrador de materiales criptográficos (CMM) reúne los materiales criptográficos que se utilizan para cifrar y descifrar datos. Los materiales criptográficos incluyen las claves de datos cifradas y en texto no cifrado, así como una clave de firma de mensaje opcional. Nunca interactúas directamente con ellos. CMM Los métodos de cifrado y descifrado se encargan de ello.

Puede usar el almacenamiento en caché predeterminado CMM o el CMM que AWS Encryption SDK proporcionan, o escribir uno personalizadoCMM. Y puede especificar unaCMM, pero no es obligatoria. Al especificar un conjunto de claves o un proveedor de claves maestras, se AWS Encryption SDK crea un valor predeterminado CMM para usted. El valor predeterminado CMM obtiene los materiales de cifrado o descifrado del conjunto de claves o del proveedor de claves maestras que especifique. Esto podría requerir una llamada a un servicio criptográfico como AWS Key Management Service (AWS KMS).

Como CMM actúa como enlace entre el conjunto de claves AWS Encryption SDK y el conjunto de claves (o el proveedor de claves maestras), es un punto ideal para la personalización y la ampliación, por ejemplo, para la aplicación de políticas y el almacenamiento en caché. AWS Encryption SDK Proporciona un almacenamiento en caché CMM para respaldar el almacenamiento en caché de las claves de datos.

Cifrado simétrico y asimétrico

El cifrado simétrico utiliza la misma clave para cifrar y descifrar datos.

El cifrado asimétrico utiliza un par de claves de datos relacionados matemáticamente. Una clave del par cifra los datos; solo la otra clave del par puede descifrarlos. Para obtener más información, consulte Algoritmos criptográficos en la AWS Guía de herramientas y servicios criptográficos.

AWS Encryption SDK Utiliza el cifrado de sobres. Cifra los datos con una clave de datos simétrica. Cifra la clave de datos simétrica con una o más claves de encapsulamiento simétricas o asimétricas. Devuelve un mensaje cifrado que incluye los datos cifrados y al menos una copia cifrada de la clave de datos.

Cifrar los datos (cifrado simétrico)

Para cifrar los datos, AWS Encryption SDK utiliza una clave de datos simétrica y un conjunto de algoritmos que incluye un algoritmo de cifrado simétrico. Para descifrar los datos, AWS Encryption SDK utiliza la misma clave de datos y el mismo conjunto de algoritmos.

Cifrar la clave de datos (cifrado simétrico o asimétrico)

El conjunto de claves o proveedor de claves maestras que proporciona a una operación de cifrado y descifrado determina cómo se cifra y descifra la clave de datos simétrica. Puede elegir un conjunto de claves o un proveedor de claves maestras que utilice cifrado simétrico, como un AWS KMS anillo de claves, o uno que utilice cifrado asimétrico, como un anillo de claves sin procesar o. RSA JceMasterKey

Compromiso clave

AWS Encryption SDK Admite el compromiso clave (también conocido como robustez), una propiedad de seguridad que garantiza que cada texto cifrado solo se pueda descifrar en un único texto plano. Para ello, el compromiso clave garantiza que solo se utilice la clave de datos que cifró su mensaje para descifrarlo. Cifrar y descifrar los datos con un compromiso clave es una práctica recomendada de AWS Encryption SDK.

La mayoría de los cifrados simétricos modernos (incluidosAES) cifran un texto sin formato con una única clave secreta, como la clave de datos única que se utiliza para cifrar cada mensaje de texto sin formato. AWS Encryption SDK Al descifrar estos datos con la misma clave de datos, se obtiene un texto no cifrado idéntico al original. El descifrado con una clave diferente suele fallar. Sin embargo, es posible descifrar un texto cifrado con dos claves diferentes. En raras ocasiones, es posible encontrar una clave que pueda descifrar algunos bytes del texto cifrado y convertirlo en un texto no cifrado diferente, pero aún inteligible.

AWS Encryption SDK Siempre cifra cada mensaje de texto sin formato con una clave de datos única. Puede cifrar esa clave de datos con varias claves de encapsulamiento (o claves maestras), pero las claves de encapsulamiento siempre cifran la misma clave de datos. Sin embargo, un mensaje cifrado sofisticado y creado manualmente puede contener diferentes claves de datos, cada una cifrada con una clave de encapsulamiento diferente. Por ejemplo, si un usuario descifra el mensaje cifrado, devuelve 0x0 (falso), mientras que otro usuario que descifra el mismo mensaje cifrado obtiene 0x1 (verdadero).

Para evitar este escenario, AWS Encryption SDK admite el compromiso de clave al cifrar y descifrar. Cuando AWS Encryption SDK cifra un mensaje con un compromiso de clave, vincula criptográficamente la clave de datos única que produjo el texto cifrado a la cadena de compromiso de clave, un identificador de clave de datos no secreto. A continuación, almacena la cadena de compromiso clave en los metadatos del mensaje cifrado. Al descifrar un mensaje con una clave de confirmación, AWS Encryption SDK comprueba que la clave de datos es la única clave de ese mensaje cifrado. Si se produce un error en la verificación de la clave de datos, se produce un error en la operación de descifrado.

Se introduce la asistencia para el compromiso clave en la versión 1.7.x, que puede descifrar los mensajes con un compromiso clave, pero no cifrará con un compromiso clave. Puede utilizar esta versión para aprovechar al máximo la capacidad de descifrar el texto cifrado con el compromiso clave. La versión 2.0.x incluye soporte completo para el compromiso clave. De forma predeterminada, cifra y descifra solo con el compromiso clave. Se trata de una configuración ideal para las aplicaciones que no necesitan descifrar el texto cifrado en versiones anteriores del. AWS Encryption SDK

Si bien la práctica recomendada es cifrar y descifrar con compromiso clave, le dejamos decidir cuándo utilizarla y ajustar el ritmo al que la adopta. A partir de la versión 1.7. x, AWS Encryption SDK admite una política de compromiso que establece el conjunto de algoritmos predeterminado y limita los conjuntos de algoritmos que se pueden utilizar. Esta política determina si sus datos se cifran y descifran con compromiso clave.

El compromiso clave da como resultado un mensaje cifrado un poco más grande (+ 30 bytes) y su procesamiento lleva más tiempo. Si su aplicación es muy sensible al tamaño o al rendimiento, puede optar por excluirse del compromiso clave. Pero hágalo solo si es necesario.

Para obtener más información sobre cómo migrar a versiones 1.7.x y 2.0.x, incluidas sus características de compromiso clave, consulte Migrar su AWS Encryption SDK. Para obtener información técnica sobre el compromiso clave, consulte AWS Encryption SDK referencia de algoritmos y AWS Encryption SDK referencia de formato de mensaje.

Política de compromiso

Una política de compromiso es una configuración que determina si su aplicación cifra y descifra con compromiso clave. Cifrar y descifrar los datos con un compromiso clave es una práctica recomendada de AWS Encryption SDK.

La política de compromiso tiene tres valores.

nota

Es posible que tenga que desplazarse en forma horizontal o vertical para ver toda la tabla.

Valores de la política de compromiso
Valor Cifra con un compromiso clave Cifra sin un compromiso clave Descifra con un compromiso clave Descifra sin un compromiso clave
ForbidEncryptAllowDecrypt Red circle with white X inside, indicating prohibition or cancellation. Green checkmark icon indicating approval or confirmation. Green checkmark icon indicating approval or confirmation. Green checkmark icon indicating approval or confirmation.
RequireEncryptAllowDecrypt Green checkmark icon indicating approval or confirmation. Red circle with white X inside, indicating prohibition or cancellation. Green checkmark icon indicating approval or confirmation. Green checkmark icon indicating approval or confirmation.
RequireEncryptRequireDecrypt Green checkmark icon indicating approval or confirmation. Red circle with white X inside, indicating prohibition or cancellation. Green checkmark icon indicating approval or confirmation. Red circle with white X inside, indicating prohibition or cancellation.

La configuración de la política de compromiso se introdujo en AWS Encryption SDK la versión 1.7. x. Es válido en todos los lenguajes de programación compatibles.

  • ForbidEncryptAllowDecrypt descifra con o sin compromiso clave, pero no cifra con compromiso clave. Este valor, introducido en la versión 1.7. x, está diseñado para preparar a todos los hosts que ejecutan su aplicación para que descifren con compromiso de clave antes de que encuentren un texto cifrado con compromiso de clave.

  • RequireEncryptAllowDecrypt siempre cifra con un compromiso clave. Puede descifrar con o sin compromiso clave. Este valor introducido en la versión 2.0.x le permite empezar a cifrar con un compromiso clave, pero seguir descifrando textos cifrados heredados sin compromiso clave.

  • RequireEncryptRequireDecrypt cifra y descifra solo con el compromiso clave. Este valor es el predeterminado para la versión 2.0.x. Utilice este valor cuando esté seguro de que todos sus textos cifrados están cifrados con un compromiso clave.

La configuración de la política de compromiso determina qué conjuntos de algoritmos puede utilizar. A partir de la versión 1.7. x, AWS Encryption SDK admite conjuntos de algoritmos para el compromiso clave, con y sin firma. Si especifica un conjunto de algoritmos que entra en conflicto con su política de compromiso, el AWS Encryption SDK devuelve un error.

Si necesita ayuda para establecer su política de compromiso, consulte Establecer su política de compromiso.

Firmas digitales

Para garantizar la integridad de un mensaje digital al pasar de un sistema a otro, puede aplicar una firma digital al mensaje. Las firmas digitales son siempre asimétricas. Utiliza su clave privada para crear la firma y anexarla al mensaje original. El destinatario usa una clave pública para comprobar que el mensaje no se ha modificado desde que lo firmó.

AWS Encryption SDK Cifra sus datos mediante un algoritmo de cifrado autenticado, AES -GCM, y el proceso de descifrado verifica la integridad y autenticidad de un mensaje cifrado sin utilizar una firma digital. Sin embargo, dado AES que GCM utiliza claves simétricas, cualquier persona que pueda descifrar la clave de datos utilizada para descifrar el texto cifrado también podría crear manualmente un nuevo texto cifrado, lo que podría suponer un problema de seguridad. Por ejemplo, si utiliza una AWS KMS clave como clave de empaquetado, significa que es posible que un usuario con permisos de descifrado cree textos KMS cifrados sin necesidad de llamar a Encrypt. KMS

Para evitar este problema, AWS Encryption SDK admite añadir una firma con un algoritmo de firma digital de curva elíptica (ECDSA) al final de los mensajes cifrados. Cuando se utiliza un conjunto de algoritmos de firma, AWS Encryption SDK genera una clave privada temporal y una clave pública para cada mensaje cifrado. AWS Encryption SDK Almacena la clave pública en el contexto de cifrado de la clave de datos y descarta la clave privada, por lo que nadie puede crear otra firma que se verifique con la clave pública. Como el algoritmo vincula la clave pública a la clave de datos cifrados como datos autenticados adicionales en el encabezado del mensaje, un usuario que solo pueda descifrar mensajes no podrá alterar la clave pública.

La verificación de firmas añade un importante coste de rendimiento en el descifrado. Si los usuarios que cifran los datos y los que los descifran tienen el mismo nivel de confianza, considere la posibilidad de utilizar un conjunto de algoritmos que no incluya firmas.