O criptosistema ElGamal ou criptografia El Gamal (ou sistema El Gamal ) é um protocolo de criptografia assimétrica inventado por Taher Elgamal em 1984 e construído a partir do problema de logaritmo discreto .
Este protocolo é utilizado pelo software livre GNU Privacy Guard , cujas versões recentes implementam inclusive sua versão em curvas elípticas . Ao contrário da criptografia RSA , ela nunca esteve sob proteção de patente .
O artigo fundador de Taher Elgamal apresenta um protocolo de criptografia , mas também uma assinatura digital , que apesar de suas semelhanças (ambas são construídas sobre o problema do logaritmo discreto ) não devem ser confundidas. Este artigo trata apenas do protocolo de criptografia .
O algoritmo é descrito para um grupo cíclico finito dentro do qual o problema de decisão Diffie-Hellman (DDH) é difícil. Informações mais específicas são fornecidas na seção Resistência a ataques de CPA .
Podemos notar que o DDH é uma hipótese de trabalho mais forte do que a do logaritmo discreto, uma vez que é válida se alguma vez o problema do logaritmo discreto for difícil. Existem também grupos onde o problema de DDH é fácil, mas onde não existe um algoritmo eficiente para resolver o logaritmo discreto .
Por se tratar de um esquema de criptografia assimétrica , o criptosistema é composto por três algoritmos ( probabilísticos ): GenClefs , Encrypt e Decrypt .
Para a ilustração, assumiremos que Bob deseja enviar uma mensagem para Alice . Mas esta mensagem contém informações confidenciais, então Bob não deseja que seja compreensível por ninguém além de Alice. Então, Bob criptografará sua mensagem.
Como os esquemas de criptografia assimétrica são geralmente mais lentos do que seus análogos simétricos, a criptografia ElGamal é frequentemente usada na prática como parte da criptografia híbrida , como sua especificação PGP.
Uma maneira de ver esse esquema de criptografia é traçar um paralelo com o protocolo de troca de chaves Diffie-Hellman . O algoritmo de criptografia consiste então no envio de uma mensagem criptografada por uma máscara descartável sob a chave compartilhada , que pode ser calculada por Alice desde que ela o tenha feito (ver ilustração ao lado).
A primeira etapa do esquema de criptografia é produzir um par de chaves: a chave pública e a chave secreta . O primeiro será usado para criptografar as mensagens e o segundo para descriptografá-las.
Então Bob tem acesso à chave pública de Alice . Para criptografar uma mensagem codificada como um elemento do grupo , Bob começa desenhando um número aleatório e o usará para cobrir a mensagem durante o cálculo . Para permitir que Alice para descriptografar a mensagem, Bob irá adicionar a esta parte da informação mensagem sobre o perigo: .
Finalmente a cifra será composta por estas duas peças :, e Bob envia para Alice.
Tendo acesso a e para , Alice pode, assim, calcular:
E, portanto, é capaz de encontrar a mensagem .
Olhando para a informação pública ; Percebemos que apenas elementos de são visíveis e não os expoentes (aqui x e s , respectivamente). Informalmente podemos notar que o problema do logaritmo discreto pode ser interpretado como o fato de que é difícil encontrar a informação secreta ( por exemplo) que tornaria possível encontrar a mensagem.
Mais precisamente, é o problema de decisão Diffie-Hellmann (ou DDH ) que permite garantir a segurança semântica do esquema.
Demonstração ReduçãoAssumindo que temos um adversário contra a segurança semântica da criptografia ElGamal que ganha com uma probabilidade não insignificante ε . Torna-se então possível construir um oponente contra o DDH, o que contradiz a suposta dificuldade desse problema. Esta redução que acabamos de descrever constituirá a prova de segurança do esquema.
Para construir este oponente, que será doravante denominado " redução ", pressupõe-se receber um DDH triplo : seu objetivo é então decidir se ou com uma probabilidade não desprezível. Para isso possui uma interface com o adversário descrito acima voltado para a segurança semântica do criptossistema ElGamal.
A redução vai, portanto, mandar a chave pública para o adversário contra ElGamal . Ao produzir o desafio para o oponente contra a segurança semântica do criptossistema, a redução será enviada como criptografada: para de sua escolha. Se alguma vez a trinca for uma trinca DDH , isto é , se , então seria formada como uma cifra válida para ElGamal no que diz respeito à chave pública . Por outro lado, se o expoente for aleatório, então o oponente contra ElGamal não será capaz de distinguir as duas mensagens do desafio a não ser respondendo aleatoriamente.
Só temos de responder "1" (correspondendo ao fato de que o desafiante para DDH enviou um tripleto DDH) se alguma vez nosso oponente obtiver sucesso, e "0" (correspondendo ao fato de que o desafiante para DDH enviou um triplo aleatório) por outro lado.
AnáliseVamos agora limitar a vantagem de ganhar com nossa redução da vantagem ε do suposto oponente contra nosso esquema.
Começamos observando que temos dois casos: ou o desafio enviado por nosso desafiante é um tripleto DDH real , ou é um trigêmeo desenhado uniformemente.
Assim, temos uma vantagem que permanece significativa: para obter a mesma segurança entre o DDH e nosso criptosistema, é suficiente que o problema do DDH permaneça seguro com um bit de segurança adicional.
Em modelos com um atacante com mais poder, como em ataques de cifra escolhidos, o criptosistema ElGamal não é seguro devido à sua maleabilidade ; na verdade, dada uma cifra para a mensagem , podemos construir a cifra , que será válida para a mensagem .
Essa maleabilidade (é um homomorfismo multiplicativo), por outro lado, possibilita seu uso para votação eletrônica, por exemplo.
No entanto, existem variantes que alcançam segurança contra ataques de cifras escolhidos, como o criptossistema Cramer-Shoup, que pode ser visto como uma extensão da cifra ElGamal.
Para o exemplo, podemos tomar o grupo , com como gerador g = 5 ( Atenção : este não é um grupo seguro, estes valores foram tomados apenas para produzir um exemplo simples).
Uma possível chave pública poderia ser : e como uma chave secreta .
Observe que, como a criptografia é um algoritmo probabilístico , existem diferentes saídas possíveis para a mesma mensagem. Uma possível cifra para a mensagem 42 poderia ser (58086963, 94768547) , mas também (83036959, 79165157) para os riscos r iguais a 6689644 e 83573058, respectivamente.
No entanto, se fizermos o cálculo para nossos dois números, obteremos 42 na saída.