Executando verificação de segurança...
6

Algoritmo RSA: Estrutura e implementação usando Ruby

Futucando uns arquivos antigos da faculdade, encontrei um documento sobre o algoritmo RSA que escrevi e implementei usando ruby na época.

Resumo: O documento descreve o algoritmo RSA de criptografia assimétrica, que usa um par de chaves pública e privada para garantir a segurança de dados. Explica conceitos essenciais como números primos e coprimos, detalha as etapas para gerar as chaves (definição de 𝑝 e q, cálculo de 𝑁, função totiente e valores de 𝑒 e 𝑑), e apresenta fórmulas para codificação e decodificação.

Links do seu repositório do Github

Repositório do projeto (Gem) RSA:- Dayanfreitas/RSA
Documento sobre o algoritmo RSA: RSA Algorithm Documentation

Carregando publicação patrocinada...
2

dayanfreitas, esta é a publicação dos desenvolvedores do algoritmo, Rivest, Shamir e Adler:

https://dl.acm.org/doi/pdf/10.1145/359340.359342

Para quem está aprendendo sobre o algoritmo, o material que você disponibizou é um bom começo e em lingua portuguesa. Exemplos práticos sempre ajudam a entender a mecânica do processo que, ao meu ver, precisam de uma biblioteca para lidar com grandes números.

IMAGE ALT TEXT
https://www.youtube.com/watch?v=Z8M2BTscoD4

Vez ou outra me confundo entre RSA e AES, duas "coisas" totalmente diferentes. Enquanto a primeira faz uso de um par de chaves (pública e privada) e a segunda é um algoritmo de encriptação avançada.

5

a segunda é um algoritmo de encriptação avançada

Ambos são algoritmos de encriptação. A diferença é que o AES é simétrico (a mesma chave é usada para encriptar e decriptar), enquanto o RSA é assimétrico (usa um par de chaves, sendo que uma é usada para encriptar, e outra para decriptar).

Simplificando ao máximo: todo par de chaves tem uma que é pública (pode ser divulgada sem problemas - aliás, a ideia é que seja divulgada, senão não serve pra nada), e outra que é privada (somente o "dono" das chaves tem acesso, podendo ser protegido por senha, etc). Se algo é encriptado com uma das chaves, só pode ser decriptado pela outra.

Então se eu quero te enviar uma informação que só vc pode ter acesso, eu uso a sua chave pública para encriptar. Assim, somente a sua chave privada pode decriptar esta informação. E como - idealmente - só vc tem acesso à sua chave privada, ninguém mais conseguirá decriptar a informação.

Como curiosidade, também existe o processo inverso, mas aí é chamado de "assinatura digital": vc "encripta" uma informação com sua chave privada, e todos conseguem usar sua chave pública para "decriptar". E qual a utilidade disso? Simples: se eu consegui "decriptar" usando sua chave pública, quer dizer que aquela informação foi com certeza "encriptada" com sua chave privada. E como só vc tem acesso à chave privada, certamente a informação foi gerada por vc - ou seja, isso garante que a informação não veio de outra pessoa. Note que usei os termos "encriptar" e "decriptar" entre aspas porque o termo correto para este caso é "assinar" (que é feito com a chave privada) e "verificar a assinatura" (feito com a chave pública).

Por fim, como o RSA é um algoritmo lento para encriptar e decriptar, costuma-se usar um processo misto: por exemplo, se eu quero trocar informações com vc, eu gero uma chave para um algoritmo simétrico (como o AES), e esta é encriptada com sua chave pública. Então eu mando pra vc, que decripta com sua chave privada, e aí ambos teremos a mesma chave simétrica e podemos usá-la para trocar mensagens. Aliás, é exatamente isso que ocorre em conexões HTTPS.

2

kht, valeu pelos minutos que dedicou para escrever um esclarecimento necessário. Sua explicação foi simples e prática, ao exemplificar o motivo que nos leva a usarmos essa encriptação mista, porque diferentes aplicações exploram essa espécie de handshake, se eu não estiver extrapolando o uso deste termo.

O processo de assinatura digital vem tomado cada vez mais espaço na vida das pessoas quando substitui a assinatura (papel e caneta) por um bloco de bytes que representa a chave pública.

Já pensou escrever um ebook, publicando a respeito do tema para esclarecer para qualquer leigo esses detalhes, sua importância e porque não se deve emprestar credenciais de chaves privadas para terceiros?

Off topic

Stackexchange robot

Seguindo um dos links que apontou na sua resposta, percebi que o stackexchange possui um usuário robozinho para fazer algumas tarefas de limpeza naquela plataforma.

About
Hi, I'm not really a person.

I'm a background process that helps keep this site clean!

I do things like

Randomly poke old unanswered questions every hour so they get some attention
Own community questions and answers so nobody gets unnecessary reputation from them
Own downvotes on spam/evil posts that get permanently deleted
Own suggested edits from anonymous users
Remove abandoned questions