Uma assinatura digital é um mecanismo criptográfico usado para verificar a autenticidade e integridade dos dados digitais. Podemos pensar nisso como uma versão digital das assinaturas manuscritas convencionais, mas com maior nível de complexidade e segurança.
Simplificando, podemos descrever uma assinatura digital como um código anexado a uma mensagem ou documento. Uma vez gerado, o código funciona como prova de que a mensagem não foi adulterada no caminho do remetente ao destinatário.
Embora o conceito de segurança das comunicações utilizando criptografia remonte a tempos antigos, os esquemas de assinatura digital tornaram-se uma realidade possível na década de 1970 com o desenvolvimento da criptografia de chave pública (PKC). Portanto, para aprender como funcionam as assinaturas digitais, precisamos primeiro entender os fundamentos das funções hash e da criptografia de chave pública.
Funções hash
Hashing é um dos principais elementos de um sistema de assinatura digital. O processo de hashing é a conversão de dados de qualquer tamanho em dados de saída de tamanho fixo. Isso é feito usando um tipo especial de algoritmo conhecido como funções hash. A saída gerada pela função hash é conhecida como valor hash ou resumo da mensagem.
Em combinação com a criptografia, as chamadas funções hash criptográficas podem ser usadas para gerar um valor hash (resumo) que atua como uma impressão digital única. Isso significa que qualquer alteração na entrada (mensagem) resultará em uma saída diferente (valor hash). É por esta razão que as funções hash criptográficas são amplamente utilizadas para verificar dados digitais.
Criptografia de chave pública (PKC)
A criptografia de chave pública ou PKC refere-se a um sistema criptográfico que usa um par de chaves: uma chave pública e uma chave privada. As duas chaves estão matematicamente relacionadas e podem ser usadas tanto para criptografia de dados quanto para assinaturas digitais.
Como ferramenta de criptografia, o PKC é mais seguro do que métodos de criptografia simétrica mais simples. Enquanto os sistemas mais antigos dependem da mesma chave para criptografar e descriptografar informações, o PKC permite que os dados sejam criptografados com uma chave pública e os dados sejam descriptografados com a chave privada correspondente.
Além disso, o esquema PKC também pode ser usado na criação de assinaturas digitais. Essencialmente, o processo consiste em fazer hash da mensagem (ou dados digitais) juntamente com a chave privada do signatário. O destinatário da mensagem pode então verificar se a assinatura é válida usando a chave pública fornecida pelo signatário.
Em algumas situações, as assinaturas digitais podem conter criptografia, mas nem sempre é esse o caso. Por exemplo, o blockchain Bitcoin utiliza PKC e assinaturas digitais, mas ao contrário do que muitos acreditam, não há criptografia envolvida no processo. Tecnicamente, o Bitcoin usa o chamado Algoritmo de Assinatura Digital de Curva Elíptica (ECDSA) para autenticar transações.
Como funcionam as assinaturas digitais
No contexto das criptomoedas, um sistema de assinatura digital geralmente consiste em três etapas principais: hashing, assinatura e verificação.
Hash de dados
O primeiro passo é fazer o hash da mensagem ou dos dados digitais. Isto é feito enviando os dados usando um algoritmo de hash para criar um valor hash (ou seja, um resumo da mensagem). Conforme mencionado, as mensagens podem variar muito em tamanho, mas quando são hash, todos os seus valores de hash têm o mesmo comprimento. Esta é a propriedade principal da função hash.
No entanto, o hash dos dados não é necessário para criar uma assinatura digital, pois é possível usar uma chave privada para assinar uma mensagem que não tenha sido hash. Mas para criptomoedas, os dados são sempre criptografados porque trabalhar com resumos de comprimento fixo simplifica todo o processo.
Assinatura
Após fazer o hash das informações, o remetente da mensagem precisa assiná-la. É aqui que entra a criptografia de chave pública. Existem vários tipos de algoritmos de assinatura digital, cada um com seu próprio mecanismo. Mas, essencialmente, a mensagem com hash será assinada com uma chave privada, e o destinatário da mensagem poderá então verificar sua autenticidade usando a chave privada correspondente (fornecida pelo signatário).
Em outras palavras, se a chave privada não estiver habilitada no momento da criação da assinatura, o destinatário da mensagem não poderá utilizar a chave pública correspondente para verificar sua autenticidade. Tanto a chave pública quanto a privada são geradas pelo remetente da mensagem, mas a chave pública é transmitida ao destinatário.
Vale ressaltar que as assinaturas digitais estão diretamente relacionadas ao conteúdo de cada mensagem. Portanto, diferentemente das assinaturas manuscritas, que geralmente são iguais independentemente da mensagem, cada mensagem assinada digitalmente terá uma assinatura digital diferente.
Auditoria
Vejamos um exemplo para ilustrar todo o processo até a última etapa da verificação. Imagine que Alice escreve uma mensagem para Bob, faz o hash e depois combina o valor do hash com sua chave privada para criar uma assinatura digital. A assinatura funcionará como uma impressão digital única desta mensagem.
Quando Bob receber a mensagem, ele poderá verificar a validade da assinatura digital usando a chave pública fornecida por Alice. Assim, Bob pode ter certeza de que a assinatura foi criada por Alice, pois somente ela possui uma chave privada que corresponda a essa chave pública (pelo menos é o que esperamos).
Portanto, é muito importante que Alice mantenha sua chave privada em segredo. Se outra pessoa obtiver a chave privada de Alice, ela poderá criar uma assinatura digital e se passar por Alice. No contexto do Bitcoin, isso significa que alguém pode usar a chave privada de Alice para mover ou gastar seus Bitcoins sem sua permissão.
Por que as assinaturas digitais são importantes?
As assinaturas digitais são frequentemente usadas para alcançar três resultados: integridade de dados, autenticação e failover.
Integridade de dados. Bob pode verificar se a mensagem de Alice não mudou ao longo do caminho. Qualquer modificação da mensagem levará à criação de uma assinatura completamente diferente.
Autenticidade. Desde que a chave privada de Alice seja mantida em segredo, Bob pode usar sua chave pública para verificar se as assinaturas digitais foram criadas por Alice e por mais ninguém.
Confiabilidade. Uma vez gerada a assinatura, Alice não pode negar que a assinou no futuro, a menos que sua chave privada seja comprometida.
Opções de uso
As assinaturas digitais podem ser aplicadas a vários tipos de documentos e certificados digitais. Como tal, eles têm vários usos. Alguns dos usos mais comuns são:
Tecnologias de informação: melhorando a segurança dos sistemas de comunicação na Internet.
Finanças: As assinaturas digitais podem ser aplicadas a auditorias, relatórios de despesas, contratos de crédito e muito mais.
Regulamentação legal: Assinatura digital de todos os tipos de contratos comerciais e acordos legais, incluindo documentos governamentais.
Saúde: As assinaturas digitais podem impedir a falsificação de receitas e registros médicos.
Blockchain: Os esquemas de assinatura digital garantem que apenas os proprietários legítimos de uma criptomoeda podem assinar uma transação para movimentar fundos (desde que as suas chaves privadas não sejam comprometidas).
Limitação
Os principais desafios enfrentados pelos esquemas de assinatura digital baseiam-se em pelo menos três requisitos:
Algoritmo: A qualidade dos algoritmos usados em um esquema de assinatura digital é importante. Esta é, em particular, a escolha de funções hash e sistemas criptográficos confiáveis.
Implementação: se os algoritmos forem bons e a implementação estiver faltando, o sistema de assinatura digital provavelmente terá falhas.
Chave privada: Se as chaves privadas forem perdidas ou comprometidas de alguma forma, as propriedades de autenticidade e não falha serão anuladas. Para usuários de criptomoedas, a perda de uma chave privada pode causar perdas financeiras significativas.
Assinaturas eletrônicas vs. assinaturas digitais
Assinaturas digitais referem-se a um tipo específico de assinatura eletrônica que pertence a qualquer método eletrônico de assinatura de documentos e mensagens. Portanto, todas as assinaturas digitais são assinaturas eletrônicas, mas não vice-versa.
A principal diferença entre eles é o método de autenticação. As assinaturas digitais usam sistemas criptográficos, como funções hash, criptografia de chave pública e técnicas de criptografia.
Resultados
As funções hash e a criptografia de chave pública estão no centro dos sistemas de assinatura digital, que atualmente têm muitos usos. Quando aplicadas corretamente, as assinaturas digitais podem melhorar a segurança, garantir a integridade e facilitar a autenticação de todos os tipos de dados digitais.
No campo blockchain, assinaturas digitais são usadas para assinar e autorizar transações criptográficas. Eles são especialmente importantes para o Bitcoin porque as assinaturas garantem que as moedas só possam ser gastas por pessoas que possuam as chaves privadas correspondentes.
Embora já utilizemos assinaturas eletrônicas e digitais há muitos anos, ainda temos espaço para crescer. Grande parte da burocracia actual ainda se baseia em papel, mas é provável que vejamos uma maior adopção de assinaturas digitais à medida que avançamos para um tipo mais digital de sistemas de processamento de dados.

