Compartilhar via


Signature Creation

Windows Mobile Not SupportedWindows Embedded CE Supported

9/8/2008

Um assinatura digital é usado para verificação da origem de um documento eletrônico e para não-repúdio. O uso de uma assinatura digital não alteração de dados no arquivo. Em vez disso, um hash do documento é gerada que pode uma seja fornecida com o documento ou transmitidos separadamente. Assinaturas digitais usam um público-chave algoritmo.

Para criar um assinatura digital de um arquivo, executar o arquivo através de uma função hash e, em seguida, assinar o hash resultante com um chave particular. Uma maneira fácil para criar um assinatura digital de um arquivo é usar Signfile.exe, que está incluído no Construtor de expressões de plataforma Microsoft. Signfile.exe é uma ferramenta para assinar um arquivo executável com um chave particular fornecidos por um provedor de serviços de criptografia (CSP).

Signfile.exe usa o Seguro Hashing Algorithm (SHA) para calcular o criptográfico hash. SHA gera um 20-hash byte de uma seqüência de byte arbitrariamente tamanho. Signfile.exe PADs o hash conforme especificado pelo Public-Key Cryptography Standards #1 (PKCS1) e criptografa usando o algoritmo chave pública RSA. A chave comprimento módulo pode ser de 512 por 1.024 bits. A assinatura resultante é o mesmo tamanho como o módulo. Exemplo, a assinatura de uma chave 1,024 bit é 128 bytes. Signfile.exe em seguida, usa o ImageAddCertificate e ImageGetDigestStream Funções Microsoft® Windows NT® para incorporar a assinatura em um arquivo executável portátil (PE).

A seguinte lista mostra o conteúdo da memória de arquivo PE:

  • Cabeçalho MS-DOS
  • Deslocamento de cabeçalho do PE (deslocamento 0x3c)
  • Cabeçalho do PE
  • Cabeçalhos de seção
  • Seção
  • Depurar informações e certificados (se houver)

O cabeçalho do PE começa com um 4-seqüência de bytes, "PE\0\0", que identifica o cabeçalho MS-DOS®. O cabeçalho MS-DOS é seguido por um padrão cabeçalho Common Object File Format (COFF). Esse cabeçalho COFF é seguido por um opcional cabeçalho que está sempre presente nos arquivos .exe e .dll Windows. O último campo em um cabeçalho do PE é um opcional tabela Diretório dados. A seguinte tabela mostra o tamanho dos elementos de cabeçalho do PE.

Elemento cabeçalho do PE Tamanho

"PE\0\0"

4 bytes

Cabeçalho COFF

20 bytes

Cabeçalho opcional; padrão para Arquivos Windows

96 bytes

Cabeçalho opcional; tabela Diretório dados

Tamanho varia

Cada entrada na tabela de Diretório dados consiste de um IMAGE_DATA_DIRECTORY estrutura. A quinta estrutura na tabela de Diretório dados contém informações tabela Certificado. Isso é armazenado em uma matriz de WIN_CERTIFICATE estruturas. Um Certificado é um digitalmente assinado declaração que contém informações sobre uma entidade e chave pública dessa entidade. Certificados não serão carregados na memória como parte de arquivo PE.

O seguinte exemplo de código mostra o formato de um WIN_CERTIFICATE estrutura que é necessário para suporte a PKCS1 padrão.

typedef struct {
     // Standard WIN_CERTIFICATE fields (8 bytes)
     DWORD dwLength;
     WORD wRevision;
     WORD wCertificateType;    // = WIN_CERT_TYPE_PKCS1_SIGN
     // WIN_CERT_TYPE_PKCS1_SIGN fields follow
     DWORD cbSignedData;
     // optional signed attributes
     BYTE bSignedData[MAX_WIN_CERT_SIGN_DATA_LEN];
     BYTE bSign[MAX_RSA_KEY_BITS/8]; // PKCS1 signature
} PKCS1_MODULE_SIGN ;

Signfile.exe acrescenta o WIN_CERTIFICATE estrutura para o fim do arquivo e atualiza a cabeçalho do arquivo de acordo. Para codificar Signfile.exe exemplo, consulte % _WINCEROOT%\Public\Common\Oak\Tools\Signfile.

See Also

Concepts

Trusted Environment Creation
Creating Digital Signatures

Other Resources

Certificates