Caso de uso: Verificar assinatura

Este caso de uso descreve a conferência de uma ou mais assinaturas incluídas num envelope de transporte.
O operador deverá fornecer um arquivo armazenado em disco que tenha sido salvo num formato de envelope reconhecível pela aplicação.

 

Ator

Operador

 

Fluxo de eventos

O operador seleciona um documento assinado. O sistema efetua a verificação de integridade do documento, conforme R1 e lista a identificação (sid - issuer e serialNumber) dos certificados signatários.
O operador seleciona um signatário. O sistema localiza o certificado correspondente no campo certificates do envelope de transporte e exibe o DN do titular (campo subject do certificado).
O operador solicita a exibição dos detalhes do certificado do signatário. O sistema executa o Caso de uso: Visualizar certificado.
O operador solicita a verificação de conformidade do certificado do signatário selecionado. O sistema executa o Caso de uso: Validar certificado.
O operador solicita a visualização do documento assinado. O sistema executa o Caso de uso: Visualizar documento.
O operador solicita a conferência da assinatura do signatário selecionado. O sistema executa o Caso de uso: Verificar revogação. O sistema obtém a política de assinatura (atributo SignaturePolicy) e, com base nela, verifica a assinatura do documento atendendo ao especificado em R2.

 

Exceções

Ocorreram erros críticos na verificação de integridade do envelope de transporte. O sistema informa ao operador o problema encontrado e encerra o caso de uso.
Ocorreram erros não críticos na verificação de integridade do envelope de transporte. O sistema informa ao operador o problema encontrado, alertando para o fato de a conferência da assinatura poder não ser efetuada corretamente.
O certificado digital do signatário não foi incluído no envelope de transporte. O sistema informa ao operador que o certificado digital deve ser fornecido em arquivo com formato conhecido.
O operador seleciona o certificado do signatário Retorna ao fluxo principal
O operador cancela a seleção do certificado. O caso de uso é encerrado
O documento eletrônico não foi incluído no envelope de transporte. O sistema informa ao operador que o documento deve ser fornecido em arquivo.
O operador seleciona o arquivo correspondente ao documento eletrônico. Retorna ao fluxo principal.
O operador cancela a seleção do arquivo. O caso de uso é encerrado.
O envelope de transporte não inclui os atributos SignaturePolicy e SignatureTimeStamp. O sistema seleciona a política CAdES-BES.
O envelope de transporte não inclui o atributo SignaturePolicy mas inclui SignatureTimeStamp. O sistema seleciona a política CAdES-T.

 

Regras

R1 - Verificação da integridade do documento

Regra Criticidade Mensagem
O envelope de transporte deve ser codificado em DER. Erro fatal. O arquivo de assinatura não contém um formato reconhecível.
O envelope de transporte deve ser um objeto SignedData. Erro fatal. O arquivo de assinatura não atende à especificação da RFC 3852.
O campo version do objeto SignedData deve ter valor 3. Alerta. A versão [version] do envelope de transporte não atende à especificação da RFC 5126.
Deve existir pelo menos um objeto SignerInfo Erro fatal. O envelope de transporte não contém assinaturas digitais para conferir.
O campo version do objeto SignerInfo deve ser igual a 1. Alerta. A versão [version] das informações do signatário não atende à especificação da RFC 5126.
O campo sid do objeto SignerInfo deve ter um valor reconhecível e o atributo SigningCertificateV2 não é incluído. Erro fatal. O envelope de transporte não inclui a identificação do signatário, o que impede a verificação da assinatura.
O campo signatureAlgorithm do objeto SignerInfo deve conter um dos seguintes valores: DSA com SHA-1, RSA com MD5, RSA com SHA-1, RSA com SHA-256 ou RSA com SHA-512. Erro fatal. O algoritmo [signatureAlgorithm] não é suportado pela aplicação, o que impede a verificação da assinatura em conformidade com a RFC 3370.
Se o campo digestAlgorithms estiver presente, seus valores devem ser consistentes com o conteúdo do campo signatureAlgorithm. Erro. Os algoritmos informados no envelope de transporte não são consistentes entre si, em inconformidade com a RFC 3852.
O campo signedAttrs do objeto SignerInfo não pode estar vazio. Erro. As informações do signatário não incluem atributos assinados, o que impede a verificação da assinatura em conformidade com a RFC 3852.
O atributo assinado MessageDigest deve estar presente. Erro. As informações do signatário não incluem o atributo MessageDisgest, o que impede a verificação da assinatura em conformidade com a RFC 3852.
O atributo assinado ContentType deve estar presente. Erro. As informações do signatário não incluem o atributo ContentType, o que impede a verificação da assinatura em conformidade com a RFC 3852.
O conteúdo do atributo ContentType deve ser igual ao conteúdo do campo eContentType do objeto SignedData. Erro. O valor do atributo assinado ContentType não é consistente com o valor do campo eContentType do envelope de transporte, em inconformidade com a RFC 3852.
Se o campo eContent contiver o conteúdo assinado, seu hash deve ser igual ao valor do atributo assinado MessageDigest. Erro. O valor do atributo assinado MessageDigest não é consistente com o conteúdo assinado, em inconformidade com a RFC 3852.
O atributo assinado CommitmentTypeIndication deve estar presente. Alerta. As informações do signatário não incluem o atributo CommitmentTypeIndication, não indicando, portanto, o comprometimento do signatário com a assinatura realizada.
O atributo assinado SigningCertificateV2 deve estar presente. Alerta. As informações do signatário não incluem o atributo SigningCertificateV2, em inconformidade com a RFC 5126.

 

