Atualmente, o algoritmo RSA é a base da maioria das aplicações que utilizam criptografia assimétrica. Também chamada de criptografia de chave pública, ela utiliza duas chaves distintas e contém três etapas: geração de chaves, codificação e decodificação. A seguir, veja um exemplo de sua aplicação.
Existem diferentes algoritmos assimétricos. Um dos mais conhecidos é o RSA (devido aos seus desenvolvedores Rivest, Shamir, e Adleman). Este algoritmo é amplamente utilizado nos navegadores, para sites seguros e para criptografar e-mails. É de domínio público.
1.Para criptografar uma mensagem:
c = m^e mod n
2.Para descriptografá-la:
m = c^d mod n
Criar um par de chaves é muito simples, mas cuidado ao escolher e, d e n. E saiba que o cálculo desses três números é delicado.
Veja como fazer:
1. Pegar dois números primos p e q (tamanho aproximadamente igual). Calcular n = p·q.
2. Pegar um número e que não tem nenhum fator em comum com (p-1)(q-1).
3. Calcular d como ed mod (p-1)(q-1) = 1.
O par (e,n) é a chave pública. (d,n) é a chave privada.
Em primeiro lugar, vamos criar o par de chaves:
Agora, você tem as chaves:
Criptografe a mensagem "HELLO”. Pegue o código ASCII de cada caractere e os coloque lado a lado: m = 7269767679.
Então, recorte a mensagem em blocos contendo menos dígitos do que n. Neste caso, tem 4 dígitos, então recorte a mensagem em blocos de três dígitos: 726 976 767 900 (completamos com zeros).
Depois, criptogrife cada bloco:
A mensagem criptografada é 436 822 825 552. Ela pode ser descriptografada com gras>d</gras>:
Ou seja, a sequência de números 726976767900.
Encontramos a mensagem em texto simples 72 69 76 76 79: "HELLO".
Na prática, não é tão fácil de programar:
É preciso encontrar números primos grandes (isso pode ser muito longo e demorado para calcular)
É preciso obter números primos p e q realmente aleatórios (o que não é fácil).
Não se usa blocos tão pequenos quanto no exemplo acima. Você deve ser capaz de calcular potências e módulos com números muito grandes.
Na verdade, nunca se usam algoritmos assimétricos para criptografar todos os dados, porque eles são muito demorados para calcular: criptografam-se os dados com um algoritmo simétrico cuja chave é escolhida aleatoriamente, e é esta chave que é descriptografada com um algoritmo assimétrico, como o RSA.
Se você quiser criptografar seus arquivos, os softwares OpenPGP ou GnuPG.
Existem outros algoritmos assimétricos, incluindo o ECC (Elliptic Curve Cryptosystems, por curva elíptica). Este sistema é baseado em uma curva paramétrica, que passa por um certo número de pontos de coordenadas inteiras. Ainda não está bem desenvolvido, mas é promissor.
Também existe o Diffie-Hellman , cada vez mais utilizado que o RSA. (Diffie-Hellman foi rapidamente adotado pela comunidade open source, quando o RSA ainda não era de domínio público).
Foto: © Marcus Spiske - Unsplash