Criptografia assimétrica
Continuando a série sobre criptografia (pode ler o artigo anterior aqui), este artigo vai falar sobre criptografia de chave assimétrica.
A criptografia de chave assimétrica, também conhecida como criptogafia de chave pública, é uma parte fundamental da segurança em sistemas modernos, aplicações e protocolos, assegurando a confidencialidade, autenticidade e irretrabilidade (mais sobre os princípios aqui) da comunicação, dados e mensagens.
Definição
A criptografia de chave pública, também conhecida como criptografia assimétrica, duas chaves diferentes são usadas no processo, uma para encriptar e outra para decriptar.
As duas chaves, também conhecida como par de chaves, são usadas em partes diferentes do processo. A chave pública é uma chave criptográfica que pode ser usada por qualquer pessoa e compartilhada (por isso o nome pública). A chave privada (também conhecida como chave secreta) deve ser mantida em segredo e não ser compartilhada por ninguém.
Em um sistema de criptografia simétrica (mais aqui), ambas as partes devem conhecer a chave para que a comunicação seja de feita de forma segura. Porém, a troca das chaves deve ser feita de forma segura antes que a comunicação seja feita, o que não é tão trivial de ser feito.
Já em um sistema de criptografia de chave pública, uma das chaves (a pública) é compartilhada abertamente com todos e somente a chave privada é mantida em segredo.
Além da criptografia em si, podem ser usadas para assinatura digital e troca de chaves simétricas.
Geração de chaves
Uma parte importante do algortimo de chave assimétrica é a geração do par de chaves usadas no processo.
As chaves pública e privada são geralmente números primos muito grandes, matematicamente relacionadas, isto é, uma foi obtida através de uma conta ou operação com a outra.
A partir de uma chave pública deve ser impossível ou muito trabalhoso conhecer qual a chave privada que a gerou. Por causa desse princípio, a chave pública pode ser compartilhada livremente.
Por exemplo, imagine que a sua chave pública seja o número 10 e que você sabe que a chave privada deve ser um divisor desse número. Com uma rápida conta, você percebe que a chave privada pode ser 2 ou 5, o que pode ser facilmente testado. Na prática, os números utilizados são muito maiores e segue mais alguns critérios, o que garante que podem existir muitas possibilidades de chaves, além do tempo gasto para se chegar nas respostas.
Criptografia de chave pública
Nos algoritmos usados para encriptar uma mensagem, o par de chaves são gerados. Após a geração, a chave pública é compartilhada com qualquer pessoa que deseja fazer parte da comunicação.
A mensagem então é encriptada pela chave pública e enviada. Somente quem tem a chave privada é que consegue abrir a mensagem e ver o seu conteúdo. Por somente uma pessoa ter o conhecimento dessa chave (privada), e que o processo de decriptação só pode ser realizado com a outra chave (não a pública, que gerou a cifra), garante-se que a mensagem só vai ser aberta por quem realmente deve ser.
Assinatura digital
Neste processo, um documento ou mensagem é assinado com a chave privada e pode ser verificado por qualquer um que possua a chave pública. Por somente uma pessoa possuir a chave privada, isso garante com que a mensagem realmente é de quem se diz ser, o que garante a autenticidade da mensagem.
Uma assinatura também é usada para garantir que o remetente não tente voltar a atrás por algo feito ou dito, ou que alguém tente alterar a mensagem, já que a assinatura é matematicamente vinculada com a mensagem original.
Por ser um algoritmo geralmente lento, as mensagens não são usadas em sua totalidade e sim uma verificação ou forma mais simples, ou seja, o seu hash. Assim, ainda garantimos que qualquer alteração na mensagem original seja percebida, o seu hash é alterado e, consequentemente, a assinatura também.
Troca de chaves
Os algoritmos assimétricos são quase sempre mais lentos e exigentes, computacionalmente falando, do que os simétricos. Em muitos casos é comum a troca de chaves simétricas usando algoritmos de troca de chaves (que usa conceitos de chaves assimétricas) e então transmitir os dados usando a chave trocada e o algoritmo simétrico. Protocolos como PGP, SSH e SSL/TLS usam desse procedimento.
De forma simplificada, as duas pessoas geram um par de chaves público-privado cada uma. Depois, cada uma envia para a outra a sua chave pública. A seguir, é feita uma combinação entre a sua própria chave privada (não compartilhada) com a chave pública recebida do outro. Esse valor é então usado como chave secreta em outro algoritmo pré-determinado.
Algoritmos populares
Vamos falar rapidamente sobre alguns algoritmos assimétricos mais utilizados.
Diffie-Hellman
Criado na década de 1970 por Whitfield Diffie e Martin Hellman, é o método mais usado para trocas de chaves. Foi um dos primeiros exemplos práticos de trocas de chaves dentro do campo da criptografia.
Curva elíptica
A criptografia de curva elíptica (ECC) é uma abordagem para a criptografia assimétrica que utiliza da estrutura algébrica de curvas elípticas sobre campos finitos. As chaves são menores se comparados com outros algoritmos e provém uma segurança similar.
RSA
Um dos primeiros algoritmos assimétricos criados e também um dos mais populares, ainda largamente usado. É um acrônimo para as letras iniciais de seus criadores, Ron Rivest, Adi Shamir e Leonard Adleman, que descreveram o algoritmo em 1977. É baseado em número primos grandes e exponenciação modular.
Conclusão
Nesse artigo, vimos um pouco sobre a criptografia assimétrica e alguns de seus usos.