CAdES-T: um formato de assinatura eletrónica versátil e duradouro

Uma assinatura não é válida para sempre

Uma assinatura eletrónica não é válida para sempre. É válida numa data. A fórmula surpreende à primeira vista, mas explica-se muito bem.

Um certificado de assinatura tem um tempo de vida. Caduca, e pode ser revogado antes do prazo, por exemplo se a sua chave privada for comprometida. O que acontece então a um documento assinado com esse certificado? Deve considerar-se como não assinado?

Não. Mas com uma condição: poder provar quando foi assinado.

Assinatura manuscrita, assinatura eletrónica

Uma assinatura manuscrita liga uma pessoa a um documento, mas nada diz do seu conteúdo: nada impede que se altere uma página a posteriori. E a verificação exige uma perícia que pode ser delicada.

Uma assinatura eletrónica responde a estes limites porque é calculada a partir do próprio documento. Traz três garantias:

  • Integridade: a assinatura incide sobre a impressão digital do documento. Basta um byte alterado para que a verificação falhe.
  • Identidade: a chave de assinatura está associada a um certificado emitido por uma autoridade que verificou a identidade do seu titular.
  • Não repúdio: a chave privada permanece sob o controlo exclusivo do signatário, em particular quando nunca sai de um cartão inteligente ou de um token.

A isto acrescenta-se uma data verificável, desde que a assinatura tenha um carimbo de tempo. É precisamente o que mais falta à assinatura manuscrita: uma data escrita à mão não passa de uma declaração.

Os formatos de assinatura

O regulamento eIDAS reconhece vários formatos de assinatura normalizados pelo ETSI. Distinguem-se antes de mais pelo tipo de ficheiro a que se aplicam:

  • XAdES para os documentos XML
  • PAdES para os PDF, em que a assinatura é integrada no documento
  • JAdES para o JSON, nomeadamente as trocas entre aplicações
  • CAdES para qualquer tipo de ficheiro

CAdES é o formato generalista. Como nada pressupõe sobre a estrutura do ficheiro assinado, a assinatura não se insere nele: acompanha-o. Fala-se de assinatura destacada. É isso que lhe permite assinar uma imagem, um arquivo comprimido, um ficheiro encriptado ou um formato proprietário sem nunca lhe tocar.

O nível T, o que acrescenta a data

Cada um destes formatos declina-se depois em níveis:

  • Nível B (Basic): a assinatura sozinha, com os atributos indispensáveis
  • Nível T (Timestamp): um token de carimbo de tempo junta-se à assinatura
  • Nível LT (Long Term): os elementos necessários à verificação, cadeia de certificados e provas de revogação, ficam incorporados na assinatura
  • Nível LTA (Long Term Archive): são acrescentados carimbos de tempo de arquivo, depois renovados ao longo do tempo

A diferença entre LT e LTA reside no que se procura proteger. O nível LT responde a um problema de disponibilidade: dentro de dez anos, o serviço de revogação da autoridade talvez tenha desaparecido, pelo que se conservam desde já, dentro da assinatura, as provas que permitirão verificá-la. O nível LTA responde ainda a um problema de caducidade das chaves e dos algoritmos: um algoritmo hoje considerado seguro não o continuará a ser indefinidamente, e o mesmo se passa com as chaves utilizadas. Por fim, o certificado da autoridade de carimbo de tempo tem também um fim de vida. Um carimbo de tempo de arquivo vem, portanto, selar periodicamente o conjunto, provas incluídas, prolongando cada novo token a validade da cadeia antes de o anterior enfraquecer.

Uma assinatura CAdES-T incorpora, assim, um token de carimbo de tempo emitido por uma autoridade de confiança que atesta que a assinatura existia naquele instante preciso.

Carimbar um documento, carimbar uma assinatura

São duas possibilidades distintas, e não provam a mesma coisa.

Carimbar um documento, isto é, a sua impressão digital, é provar a existência do ficheiro nessa data. Nada diz do seu autor: um carimbo de tempo não é uma assinatura.

