Signthing deverá suportar integralmente as políticas de assinatura previstas na ICP-Brasil. No entanto, em vista dos requisitos definidos no documento A cripto-coisa assinante, deverão ser igualmente implementadas políticas baseadas no padrão CAdES-BES, em estrita conformidade com a RFC 5126.
A validação dos documentos CMS recebidos pelo aplicativo podem emitir três tipos de inconformidade: alerta, erro e erro fatal. Um alerta significa a ocorrência de uma inconformidade com as políticas adotadas, que não necessariamente invalidam a assinatura. Um erro é uma inconformidade que pode invalidar a assinatura, sobretudo em caso de disputa. Um erro fatal é uma ocorrência de tal ordem que impede a verificação criptográfica da assinatura. A verificação é interrompida somente em caso de erro fatal. As regras de verificação aplicáveis a todos os formatos e políticas são descritas a seguir:
Regra | Ação de inconformidade |
O documento CMS deve ser codificado em DER. | Erro fatal |
O tipo de conteúdo do documento deve ser um SignedData | Erro fatal |
O campo version da estrutura SignedData deve ser igual a 3. | Erro. |
O conteúdo do campo eContent da estrutura encapContentInfo deveria estar presente. | Alerta. O conteúdo deve ser fornecido independentemente. |
A verificação criptográfica da assinatura deve estar em conformidade com a RFC 3852. | Erro fatal. |
O conteúdo do campo digestAlgorithms, se presente, deve ser consistente com o conteúdo do campo signatureAlgorithm. | Erro. |
O atributo assinado ContentType deve estar presente e seu valor ser igual ao conteúdo do campo eContentType. | Erro. |
O atributo assinado MessageDigest deve estar presente e seu valor ser igual ao hash do campo eContent. | Erro. |
O atributo assinado CommitmentTypeIndication deveria estar presente. | Alerta. |
A chave pública do assinante deve estar disponível para uso na verificação. | Erro fatal. |
O campo sid deve estar presente e ser compatível com o titular do certificado digital fornecido. | Erro. |
Um dos atributos assinados ESSSigningCertificate ou ESSSigningCertificateV2 deve estar presente e ser compatível com o campo sid e o titular do certificado digital fornecido. | Erro. |
O atributo ESSSigningCertificateV2 é deveria estar presente. | Alerta. |
O certificado digital do assinante deve ter sido emitido em conformidade com a RFC 5280. | Erro. |
A LCR correspondente ao certificado do assinante deve estar disponível para consulta. | Erro. |
A LCR correspondente ao certificado do assinante deve ter sido emitida em conformidade com a RFC 5280. | Erro. |
O certificado digital do assinante deve estar em vigor quando da assinatura digital, caso o instante da assinatura seja conhecido. | Erro fatal. |
O certificado do assinante deve ter sido assinado por uma AC participante de uma rede cuja autoridade raiz seja confiável por decisão do usuário. | Erro. |
Os formatos genéricos deverão suportar tão somente os seguintes tipos de comprometimento:
A implementação deste formato deve requerer:
As seguintes regras de validação são aplicáveis a este formato:
Regra | Ação de inconformidade |
O campo certificates deveria estar presente e conter o certificado digital do assinante. | Alerta. O certificado digital do assinante deve ser fornecido independentemente. |
O campo crls deveria estar presente e conter as LCR's necessárias à verificação da revogação do certificado digital do assinante na data em que o documento foi assinado. | Alerta. A LCR deve ser consultada independentemente. |
O campo signatureAlgorithm deve estar presente e ter um dos seguintes valores: DSA com SHA-1, RSA com SHA-1 ou RSA com MD5. | Erro fatal. |
O atributo assinado SigningTime deveria estar presente. | Alerta. |
O atributo assinado CommitmentTypeIndication deveria conter um dos seguintes valores: Prova de origem, Prova de recebimento, Prova de entrega, Prova de envio ou Prova de aprovação. | Alerta. |
A implementação deste formato deve requerer:
São aplicáveis todas as regras de validação do formato CAdES-BES e aquelas definidas para o TimeStampToken. Além disso, devem ser observadas as seguintes restrições:
Regra | Ação de inconformidade |
O valor do atributo SigningTime, se presente, deve ser menor ou igual ao valor do TST contido no atributo SignatureTimeStamp. | Erro. |
A referência de tempo fornecida pelo TST não pode ser maior que a data de revogação do certificado, se for obtida na LCR correspondente. | Erro fatal. |
O certificado digital do assinante do TST deve ter sido emitido por AC participante de uma rede cuja autoridade raiz seja confiável por decisão do usuário. | Erro. |
A resposta TSP da autoridade de carimbo de tempo deve estar em conformidade com a RFC 3161. | Erro. |
A assinatura digital do carimbo de tempo deve ser válida. | Erro. |
Com base nas políticas de assinatura reguladas pelo DOC-ICP-15.03, elaboramos um conjunto definido de perfis que serão suportados pelo aplicativo. Tais perfis exigem que sejam aplicadas as seguintes regras de validação de caráter geral, além daquelas definidas no início deste documento:
Regra | Ação de inconformidade |
O conteúdo do campo digestAlgorithms, se presente, deve apresentar uma lista contendo um dos seguintes algoritmos: SHA-1, SHA-256 e SHA-512, os dois últimos incluídos na consulta pública para a atualização do DOC-ICP-01.01. | Erro. |
O campo signatureAlgorithm deve estar presente e conter o OID de um dos seguintes algoritmos: SHA-1 com RSA, SHA-256 com RSA e SHA-512 com RSA, os dois últimos incluídos na consulta pública para a atualização do DOC-ICP-01.01. | Erro. |
O atributo assinado SignaturePolicy deve estar presente e conter um OID no no intervalo 2.16.76.1.7.n. | Erro. |
O atributo assinado CommitmentTypeIndication deveria 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. |
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. |
O ceritificado digital do assinante deve ter sido emitido em conformidade com os regulamentos da ICP-Brasil. | Erro. |
A LCR deve ter sido emitida em conformidade com os regulamentos da ICP-Brasil. | Alerta. |
O caminho de certificação deve conter no máximo duas AC's intermediárias entre o certificado do signatário e a AC Raiz. | Erro. |
Os perfis da ICP-Brasil deverão também suportar os seguintes tipos de comprometimento:
O DOC-ICP-15.03 alerta que assinaturas com este perfil "somente devem ser utilizadas em situações especiais, por exemplo, para serviços transacionais que exigem autenticação de entidades e/ou verificação de integridade", já que não dispõe de referência de tempo confiável.
A implementação desse perfil deve requerer:
As mesmas regras de verificação aplicáveis ao perfil CAdES-BES são também aplicáveis aqui, salvo as mencionadas a seguir:
Regra | Ação de inconformidade |
O campo signatureAlgorithm deve estar presente e ter como valor SHA-1, SHA-256 ou SHA-512 com RSA. | Erro fatal. |
O atributo assinado CommitmentTypeIndication deveria estar presente e conter um dos seguintes valores: Prova de origem, Prova de recebimento, Prova de entrega, Prova de envio, Prova de aprovação, Concordância, Autorização, Testemunho, Autoria, Conferência, Revisão, Ciência, Publicação, Teste, Protocolo, Integridade ou Autenticação de Usuário. | Alerta. |
A ICP-Brasil recomenda que esta política seja utilizada "em aplicações ou processos de negócios nos quais a assinatura digital necessita de segurança em relação à irretratabilidade de sua geração", em vista da disponibilidade do carimbo de tempo originado de fonte confiável. Como o perfil não prevê a inclusão dos certificados do assinante e das LCR's, a política prevê que deve haver mecanismo confiável de recuperação independente dessas informações.
A implementação deste perfil requer:
São aplicáveis a este perfil as mesmas regras de validação definidas para AD-CP, além das que seguem:
Regra | Ação de inconformidade |
O atributo não assinado SignatureTimeStamp deve estar presente. | Erro. |
A assinatura contida no TimeStampToken deve ser válida e referir-se ao conteúdo calculado conforme a seção Restrições da ICP-Brasil. | Erro. |
Este perfil inclui referências para as informações necessárias à validação do certificado digital do assinante.
A implementação deste perfil requer:
São aplicáveis a este perfil as mesmas regras de validação definidas para AD-T, além das que seguem:
Regra | Ação de inconformidade |
O atributo não assinado CompleteCertificateReferences deve estar presente e conter referência para o certificado digital do assinante. | Erro. |
O atributo não assinado CompleteRevocationReferences deve estar presente e conter referência para a LCR correspondente ao certificado do assinante. | Erro. |
O atributo não assinado ESCTimeStampToken deve estar presente. | Erro. |
A assinatura contida no TimeStampToken deve ser válida e referir-se ao conteúdo calculado conforme a seção Restrições da ICP-Brasil. | Erro. |
Este perfil inclui todos os dados necessários à validação do certificado digital do assinante.
A implementação deste perfil requer:
São aplicáveis a este perfil as mesmas regras de validação definidas para AD-R, além das que seguem:
Regra | Ação de inconformidade |
O atributo não assinado CertificateValues deve estar presente e conter o certificado digital do assinante. | Erro. |
O atributo não assinado RevocationValues deve estar presente e conter a LCR correspondente ao certificado digital do assinante. | Erro. |
A implementação deste perfil requer:
São aplicáveis a este perfil as mesmas regras de validação definidas para AD-R, além das que seguem:
Regra | Ação de inconformidade |
O atributo não assinado ArchiveTimeStampToken deve estar presente. | Erro. |
A assinatura contida no TimeStampToken deve ser válida e referir-se ao conteúdo calculado conforme a seção Restrições da ICP-Brasil. | Erro. |