Ir para o conteúdo principal

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

  1. Utilização do login único(Gov.Br) como assinaturas básicas
  2. Integração da API de assinatura para assinaturas avançadas
  3. Integração da API de assinatura para assinaturas qualificadas
  4. 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

  1. A aplicação deve estar integrada ao Login Único do Gov.Br
  2. A aplicação em homologação deve estar liberada pela equipe do Ministério da Economia

Fluxo de integração da API de assinatura

  1. 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.

  2. Com o Authorization Code em mão, será possível capturar o Access Token do usuário.

  3. 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.
  4. 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.

  5. 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.  
  6. 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
  1. Validação da assinatura somente com a autenticação do usuário com o login único com o Gov.Br
Contras
  1. Não há serviço de assinatura básica disponibilizado pela API de assinatura.

  2. Será utilizado a infra estrutura da aplicação Assine Aqui para manter e gerenciar as assinaturas básicas.

  3. 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
  1. Integrar o recurso de assinatura digital avançada, o que é uma necessidade para o Estado.

  2. A integração é particularmente simples.
Contras
  1. 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.

  2. 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
  1. Não há
Contras
  1. 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
  1. Melhoraríamos o nosso serviço de assinatura atual, Assine Aqui, para atender as necessidades do Estado, como as assinaturas avançadas e qualificadas.
  2. Controlaríamos a infraestrutura para realizar o gerenciamento e criação de assinaturas.

  3. 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
  1. 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.”

  2. 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 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.

Envolvidos

  • Matheus da Silva Cruz