Share via


Componentes de los mensajes CMS/PKCS #7

La estructura de los mensajes CMS/PKCS #7 facilita la implementación de uno o varios servicios en los mensajes. Los atributos también se pueden asociar con el mensaje CMS/PKCS #7, lo que proporciona información adicional acerca del mensaje.

Datos que se van a proteger

CMS/PKCS #7 tiene la capacidad de aplicar varios servicios de seguridad a los datos, para lo que los almacena en un objeto de ContentInfo. Este objeto es una propiedad de las dos clases principales que protegen los datos en el espacio de nombres System.Security.Cryptography.Pkcs, SignedCms y EnvelopedCms. El objeto ContentInfo puede almacenar datos sin protección, pero también puede encapsular datos que antes tenían la protección de algún servicio de seguridad de CMS/PKCS #7. Esta encapsulación permite aplicar capas de seguridad anidadas a los datos. Por ejemplo, los datos que ya se han firmado digitalmente se pueden envolver digitalmente.

Los datos que se suministran junto con las capas de protección nuevas de los mensajes CMS/PKCS #7, que se encuentran en el objeto ContentInfo, se denominan el contenido interior del mensaje CMS/PKCS #7. Los datos resultantes de la aplicación de dicha protección se denominan el contenido exterior del mensaje CMS/PKCS #7. Para obtener el contenido exterior, hay que invocar el método Encode del objeto del mensaje CMS/PKCS #7 aplicable. En la práctica, esto implica invocar System.Security.Cryptography.Pkcs.SignedCms.Encode o System.Security.Cryptography.Pkcs.EnvelopedCms.Encode.

Para obtener más información acerca de los datos que están protegidos por varios servicios de seguridad, consulte Mensaje CMS/PKCS #7 envuelto y firmado. Para ver un ejemplo de código de datos protegidos por varios servicios de seguridad, consulte Cómo firmar y envolver mensajes.

Atributos

CMS/PKCS #7 le permite colocar atributos en los mensajes protegidos. Los atributos se componen de un identificador de objetos (Oid) que identifica el tipo de atributo y de los datos que contienen el valor del atributo. La opción, la ubicación y las características de estos atributos dependen del tipo de mensaje CMS/PKCS #7.

Los mensajes SignedCms pueden llevar dos tipos de atributos específicos de la firma: los que se firman junto con el contenido del mensaje y los que permanecen sin firmar. Para obtener más información, consulte Mensaje SignedCms. Los mensajes de EnvelopedCms pueden llevar atributos que permanecen sin cifrar. Para obtener más información, consulte Mensaje EnvelopedCms.

El espacio de nombres System.Security.Cryptography.Pkcs incluye las siguientes clases de atributos. Algunos los requieren las normas de CMS/PKCS #7, mientras que otros son atributos útiles en los escenarios de muchas aplicaciones:

Los atributos personalizados también se pueden modelar para que se ajusten a las necesidades de las aplicaciones. Derivar una clase de atributo personalizada de Pkcs9AttributeObject.

Sujetos

En los mensajes CMS/PKCS #7, un sujeto es cualquier entidad implicada en la creación o el consumo del mensaje. Dependiendo del comportamiento de una aplicación, los sujetos pueden desempeñar varias funciones diferentes. Algunos ejemplos de dichas funciones incluyen: remitente, autor, firmante, contrafirmante, destinatario o lector de un mensaje, o bien alguna combinación de ellas. El sujeto puede ser una persona, una aplicación de software o cualquier otra entidad que tenga una identidad única. Las dos clases principales que encarnan los sujetos en System.Security.Cryptography.Pkcs son CmsSigner y CmsRecipient.

Los sujetos de CMS/PKCS #7 utilizan credenciales criptográficas para realizar sus operaciones. Dichas credenciales suelen adoptar la forma de un certificado de clave pública con una clave privada asociada. Los sujetos se identifican y ubican por medio de su certificado de clave pública. Dicho certificado se puede identificar de forma única de una de estas dos formas.

  • El nombre completo del emisor, junto con un número de serie del certificado específico del emisor

  • Un identificador de clave de sujeto

Estos mecanismos de identificación se representan en la enumeración de SubjectIdentifierType. Algunos de los constructores que se utilizan en las clases CmsSigner y CmsRecipient toman un miembro de SubjectIdentifierType como entrada.

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.