Como a criptografia RSA mantém suas transações na Internet seguras

9

A criptografia RSA é a espinha dorsal da comunicação segura na Internet. É um tipo de criptografia de chave pública que protege e-mails, transações digitais e dados confidenciais que fluem pelas redes. O algoritmo leva o nome de seus criadores: Ronald L. Rivest, Adi Shamir e Leonard M. Adleman. Eles desenvolveram o sistema enquanto lecionavam no Instituto de Tecnologia de Massachusetts.

A segurança da RSA depende de um obstáculo matemático simples, fácil de criar, mas quase impossível de reverter. Um usuário começa escolhendo dois grandes números primos, p e q. Esses números são tão grandes que multiplicá-los para obter n é trivial, mas fatorar n de volta em p e q é computacionalmente proibitivo.

Pense desta forma: multiplicar dois números enormes leva uma fração de segundo. Tentando descobrir quais dois números foram multiplicados para obter esse resultado? Isso poderia levar bilhões de anos com a tecnologia atual.

A partir de 2015, os padrões de segurança do governo dos EUA exigem que o módulo n seja de pelo menos 2.048 bits. Em termos decimais, isso significa que p e q têm cerca de 308 dígitos cada, criando um número de 617 dígitos para n. Os maiores números que fatoramos com sucesso têm apenas metade desse tamanho. A dificuldade de fatorar aproximadamente dobra para cada três dígitos adicionais no módulo. Este crescimento exponencial na complexidade garante que as chaves de 617 dígitos permaneçam protegidas contra ataques de força bruta durante décadas.

A mecânica da geração de chaves

Uma vez selecionados p e q, o sistema gera uma chave pública e uma chave privada. O usuário escolhe um número inteiro e menor que n. Este número deve ser relativamente primo ao produto de (p – 1) e (q – 1). Em linguagem simples, e não compartilha fatores comuns com esse produto além de 1.

Esta escolha específica garante a existência de outro número d. Quando você multiplica e por d e divide pelo mínimo múltiplo comum de (p – 1) e (q – 1), o resto é 1.

Encontrar d é fácil se você conhece p e q. O algoritmo euclidiano calcula isso em instantes. Mas se você não conhece p e q, encontrar d a partir de e é tão difícil quanto fatorar n. Essa dificuldade é toda a base da criptosegurança da RSA.

A segurança do RSA não é mágica; é matemática. Especificamente, é a assimetria entre a multiplicação fácil e a fatoração impossível.

Chaves Públicas vs. Chaves Privadas

Os rótulos d e e descrevem funções, não papéis estritos. As chaves são intercambiáveis. Essa flexibilidade permite que o RSA atenda a dois propósitos distintos: sigilo e autenticação.

Para criar um canal de sigilo, o usuário A publica e e n em um diretório público. O usuário A mantém d em segredo. Quando alguém deseja enviar uma mensagem privada para A, ele converte a mensagem em números menores que n e a criptografa usando e e n. Somente A pode descriptografá-lo porque apenas A contém d. A suposição – e fortes evidências – sustenta que ninguém mais pode descriptografar a mensagem sem fatorar n.

A autenticação funciona de maneira diferente. O usuário A publica d e n e mantém e em segredo. O usuário B deseja verificar se está conversando com A. B envia uma mensagem de desafio para A. Se A retornar a versão criptografada usando e, B poderá descriptografá-la usando o público d. Se a mensagem descriptografada corresponder ao desafio, B sabe que o remetente possui e. Como apenas A possui e, a identidade é verificada.

Assinaturas Digitais e Hashing

A assinatura digital adiciona uma camada de complexidade. Requer uma função de hash criptosegura. Esta é uma função pública que compacta qualquer mensagem em um resumo menor. Cada parte do resumo depende de cada parte da mensagem original. Altere um bit na mensagem original e aproximadamente metade dos bits no resumo serão invertidos.

Um hash criptoseguro torna computacionalmente inviável encontrar uma mensagem que produza um resumo pré-atribuído específico. Também torna difícil encontrar uma mensagem diferente com o mesmo resumo de uma mensagem conhecida.

Para assinar uma mensagem, A criptografa o resumo com seu segredo e e o anexa à mensagem. A mensagem em si não precisa ser secreta. Qualquer um pode usar a chave pública d de A para descriptografar a assinatura e recuperar o resumo. Eles então calculam o resumo da mensagem recebida de forma independente. Se os dois resumos corresponderem, a assinatura é válida. Somente A poderia ter criptografado o resumo porque apenas A conhece e.

A realidade híbrida

Há um custo para esta segurança. A criptografia assimétrica envolve significativamente mais computação do que a criptografia simétrica (chave única). Essa alta demanda de processamento reduz drasticamente o rendimento. Por cerca de 20 anos, algoritmos de chave única alcançaram rendimentos 1.000 a 10.000 vezes maiores do que algoritmos de duas chaves para níveis de segurança comparáveis.

Como o RSA é lento, raramente é usado para criptografar diretamente grandes quantidades de dados. Em vez disso, alimenta sistemas híbridos. A RSA cuida do trabalho pesado de autenticação e assinaturas digitais. Ele também troca com segurança uma chave de sessão gerada aleatoriamente. Depois que a chave é compartilhada, o sistema muda para um algoritmo de chave única para a transmissão em alta velocidade dos dados reais. Quando a sessão termina, a chave é descartada.

Essa combinação nos dá o melhor dos dois mundos. Obtemos a troca segura de chaves de criptografia de chave pública com a velocidade da criptografia simétrica para a maior parte dos nossos dados.

A matemática se sustenta. As chaves permanecem seguras. Mas à medida que o poder da computação aumenta, a definição de “grandes” muda. O que é inquebrável hoje pode ser solucionado amanhã. Continuamos construindo números primos maiores. Continuamos esperando que a lacuna entre a multiplicação fácil e a fatoração difícil permaneça grande o suficiente para proteger nossas vidas digitais.