Lição
A teoria — RSA: Criptografia de Brinquedo
O RSA é uma só operação usada duas vezes. Cifrar é me mod n e decifrar é cd mod n — a mesma exponenciação modular, com outro expoente. O truque está em escolher o par de modo que aplicá-lo duas vezes devolva a mensagem, enquanto conhecer um dos expoentes nada diz sobre o outro. Tudo o que o painel imprime é a procura desse par. Publicado por Rivest, Shamir e Adleman em 1978 — e, como só se soube quando o GCHQ o desclassificou em 1997, descoberto quatro anos antes por Clifford Cocks e deixado numa gaveta.
O que significa cada símbolo
n- o módulo,
p·q. Público. O segredo são os seus fatores, não o número em si. φ(n)- a função φ de Euler,
(p−1)(q−1). O painel consegue imprimi-la porque lhe deram p e q; um atacante com apenas n não consegue, e passar de n a φ é tão difícil como fatorizar. e- o expoente público. Serve qualquer número coprimo com φ(n), e é por isso que muda quando mudas um primo.
d- o expoente privado,
e⁻¹ mod φ(n). Um único inverso modular — imediato se souberes φ, e todo o jogo se não souberes.
De onde vem a fórmula
- Multiplica os primos:
n = p·q. Nos valores por omissão, 61 · 53 = 3233. Esse número é publicado. Recuperar 61 e 53 a partir de 3233 leva um instante à mão, e é essa a razão honesta para isto se chamar brinquedo. - Calcula
φ(n) = (p−1)(q−1)= 60 · 52 = 3120. É o eixo de todo o esquema: n é público e φ(n) não é, e o único caminho conhecido de um para o outro passa pela fatorização. - Escolhe
ecoprimo com φ(n) e resolvee·d ≡ 1 (mod φ(n))em ordem a d. O painel mostra7⁻¹ mod 3120 = 1783. Repara no que esse passo não é: não é difícil. Sabendo φ, é um só inverso modular. O sigilo de d assenta inteiramente no sigilo de φ. - Porque é que a ida e volta resulta: por construção
e·d = 1 + kφ(n), logomed = m1+kφ(n) ≡ m (mod n)— o teorema de Euler. Decifrar não é uma operação inversa inventada à parte; é a mesma exponenciação, com o expoente que desfaz a primeira.
Como ler o que vê
A linha que vale a pena vigiar é e, porque não é uma constante. Com os primos por omissão marca 7; muda p para 67 e passa a 5. A razão está na linha acima: e tem de ser coprimo com φ(n), e φ passou de 3120 para 3432. Compara depois os dois expoentes no ecrã — e = 7 contra d = 1783. O público é minúsculo e o privado não é, e nenhuma das duas coisas é acaso: e é escolhido pequeno de propósito para cifrar sair barato, e d é o que o inverso der. A última linha é a prova de que correu bem: m′ = 42, o número que escreveste.
- Pressupõe
- Que a mensagem é um número menor do que n. Com n = 3233 não há nada para cifrar acima de 3232 — por isso o RSA real nunca cifra uma mensagem diretamente: cifra uma chave simétrica preenchida de umas centenas de bits e deixa uma cifra mais rápida transportar o texto. Assume também p ≠ q, e que nunca reutilizas um primo num segundo módulo: dois módulos que partilham um fator ficam ambos quebrados por um único máximo divisor comum.
- Falha quando
- Podes quebrar esta página sem fatorizar nada. Põe p = 67, q = 53 e a mensagem a 3. O painel escolhe e = 5 e imprime como cifra 243 — que é apenas 3⁵. Como 3⁵ é menor do que n = 3551, a redução modular nunca aconteceu: a cifra é uma potência vulgar, e a raiz quinta de 243 é 3. Sem chave, sem fatorizar, mensagem recuperada. Experimenta m = 5 e obténs 3125, que é 5⁵; em m = 8 a potência ultrapassa finalmente n e a cifra torna-se um inútil 809. Isto não é um defeito desta página — é a razão por que ninguém cifra um número nu. O RSA real preenche primeiro a mensagem com aleatoriedade estruturada, que é o que a RFC 8017 especifica e o que faz de uma exponenciação um criptossistema.
Problemas resolvidos na íntegra
-
Um par de chaves RSA para p = 61 e q = 53 5 passos
Gere o par de chaves RSA para p = 61 e q = 53 e cifre m = 42. Todos os números abaixo decorrem desses três, incluindo o expoente público.
-
O módulo é publicado e a função totiente é destruída, contudo ambos estão à distância de uma multiplicação dos números primos. φ(n) conta os inteiros inferiores a n que não partilham nenhum fator com ele, o que para um produto de dois primos distintos é (p − 1)(q − 1).
-
O expoente público tem de ser invertível módulo φ, o que significa coprimo em relação a ele. Fatorize-se φ e os candidatos pequenos eliminam-se a si mesmos, deixando 7 como o menor expoente ímpar disponível. As chaves reais usam 65537, mas isso é maior do que este φ, pelo que a ferramenta recorre ao menor coprimo.
-
Inverter 7 módulo 3120 é o algoritmo de Euclides estendido e nada mais. Três divisões chegam a um resto de 1, e inverter o percurso dessas mesmas três linhas escreve esse 1 como uma combinação de 3120 e 7.
-
O coeficiente de 7 nessa combinação é negativo, e um inverso negativo torna-se positivo somando o módulo uma vez. A cifragem é então uma única exponenciação modular, efetuada elevando ao quadrado duas vezes em vez de multiplicar 42 por si mesmo sete vezes.
-
A decifragem nunca precisa de ser verificada por força bruta e, para tamanhos de chave realistas, nem seria possível. Os dois expoentes foram construídos de modo a que o seu produto seja uma unidade superior a um múltiplo de φ, e o teorema de Euler conclui a prova para qualquer m coprimo com n — o que 42 é.
Resposta
A ferramenta apresenta n = 3233, φ = 3120, d = 1783 e c = 240, e confirma que 240 é decifrado de volta para 42. A parte que vale a pena reter é o que φ realmente é. Não é um segundo segredo ao lado de p e q — é o mesmo segredo escrito de forma diferente. Dados n e φ, obtém-se p + q = n − φ + 1 = 114 e pq = 3233, uma equação do segundo grau cujo discriminante é um quadrado perfeito, a qual devolve 61 e 53 numa única linha. Portanto, um gerador de chaves que revele φ revelou a fatorização tão completamente como se tivesse impresso os primos, razão pela qual φ é calculado uma vez, usado para encontrar d e depois descartado.
-
-
Fatorizar 3233 em 61 × 53 para derrotar a segurança RSA 6 passos
O painel fatoriza 3233 em 61 × 53 antes de acabar de ler a página. Essa fatorização é toda a segurança do RSA, aparentemente quebrada num instante. Calcule o que torna o mesmo problema impossível um tamanho de chave acima.
-
Os dois números de que o painel parte: o módulo, e a função de Euler que decorre dos dois primos.
-
Um atacante precisa de um único facto: o primo menor não pode exceder a raiz quadrada do módulo. Qualquer coisa maior precisaria de um parceiro mais pequeno do que ele próprio.
-
A busca percorre então os primos até 56, e há dezasseis. O décimo sexto é 53. Dezasseis divisões não são segurança, são um erro de arredondamento.
-
Meta agora um módulo que alguém use a sério. 2048 bits significa n perto de 2²⁰⁴⁸, e a sua raiz quadrada é 2¹⁰²⁴, cerca de 10³⁰⁸.
-
Ponha-lhe um preço. A mil milhões de divisões por segundo, são 10²⁹⁹ segundos — contra um universo com cerca de 4 × 10¹⁷ segundos.
-
O tempo é a unidade errada para um número destes; compare-o antes com algo físico.
Resposta
Dezesseis divisões contra 10³⁰⁸. Como 10³⁰⁸ equivale a 10²²⁸ vezes o número de átomos no universo observável, seria impossível sequer armazenar o contador. A parte útil é a forma, e não o tamanho: o trabalho do atacante cresce como √n, enquanto a chave cresce como log n. Assim, cada dois bits adicionais de chave duplicam o custo de quebrá-la e custam dois bits ao defensor. Essa assimetria é o sistema em si. A resposta instantânea da ferramenta não é uma falha na demonstração — ela é a própria demonstração, porque 3233 é o aspecto de um módulo quando a assimetria não ganha espaço para atuar.
-
Referências (4)
- The idea RSA is an instance of — public keys, two years earlier: W. Diffie & M. Hellman, "New directions in cryptography." IEEE Transactions on Information Theory 22(6), 644–654, 1976.
- What real RSA wraps round the message, and why the bare exponentiation on this page is not a cryptosystem: K. Moriarty (Ed.), B. Kaliski, J. Jonsson & A. Rusch, "PKCS #1: RSA Cryptography Specifications Version 2.2." RFC 8017, November 2016 — RSAES-OAEP in §7.1.
- The scheme the tool walks through, including e·d ≡ 1 mod φ(n): R. L. Rivest, A. Shamir and L. Adleman, "A method for obtaining digital signatures and public-key cryptosystems." Communications of the ACM 21(2), 120–126, 1978.
- Why the security rests on factoring rather than on hiding d: A. J. Menezes, P. C. van Oorschot and S. A. Vanstone, Handbook of Applied Cryptography, §8.2. CRC Press, 1996. ISBN 978-0-8493-8523-0.