fundamentos matematicos aplicados a criptografia
TRANSCRIPT
FUNDAMENTOS MATEMÁTICOS APLICADOS À CRIPTOGRAFIA
Sérgio S. Oliveira∗
Resumo: Este trabalho apresenta os principais fundamentos matemáticos aplicados à criptografia moderna.
Relata breve histórico da evolução da criptografia moderna e indica as principais referências bibliográficas.
Introduz e exemplifica os seguintes tópicos da Teoria dos Números, da Aritmética e da Álgebra Modular:
Divisibilidade; Números Primos; Maior Divisor Comum (mdc); Algoritmo de Euclides; Algoritmo Euclidiano
Estendido; Congruências; Operações Aritméticas da Congruência; Divisão na Congruência; Inverso
multiplicativo; Solução para ax ≡ c (mod n) - quando mdc (a,n) =1; Solução para ax ≡ c (mod n) - quando mdc
(a,n) >1 e c não é divisível por d; d = mdc (a,n). Solução para ax ≡ c (mod n), quando mdc (a,n) >1 e c|d, d =
mdc (a,n); Congruência Quadrática; Frações na Congruência; Restrições a Frações na Congruência; Expansão de
Congruências em Sistemas; Teorema Chinês do Resto; Busca de soluções para o Teorema do Resto Chinês; Uso
do Teorema do Resto Chinês; Forma Geral do Teorema do Resto Chinês; Exponenciação Modular; O problema
do Logaritmo Discreto; Pequeno Teorema de Fermat; Geração de números primos pelo Pequeno Teorema de
Fermat; Função φφφφ de Euler; Teorema de Euler; Princípio Básico aplicado ao Teorema de Euler; Raízes
Primitivas; Raízes Primitivas em campos de números primos; Conclusões sobre raízes primitivas; Inversão de
matrizes mod n; Condição necessária para inversão de matriz mod n; Comparação entre inversão de matrizes
inteira e mod n; Exemplos de inversão de matrizes mod n; Raiz quadrada mod n; Exemplo de determinação de
raiz quadrada mod n; Raiz quadrada de módulo número composto; Equivalência entre determinação de raiz
quadrada na congruência e a fatoração de n; Corpos Finitos (Finite Fields). Corpo de Galois (Galois Field – GF);
Polinômios mod 2; Divisão de polinômios mod 2; Geração de corpos finitos por Z2 [X] mod polinômio.
Procedimento para geração de corpos finitos por Z2 [X] mod polinômio.
Palavras-chave: Criptografia, Álgebra Modular, Aritmética Modular, Teoria dos Números.
Abstract: MATHEMATICAL BASIS APPLIED TO CRYPTOGRAPHY. This work presents the main
foundations applied to modern cryptography. It makes a historical abstract about evolution´s modern
cryptography. And point to principal bibliography references. The work introduces and give examples about the
follwing topics in Basic Number Theory, Modular Aritmetic and Álgebra. Divisibility; Prime Number Theorem;
Greatest Common Divisor (gdc); Euclidian Theorem; Extended Euclidian Theorem, Congruences; Aritimetic
Operations in Congruence; Division in Conguence; Multiplicative Inverse; Solving ax ≡ c (mod n) - when gdc
(a,n) =1; Solving ax ≡ c (mod n) - when gdc (a,n) >1 e c is not divisible by d; d = gdc (a,n);. Solving ax ≡ c (mod
n), when gdc (a,n) >1 e c|d, d = gdc (a,n); Quadratic Conguence; Working with Fractions in Congruence;
Restrictions at Fractions in Congruence´s Expansion at Systems; Chinês Remainder Teorhem. Searching
Solutions at Chinese Remainder Theorem; Aplications to Chinese Remainder Theorem; General Form to
Chinese Remainder Theorem; Modular Exponentiation; The Problem of Discrete Logaritm; Fermat´s Little
∗ Professor do Curso de Sistemas de Informação do Centro Universitário Euro-Americano (UNIEURO).
2
Theorem; Prime Generation with Fermat´s Little Theorem; Euler´s Function φφφφ; Euler Theorem; Basic Principle
Applied to Euler Theorem; Primitive Roots; Primitive Roots at Prime Number Field; Conclusions about
Primitive Roots; Inverting Matrices Mod n; Condition to Inverting Matrices Mod n; Comparision between
Inverting Integer Matrices and InvertingMatrices Mod n; Examples about Inverting Matrices Mod n; Square
Roots Mod n. Searching Square Root Mod n; Equivalence between Searchig Square Root Mod n at Congruence
and Fatoring Prime Numbers; Finite Fields; Galois Field – GF; Polynomial mod 2; Polynomial Divisibility Mod
2; Finite Field Generation by Z2 [X] mod polinomial. Procedure to Finite Field Generation by Z2 [X] mod
polinomial.
Keywords: Cryptography, Number Theory, Modular Artimetic; Modular Algebra
1. INTRODUÇÃO
A criptografia contemporânea utiliza amplamente a capacidade dos sistemas
computacionais, especialmente funções matemáticas. Estas são fundamentais para os
sistemas, pois, antes mesmo das mensagens serem cifradas ou transmitidas, elas têm um valor
numérico; os algoritmos criptográficos são operações algébricas, a construção e análise de
sistemas criptográficos requerem teoria dos números, e muito mais. Daí, para a correta
compreensão dos requisitos de sistemas criptográficos, há necessidade do estudo dos
fundamentos matemáticos aplicados à criptografia.
2. HISTÓRICO
Inicialmente a criptografia desenvolveu-se nos campos militar e diplomático. De
início, assemelhava-se a uma arte que utilizava pequenos fundamentos de lógica, para ocultar
o conteúdo de textos a inimigos potenciais. Sua aplicação cresceu em importância, e, para
salvaguardar uma gama de informações cada vez maior e mais sofisticada, foram surgindo ao
longo do tempo algoritmos cada vez mais bem elaborados.
Porém, ainda até o início do século XX, apesar de muitos algoritmos serem mantidos
em segredo, praticamente todos eles sucumbiam a uma boa criptoanálise. Isto é, a um
processo lógico e intensivo de tentativa de descobrimento dos algoritmos e senhas utilizadas
para apropriar-se das informações cifradas. A maioria sucumbia a estudos de grupos
específicos que utilizavam tanto lógica, matemática, como arte para a decifragem.
3
Mas a evolução tecnológica alçou a eletrônica e posteriormente a computação para a
execução de tarefas repetitivas de uma forma muitíssimo mais rápida do que se fazia
anteriormente.
Surgiram os dispositivos eletromecânicos, amplamente utilizados durante a Segunda
Grande Guerra Mundial, que automatizaram as inúmeras e repetitivas tarefas de cifragem dos
textos.
Para a criptoanálise de textos cifrados por essas máquinas, como o Enigma – poderoso
segredo do III Reich-, deixou de ser suficiente o trabalho artesanal ou individual, como
executado até antão.
Exigiu a participação de muitos matemáticos e especialistas em criptografia para a
montagem de circuitos eletrônicos capazes de executar muitas operações lógicas em pouco
tempo, forçando a ampliação de conhecimento na área de computação, e dando origem aos
primeiros computadores, todos de grande porte, como o ENIAC e o UNIVAC>
Desde então, à medida que são ampliados os potenciais e o uso das capacidades
computacionais, os algoritmos utilizados na criptografia estão tornando-se cada vez mais
sofisticados.
O desafio da criptografia moderna é construir algoritmos capazes de fazer suas
operações computacionais de forma simples e ao mesmo tempo dificultar a criptoanálise de
forma a contrapor-se a todo poder computacional que um potencial inimigo possa ter.
Além do mais, a criptografia de chave simétrica – modelo único até a década de 1970
– apresentava a dificuldade do problema da distribuição de chaves (Burnett & Paine, 2002),
além do problema do gerenciamento de chaves.
Os novos requisitos da criptografia moderna apontaram para o surgimento de
algoritmos que solucionam os problemas acima e dificultam a criptoanálise, mesmo
considerando-se um alto poder computacional do opositor.
Surgiram publicamente, a partir da década de 80, os algoritmos de chave pública.
Estes são procedimentos que fundamentam sua segurança na dificuldade da inversibilidade de
algumas funções matemáticas. Buscam funções cuja inversibilidade não pode ser resolvida
por todo poder computacional existente hoje, nem pelo previsto para os próximos decênios.
Apontam para a classe dos problemas NP-Hard e utilizam princípios matemáticos
como a impossibilidade da fatoração de números grandes e o problema do logaritmo discreto.
Para introduzir o leitor ao mundo dessas funções matemáticas aplicadas à criptografia
moderna, este trabalho propôs-se a pesquisar os principais fundamentos matemáticos
aplicados nos algoritmos em uso. Como estes princípios não são de domínio público e exigem
4
certo esforço em seu estudo, este trabalho buscou exemplificar a aplicação dos princípios
apresentados em livros que são referências no assunto: Schneier (1995) e Washington &
Trappe (2001).
Os princípios apresentados foram divididos em duas seções: Teoria dos Números e
Álgebra e Aritmética Modular
3. TEORIA DOS NÚMEROS
Divisibilidade. Sejam a e b inteiros com a ≠ 0. Diz-se que a divide b, se há um inteiro
k tal que b = ak. A notação de divisibilidade é: a|b.Exemplos: 4|16; 5|105;1|b; 2†7 (dois não é
divisor de 7). Para todo a ≠ 0, a| 0, a|a, para todo b, 1|b. Se A propriedade é transitiva: se a|b e
b|c, então a|c. Combinação Linear: se a|b e b|c, então a|(sb + tc), para quaisquer inteiros s e t.
Números Primos. Primo é um numero inteiro p maior que 1, cujos únicos divisores são
p e 1. Um número n que não é primo é chamado número composto e pode ser fatorado, isto é,
escrito na forma de fatores multiplicativos a,b, tais que 1<a,b<n. Todo número inteiro positivo
pode ser escrito como um produto de primos e esta fatoração é única – a menos da
comutatividade dos fatores. Se p | ab, então p|a ou p|b. Generalizando, se p|abc....z, então ou
p|a, ou p|b, ou p|c, ....ou p|c. A função �(x) retorna o número de primos menores que x. Por
exemplo �(20)= 8 pois somente oito números - 2, 3, 5,7,11,13,17e 19 - são números primos
menores que 20. Quando a função �(x) tende ao infinito, tem-se que π(x) ≈ x / ln x. Este
cálculo é importante para determinar, por exemplo, a quantidade de números primos de 100
dígitos. Calculando π(10100) - π(1099) ≈ 3,9 * 1097.
Maior Divisor Comum (mdc). O maior divisor comum de a e b – notação mdc(a,b) – é
o maior inteiro positivo que divide a e b. Quando mdc (c,d) = 1, diz-se que c e d são
relativamente primos. Exemplo mdc (36,24) = 12. Para extrair o de dois números a e b
quaisquer, fatore-os em primos, extraia o mdc(a,b) separando os fatores primos comuns,
considerando os menores expoentes. Exemplo gdc(18, 24) = gdc (21.32,23.3) = 21.31=6. A
fatoração de grandes números não é de fácil execução, uma vez que não é tão fácil determinar
grandes fatores primos. Se a,b são inteiros, sendo pelo menos um dos dois diferentes de zero,
e d=mdc(a,b), então existem inteiros x e y tais que ax + by = d. Em particular, se a e b são
relativamente primos, então ax + by = 1.
Algoritmo de Euclides. É um processamento que permite calcular o mdc de grandes
números c e d, de modo fácil e rápido, pois não requer fatoração dos números. Siga os passos:
(1) Suponha c>d, senão inverta. (2) Faça c/b = q1, chame o resto de r1. (3) Escreva a na
5
forma: a = b*q1 +r1 .(4) Se r1 = 0, então mdc(c,d) = d, se não continue. (5) Divida b por r1 e o
escreva da forma b = r1 q +r2 . (6) Repita a operação até encontrar ri = 0, daí ri-1 é o mdc(c,d).
Exemplo mdc(1440, 645). 1140 = 2*645+150; 645 = 4*150+45; 150 = 4*45+10; 45 =
4*10+5; 10 = 2*5+0. Então mdc(1140,645) = 5.
Algoritmo Euclidiano Estendido. É a aplicação dos quocientes qi resultados do
algoritmo de Euclides para a solução de problemas de combinação linear do tipo: ax + by = d
e de certas congruências. Há inteiros tais que ax + by = mdc(a,b). As seguintes seqüências
permitem determinar x e y:
x0 = 0; x1 = 1, x1 = qn-1 .xn-1 + xn-2 e y0 =1; y1 =0, yn=qn-1 .yn-1 + yn-2 .
Onde qi são os quocientes do algoritmo de Euclides e qn é o quociente final.
Daí, an xn + bn yn = mdc(a,b).
Congruências. Sejam a,b,n inteiros com n≠0, diz-se que: a ≡ b (mod n), se a-b é
múltiplo (positivo ou negativo) de n. Do mesmo modo, se a = b +kn, para algum k inteiro.
Como corolário, tem-se que: a≡0 (mod n) ↔ a|n; a‘≡ a (mod n); a ≡ b (mod n) ↔ b ≡ a (mod
n); se a ≡ b e b ≡ c (mod n), então a ≡ c (mod n).
Operações Aritméticas da Congruência. Sejam a,b,c,d,n inteiros, com n ≠ 0. Dado que
a ≡ b (mod) n e c ≡ d (mod n), então: a + c ≡ b + d , a - c ≡ b - d , a.c ≡ b.d (mod n). Isto
ocorre devido ao fato de: a = b + nk e c = d + nk. Somando, subtraindo ou multiplicando
ambos lados dessas equações, obtém se os resultados enunciados.
Divisão na Congruência. Já a divisão é uma operação aritmética da congruência que
requer cuidados algébricos maiores. Sejam a,b,c,d,n inteiros, com n ≠ 0 e mdc (a,n) = 1. Se ab
≡ ac (mod n), então b ≡ c (mod n). Isto é, se a e n são relativamente primos, pode-se dividir
ambos lados da conguência por a.
Inverso multiplicativo. Suponha mdc (a,n) = 1. Sejam s e t inteiros tais que as + nt = 1
– s e t podem ser achados usando o algoritmo de Euclides estendido. Então as ≡ 1 (mod n) e
diz-se que s é inverso multiplicativo de a (mod n). Outra notação é: a-1 (mod n), onde a-1 ≡ s
(mod n).
Solução para ax ≡ c (mod n), quando mdc (a,n) =1. Usa-se o algoritmo de Euclides
estendido para achar os inteiros s e t tais que as + nt =1. A solução é x ≡ cs (mod n). Por
exemplo: 12x = 20 (mod 29). Como mdc (12,29) = 1, pelo algoritmo de Euclides obtém-se os
quocientes q1=2; q2=2; q3=2; q4=2. Pela extensão do algoritmo x4 = -12 e y4 = 5; x4 e y4 são
respectivamente s e t. Daí, como x ≡ cs (mod n), então x ≡ 20. (-12) ≡ -240 ≡ -8 ≡ 21 (mod
29). Daí 21 é a solução da equação: 12x = 20 (mod 29).
6
Solução para ax ≡ c (mod n), quando mdc (a,n) >1 e c não é divisível por d; d = mdc
(a,n). Não há solução para a equação. Por exemplo: para 12x = 21 (mod 28), c = 21 não é
divisível por 2 = mdc (12,28) = mdc (a, n) >1. Daí, não há solução para a equação.
Solução para ax ≡ c (mod n), quando mdc (a,n) >1 e c|d; d = mdc (a,n). Como d|c,
considere a nova congruência: (a/d)x ≡ (c/d) (mod n/d). Os quocientes a/d, b/d e n/d são
inteiros, pois mdc (a,n) = d. Como mdc (a/d, n/d) =1, pois d = mdc (a,n), esta nova
congruência pode ser resolvida pelo procedimento para solução para ax ≡ c (mod n), quando
mdc (a,n) =1, já visto. Dele obtém-se x0 pela aplicação do algoritmo de Euclides estendido.
As soluções da congruência original ax ≡ c (mod n) são: x0, x0 + n/d; x0 + 2(n/d); ..........., x0 +
(d-1)(n/d) (mod n). Por exemplo: para 15x = 20 (mod 25); mdc (a,n) = mdc (15,25) = 5, c =
20, então d|c. pois 20|5. Daí a nova congruência, dividida por d = 5 é 3x = 4 (mod 5). Usando
o procedimento para solução para ax ≡ c (mod n), quando mdc (a,n) =1, obtém-se x0 = 3.
então as soluções da equação original (15x = 20 (mod 25)) são: x0= 3, x0 + 25/5 = 8; x0 +
2(25/5) = 13; x0 + 3(25/5) =18 e x0 + 4(25/5) =23.
Congruência Quadrática: é uma equação do tipo x2 ≡ a (mod n). Considerando a
congruência x2 = 1 (mod 7), por inspeção obtém-se as soluções x1 =1 e x2 = 6. Em geral, se n
é um primo ímpar p, há exatamente duas soluções para a equação; x2 = 1 (mod p).
Considerando a congruência x2 = 1 (mod 15), por inspeção, observa-se que há 4 soluções: x =
1, 4, 11, 14. Portanto, uma congruência quadrática para módulo de número composto pode ter
mais que duas soluções em contraste com uma equação quadrática com números reais, que
têm no máximo duas soluções.
Frações na Congruência. A fim de simplificar notação, convém trabalhar com frações
na congruência cujo significado difere do sentido normal de frações da equivalência. Assim,
½ (mod 8243) é mais fácil escrever que 4122 mod (8243). A regra geral é que uma fração b/a
pode ser usada mod n, se mdc (a,n) =1. A expressão b/a (mod n) na aritmética modular
significa realmente a-1 b (mod n), onde a denota um inteiro para o qual a-1 a ≡ 1 (mod n).
Assim, se multiplicarmos b/a por a, obtém-se b. Em todo cálculo envolvendo símbolo b/a,
esta é a única propriedade usada. Portanto 4122 x 2 ≡ 1 (mod 8243), portanto 4122 e ½
podem ser intercambiáveis.
Restrições a Frações na Congruência. Símbolos de frações não podem ser usados
arbitrariamente na aritmética modular. Por exemplo, 1/10 (mod 10) teria o mesmo significado
que divisão por 0. Mas mesmo com ½ mod 10 haverá problemas. Multiplicar ambos lados de
2 ≡ 12 (mod 10) por ½ daria as seguintes soluções, que não são congruentes: 1 e 6 (mod 10).
7
Esta incorreção por ambigüidade na notação ocorre quando mdc (a,n) >1, como no caso do
exemplo dado, 2 ≡ 12 (mod 10), quando não é conveniente usá-la.
Expansão de Congruências em Sistemas. Em muitas situações é usual dividir
congruência mod n em um sistema de congruências com mod fatores de n. Por exemplo, x ≡
16 (mod 21). Isto significa que x = 16 + 21 k, para um k inteiro. Mas tal expressão pode ser
reescrita por: x = 16 + 7.(3k) = 16 + 3 (7k). Tais expressões desenvolvem em x ≡ 16 (mod 3)
≡ 1 (mod 3) e x ≡ 16 (mod 7) ≡ 2 (mod 7). Portanto, x ≡ 16 (mod 21) pode ser dividido no
sistema x ≡ 1 (mod 3) e x ≡ 2 (mod 7).
Teorema do Resto Chinês (Chinese Remainder Theorem). Suponha mdc (m,n) =1 .
Dados a e b, existe exatamente uma única solução x mod (mn) para o sistema de congruências
simultâneas x ≡ a (mod m) e x ≡ b (mod n). Este teorema mostra que o processo de expansão
de congruências em sistemas pode ser revertido. Sob certas circunstâncias, um sistema de
congruências pode ser substituído por uma congruência única. Por exemplo, seja o sistema x
≡ 3 (mod 7) e x ≡ 5 (mod 15). Como 80 ≡ 3 (mod 7) ≡ 5 (mod 15), x ≡ 80 (mod 105) é a
solução. O teorema garante que se tal solução existe, ela é única.
Busca de soluções para o Teorema do Resto Chinês. No exemplo dado, a busca da
solução x ≡ 80 (mod 105) para o sistema x ≡ 3 (mod 7) e x ≡ 5 (mod 15) pôde ser feita p[or
inspeção, buscando a coincidência nas séries côngruas x = 3 + 7k (3,10, 17, 24, 31 ...) e x = 5
+ 15 k (20, 35, 50, 65, 80, ..) que dá-se em x = 80. No entanto, para números maiores tal
busca – pela listagem das séries côngruas - é ineficiente. A solução passa pela idéia que x ≡ a
(mod m) ≡ b (mod n), então b + nk ≡ a (mod m) e nk ≡ a - b (mod m), como por hipótese mdc
(m,n) = 1, existe um inverso multiplicativo i para n (mod m), então: k ≡ (a-b) i (mod m).
substituindo de volta para x = b + nk e reduzindo módulo mn, obtém-se a resposta. Para
grandes números, a prova do teorema dá um método eficiente para achar x. Exemplo: seja o
sistema: x ≡ 7 (mod 12345) ≡ 3 (mod 11111). O inverso multiplicativo, já visto, de 11111
(mod 12345) é i = 2471.
Uso do Teorema do Resto Chinês. A idéia principal é que se há uma congruência mod
um número composto, pode-se quebrá-la em congruências simultâneas mod cada fator de
potência primo de n. A vantagem é que é mais fácil analisar congruências mod primos ou
potências primas que trabalhar com números compostos. Por exemplo, para resolver x2 ≡ 1
(mod 35), tem-se o sistema: x2 ≡ 1 (mod 7) e x2 ≡ 1 (mod 5), Como x2 ≡ 1 (mod 5) tem duas
soluções x ≡ ) 1 (mod 5) e x2 ≡ 1 (mod 7), também tem duas: x ≡ )1 (mod 5), há quatro
caminhos: x1 ≡ 1 (mod 5) e x1 ≡ 1 (mod 7), então x1 ≡ 1 (mod 35); x1 ≡ 1 (mod 5) e x2 ≡ -1
(mod 7),então x2 ≡ 6 (mod 35); x2 ≡ -1 (mod 5) e x1 ≡ 1 (mod 7), então x3 ≡ 29 (mod 35); x2 ≡
8
-1 (mod 5) e x2 ≡ -1 (mod 7),então x4 ≡ 34 (mod 35). Daí as soluções para x2 ≡ 1 (mod 35)
são: x ≡ 1, 6, 29, 34 (mod 35). Em geral, se n é um produto de r primos distintos, então x2 ≡ 1
(mod n) tem 2r soluções.
Forma Geral do Teorema do Resto Chinês. Sejam m1, ....., mk inteiros com mdc (mi,
mj) = 1, para qualquer i ≠ j. Dados os inteiros a1, ....., ak, existe exatamente uma solução x
(mod m1, ....., mk) para o sistema de congruências simultâneas: x ≡ a1 (mod m1), x ≡ a2
(mod m2), ........., x ≡ ak (mod mk). Por exemplo, o teorema garante uma solução única para
as congruências simultâneas x ≡ 1 (mod 11) ≡ -1 (mod 13) ≡ 1 (mod 17). Neste caso, x ≡
1871 (mod 11.13.17).
4. ÁLGEBRA E ARITMÉTICA MODULAR
Exponenciação Modular. Resolver congruências onde apareçam expressões da forma
xa (mod n), requer, em geral, com o trabalho de grandes números. Por exemplo, computar
21024 (mod 789) requer multiplicar 1024 vezes dois e calcular o resto, o que pode requerer
enorme e indesejado espaço de memória. Pode-se calcular também as potências e calcular
uma a uma o resto. Porém, este método é lento e não é prático, especialmente para números
muito grandes. Há um caminho mais eficiente: Calcular, seqüencialmente, as potências de
potências de 2. Assim, 24 ≡ 16, 28 ≡ 256, 216 ≡ 256.256 ≡ 49, 232 ≡ 49.49 ≡ 34;264 ≡ 34.34
≡ 367, 2128 ≡ 367.367 ≡ 559, 2256 ≡ 559.559 ≡ 37, 2512 ≡ 580, 21024 ≡ 580.580 ≡ 286
(mod 789). Como 1234 em binário é representado por 10011010010 então a equação pode ser
transformada em: 21234 ≡ 21024 . 2128 . 264 . 216 . 22 ≡ 286 . 559 . 49 . 4 (mod 789).Os
cálculos nunca excederam 7882. O método pode ser generalizado para ab (mod n). Haverá no
máximo 2 log2b multiplicações mod n.
Pequeno Teorema de Fermat. (Fermat’s Little Theorem). Se p é primo e a não é
divisível por p, então ap-1 ≡ 1 (mod p) Por exemplo, 210 ≡ 1 (mod 11). Daí, pode-se
desenvolver 253 (mod 11). Como 253 = (210)5 23, 253 ≡ 15 . 23 ≡ 8 (mod 11).
Geração de números primos pelo Pequeno Teorema de Fermat. Em geral, quando 2n-1
≡ 1 (mod n) n é primo, porém há exceções. Por exemplo, para n = 561. 560 ≡ 0 (mod 10) ≡ 0
(mod 16) ≡ 0 (mod 2), daí: 2560 ≡ 1 (mod 11) ≡ 1 (mod 17) ≡ 1 (mod 3). Pelo Teorema do
Resto Chinês 2560 ≡ 1 (mod 3. 11 17) ≡ 1 (mod 561), estas exceções são muito raras e quase
sempre pode-se dizer que, se 2n-1 ≡ 1 (mod n), n é primo. Ainda, se 2n-1 não for côngruo a 1
(mod n), n não é primo. Este resultado é uma maneira eficiente de achar números primos.
Primeiramente, parte-se de um número inicial n0, testa-se sucessivamente todo ímpar n > n0
9
buscando a verificação da congruência 2n-1 ≡ 1 (mod n). Quando o resultado do teste for
verdadeiro, há uma grande chance de o número ser primo e utilizam-se técnicas mais
refinadas para garantir se n é primo. Tal procedimento é bem mais rápido que a tentativa de
fatoração de n, já que ele elimina muitos n. Há caminhos para otimização da busca, como um
teste inicial para eliminação dos números divisíveis por fatores primos.
Função φ de Euler. φ (n) é o número de inteiros a no intervalo 1≤ a ≤ n, tais que mdc
(a,n) = 1. Por exemplo. φ (10) = 4, pois a = 1, 3, 7, 9. Pela definição de números primos p
temos que: φ (p) = p –1. De forma semelhante φ (pr) = pr – pr-1, pois há pr/p = pr-1 múltiplo de
p no intervalo 1≤ a ≤ pr. Desenvolvendo a expressão, obtém-se: φ (pr) = (p – 1/p).pr.
Generalizando, pelo Teorema Chinês do Resto, φ (n) = n Π p – 1/p), para todo p|n. Assim, φ
(75) = 75 . (1- 1/3) . (1 – 1/5) = 40. Para p e q primos, φ (p q) = (p –1).(q - 1).
Teorema de Euler. Se mdc (a,n) =1, então a φ(n) ≡ 1 (mod n). Para um número primo, o
Teorema de Euler redunda no Pequeno Teorema de Fermat. Aplicação: determinar os últimos
três dígitos de 7803. Como φ (1000) = 400 e 7803.= 7800. 73 = (7400) 2. 7400.≡ 1 (mod 1000),
então 7803.≡ 12 73 (mod 1000).≡ 343 (mod 1000). Neste caso, 803 ≡ 3 (mod φ (1000))
Determinar 243210 (mod 101). Pelo Pequeno Teorema de Fermat 2100 ≡ 1 (mod 101), daí
243210 ≡ (2432)100210 ≡ 1 210 ≡ 1024 ≡ 14 (mod 101).
Princípio Básico aplicado ao Teorema de Euler. Sejam a, n, x, y inteiros com n ≥ 1e
mdc (a,n) =1, se x ≡ y (mod φ (n)), então ax ≡ ay (mod n). Pois x = y + φ (n) .k daí
ax = a y + φ (n). k = (a y )(a φ (n)).k ≡ ay 1k ≡ ay (mod n). Em outras palavras, para trabalhar
mod n, deve-se trabalhar mod (φ (n)) no expoente. Este resultado tem larga aplicação nos
cálculos de criptografia atuais.
Raízes Primitivas. Um número a é raiz primitiva mod n, quando se obtém das
potências de a todas as classes não-nulas mod n. Por exemplo: 51 ≡ 5, 52 ≡ 4, 53 ≡ 6, 54 ≡ 2, 55
≡ 3, 56 ≡ 1 (mod 7), então diz-se que 5 é raiz primitiva mod 7. Já as potências de 4 geram 41 ≡
4, 42 ≡ 2, 43 ≡ 1, 44 ≡ 4, 45 ≡ 2, 46 ≡ 1 (mod 7) e não geram as classes de congruência 3, 5 e 6,
daí 4 não é raiz primitiva mod 7.
Raízes Primitivas em campos de números primos. Em geral, quando p é primo, uma
raiz primitiva mod p é um número cujas potências produzem todas as classes não-nulas mod
p. Existem φ (p – 1) raízes primitivas mod p. Em particular, há sempre pelo menos uma. Na
prática, não é difícil encontrá-la, pelo menos se a fatoração de p-1 é conhecida.
Conclusões sobre raízes primitivas. Seja g uma raiz primitiva para um número primo
p. Se n é um inteiro, então gn ≡ 1 (mod p) se, e somente se, n ≡ 0 (mod p –1). Se j e k são
inteiros, então gj ≡ gk (mod p) se, e somente se, j ≡ k (mod p – 1).
10
Inversão de matrizes mod n. A determinação da matriz inversa mod efetuada pelos
métodos comuns de inversão de matriz desde que sejam observadas as regras para operação
de frações na congruência.
Condição necessária para inversão de matriz mod n. Sejam M e N matrizes inteiras
mod n e I a matriz identidade. Suponha MN ≡ I (mod n). Então det(M).det(N) ≡ det (MN) ≡
det(I) ≡ 1 (mod n), Portanto, det (M) tem um inverso mod n, o que significa que det(M) e n
devem ser relativamente primos. Daí, uma matriz quadrada é inversível se, e somente se, seu
determinante e n são relativamente primos.
Comparação entre inversão de matrizes inteira e mod n. O inverso de uma matriz
inteira pode ser sempre escrito como uma matriz inteira dividida pelo determinante da matriz
original. Para achar o inverso de uma matriz, usam-se números racionais e depois retorna-se
para o campo mod n. Assim, Seja A = ((a,b), (c,d)). Então A-1 = det A ((d, -b),(-c,a)). Como
para os racionais det A = 1/(ad – bc), basta então buscar em mod o inverso multiplicativo para
(ad – bc). .
Exemplos de inversão de matrizes mod n. Seja B = ((1,5), (2,3)) (mod 13). Como det
B = -7, calcula-se op inverso multiplicativo -7 mod 13. Como 11 x (-7) ≡ 1 (mod 13), então –
1/7 pode ser substituído por 11. daí: B-1 ≡ ((1,5), (2,3)) ≡ -1/7 ((3,-5),(-2,1)) ≡ 11 ((3,-5),(-
2,1)) ≡ ((7,10),(4,11)) mod 13. Como é de se esperar: = ((1,5), (2,3)) X ((7,10),(4,11)) =
((27,65),(26, 43)) ≡ ((1,0),(0,1)) mod 13, pois B.B-1 ≡ I mod n. O mesmo vale para a matriz C
= ((1,1,1,),(1,2,3),(1,4,9)) (mod 11). Det C pela regra de Sarrus é 2, então, em números
racionais, a matriz inversa de C é- ½ .((6, -5, 1), (-6, 8, -2), (2, -3 , 1)). Como o inverso
multiplicativo de 2 mod 11 é 6, substituindo ½ por 6 obtém-se M-1 ≡ ((3, 3, 6), (8, 4, 10), (1,
4, 6)) (mod 11). .
Raiz quadrada mod n. Determinar a(s) solução(ões) do problema x2 ≡ b (mod n), onde
n é um produto de dois primos p e q é fácil se se conhecer a fatoração de n. Da mesma forma,
se as soluções são conhecidas é fácil fatorar n. Seja p ≡ 3 (mod 4) um primo e seja y um
inteiro. Faça x ≡ y (p+1) /4 (mod p), então se y tem raízes quadrada mod p, então as raízes de y
mod p são ) x. Se y não tem raiz mod p, então –y tem raízes mod p e estas raízes são ) x.
Exemplo de determinação de raiz quadrada mod n. Achar a raiz quadrada de 5 mod
11. Como (p +1)/4 = 3, então: x ≡ 53 ≡ 4 (mod 11). Como 42 ≡ 5 (mod 11), as raízes quadradas
de 5 mod 11 são ) 4. Já, ao considerar o problema da determinação da raiz quadrada mod de 2
mod 11, tem-se: (p+1)/4 =3, então 23 ≡ 8 (mod 11), mas 82 ≡ 9 ≡ -2 (mod 11). Daí foi
determinada a raiz quadrada de –2, ao invés de 2, porque 2 não tem raiz quadrada mod 11.
11
Raiz quadrada de módulo número composto. Seja x2 ≡ 71 9mod 77). Como x2 ≡ 71 ≡
1 (mod 7) e x2 ≡ 71 ≡ 5 (mod 11), então x ≡ )1 (mod 7) e x ≡ )4 (mod 11). O teorema do resto
chinês diz que as congruências mod 7 e mod 11 podem ser recombinadas numa congruência
mod 77. Por exemplo para x ≡ 1 mod 7 e x ≡ 4 mod 11, então x ≡ 15 mod 77. Recombinando
todas soluções, tem-se: x ≡ ) 15, ) 29 (mod 77).
Equivalência entre determinação de raiz quadrada na congruência e a fatoração de n.
Suponha n = pq seja um produto de dois primos congruentes a 3 (mod 4) e suponha que y seja
um número relativamente primo a n, o qual tem raiz quadrada mod n. Então achar as quatro
soluções x ≡ ) a, ) b (mod n) é computacionalmente equivalente à fatoração de n.
Corpos Finitos (Finite Fields). Genericamente um corpo finito é um conjunto de
elementos e operações que guardam para adição ao e multiplicação as propriedades de
existência de elemento neutro, comutatividade, associatividade e distributividade para todos
elementos pertencentes ao conjunto e ainda todo elemento tem um inverso da adição e um
inverso multiplicativo. Generalizando um corpo finito possui as operações de adição,
multiplicação, subtração e divisão por elementos não-nulos, além das propriedades
associativa, distributiva e comutativa. Os números reais, complexos, racionais e inteiros mod
p (p é primo) são exemplos básicos de corpos finitos. Já todos os inteiros não são corpos, pois
não permitem divisão e obter resposta no próprio conjunto. Os conjuntos de matrizes
quadradas com números reais não são corpos pois não há comutatividade na multiplicação e
existem elementos não nulos que não possuem inverso multiplicativo (em conseqüência não é
possível dividir por eles).
Corpo de Galois (Galois Field – GF). Para toda potência pn de um primo, existe
exatamente um único corpo finito com pn elementos. Tal corpo finito é chamado GF(pn) em
homenagem ao matemático francês Evariste Galois.
Polinômios mod 2. Seja Z2[X] o conjunto dos polinômios cujos coeficientes são
inteiros mod 2. Por exemplo 1 + X4 + X5 pertence ao conjunto. É possível somar, subtrair e
multiplicar neste conjunto, tanto quanto se trabalha com os coeficientes mod 2. Assim: (X3 +
X2 + 1)(X + 1) = X4 + X3 + X2 + 1. O termo 2X desaparece, pois trabalhamos mod 2.
Divisão de polinômios mod 2. Já a operação de divisão mod 2 requer cuidado especial.
É possível efetuar a divisão com resto, tal como com inteiros. Dessa forma obtém-se X4 + X3
+ 1 = (X2 + 1) ( X2 + X + 1) + X. Pode ser escrito: X4 + X3 + 1 ≡ X (mod X2 + X + 1).
Geração de corpos finitos por Z2 [X] mod polinômio. Trabalho com Z2[X] mod um
polinômio pode ser usado para gerar corpos finitos. Porém, não é possível trabalhar com
12
qualquer polinômio. O polinômio deve ser irredutível, o que significa que ele não pode ser
fatorado em polinômios de grau menor que 2. Por exemplo, X2 = 1, quando trabalhado com
números reais é um polinômio irredutível, porém em GF(2) não é irredutivel pois X2 + 1 = (X
+ 1) (X + 1) mod 2.
Procedimento para geração de corpos finitos por Z2 [X] mod polinômio.
Generalizando: Zp[X] é um conjunto de polinômios com coeficientes mod p. Escolha P[X]
como sendo um polinômio irredutível mod p de grau n. Faça Gf(pn) ser Zp[X]. Então Zp[X] é
um corpo com pn elementos.
5. CONCLUSÃO
Este trabalho não procurou esgotar o assunto, nem debatê-lo exaustivamente, apenas
propôs-se a introduzir o leitor no mundo das funções matemáticas utilizadas na criptografia
moderna.
Tendo em vista que o assunto criptografia de chave pública ainda está em sua fase de
desenvolvimento e consolidação, a literatura em português sobre o assunto ainda é limitada,
por isso a pretensão do autor é somente apresentação de conceitos. A aplicação das operações
matemáticas apresentadas pode ser estudada com proficuidade em Schneier (1995).
REFERÊNCIAS BIBLIOGRÁFICAS
BURNETT Steve. & PAINE Stephen. Criptografia e Segurança – O Guia Oficial RSA. Rio
de Janeiro: Editora Campus, 2002, p. 45-65.
SCHNEIER, Bruce. Applied Cryptography, 2nd Ed. New York: John Wiley & Sons, Inc.,
1995.
TRAPPE, Wade & WASHINGTON, Lawrence C. Cryptography with Coding Theory. New
Jersey: Prentice Hall Ed., 2001.