O que é?
Em criptografia, a assinatura digital é um método de autenticação de informação digital tipicamente tratada como análoga à assinatura física em papel. Embora existam analogias, existem diferenças importantes. O termo assinatura eletrônica, por vezes confundido, tem um significado diferente: refere-se a qualquer mecanismo, não necessariamente criptográfico, para identificar o remetente de uma mensagem electrônica.
A legislação pode validar tais assinaturas eletrônicas como endereços Telex e cabo, bem como a transmissão por fax de assinaturas manuscritas em papel.
A utilização da assinatura digital providencia a prova inegável de que uma mensagem veio do emissor. Para verificar este requisito, uma assinatura digital deve ter as seguintes propriedades:
- Autenticidade - o receptor deve poder confirmar que a assinatura foi feita pelo emissor;
- Integridade - qualquer alteração da mensagem faz com que a assinatura não corresponda mais ao documento;
- Não repúdio ou irretratabilidade - o emissor não pode negar a autenticidade da mensagem.
Essas características fazem a assinatura digital ser fundamentalmente diferente da assinatura manuscrita.
Existem diversos métodos para assinar digitalmente documentos, e esses métodos estão em constante evolução. Porém de maneira resumida uma assinatura típica envolve dois processos criptográficos: o hash (resumo) e a encriptação deste hash.
Em um primeiro momento é gerado um resumo criptográfico da mensagem através de algoritmos complexos (Exemplos: MD5, SHA-1, SHA-256) que reduzem qualquer mensagem sempre a um resumo de mesmo tamanho. A este resumo criptográfico se dá o nome de hash. Uma função de hash deve apresentar necessariamente as seguintes características:
Deve ser impossível encontrar a mensagem original a partir do hash da mensagem.
O hash deve parecer aleatório, mesmo que o algoritmo seja conhecido. Uma função de hash é dita forte se a mudança de um bit na mensagem original resulta em um novo hash totalmente diferente.
Deve ser impossível encontrar duas mensagens diferentes que levam a um mesmo hash.
Neste ponto, o leitor mais atento percebe um problema: Se as mensagens possíveis são infinitas, mas o tamanho do hash é fixo, é impossível impedir que mensagens diferentes levem a um mesmo hash. De fato, isto ocorre. Quando se encontram mensagens diferentes com hashs iguais, é dito que foi encontrada uma colisão de hashes. Um algoritmo onde isso foi obtido deve ser abandonado. As funções de hash estão em constante evolução para evitar que colisões sejam obtidas. Cabe destacar porém que a colisão mais simples de encontrar é uma aleatória, ou seja, obter colisões com duas mensagens geradas aleatoriamente, sem significado real. Quando isto ocorre os estudiosos de criptografia já ficam atentos, porém para comprometer de maneira imediata a assinatura digital seria necessário obter uma mensagem adulterada que tenha o mesmo hash de uma mensagem original fixa, o que é teoricamente impossível de ocorrer com os algoritmos existentes hoje. Desta forma, garante-se a integridade da assinatura.
Após gerar o hash, ele deve ser criptografado através de um sistema de chave pública, para garantir a autenticação e a irretratabilidade. O autor da mensagem deve usar sua chave privada para assinar a mensagem e armazenar o hash criptografado junto a mensagem original.
Para verificar a autenticidade do documento, deve ser gerado um novo resumo a partir da mensagem que está armazenada, e este novo resumo deve ser comparado com a assinatura digital. Para isso, é necessário descriptografar a assinatura obtendo o hash original. Se ele for igual ao hash recém gerado, a mensagem está íntegra. Além da assinatura existe o selo cronológico que atesta a referência de tempo à assinatura.
Fonte: http://wikipedia.org