PAdES (PDF Advanced Electronic Signatures)
O PAdES (PDF Advanced Electronic Signatures) é um conjunto de perfis definidos pelo ETSI (European Telecommunications Standards Institute) com o objetivo de assegurar a validade e integridade de assinaturas eletrônicas em documentos PDF.
Esse padrão é especificado na norma ETSI TS 102 778-1, a qual expande o padrão PDF da ISO 32000-1 para incluir informações adicionais que permitem a verificação contínua da assinatura, mesmo após o vencimento ou revogação do certificado digital original.
A norma ISO 32000-1 define o Portable Document Format (PDF), um formato digital para representação de documentos que facilita a troca e visualização de arquivos eletrônicos de maneira confiável, independentemente do ambiente de criação, visualização ou impressão.
Os perfis PAdES integram várias camadas de segurança, como carimbos de tempo, dados de revogação de certificados e validação de longo prazo. Esses elementos asseguram que as assinaturas possam ser verificadas mesmo anos após sua criação. O PAdES é amplamente adotado em setores que exigem alta segurança e conformidade regulatória, como os setores financeiro, jurídico e governamental, fornecendo uma solução confiável para assinaturas digitais em documentos PDF.
Termos importantes
Definições que podem auxiliar no entendimento dos termos abordados:
- Assinatura de certificação (certification signature): Assinatura que é usada em conjunto com permissões de detecção de modificação (MDP) conforme definido pela ISO 32000-1, cláusula 12.8.2.2.
- Manipulador de assinatura em conformidade (conforming signature handler): Aplicativo de software, ou parte de um aplicativo de software, que sabe como executar operações de assinatura digital (por exemplo, assinar e/ou verificar) em conformidade com a ISO 32000-1 e os requisitos do perfil apropriado.
- Assinatura em PDF (PDF signature): Objeto de dados binários baseado no CMS ou sintaxe relacionada contendo uma assinatura digital colocada dentro de uma estrutura de documento PDF conforme especificado na ISO 32000-1, cláusula 12.8 com outras informações sobre a assinatura aplicada quando foi criada pela primeira vez.
- Assinatura serial em PDF (PDF serial signature): Fluxo de trabalho de assinatura específico onde o segundo (e próximos) signatários de um PDF não apenas assinam o documento, mas também a assinatura do signatário anterior e qualquer modificação que também possa ter ocorrido (por exemplo, preenchimento de formulário).
- Dicionário de assinaturas (signature dictionary): Estrutura de dados PDF, do tipo dicionário, conforme descrito na ISO 32000-1, cláusula 12.8.1, que contém todas as informações sobre a Assinatura Digital.
- Signatário (signer): Entidade que cria uma assinatura eletrônica.
- Dados de validação (validation data): Dados que podem ser usados por um verificador de assinaturas eletrônicas para determinar se a assinatura é válida (por exemplo, certificados, CRLs, respostas OCSP).
- Verificador (verifier): Entidade que valida uma assinatura eletrônica.
Principais Características
Assinaturas de PDF (PDF Signatures)
Assinaturas digitais na ISO 32000-1 atualmente suportam três atividades:
- Adicionar uma assinatura digital imediatamente a um documento.
- Fornecer um campo de espaço reservado onde as assinaturas irão no futuro.
- Verificar a validade das assinaturas.
A assinatura, juntamente com diversas informações opcionais, está contida em uma estrutura de dados do PDF conhecida como dicionário de assinaturas (ISO 32000-1, cláusula 12.8.1).
O valor da assinatura é codificado como um objeto binário utilizando CMS (Cryptographic Message Syntax) ou formatos de assinatura relacionados, como PKCS #7 e CAdES. A formatação e o conteúdo específicos do valor da assinatura dependem do perfil adotado. Assim como em outras implementações de assinatura baseadas em CMS, um resumo é calculado em um intervalo específico de bytes do arquivo.
No contexto do PDF, as informações de assinatura devem estar incorporadas diretamente ao documento. Esse intervalo abrange o arquivo completo, incluindo o dicionário de assinaturas, mas exclui a própria assinatura do PDF.
Esse intervalo é especificado pela entrada ByteRange no dicionário de assinaturas. Ao definir o ByteRange dessa maneira, assegura-se que todos os bytes do PDF estejam cobertos pelo digest, com exceção da própria assinatura do PDF, conforme ilustração a seguir:
O valor binário da assinatura do PDF é inserido na entrada Contents do dicionário de assinaturas.
O tamanho da entrada Contents é definido com base em uma estimativa do espaço máximo necessário para abrigar a assinatura do PDF, incluindo eventuais informações de revogação e registro de data e hora. Inicialmente, o conteúdo da string é gravado em disco como uma sequência de valores hexadecimais 0x00, sendo posteriormente preenchido com o conteúdo efetivo da assinatura.
Tipos de Assinaturas PDF (PDF Signature Types)
Além da assinatura tradicional de documentos, as assinaturas em PDF introduzem o conceito de assinaturas de certificação, que operam com permissões de detecção de modificações (Modification Detection and Prevention - MDP, conforme ISO 32000-1, cláusula 12.8.4).
A funcionalidade MDP em PDFs, especificada por meio de um dicionário de referência de assinatura, permite que o documento seja modificado de maneiras controladas, como o preenchimento posterior de formulários ou a adição de comentários, mantendo a validade da assinatura original.
Por fim, o PDF utiliza assinaturas de uma terceira forma, denominada Direitos de Uso (ISO 32000-1, cláusula 12.8.2.3), que permite aprimorar o documento com direitos e privilégios adicionais em um fluxo de trabalho específico. A assinatura, nesse caso, assegura que o documento e os direitos associados não foram adulterados de nenhuma maneira.
Manipuladores de Assinatura PDF (PDF Signature Handlers)
A norma ISO 32000-1 define múltiplas implementações para a inclusão de assinaturas digitais baseadas em CMS em um documento PDF. Cada uma dessas implementações é especificada por um par de valores no dicionário de assinaturas, denominados Filter e SubFilter.
O Filter determina o nome do manipulador de assinatura preferencial a ser utilizado na validação da assinatura, enquanto o SubFilter é um identificador que descreve a codificação da assinatura PDF e as informações essenciais contidas no dicionário de assinaturas.
Os perfis definidos utilizam duas codificações, ambas baseadas em CMS:
- Codificação PKCS #7, conforme especificado na cláusula 12.8.3.3.1 da ISO 32000-1.
- Codificação CAdES, conforme especificado na norma ETSI TS 101 733.
Assinaturas em série (PDF serial signatures)
A norma ISO 32000-1 não oferece suporte para formas de assinaturas paralelas, nas quais vários indivíduos assinam o mesmo intervalo de bytes (e, consequentemente, o mesmo hash), agrupando essa coleção de certificados de assinatura em um único envelope PKCS#7. Assim, cada assinatura de PDF deve conter apenas um único signatário, ou seja, uma única estrutura SignerInfo.
Em contrapartida, a norma propõe uma solução alternativa para múltiplos signatários em um documento, o que oferece vantagens para determinados tipos de fluxos de trabalho. Embora cada assinatura em um PDF possa incluir apenas um único certificado de assinatura, é possível adicionar múltiplos dicionários de assinatura, cada qual com seu próprio intervalo de bytes (ByteRange) associado.
O fluxo de trabalho padrão para assinaturas seriais em PDFs prevê que, após o primeiro indivíduo assinar o documento, ele seja encaminhado aos signatários subsequentes, que não apenas assinam o documento, mas também incluem as assinaturas PDF anteriores.
Adicionalmente, em se tratando de um formulário PDF, os signatários subsequentes podem preencher campos adicionais (como data e hora) e, em seguida, assinar tanto os dados inseridos quanto o restante do documento.
A norma ISO 32000-1 determina que, ao verificar assinaturas seriais, cada assinatura seja verificada individualmente, mas que o resultado combinado dessas validações seja considerado o estado final do documento. Isso implica que podem ocorrer situações em que algumas assinaturas falham na validação (seja por modificações no documento ou questões de confiabilidade), enquanto outras são validadas com sucesso, exigindo uma avaliação consolidada do status do documento com base na coleção de assinaturas.
Validação e Time-stamping de Assinaturas (PDF signature Validation and Time-stamping)
O uso de timestamp com certificados CA e informações de status de revogação na validação de assinaturas PDF varia entre os perfis empregados.
Perfis PAdES
Os perfis PAdES podem ser separados, a grosso modo, em perfis para assinatura de PDF e para assinatura de XML.
Perfil baseado na ISO 32000-1 - PAdES Básico
Este perfil define uma assinatura PDF conforme especificado na norma ISO 32000-1 e está detalhado na TS 102 778-2. As principais características deste perfil são:
- Suporte a assinaturas seriais, permitindo que múltiplos signatários adicionem suas assinaturas de maneira sequencial.
- Recomenda a inclusão de um carimbo de data e hora (timestamp) na assinatura, assegurando o registro preciso do momento da assinatura.
- Recomenda a inclusão de informações de revogação para aumentar a confiabilidade e validar o status dos certificados no momento da assinatura.
- A assinatura assegura a integridade do documento e autentica a identidade do signatário, protegendo contra alterações não autorizadas.
- Opcionalmente, a assinatura pode incluir os "motivos" da assinatura, permitindo especificar a finalidade ou contexto da ação.
- A assinatura pode incluir, de forma opcional, uma descrição do local onde a assinatura foi realizada.
- Informações de contato do signatário também podem ser incluídas opcionalmente, facilitando a comunicação em caso de dúvidas ou verificações adicionais.
- Unformações de contato do signatário também podem ser incluídas opcionalmente, facilitando a comunicação em caso de dúvidas ou verificações adicionais.
Perfil PAdES-BES - PAdES Melhorado
Este perfil define uma assinatura avançada em PDF baseada em CAdES-BES, com a opção de inclusão de um carimbo de data e hora de assinatura (CAdES-T). As funcionalidades oferecidas por este perfil são bastante semelhantes às do perfil PAdES, mas com algumas distinções importantes:
- Uso de CAdES em vez de CMS: Neste perfil, utiliza-se CAdES (Cryptographic Advanced Electronic Signatures) no lugar do CMS (Cryptographic Message Syntax), o que proporciona conformidade com padrões específicos de assinaturas avançadas e atende a requisitos de segurança mais rigorosos.
- Orientação para evitar duplicação de informações: Este perfil fornece diretrizes para evitar a inserção de informações redundantes, prevenindo a inclusão de dados duplicados que podem surgir devido ao uso combinado de elementos de CAdES e do próprio PDF.
Em resumo, este perfil adapta os princípios do PAdES para aproveitar os benefícios e especificidades de CAdES, garantindo uma assinatura avançada que mantém a integridade e a autenticidade do documento PDF enquanto minimiza redundâncias.
Este perfil especifica uma assinatura avançada em PDF com as seguintes características:
- Codificação da assinatura como CAdES-BES: A assinatura é estruturada seguindo o padrão CAdES-BES, que oferece um nível elevado de segurança e conformidade com normas de assinatura eletrônica avançada.
- Inclusão obrigatória de referência de certificado de assinatura: O certificado de assinatura do signatário deve ser referenciado, reforçando a autenticidade e verificabilidade da assinatura.
- Rcomendação de carimbo de data e hora (CAdES-T): Inclui-se, preferencialmente, um carimbo de data e hora para registrar o momento da assinatura, elevando a confiabilidade em processos de auditoria e verificação temporal.
- Suporte para assinaturas seriais: Permite que múltiplos signatários assinem o documento de forma sequencial, mantendo uma cadeia de assinaturas no mesmo arquivo.
- Proteção da integridade e autenticação do signatário: A assinatura garante que o documento permaneça inalterado após a assinatura, ao mesmo tempo em que autentica a identidade do signatário.
- Atributos CAdES opcionais: A assinatura pode incluir atributos CAdES opcionais, como a hora da assinatura, atributos específicos do signatário e um carimbo de data e hora para o conteúdo assinado.
- Atestação de conteúdo legal: Este recurso pode ser usado para informar a parte confiável sobre funcionalidades do PDF que podem influenciar o conteúdo assinado, assegurando total transparência em relação a elementos que impactam a integridade do documento.
Este perfil, portanto, oferece uma solução robusta para assinaturas avançadas em PDFs, combinando segurança com flexibilidade para atender a uma ampla variedade de fluxos de trabalho e requisitos legais.
Perfil PAdES-EPES - PAdES Melhorado
Este perfil define uma assinatura avançada de PDF baseada no padrão CAdES-EPES. Ele é semelhante ao perfil PAdES-BES, mas com a adição de um identificador de política de assinatura e, opcionalmente, uma indicação de tipo de compromisso.
As funcionalidades oferecidas por esse perfil se assemelham muito ao perfil PAdES-CMS. No entanto, utiliza-se o CAdES em substituição ao CMS, com orientações específicas para evitar a inclusão redundante de informações.
- Assinatura codificada em CAdES-BES.
- Inclui referência ao certificado de assinatura.
- Inclui identificador de política de assinatura.
- Opcionalmente, inclui carimbo de data/hora de assinatura (CAdES-T).
- Opcionalmente, inclui indicador de tipo de compromisso.
- Suporta assinaturas seriais.
- Protege a integridade do documento e autentica o signatário.
- Pode incluir atributos simples CAdES, como:
- Hora da assinatura;
- Atributos do signatário;
- Carimbo de data e hora do conteúdo;
- Permite "atestação de conteúdo legal" para informar partes confiáveis sobre recursos de PDF que possam impactar o documento assinado.
Perfil PAdES-LTV - PAdES Longo Termo
Este perfil oferece suporte à validação de longo prazo (LTV) de assinaturas em PDF, podendo ser usado em conjunto com os perfis PAdES-CMS, PAdES-BES ou PAdES-EPES.
Ele é adequado para situações em que uma assinatura precisa ser confiável por um período superior ao da validade do certificado de assinatura. O perfil pode ser aplicado tanto pela parte que recebe e valida o documento quanto pela parte que realiza a assinatura, garantindo a verificação do documento ao incorporar a LTV.
Além disso, este perfil adiciona funcionalidades específicas aos recursos dos perfis PAdES-CMS, PAdES-BES e PAdES-EPES descritos anteriormente.
- Inclusão de dados de validação em um documento PDF existente, permitindo a verificação de assinaturas previamente aplicadas (incluindo assinaturas de PDF e de carimbo de data/hora).
- Aplicação de um carimbo de data/hora ao documento, protegendo tanto o conteúdo quanto os dados de validação já presentes.
- Dados de validação adicionais e novos carimbos de data/hora podem ser incluídos ao longo do tempo, assegurando a autenticidade e integridade contínuas do documento.
Os perfis voltados para conteúdo XML estão listados abaixo. Para mais detalhes, consulte a ETSI TS 102 778-1.
- PAdES for XML Content - Perfil para assinaturas XAdES básicas de documentos XML incorporados em contêineres PDF.
- PAdES for XML Content - Perfil para assinaturas XAdES de longo prazo de documentos XML incorporados em contêineres PDF.
- PAdES for XML Content - Perfil para assinaturas XAdES básicas em formulários XFA.
- PAdES for XML Content - Perfil para validação de longo prazo de assinaturas XAdES em formulários XFA (XAdES-LTV).
Implementação Atual do SIGN
Atualmente, o SIGN já adota o PAdES para assinaturas com certificado digital, utilizando o perfil PAdES Básico, baseado na norma ISO 32000-1.
Referências
As referências utilizadas para a elaboração deste artigo foram as seguintes: