Assinaturas digitais
Introdução
• A autenticidade de muitos documentos legais é determinada pela presença da assinatura manual autorizada.
• Tornou-se necessário encontrar um método que permita assinar documentos eletrônicos, garantindo sua autenticidade.
• Uma assinatura digital é um mecanismo de autenticação que permite ao criador de uma mensagem, anexar um código que atue como uma assinatura.– A assinatura é formada criando um hash da mensagem a ser
assinada e criptografando-a com a chave do criador.
Requisitos
a) Que o receptor consiga verificar a identidade alegada pelo transmissor.b) Que o transmissor não consiga posteriormente, repudiar o conteúdo da mensagem.c) O receptor não tenha a possibilidade de inventar, ele mesmo, a mensagem.
Exemplo
• Suponha que o computador de um cliente solicite ao de um banco, que compre uma tonelada de ouro.
a) O banco precisa autenticar o cliente garantindo que o computador que fez a requisição pertence de fato à empresa que será debitada.b) Suponha que logo a seguir, o preço do ouro caia bruscamente. Um cliente desonesto poderia afirmar que não foi ele quem fez a requisição. (repúdio).c) Suponha agora, que o preço do ouro dispare e o banco afirme que o cliente solicitou a compra de uma barra de ouro ao invés de uma tonelada.
Assinatura digital com uso da criptografia de chave simétrica
• Uma estratégia é ter uma Autoridade Central: Uma instituição em que todos confiem.
• Cada usuário escolhe uma chave secreta e a leva pessoalmente ao escritório da Autoridade Central.
• Somente o próprio usuário e a Autoridade Central conhecem cada chave.
• Exemplos de notações:– KA (chave de Alice).
– KAC (chave da Autoridade Central).
Procedimento (1)
• Quando deseja enviar uma mensagem assinada para Bob, Alice gera KA (B, RA, t, P), onde:– B é a identidade de Bob.– RA é um número aleatório escolhido por Alice.– t é um registro de tempo para garantir a
atualidade da mensagem.– KA (B, RA, t, P) é a mensagem criptografada com a
chave de Alice.
Procedimento (2)
• Alice envia a mensagem para a Autoridade Central que a descriptografa comprovando que ela partiu de Alice.
• A Autoridade Central envia a mensagem para Bob.– A mensagem contém o texto claro e a mensagem assinada.– KAC KA (B, RA, t, P) .
Registro de tempo
• Trudy pode repetir uma das mensagens que Alice enviou para a AC.
• Todas as mensagens recebidas são verificadas para ver se RA (o número aleatório) foi usada em alguma delas.
Assinatura digital com uso da criptografia de chave assimétrica
• Problemas estruturais devido ao uso de chave simétrica para assinatura digital:– Todos tem de confiar na autoridade central.– A AC tem de ler todas as mensagens assinadas.
• O ideal seria se o ato da assinatura digital não exigisse a presença de uma autoridade confiável.
Propriedades desejáveis
• D (E(P)) = P• E (D(P)) = P• O RSA tem essas propriedades.
• Logo, Alice pode enviar uma mensagem de texto claro assinada, P, para Bob transmitindo EB (DA (P)).
• Isso é possível porque:– Alice conhece a sua própria chave privada.– Alice conhece a chave pública de Bob.
Procedimentos
• Ao receber a mensagem, Bob a transforma usando sua chave privada e produz DA (P).
• Ele guarda esse texto em local seguro e depois aplica EA para obter o texto claro original.
Assinatura digital com chaves assimétricas
Não repúdio
• Alice nega ter enviado a mensagem.– AC somente aceita uma mensagem se ela tiver sido
criptografada com a chave do usuário, no caso Alice, que lhe foi entregue pela própria.• KA.
– Não há possibilidade de Trudy ter enviado a mensagem a AC sem que esta tivesse percebido.• Bob possui a prova : KAC
(A, t, P).• A AC pode descriptografar a mensagem comprovando que esta foi
enviada por Alice.• Um juiz poderá confirmar que Bob, de fato, possui uma mensagem
válida criptografada por DA simplesmente aplicando EA à mensagem.
Considerações ao não repúdio
• Bob só poderá provar que a mensagem de fato partiu de Alice, enquanto DA permanecer secreta.– Se Alice revelar sua chave secreta, o argumento
deixará de existir, pois qualquer um poderia ter enviado a mensagem, inclusive Bob.
Sumário de mensagens
• Uma crítica aos métodos de assinatura digital é que eles frequentemente reúnem duas funções distintas: – Autenticação.– Sigilo.– Consome muito processamento pois exige que a
mensagem inteira seja encriptada.• Em geral, a autenticação é necessária, mas o sigilo
não.• Veremos agora um esquema de autenticação que
não exige a criptografia da mensagem inteira.
Função de Hash
• Esse esquema se baseia na ideia de uma função de hash.
• A função extrai um trecho qualquer do texto claro e a partir dele calcula uma sequência de bits relacionada de tamanho fixo.– MD (Message Digest).
Propriedades
• Se P for fornecido, o cálculo de MD(P) será muito fácil.
• Se MD(P) for fornecido, será efetivamente impossível achar P.
• Uma mudança na entrada de um único bit produz uma saída totalmente diferente.
Vantagem
• Calcular um sumário da mensagem a partir de um trecho do texto claro é muito mais rápido.
• Os hashes são usados, entre outras finalidades, para agilizar os algoritmos de assinatura digital.
Procedimentos gerais
• O assinante gera um resumo criptográfico da mensagem.
• O assinante cifra o resumo com sua chave privada.
• Este resumo criptográfico cifrado é a assinatura digital que deve ser encaminhada a Autoridade Central ou ao destinatário junto com a mensagem.
Verificando a assinatura
• Utilizando a chave pública do remetente, o destinatário decifra a assinatura, obtendo o resumo.
• Como o destinatário tem a mensagem, ele gera novamente, de maneira independente, o resumo criptográfico da mensagem.
• O destinatário compara os resumos obtidos:– Se ambos forem iguais, a assinatura é válida.
Assinatura digital utilizando sumário de mensagens
• Ao invés de assinar P com KAC (A, t, P), agora AC calcula o sumário da mensagem aplicando MD a P, produzindo MD(P).
• Em seguida, A AC inclui KCA (A, t, MD(P)) como o quinto item da lista enviada a Bob, ao invés de KAC (A, t, P).
SHA-1 e SHA-2
• Diversas funções para sumários foram propostas.• Uma das mais utilizadas é a SHA-1 (Secure Hash
Algorithm), NIST, 1993.– Trata os bits do sumário de forma que cada bit de
saída seja afetado por cada um dos bits da entrada.• Desenvolvido pela NSA e ratificado pelo NIST.• Processa blocos de 512 bits e gera um sumário
de 160 bits.
SHA e RSA para assinatura de mensagens não secretas
MD5
• Outro sumário muito popular.• Rivest, 1992.• Após uma década de uso, os pontos fracos no
MD5 tem aumentado a probabilidade de encontrar duas mensagens com o mesmo hash.– 263 mensagens para encontrar uma que
combinasse com o hash da mensagem interceptada.
Padrão de Assinatura Digital
• Em 1991, o Nacional Institute of Standards and Technology (NIST) publicou o Federal Information Processing Standard (FIPS 186), conhecido como padrão de assinatura digital (DSS).– O NIST propôs a utilização de uma variante do
algoritmo El Gamal como o seu novo padrão para assinaturas digitais.• O El Gamal não utiliza a fatoração de números extensos
e sim a dificuldade de calcular logaritmos discretos.
Padrão de Assinatura Digital (DSS)
• O DSS utiliza um algoritmo que foi projetado apenas para assinaturas digitais.– Ele não pode ser usado para criptografia ou para
troca de chaves.– Apesar disso, é uma técnica de chave pública.
Diferenças entre o RSA e o DSS
• RSA (emissor).– A mensagem a ser assinada é inserida em uma
função de hash que produz um código de hash seguro, de tamanho fixo.
– Esse código é, então, criptografado usando a chave privada do emissor para formar a assinatura.
– Tanto a mensagem, quanto a assinatura são então transmitidas.
Diferenças entre o RSA e o DSS
• RSA (receptor).– O destinatário pega a mensagem e produz um
código de hash.– O destinatário também assina, usando a chave
pública do emissor.– Se as saídas combinarem, a assinatura é aceita
como válida.• Como somente o emissor conhece a chave privada,
somente ele poderia ter produzido uma assinatura válida.
Diferenças entre o RSA e o DSS
• DSS (emissor).– A técnica do DSS também usa uma função de hash.– O código de hash é fornecido como entrada para uma função
de assinatura, com um número aleatório k, gerado para essa assinatura em particular.
– A função de assinatura também depende da chave privada do emissor (Pra) e de um conjunto de parâmetros conhecidos por ambos os lados.• Podemos considerar esse conjunto como uma chave pública global
(Pug).
– O resultado é uma assinatura que consiste em dois componentes rotulados como s e r.
Diferenças entre o RSA e o DSS
• DSS (receptor).– Na ponta receptora, o código de hash da
mensagem que chega é gerado.– A saída, junto com a assinatura é inserida em uma
função de verificação.• A função de verificação também depende da chave
pública global, além da chave pública do emissor.– Correspondente da chave privada do emissor.
Resumo da aula
• A assinatura digital é um método que se assemelha as assinaturas feitas em papel.
• Gera uma prova de quem é o autor da mensagem.
• Provê também:– Autenticidade.– Integridade.– Irretratabilidade.
Resumo da aula (2)
• Pode fazer uso de duas chaves (criptografia assimétrica).
• Pode fazer uso também, da função resumo ou de hash.– O método consiste em gerar o resumo da
mensagem e cifra-lo com a chave privada do emissor.
– Para a verificação de uma assinatura digital, o receptor refaz o hash e cifra-o com a chave pública do emissor. As saídas tem de ser iguais.
Assinando um documento
• Inicialmente, crie um diretório com o seu nome.
mkdir <seu nome>
• Entre em seu diretório.cd <seu nome>
Assinando um documento (2)
• Gere a chave privada RSA de 2048 bits.openssl genrsa –out chave_seu_nome.prv 2048
• Extraia a chave pública.openssl rsa –in chave_seu_nome.prv –pubout –out chave_seu_nome.pub
Assinando um documento (3)
• Crie um arquivo de texto com uma mensagem qualquer.echo “Mensagem desejada” > mensagem_seu_nome.txt
• Agora, gere um resumo SHA-1 do arquivo texto.
openssl dgst –sha1 –out hash_seu_nome.txt mensagem_seu_nome
Assinando um documento (4)
• Assine o hash com a chave privada.
openssl rsautl –sign –in hash_seu_nome.txt –inkey chave_seu_nome.prv –out assinatura_seu_nome
• Entregue os arquivos abaixo para o aluno ao seu lado.– mensagem_seu_nome.txt, – assinatura_seu_nome – chave_seu_nome.pub
Verificando a assinatura
• Desencripte a assinatura do aluno ao seu lado utilizando a chave pública dele.
openssl rsautl –verify –pubin –inkey chave_aluno_ao_seu_lado.pub –in
assinatura_aluno_ao_seu_lado
• Na tela será exibido o hash SHA-1 decifrado
• Gere o hash SHA-1 e verifique se são iguais.openssl dgst –sha1 mensagem_aluno_ao_seu_lado.txt
Top Related