Skip to content

Conheça a matemática poderosa que protege suas conversas: RSA - O algoritmo que mudou a internet para sempre

License

Notifications You must be signed in to change notification settings

EduFreit4s/CRIPTOGRAFIA-PONTA-A-PONTA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CRIPTOGRAFIA DE PONTA A PONTA

Introdução   |    Como funciona   |    Matemática   |    História   |    Contato

Esta interface python demonstra uma das técnicas mais sofisticadas de proteger dados utilizando um truque matemático incrível

Introdução

A criptografia de ponta a ponta é um sistema de algoritmos matemáticos chamado RSA que embaralham seus dados de tal forma que ninguém sem acesso a senha poderá compreender o conteúdo.

Esse mini artigo vai demonstrar com detalhes e uma linguagem acessível como mensageiros online fazem para proteger suas mensagens de texto. Para isso, foi criada uma interface amigável utilizando:

  • Python 3.8
  • Qt Designer 5.14.1

Todos os códigos estão disponíveis acima com comentários

Uma versão portátil para Windows está disponível para download na pasta windeploy

Como funciona a criptografia

Agora que você sabe que os dados são embaralhados, vamos aprofundar esse processo.

A criptografia funciona como uma transformada cuja função inversa é muito difícil de calcular. Ficou estranho né? Eu explico! Imagine o seno(x) = m. Na matemática, se quisermos encontrar o seno(x) cuja resposta é m, basta aplicar a função inversa arcoseno(m) que encontraremos x.

Exemplo: seno(90) = 1, logo, arcoseno(1) é igual a 90. Fácil né?

Assim como o seno, o algoritmo que estamos estudando é uma função com dado de entrada e saída:

m^e mod n = m'

E o inverso da nossa metáfora:

m'^d mod n = m

Onde m e 'm significa texto puro e o criptografado respectivamente.

A equação com e é utilizada para codificar o texto puro

A equação com d é usada para decodificar

Chamamos e e n de chave pública e d de chave privada

Chave pública e Chave privada

Nossa senha na verdade são três números (e, d e n), as "chaves". Qualquer pessoa pode ter acesso a e e n (elas são utilizadas para codificar a informação, mas apenas quem tiver d consegue resolver o enigma) Para encontrar as chaves são necessários uma sequência de passos:

  • Definir dois números primos.

    Quanto maior esses números primos, mais seguro é a criptografia

Chamamos esses números primos de p e q. n é obtido a partir produto de p e q.

  • Calcular função totiente φ(n) que é dado por (p-1)*(q-1).

A matemática garante que existe um e tal que 1 < e < φ(n) e o máximo divisor comum entre e e φ(n) é igual a 1.

  • Achar d, o inverso modular de e

A chave privada ou d, pode ser encontrada rapidamente quando d*e mod φ(n) for igual a um.

*obs.: p e q são gerados aleatoriamente. e e d são encontrados por tentativa e erro em um laço até satisfazer as condições do algortimo dos dois últimos passos acima

Demonstração matemática

p = 13, q = 17 | n -> p*q -> 13*17 = 221

φ(n) -> φ(221) = (p-1)*(q-1) -> (13-1)*(17-1) -> 12*16 = 192
e = MMC(φ(n),e) = 1 -> MMC(192,e) = 1 -> MMC(192,11) = 1 -> e = 11
d = d*e mod φ(n) = 1 -> d*11 mod 192 = 1 -> 35*11 mod 192 = 1 -> d = 35

Chave pública[e] = 11  |  Chave privada[d] = 35  |  Módulo[n] = 221

Para embaralhar o texto, cada letra será convertida em um número com 6 caracteres, essa relação valor-letra pode ser chamada de cifra. Neste programa foi utilizado o padrão ASCII que enumera as letras e símbolos mais utilizados.

Vamos criptografar a palavra "IFPB"

Para simplificar os cálculos utilizaremos a tabela abaixo ao invés do padrão ASCII

LETRA VALOR
I 6
F 1
P 4
B 7

Utilizando a cifra e a função m^e mod n para criptografar temos:

I ---> 6^11 mod 221 = 000141
F ---> 1^11 mod 221 = 000001
P ---> 4^11 mod 221 = 000166
B ---> 7^11 mod 221 = 000184

Nossa palavra "IFPB" codificada é: "000141000001000166000184"

Agora vamos reverter o processo seguindo os passos:

  • Quebrar a informação em bloco com 6 caracteres

000141000001000166000184

Utilizando a função m'^d mod n para decodificar temos:

000141^35 mod 221 = 6
000001^35 mod 221 = 1
000166^35 mod 221 = 4
000184^35 mod 221 = 7

  • Utilizar a cifra
VALOR LETRA
6 I
1 F
4 P
7 B

Nossa cifra“6147" convertida é: "IFPB"

obs.: utilize a calculadora do Windows ou esse site se quiser calcular esses números grandes!

Teoria e aplicações do RSA

RSA é um acrônimo para (Rivest-Shamir-Adleman). Cientistas criadores do algoritmo apresentado pela primeira vez em 1978 para uso militar e estratégico. A RSA Data Security Inc. (empresa que padroniza o algoritmo) recomenda gerar números primos p e q com 2048 bits de tamanho, ou seja, 617 dígitos. Isso garante proteção até 2030.

A teoria dos números é a base da criptografia assimétrica e sua força vem do problema da fatoração de inteiros. Problema esse tão difícil quanto o problema do caixeiro viajante ou logaritmo discreto

Sabendo que n é um produto de p e q e n trafega em rede insegura, podemos roubar essa informação e utilizar todos computadores do planeta para encontrar via força bruta, os dois fatores p * q que deram origem a n.

Basicamente, fatorar um semi primo (produto de dois números primos) p e q pode levar o tempo do universo se p e q forem grandes o suficiente!

A criptografia mudou o mundo para sempre. Essa técnica protege todo tipo de dado na internet. Desenvolvedores podem blindar seu software com chaves que garantem autenticidade. RSA também é utilizado em programas de vpn que torna impossível rastrear uma remetente web.

Sem criptografia a internet como conhecemos hoje não existiria

Contato

About

Conheça a matemática poderosa que protege suas conversas: RSA - O algoritmo que mudou a internet para sempre

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published