1

O produto está ficando muito bom! Deixa eu contribuir com 2 informações, do ponto de vista jurídico da assinatura.

Ponto 1

Quando a pessoa clica em assinar é solicitado o e-mail para assinar. Assumindo que a pessoa é honesta não teremos problemas. Mas assumindo que não, ela pode forjar um e-mail descartável só para assinar. No futuro você perde a capacidade de provar o aceite do cliente (o tal do "eu não assinei")

Solução proposta: para não engessar muito, faça uma abordagem mista. No cadastro onde o usuário da plataforma cria a proposta, insira ele o e-mail usado para asinatura. Assim é uma camada a mais de checagem.

Uma vez feito isso, esse e-mail vai pre-preenchido e ineditável. Caso não preencha, então vc considera se vale manter como está.

Ponto 2

Sobre certificado ICP-Brasil: sua plataforma no momento está no nível "Avançada". E está correto, pois a "simples" é frágil, e a "qualificada" é inviável (ninguem tem e-cpf).

Mas tem um ponto aqui: se em algum momento a parte falar "não assinei" ou "esse contrato mudou", ou ainda, "eu assinei esse contrato, mas foi semana passada para outro projeto. esse não é do primeiro."

Aqui temos que observar 3 pontos:

1. você precisa garantir que a pessoa assinou.

Isso já está garantido com o envio do e-mail.

2. Você precisa garantir a imutabilidade do arquivo.

Tem algumas formas de fazer isso, e uma delas poderia ser anexar o contrato após assinado para o assinante. Você teria uma prova de que ele recebeu o contrato, e é igual ao contrato questionado. Mas isso é trabalhoso para o advogado, demanda quebra de sigilo de comunicação. Se outras provas forem frágeis um juiz pode negar.

Você citou docuSign, clickSign... Eles fazem diferente: eles assinam o contrato com o próprio certificado digital e-cnpj. E usam um padrão de hash já determinado pelo ICP-Brasil. Então apenas apresentando o PDF em um eventual processo, a imutabilidade já pode ser assegurada com amparo legal.

Se quiser ver com os próprios olhos, caso você tenha aí um documento assinado por eles, acesse o site a seguir e veja os dados da assinatura digital: https://chaindoc.io/pdf-verify (obs. este é o melhor site que já encontrei para o tema)

3. temporalidade da assinatura

Aqui é único lugar onde você pode ter custo financeiro com cada assinatura. Para garantir a data em que o contrato foi assinado (pois ele pode ser íntegro, mas nada garante que a data que está nele não foi forjada antes da assinatura (ex. fingir que vendeu um carro antes de ter vendido para escapar de uma penhora)), você precisa de um carimbo de tempo. Você pode usar um serviço internacional de carimbo de tempo gratuito, mas o problema é que o Brasil não reconhece esse carimbo. O carimbo válido é o de empresas credenciadas no ICP-Brasil. Tem a Serpro, que é do próprio governo (https://loja.serpro.gov.br/emiss%C3%A3o-de-carimbo-de-tempo/product/carimbodetempo). Ela tem um bom custo, principalmente em volumes. Mas há outras também. Vale pesquisar. No link que te mandei tem uma aba com preços.

Esse carimbo de tempo é aceito de forma inquestionável pelo justiça, uma vez que um padrão de algorítmo envolvendo a data e o hash do pdf é aplicado.

Lógico que a data em que a pessoa recebeu o e-mail já prova isso. Mas veja que caímos no problema de quebra de sigilo anterior.

Minha opinião

Seu projeto é robusto e suficientemente válido juridicamente, mas empresas com click e docusign adotam essas camadas extras de segurança, para facilitar fazer prova no futuro.

Bonus

Inclusive, além do PDF do contrato, costumam emitir após todos assinarem um outro PDF que é o "relatório de assinaturas". É a trilha temporal das assinaturas, os metadados de quem assinou (ip, geolocalização...) e, lógico, alguma identificação que ligue este documento com o documento assinado (ex. o original tem um uuid impresso em cada página, e nesse documento ele é citado. esse uuid pode ser o id da chave primária do contrato no seu sistema).

Abraços!

Carregando publicação patrocinada...
1

cleytoncoro, obrigado por esse comentário, sério. É o tipo de retorno que eu esperava encontrar por aqui.

Sobre o ponto 1: o sistema já trabalha assim hoje. O e-mail do cliente é cadastrado pelo freelancer na criação da proposta e, por padrão, é o único endereço que consegue assinar. Se outro e-mail for informado na tela de assinatura, a resposta é genérica e nada é enviado, nem para revelar se o endereço existe. E tem uma checagem a mais: como o link de assinatura é de uso único e chega por e-mail, a pessoa precisa ter acesso real àquela caixa de entrada para concluir, então a posse do endereço também é verificada, não só a declaração. Para os casos em que o documento circula (sócio, financeiro), existe um modo aberto que o freelancer ativa por conta própria, sabendo do trade-off.

Sobre a imutabilidade: o conteúdo é congelado no envio (hash da versão exata) e a assinatura gera um selo no servidor amarrando conteúdo, assinante e data/hora. O PDF certificado vai por e-mail para as duas partes logo após a assinatura, com o código de verificação impresso, e qualquer pessoa confere a autenticidade na página pública de verificação (a mesma que deixei no post), sem depender de acesso ao e-mail de ninguém, o que conversa com aquele problema de sigilo que você citou. Agora, assinar o próprio PDF com certificado e-CNPJ no padrão ICP, como DocuSign e ClickSign fazem, eu ainda não faço. Está no roadmap, e o seu comentário deixou o porquê mais claro. Vou estudar o chaindoc que você linkou.

O carimbo de tempo eu não tenho mesmo. A data entra no cálculo do selo, então não dá para alterá-la depois sem quebrar a verificação, mas isso não substitui um carimbo ICP-Brasil. vai entrar no nosso no roadmap também.

E a ideia do relatório de assinaturas eu anotei na hora. Os dados já existem no sistema, falta gerar o documento com essa trilha amarrada ao contrato.

Obrigado de novo pela aula. Se você olhar mais alguma coisa no produto e pensar "isso vai dar problema num processo", pode mandar sem cerimônia.