Conceitos de sintaxe de mensagens criptográficas do PKCS nº 7

As funções de mensagem CryptoAPI seguem o padrão de sintaxe de mensagem criptográfica (CMS)do PKCS nº 7. Os desenvolvedores precisam estar familiarizados com essa especificação para usar com mais eficiência as funções de mensagem de baixo nível. Algumas de suas definições são realçadas aqui.

O padrão PKCS nº 7 descreve uma sintaxe geral para dados que podem ter criptografia aplicada a ele, como assinaturas digitais e envelopes digitais. A sintaxe admite recursão, para que, por exemplo, um envelope possa ser aninhado dentro de outro, ou uma parte possa assinar dados digitais que já foram colocados em um envelope. Ele também permite que atributos arbitrários, como o tempo de assinatura, sejam autenticados junto com o conteúdo de uma mensagem. Além disso, ele fornece outros atributos, como contraassinaturas, a serem associados a uma assinatura.

O tipo de dados contidos em uma mensagem PKCS nº 7 é chamado de tipo de conteúdo. Há duas classes de tipos de conteúdo: Base e Avançado.

  • Os tipos de conteúdo base contêm apenas dados sem aprimoramentos criptográficos. Atualmente, há apenas um tipo de conteúdo nessa classe, o tipo de conteúdo de dados.
  • Tipos de conteúdo aprimorados contêm dados de algum tipo (possivelmente criptografado) e outros aprimoramentos criptográficos (como hashes ou assinaturas).

O conteúdo na classe Avançado emprega encapsulamento, dando origem aos termos conteúdo externo (aquele que contém os aprimoramentos) e conteúdo interno (aquele que está sendo aprimorado). Por exemplo, uma classe Enhanced pode conter o tipo de conteúdo de dados (classe Base) que tem uma assinatura incluída nele. Nesse caso, o tipo de conteúdo de dados é o conteúdo interno e a combinação do tipo de conteúdo de dados e da assinatura forma o conteúdo externo.

Os tipos de conteúdo definidos no padrão PKCS nº 7 são os seguintes.

Tipo de conteúdo Descrição
Dados Uma cadeia de caracteres BYTE (octeto).
Dados assinados Conteúdo de qualquer tipo e hashes de mensagem criptografados (resumos) do conteúdo para zero ou mais signatários.
Dados enveloped Conteúdo criptografado de qualquer tipo e chaves de criptografia de conteúdo criptografadas para um ou mais destinatários. A combinação de conteúdo criptografado e chave de criptografia de conteúdo criptografada para um destinatário é um envelope digital para esse destinatário.
Dados assinados e envelopes Conteúdo criptografado de qualquer tipo, chaves de criptografia de conteúdo criptografadas para um ou mais destinatários e resumos de mensagens criptografados duplamente para um ou mais signatários. A criptografia dupla consiste em uma criptografia com a chave privada de um signatário seguida por uma criptografia com a chave de criptografia de conteúdo.
Dados digeridos Conteúdo de qualquer tipo e um hash de mensagem (resumo) do conteúdo.
Dados criptografados Conteúdo criptografado de qualquer tipo. Ao contrário do tipo de conteúdo de dados enveloped, o tipo de conteúdo de dados criptografados não tem destinatários nem chaves de criptografia de conteúdo criptografadas. Presume-se que as chaves sejam gerenciadas por outros meios.

 

Observação

Em toda a especificação PKCS nº 7, os termos resumo e resumo referem-se ao valor produzido da aplicação de um algoritmo de hash aos dados. Esta documentação usa os termos hash e hash para a mesma finalidade. Por exemplo, o tipo de dados usado com as funções de mensagem de baixo nível é chamado de hash em vez de digerido. Para fins desta documentação, os dois conjuntos de termos podem ser usados de forma intercambiável.