Carimbar uma assinatura é provar que a assinatura do documento ocorreu antes dessa data, logo que o certificado ainda era válido no momento em que foi feita. (E como o valor da assinatura já cobre a impressão digital do documento, a prova da data vale também para o documento!)

Carimbar uma assinatura é o que faz o nível T.

Verificar não é apenas recalcular uma impressão digital

Verificar uma assinatura não consiste apenas em comparar duas impressões digitais. É responder a uma questão de direito: o certificado do signatário era válido na data atestada pelo token?

Isso supõe três controlos distintos:

  • O período de validade do certificado abrangia essa data?
  • O certificado estava revogado nessa data? A pergunta vale para o certificado do signatário, mas também para o da autoridade que o emitiu.
  • A cadeia de certificação remonta a uma autoridade de confiança reconhecida?

Este último ponto merece atenção, pois não basta que uma cadeia remonte: é preciso saber até onde. Cada Estado-Membro publica uma lista de confiança eIDAS, assinada, que enumera os prestadores qualificados de serviços de confiança e os certificados das suas autoridades. Estas listas nacionais são, por sua vez, referenciadas por uma lista das listas, publicada pela Comissão Europeia, e cujos certificados de assinatura são publicados no Jornal Oficial da União Europeia.

É esta cadeia de publicação que dá sentido à palavra qualificado. Uma autoridade não é qualificada por o seu certificado o afirmar, mas porque um Estado a inscreveu na sua lista e porque essa inscrição é verificável por qualquer pessoa. Estas listas conservam o histórico dos estados, o que permite responder à única pergunta que aqui conta: esta autoridade estava qualificada na data do token?

Pois estes controlos apreciam-se na data do token e não no momento em que se abre o ficheiro. Um certificado caducado há dois anos pode perfeitamente suportar uma assinatura válida. Inversamente, um certificado ainda válido suporta uma assinatura que pouco prova se a sua cadeia não remontar a nenhuma autoridade reconhecida.

Sem data comprovável, a assinatura morre com o seu certificado

É a consequência direta. Uma assinatura de nível B, sem token, não fornece qualquer prova da sua própria data: a data que contém é declarada pelo signatário, logo não é oponível. No dia em que o certificado caduca ou é revogado, deixa de ser possível estabelecer que a assinatura lhe é anterior.

E, em geral, ninguém dá por isso antes de precisar. E já nada se pode fazer.

CAdES-T no Sigalion Vault

É por todas estas razões que escolhemos o formato CAdES-T para a assinatura no Sigalion Vault, disponível em macOS, Windows e Linux:

  • CAdES baseline-T (ETSI EN 319 122-1), assinatura CMS destacada (RFC 5652) reunida com o documento num contentor ASiC-S
  • Token RFC 3161 aposto sobre o valor da assinatura, à escolha carimbo de tempo Sigalion ou carimbo de tempo qualificado eIDAS (aconselhado)
  • Certificado de software, cartão inteligente ou token (IDOpte, YubiKey), consoante o suporte de que dispõe
  • Autoridades de confiança e qualificação eIDAS provenientes da Lista de confiança oficial, estado de revogação do signatário e do seu emissor verificado na data atestada pelo carimbo de tempo

O ficheiro produzido é um envelope .asics que reúne o documento e a sua assinatura num formato normalizado, verificável pelas ferramentas conformes às normas ETSI.

Assinar, carimbar, encriptar: três necessidades distintas

Mais amplamente, o Vault responde a três necessidades distintas, complementares, mas frequentemente confundidas:

  • Assinar, para garantir a integridade do documento, a identidade do seu autor e traduzir o seu acordo
  • Carimbar, para atestar que existia numa determinada data
  • Encriptar, para garantir a confidencialidade e reservar a leitura aos destinatários designados

As três combinam-se: um documento pode ser assinado e carimbado e depois encriptado para o seu destinatário, podendo o conjunto ser também carimbado.