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.