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.

Fernando Souza
Prognosys
5 min readApr 11, 2020

--

Photo by Chunlea Ju on Unsplash

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.

Criptografia de chave assimétrica.

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.

Geração de par de chaves público-privado.

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.

Processo de encriptação usando chave assimétrica.

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.

Processo de assinatura usando chave assimétrica.

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.

Algoritmo de troca de chaves Diffie-Hellman.

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.

--

--

Fernando Souza
Prognosys

Enthusiast of programming, electronics, technology and beer, not necessarily in that order. BuyMeACoffee: buymeacoffee.com/ustropo