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
Download

07 Função de hash e Assinaturas digitais