Compartir a través de


Mensaje EnvelopedCms

CMS/PKCS #7 proporciona la clase EnvelopedCms para envolver mensajes digitalmente.

Envolver digitalmente cualquier mensaje lo protege mediante la aplicación de un servicio de seguridad conocido como confidencialidad de los datos.

El sobre digital utiliza el cifrado para mantener la confidencialidad del mensaje. Se genera una clave de sesión para cifrar el mensaje. A continuación, la propia clave de sesión se cifra con la clave pública del destinatario. La combinación del mensaje cifrado y la clave de sesión cifrada constituye el sobre digital. Cuando se recibe, la clave de sesión se descifra mediante la clave privada del destinatario. Después, el mensaje se descifra con la clave de sesión. La clave de sesión se puede utilizar tanto para cifrar como descifrar el mensaje, ya que es una clave simétrica.

Utilice la clase EnvelopedCms en todas las aplicaciones que tengan el requisito de maximizar la confidencialidad de los datos. El correo electrónico, con el estándar de seguridad S/MIME, ofrece un ejemplo de cómo se puede utilizar la clase EnvelopedCms para proporcionar seguridad. Además de otros servicios de seguridad, S/MIME especifica la capacidad para cifrar un mensaje de correo electrónico para varios destinatarios. Los sobres digitales se adaptan para satisfacer dicha necesidad.

Para cifrar un mensaje, utilice uno de los métodos Encrypt de la clase EnvelopedCms. El método System.Security.Cryptography.Pkcs.EnvelopedCms.Encrypt(System.Security.Cryptography.Pkcs.CmsRecipient) requiere que la aplicación configure primero las características del destinatario del mensaje mediante la construcción de un objeto CmsRecipient. La clase CmsRecipient almacena el certificado X509 del destinatario y la técnica mediante la que se establece una clave de sesión entre el remitente y el destinatario del mensaje. El método System.Security.Cryptography.Pkcs.EnvelopedCms.Encrypt presenta un cuadro de diálogo, con el fin de que el usuario pueda seleccionar el certificado de destinatario apropiado.

La clase EnvelopedCms admite envolver un mensaje para varios destinatarios. Configure el grupo de destinatarios en una colección CmsRecipientCollection para utilizarlo como entrada del método System.Security.Cryptography.Pkcs.EnvelopedCms.Encrypt(System.Security.Cryptography.Pkcs.CmsRecipientCollection).

Existen dos técnicas para establecer la clave de sesión entre el remitente y el destinatario de un mensaje. Los algoritmos de transporte de clave suelen utilizar el algoritmo RSA (https://go.microsoft.com/fwlink/?LinkId=98038https://go.microsoft.com/fwlink/?LinkId=98038), en el que un originador establece una clave de cifrado compartida con un destinatario mediante la generación de dicha clave y su posterior transporte al destinatario. Los algoritmos de acuerdo de claves suelen utilizar el algoritmo de acuerdo de claves Diffie-Hellman (https://go.microsoft.com/fwlink/?LinkId=98039https://go.microsoft.com/fwlink/?LinkId=98039). En él, dos partes establecen una clave de cifrado compartida al participar conjuntamente en su generación; por definición, las dos partes acuerdan esa clave.

La información para cada destinatario de un mensaje EnvelopedCms está disponible en la propiedad System.Security.Cryptography.Pkcs.EnvelopedCms.RecipientInfos. La información acerca de un destinatario que establece la clave de sesión con el remitente por medio de un algoritmo de transporte de claves se encuentra en un objeto KeyTransRecipientInfo. La información acerca de un destinatario que establece la clave de sesión con el remitente por medio de un algoritmo de acuerdo de claves se encuentra en un objeto KeyAgreeRecipientInfo.

Los mensajes EnvelopedCms pueden incluir atributos sin protección. Estos atributos no están cifrados, por lo que no tienen confidencialidad de los datos. Dichos atributos se almacenan en la propiedad System.Security.Cryptography.Pkcs.EnvelopedCms.UnprotectedAttributes.

Para descifrar el mensaje envuelto, utilice uno de los métodos Decrypt de la clase EnvelopedCms. El mensaje EnvelopedCms contiene la información de identificación de los destinatarios necesaria para el descifrado. Dicha información se encuentra en la propiedad RecipientInfos.

Para ver varios ejemplos de código que utilizan mensajes EnvelopedCms, vea Uso de System.Security.Cryptography.Pkcs.

Consulte también

Tareas

Cómo envolver un mensaje para un destinatario
Cómo envolver un mensaje para varios destinatarios

Referencia

CmsRecipient
CmsRecipientCollection
EnvelopedCms
KeyAgreeRecipientInfo
KeyTransRecipientInfo

Conceptos

Cómo firmar y envolver mensajes
Tipos de mensajes CMS/PKCS #7

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.