R2 - Verificação da assinatura do documento

Regras CAdES-BES Criticidade Mensagem
Com o campo sid do objeto SignerInfo ou o valor do atributo SigningCertificateV2 não foi possível localizar o certificado do signatário. Erro fatal. O certificado do signatário [issuer e serialNumber] não pôde ser localizado. Impossível conferir a assinatura.
O atributo assinado SigningTime deve estar presente. Alerta. As informações do signatário não fornecem evidências de quando a assinatura foi realizada.
O atributo assinado CommitmentTypeIndication deve conter um dos seguintes valores: Prova de origem, Prova de recebimento, Prova de entrega, Prova de envio ou Prova de aprovação. Alerta. Tipo de comprometimento informado nos dados do signatário não condiz com a política de assinatura fornecida.
Regras CAdES-T Criticidade Mensagem
O atributo não assinado SignatureTimeStamp deve estar presente. Erro. Não foi incluído o atributo SignatureTimeStamp, em inconformidade com a política de assinatura informada.
A evidência de tempo fornecida pelo atributo SignatureTimeStamp não pode ser maior que a data de revogação do certificado. Erro fatal. O certificado digital do signatário estava revogado em [evidência de tempo], quando a assinatura foi realizada.
O carimbo de tempo fornecido pelo atributo SignatureTimeStamp deve ter sido assinado por uma AC confiável, cujo certificado está instalado na aplicação. Alerta. A autoridade responsável pela emissão do carimbo de tempo não é confiável.
A assinatura digital fornecida pelo carimbo de tempo deve ser válida. Erro. A assinatura do carimbo de tempo fornecido pelo signatário não confere.
Regras AD-CP Criticidade Mensagem
O conteúdo do campo digestAlgorithms, se presente, deve apresentar uma lista contendo somente o algoritmo SHA-1. Alerta. O algoritmo de cálculo de resumos criptográficos informado no envelope de transporte não está em conformidade com as regras da ICP-Brasil.
O campo signatureAlgorithm deve conter somente o OID do algoritmo SHA-1 com RSA. Erro. O algoritmo de assinatura informado no envelope de transporte está em inconformidade com as regras da ICP-Brasil.
O atributo assinado SignaturePolicy deve estar presente. Erro. O envelope de transporte não inclui o atributo SignaturePolicy, em inconformidade com as regras da ICP-Brasil.
O atributo SignaturePolicy deve conter um OID no no intervalo 2.16.76.1.7.n. Erro. A assinatura digital foi efetuada por uma política de assinatura não admitida pela ICP-Brasil.
O atributo assinado CommitmentTypeIndication deve conter um dos tipos de comprometimento aplicáveis ao perfil CAdES-BES ou um dos que seguem: Concordância, Autorização, Testemunho, Autoria, Conferência, Revisão, Ciência, Publicação, Protocolo, Integridade, Autenticação de usuário e Teste. Alerta. Tipo de comprometimento informado nos dados do signatário não condiz com a política de assinatura fornecida.
A extensão CertificatePolicies do certificado digital do assinante deve estar presente e conter valor 2.16.76.1.2.3.n ou 2.16.76.1.2.4.n. Erro. A política que emitiu o certificado digital do signatário não é condizente com a política de assinatura informada.
Regras AD-T Criticidade Mensagem
São aplicáveis todas as regras para o perfil AD-CP.
O atributo não assinado SignatureTimeStamp deve estar presente. Erro. Não foi incluído o atributo SignatureTimeStamp, em inconformidade com a política de assinatura informada.
A evidência de tempo fornecida pelo atributo SignatureTimeStamp não pode ser maior que a data de revogação do certificado. Erro fatal. O certificado digital do signatário estava revogado em [evidência de tempo], quando a assinatura foi realizada.
O carimbo de tempo fornecido pelo atributo SignatureTimeStamp deve ter sido assinado por uma AC confiável, cujo certificado está instalado na aplicação. Alerta. A autoridade responsável pela emissão do carimbo de tempo não é confiável.
A assinatura digital fornecida pelo carimbo de tempo deve ser válida. Erro. A assinatura do carimbo de tempo fornecido pelo signatário não confere.
Regras AD-R Criticidade Mensagem
São aplicáveis todas as regras para o perfil AD-CP.
O atributo não assinado CompleteCertificateReferences deve estar presente. Erro. Não foi incluído o atributo CompleteCertificateReferences, em inconformidade com a política de assinatura informada.
Com o valor do atributo CompleteCertificateReferences não foi possível localizar o certificado digital do signatário. Erro fatal. Não foi possível obter o certificado do signatário. Impossível verificar a assinatura.
O atributo não assinado CompleteRevocationReferences deve estar presente. Erro. Não foi incluído o atributo CompleteRevocationReferences, em inconformidade com a política de assinatura informada.
Com o valor do atributo CompleteRevocationReferences não foi possível localizar a LCR correspondente ao certificado digital do signatário. Erro. Não foi possível obter a LCR correspondente ao certificado do signatário. Impossível verificar a autenticidade da assinatura.
O atributo não assinado ESCTimeStampToken deve estar presente. Erro. Não foi incluído o atributo ESCTimeStampToken, em inconformidade com a política de assinatura informada.
A evidência de tempo fornecida pelo atributo ESCTimeStampToken não pode ser maior que a data de revogação do certificado. Erro fatal. O certificado digital do signatário estava revogado em [evidência de tempo], quando a assinatura foi realizada.
O carimbo de tempo fornecido pelo atributo ESCTimeStampToken deve ter sido assinado por uma AC confiável, cujo certificado está instalado na aplicação. Alerta. A autoridade responsável pela emissão do carimbo de tempo não é confiável.
A assinatura digital fornecida pelo carimbo de tempo do atributo ESCTimeStampToken deve ser válida. Erro. A assinatura do carimbo de tempo fornecido pelo signatário não confere.
Regras AD-C Criticidade Mensagem
São aplicáveis todas as regras para o perfil AD-R.
O atributo não assinado CertificateValues deve estar presente. Erro. Não foi incluído o atributo CertificateValues, em inconformidade com a política de assinatura informada.
Com o valor do atributo CertificateValues deve ser possível localizar o certificado digital do signatário. Erro fatal. O certificado digital do signatário não foi fornecido em conformidade com a política de assinatura informada. Não é possível verificar a assinatura do documento.
O atributo não assinado RevocationValues deve estar presente. Erro. Não foi incluído o atributo RevocationValues, em inconformidade com a política de assinatura informada.
Com o valor do atributo RevocationValues deve ser possível localizar a LCR correspondente ao certificado digital do signatário. Erro. A LCR correspondente ao certificado digital do signatário não foi fornecida em conformidade com a política de assinatura informada. Não é possível verificar a autenticidade da assinatura do documento.
Regras AD-A Criticidade Mensagem
São aplicáveis todas as regras para o perfil AD-C.
O atributo não assinado ArchiveTimeStampToken deve estar presente. Erro. Não foi incluído o atributo ArchiveTimeStampToken, em inconformidade com a política de assinatura informada.
A evidência de tempo fornecida pelo atributo ArchiveTimeStampToken não pode ser maior que a data de revogação do certificado. Erro fatal. O certificado digital do signatário estava revogado em [evidência de tempo], quando a assinatura foi realizada.
O carimbo de tempo fornecido pelo atributo ArchiveTimeStampToken deve ter sido assinado por uma AC confiável, cujo certificado está instalado na aplicação. Alerta. A autoridade responsável pela emissão do carimbo de tempo não é confiável.
A assinatura digital fornecida pelo carimbo de tempo do atributo ArchiveTimeStampToken deve ser válida. Erro. A assinatura do carimbo de tempo fornecido pelo signatário não confere.
Regras comuns Criticidade Mensagem
A verificação criptográfica da assinatura deve estar em conformidade com a RFC 3852. Erro fatal. A assinatura efetuada por [DN do titular do certificado] não confere, nos termos da RFC 3852.
O certificado digital do signatário estava expirado quando a assinatura foi realizada, se houver evidência desse instante. Erro fatal. A assinatura efetuada por [DN do titular do certificado] estava expirada em [instante da assinatura], quando o documento foi assinado.
O certificado digital do signatário estava revogado quando a assinatura foi realizada, se houver evidência desse instante. Erro fatal. O certificado digital de [DN do titular do certificado] estava revogado em [instante da assinatura], quando o documento foi assinado.

 

Pós-condições

Um relatório completo do resultado da verificação deve estar disponível para o operador.

 

Pontos de extensão

Casos de uso Visualizar documento e Visualizar certificado.

 

Casos de uso incluídos

Casos de uso Validar certificado e Verificar revogação.

 

Outros requisitos

Trilha de auditoria:

Operação realizada (verificação); data da operação; hash do arquivo; identificação do certificado de cada signatário (campos subject, issuer, serialNumber e campo policyIdentifier da extensão CertificatePolicies), relatório de validação da conformidade do certificado, relatório de verificação da revogação do certificado e relatório completo da verificação da assinatura.