Integração da API de assinatura digital do Gov.Br
Objetivo
Entender e avaliar a viabilidade de se utilizar o recurso do Gov.Br de reconhecimento facial nas nossas ferramentas, tendo em vista que a aplicabilidade pode ser estendida a qualquer aplicação que possa ter necessidade de implementa-la e demasiado interessante ao Estado.
Justificativa
Com a assinatura do termo de parceria do Governo do Estado com o Ministério da Economia, obtivemos a oportunidade de utilizar os recursos oferecidos pelo GOV BR, como login único, assinatura digital e prova de vida.
Propostas avaliadas
- Utilização do login único(Gov.Br) como assinaturas básicas
- Integração da API de assinatura para assinaturas avançadas
- Integração da API de assinatura para assinaturas qualificadas
- Não utilização da API de assinatura
Envolvidos
- DIEGO DA SILVA OLIVEIRA (Back-End Developer/Tech Leader)
- KARINE NOGUEIRA DOS SANTOS (Gerente de Projetos)
Premissas
- A aplicação deve estar integrada ao Login Único do Gov.Br
- A aplicação em homologação deve estar liberada pela equipe do Ministério da Economia
Fluxo de integração da API de assinatura
- Redirecionar o usuário para o consentimento da utilização do seu certificado para realizar a assinatura, Requisitando o Endpoint de autenticação codificando a informação CLIENT_ID, CLIENT_SECRET e REDIRECT_URI passando como parâmetro no body da requisição, neste mesmo processo, em ambiente de produção, será enviado um código via SMS para o usuário, para que o mesmo possa confirmar na tela, com isso será possível capturar o Authorization Code.
- Com o Authorization Code em mão, será possível capturar o Access Token do usuário.
- Após isso, é necessário consultar o certificado público do usuário, utilizando o Access Token do usuário, chamando o Endpoint específico para obtenção do certificado, que será retornado em formato PEM.
- Realizar a assinatura avançada utilizando o modelo PKCS#7, passando um HASH SHA-256 utilizando a chave privada do usuário. Será retornado um arquivo contendo o pacote PKCS#7 com a assinatura digital do HASH SHA256-RSA e com o certificado público do usuário.
- Validar a assinatura realizada enviando uma requisição ao https://verificador.staging.iti.br/inicio para garantir que a assinatura gerada é de fato uma assinatura válida.
- O processo pode ser visto detalhadamente em https://manual-integracao-assinatura-eletronica.servicos.gov.br/en/latest/iniciarintegracao.html#solicitacao-de-configuracao .
Avaliações das propostas
Utilização do login único(Gov.Br) como assinaturas básicas
Prós
- Validação da assinatura somente com a autenticação do usuário com o login único com o Gov.Br
Contras
- Não há serviço de assinatura básica disponibilizado pela API de assinatura.
- Será utilizado a infra estrutura da aplicação Assine Aqui para manter e gerenciar as assinaturas básicas.
- O fluxo de assinatura do Assine Aqui, para assinatura com o login único(Gov.Br), precisará ser alterado, para que seja possível obter o access token do usuário logado pelo assine aqui para validar a autenticação.
Integração da API de assinatura para assinaturas avançadas
Prós
- Integrar o recurso de assinatura digital avançada, o que é uma necessidade para o Estado.
- A integração é particularmente simples.
Contras
- Para realização da assinatura, o usuário precisa ter selo nível prata ou ouro para poder utilizar o recurso de assinatura avançada.
- Para integrar ao Assine Aqui, precisaria mudar o fluxo de assinatura, sendo ele o sistema integrado ao login único, partindo do mesmo a necessidade de realizar a assinatura, com objetivo de centralizar a integração.
Integração da API de assinatura para assinaturas qualificadas
Prós
- Não há
Contras
- O serviço de assinatura do Gov.Br não possui recursos para realizar assinatura qualificada. A assinatura qualificada é realizada de forma manual, realizando o upload do certificado digital do usuário, para obtenção das credencias.
Não utilização da API de assinatura
Prós
- Melhoraríamos o nosso serviço de assinatura atual, Assine Aqui, para atender as necessidades do Estado, como as assinaturas avançadas e qualificadas.
- Controlaríamos a infraestrutura para realizar o gerenciamento e criação de assinaturas.
- Ainda seria realizado a assinatura básica com a autenticação pelo login único(Gov.Br), para atender as necessidades dos sistemas que implementam login único e precisam assinar documentos.
Contras
- A aplicação Assine Aqui, teria que implementar o recurso de assinatura avançada, respeitando os princípios legais previsto em lei que são:
a) estar associada ao signatário de maneira unívoca;
b) utilizar dados para a criação de assinatura eletrônica cujo signatário pode, com elevado nível de confiança, operar sob o seu controle exclusivo;
c) estar relacionada aos dados a ela associados de tal modo que qualquer modificação posterior é detectável.”
- A aplicação Assine Aqui, teria que implementar o recurso de assinatura qualificada, respeitando os princípios legais que se mantem da avançada e requer o certificado digital do usuário para poder ser realizada.
Resultado esperado
Após análise das avaliações propostas e das observações prós e contras a integração da API de assinatura avançada , não é reconhecido vantagens em adesão a este serviço. Isto se dá pelo fato do serviço de assinatura avançada não atender ao problema da Setic que é a geração de assinaturas qualificadas.
Vendo a necessidade de ser realizar a implementação da assinatura qualificada no sistema de assinaturas Assine Aqui, a estrutura que será implementada atende tanto a situação de assinatura qualificadas quanto avançadas.
Aderir ao serviço de assinatura, apenas tornaria o processo mais complexo, contudo, deve ser observado que o GovBr tem um recurso de assinatura qualificada manual, que é realizado pelo próprio usuário, realizando upload do seu certificado digital.