FACULDADE ALFREDO NASSER
INSTITUTO SUPERIOR DE EDUCAÇÃO
CURSO DE MATEMÁTICA
TÓPICOS DA TEORIA DOS NÚMEROS NECESSÁRIOS ÀS
APLICAÇÕES DA CIFRA RSA
Kellen Regina Almeida e Sousa
APARECIDA DE GOIÂNIA
2010
KELLEN REGINA ALMEIDA E SOUSA
TÓPICOS DA TEORIA DOS NÚMEROS NECESSÁRIOS ÀS
APLICAÇÕES DA CIFRA RSA
Monografia apresentada ao Instituto Superior de
Educação da Faculdade Alfredo Nasser, sob
orientação da Profª. Ms. Ana Paula Faria
Machado, como parte dos requisitos para a
conclusão do curso de Licenciatura em
Matemática.
APARECIDA DE GOIÂNIA
2010
KELLEN REGINA ALMEIDA E SOUSA
TÓPICOS DA TEORIA DOS NÚMEROS NECESSÁRIOS ÀS
APLICAÇÕES DA CIFRA RSA
Aparecida de Goiânia __ de dezembro de 2010.
EXAMINADORES
Orientador - Prof.(a) Ms. Ana Paula Faria Machado- Nota:___ / 70
Primeiro examinador - Prof.(a) ––––––––––––––––––––––––––––- Nota:___ / 70
Segundo examinador - Prof.(a) ––––––––––––––––––––––––––––– - Nota:___ / 70
Média parcial - Avaliação da produção do Trabalho: ___ / 70
AGRADECIMENTOS
Primeiramente a Deus, por me dar capacidade e força para superar meus limites e
problemas e assim, alcançar meus sonhos e objetivos.
À minha família, em especial à minha mãe Maria da Consolação e as minhas irmãs
Andréia e Suzana. Pelo carinho e amor dedicados a mim.
À minha orientadora Ana Paula Faria Machado, por me apoiar desde o início, pela
sua atenção, dedicação, auxílio, amizade e confiança em mim e no meu trabalho.
Obrigada!
Aos professores que sempre me apoiaram nesses quatro anos, por compartilharem
conosco seus conhecimentos. Em especial aos que se tornaram meus amigos e
fizeram desses quatro anos motivo de muita alegria para mim, Márcia do Socorro,
Kênia Calaça, Simone Cristina, Karla Vitor, Kelen Michela, Ana Rosa. Obrigada
jamais me esquecerei de vocês.
Aos meus amigos que me apoiaram na minha vida e também ao longo desses
quatro anos. Que compreenderam os meus momentos de estudo, que me ajudaram
direta e indiretamente e que contribuíram para o meu crescimento pessoal, com seu
carinho e amor. E que também compartilharam comigo suas alegrias, tristezas e
loucuras, Maria Márcia, Ana Maria, Talita, Mariane, Roberto, Edvan, André, Leidimar,
Crysthel, Mariângela, Ingrid, Naiana, Ludmilla Reis, os amo muito.
Dedico a todos que participaram dessa grande conquista e me ajudaram a alcançá-la.
assim como aprendera a calcular com números, dispôs-se a calcular com palavras.
Clarice Lispector
LISTA DE TABELAS
TABELA 1 - Correspondência entre o alfabeto original e a cifra de César ................ 45
TABELA 2 - Correspondência entre o alfabeto original e a cifra de Alberti .............. 46
TABELA 3 - Pré – Codificação usando-se a cifra de Vigenère.................................. 48
TABELA 4 - Números binários em ASCII para letras maiúsculas ............................ 54
TABELA 5 - Como cifrar uma mensagem usando o ASCII ....................................... 54
LISTA DE ILUSTRAÇÕES
FIGURA 1 – Pedra de Rosetta .................................................................................. 42
FIGURA 2 – Imperador Júlio César ........................................................................... 45
FIGURA 3 – Blaise de Vigenère ................................................................................ 47
FIGURA 4 – Quadrado de Vigenère .......................................................................... 48
FIGURA 5 – Máquina Enigma ................................................................................... 50
FIGURA 6 – ENIAC – precursora do computador moderno ...................................... 52
FIGURA 7 - Whitfield Diffie e MartinHellman..............................................................56
FIGURA 8 - Os criadores da cifra RSA – Rivest, Shamir e Adleman ........................ 57
SUMÁRIO
INTRODUÇÃO 10
1. PRELIMINARES 13
1.1. Números inteiros 13
1.2. Divisibilidade dos inteiros 14
1.3. Máximo divisor comum 15
1.4. Algoritmo euclidiano estendido 16
1.5. Números primos 19
1.6. Aritmética Modular 21
1.7. Inversos Modulares 23
1.8. Congruência linear 24
1.9. Algoritmo chinês do resto 24
1.10. Critérios de divisibilidade 26
1.11. Função de Euler 29
1.12. Fórmula geral de 31
1.13. Grupos 32
1.14. Anéis 33
2. CÓDIGOS: DA ESTEGANOGRAFIA À CIFRA RSA 37
2.1. Os hieróglifos e o Mistério Linear B 41
2.2. Código de César 43
2.3. As cifras polialfabéticas: de Alberti a Vigenère 46
2.4. As grandes guerras e a criptografia 49
2.5. As cifras de chave pública e o RSA 52
3. CRIPTOGRAFIA RSA
Erro! Indicador não definido.
3.1. Pré-codificação 60
3.2. Codificando a mensagem 61
3.3. Decodificando a mensagem 64
4. CONSIDERAÇÕES FINAIS
Erro! Indicador não definido.
REFERÊNCIAS BIBLIOGRÁFICAS 89
INTRODUÇÃO
“O diabo disse a Webster: „Dê-me uma tarefa que eu não possa executar, e eu lhe darei qualquer coisa no mundo que você pedir‟.
Daniel Webster: „Muito justo. Prove que, para maior que 2, a equação não possui solução trivial no conjunto dos inteiros‟.
Eles concordaram com um período de três dias para o trabalho, e o diabo desapareceu.
Ao final dos três dias, o diabo se apresentou desfigurado, mordendo seus lábios. Daniel Webster lhe disse: „Bem, como você se saiu na minha tarefa? Conseguiu provar o teorema?‟
„Não... não, eu não consegui provar‟.
„Então eu posso ter o que quiser? Dinheiro? A presidência?
„O que? Oh, é claro... Mas, escute, se pudéssemos simplesmente provar os dois lemas a seguir... ‟”
The mathematical Magpie, Clifton Fadiman
A criptografia é conhecida como a “arte dos códigos secretos”. Desde os
primórdios da humanidade sempre existiu a necessidade de se ocultar informações
importantes. Muitas cifras foram criadas e a cada nova cifra a palavra „indecifrável‟
perdia seu significado. Enquanto criptógrafos criavam um código, os criptoanalistas
tentavam decifrá-lo.
A sociedade foi se desenvolvendo, novas tecnologias foram criadas e
junto com elas os métodos de ocultação de mensagens. Antes os códigos eram
muito simples, pois consistiam apenas na troca de uma letra do alfabeto por outra,
essas eram as cifras de substituição monoalfabéticas. Os criptoanalistas
descobriram que usando a análise de frequência essas cifras podiam ser facilmente
decodificadas. Para novamente estarem a frente dos criptoanalistas, os criptógrafos
evoluíram criando as cifras de substituição polialfabéticas, nela o alfabeto cifrado
muda durante a cifragem e a mudança é definida por uma chave escolhida entre
emissor e receptor. Além das cifras de substituição, ainda existiam as cifras de
transposição, nesse sistema de cifragem cada letra da mensagem muda sua
posição dentro do texto. Em contrapartida, as cifras foram também sendo
mecanizadas, porém ainda usavam o mesmo método de substituição e transposição
e a grande dificuldade era a troca de chaves entre os usuários. Na década de 70, as
11
cifras deixaram de ser simétricas e passaram a ser assimétricas e de chave pública,
agora não era necessário esconder a chave de cifragem.
Dentre as cifras mais conhecidas estão: a cifra de César, a cifra de
Vigenère, a máquina Enigma, a cifra RSA, e outras, que foram usadas em diversas
situações, para manter informações de governo e de guerra secretam ou para
simplesmente ocultar uma mensagem particular entre duas pessoas.
Para codificar as informações enviadas eletronicamente é indispensável
o uso da matemática. Até os anos 60, a teoria dos números não era utilizada nas
aplicações a criptografia. Hoje se sabe que sem a aritmética modular esses cálculos
seriam inviáveis. Este trabalho consiste em trazer de forma simples tópicos da teoria
dos números necessários às aplicações da cifra RSA.
Esse sistema de cifragem surgiu em 1977, quando Ronald Rivest, Adi
Shamir e Leonard Adleman pesquisadores do Massachussets Institute of
Technology (MIT) descobriram uma cifra que realmente era segura e que se
encaixava nos quesitos de uma cifra de chave pública e assimétrica. A cifra ficou
conhecida como RSA, em homenagem aos seus criadores.
A cifra RSA é a mais utilizada comercialmente, principalmente pela
informática, desde compras feitas com o cartão de crédito via Internet, saques em
caixas eletrônicos e envio de e-mails.
Por ser um sistema assimétrico, a sua maior dificuldade é que ele é fácil
de fazer e difícil de desfazer. Para explicar esse processo é necessário conhecer e
identificar os problemas matemáticos que abordaremos para esclarecer o
funcionamento da cifra RSA. O intuito é fazer com que qualquer pessoa consiga
entender a cifra e até ser capaz de codificar e decodificar uma mensagem usando os
métodos aqui abordados.
O objetivo da escolha do estudo da cifra RSA se deve ao fato de ser uma
aplicação à álgebra, e em especial para a teoria dos números.
A metodologia usada na elaboração do trabalho será o estudo através de
diversas bibliografias, onde serão coletados dados gerais e específicos sobre a
criptografia.
12
No primeiro capítulo foram definidos os tópicos da teoria dos números
que usaremos na codificação e decodificação da cifra RSA. Uma grande parte das
demonstrações deste capítulo foram omitidas podendo ser encontradas nas
seguintes bibliografias [2], [3], [4], [6], [7], [9], [12] e [16].
No segundo capítulo abordaremos aspectos históricos da criptografia,
mostrando como foram criados e onde eram usados, são citados alguns processos e
métodos de cifragem utilizados ao longo dos séculos. Desde o método da
esteganografia até a cifra RSA.
No terceiro capítulo, mostraremos com detalhes como cifrar e decifrar
uma mensagem usando a cifra RSA e aplicando os tópicos que foram apresentados
no primeiro capítulo do trabalho.
13
CAPÍTULO I
PRELIMINARES
Neste capítulo são apresentadas definições, propriedades e tópicos
essenciais para o desenvolvimento do trabalho. Os processos de codificação e
decodificação da cifra RSA são baseados na Teoria dos Números, principalmente na
aritmética modular. As demonstrações dos resultados apresentados, em sua
maioria, foram omitidas. Para maiores detalhes, indicamos [2], [3], [4], [6], [7], [9],
[12] e [16].
1.1. Números Inteiros
O conjunto dos inteiros
munido das operações usuais de adição e multiplicação, é um domínio de
integridade cujos elementos invertíveis são 1 e -1. Portanto, os associados de um
elemento são e –
A notação usada , vem da palavra alemã die Zahlen, que significa números.
14
1.2. Divisibilidade dos inteiros
Diz – se que o número inteiro é divisor do número inteiro ou que o
número é divisível por se é possível encontrar tal que Também
podemos dizer que é de Para indicar que divide , usaremos a
notação Quando dizemos que é um fator ou divisor próprio de O
número , na definição acima é chamado de de em O co-fator é o
quociente da divisão.
A divisibilidade goza das seguintes propriedades:
i. , , pois
ii. e pois
iii. Se e são maiores que zero, então
iv. Se então
v. Se e , então quaisquer que sejam os inteiros e
vi. Se e então
A seguir enunciaremos um importante resultado conhecido como
“algoritmo de Euclides”, esse algoritmo foi usado no livro Os Elementos (Stoichia) de
Euclides para achar o máximo divisor comum de dois números. Essa célebre
proposição estabelece uma “divisão com resto” e é a base da teoria dos números.
Teorema 1.1. (Teorema da Divisão Euclidiana): Dados dois inteiros, e com
então sempre se pode encontrar dois números inteiros e tais que:
15
onde é chamado de quociente da divisão e é chamado de resto.
A demonstração deste teorema foi omitida, mas pode ser encontrada em
[4].
1.3. Máximo divisor comum
O inteiro positivo é dito máximo divisor comum de e se:
i. é divisor comum de e de ;
ii. qualquer divisor de e é divisor de
Lema 1.1. Se e são inteiros, não ambos nulos, então existe ; além
disso, podemos encontrar inteiros e tais que
Demonstração: Seja o conjunto de todos os inteiros da forma onde e
percorrem o conjunto dos inteiros. Como ou é diferente de zero, existem
inteiros não nulos em . Como está em ,
também está em ; portanto, sempre possui alguns inteiros positivos. Mas então
existe um inteiro positivo em ; como está em , tem a forma
Afirmamos que
Observemos que e então portanto Devemos mostrar
agora que e . Dado um elemento qualquer em , então, pelo
algoritmo da divisão euclidiana, onde Escrevemos isto
explicitamente, donde e,
portanto, deve estar em . Como e pela escolha de Assim
demonstramos que para qualquer Mas e
portanto e
16
Assim demonstramos que satisfaz as propriedades requeridas para ser
e, portanto o lema.
1.4. Algoritmo Euclidiano Estendido
Calculando o máximo divisor comum entre e obtemos a sequência de
divisões que vamos reescrever na forma:
Os números e são inteiros a determinar.
Condensaremos esses dados em uma tabela:
restos quocientes x y
Introduzimos duas linhas na tabela que não deveriam estar lá. Estas
linhas não correspondem a nenhuma divisão.
17
Como preenchemos as colunas e ? Começamos a preencher a j-
ésima linha dividindo por para achar e de forma que e
Assim,
lendo as linhas e os valores de podemos escrever:
substituindo estes valores, obtemos:
portanto,
Ou seja, sabemos como preencher qualquer linha da tabela, desde que
as duas linhas que a precedem sejam conhecidas.
A razão pela qual inserimos duas linhas no começo da tabela é porque
assim fica muito mais fácil calcular os valores de e nestes dois casos.
Interpretando essas linhas como as demais, teremos:
que nos sugere escolher:
18
e assim podemos dar início à recursão. Tendo executado o algoritmo, e descoberto
que o máximo divisor comum corresponde ao resto obtemos:
ou seja,
Teorema 1.2. (Teorema de Euclides Estendido). Sejam e
Então existem tais que:
Demonstração. Seja o conjunto de todas as combinações
lineares de e Escolhemos e tais que:
seja o menor inteiro positivo pertencente ao conjunto
Vamos provar que e
Primeiro mostraremos que . Suponhamos que . Neste caso pelo Teorema da
divisão de inteiros, existem e tais que com Portanto:
como e são inteiros, então o que é uma contradição, uma vez
que e é o menor elemento positivo de Portanto, .
Agora mostraremos que . Suponhamos que Neste caso pelo Teorema de
divisão de inteiros, e tais que com Portanto:
19
como e são inteiros, então o que também é uma contradição,
já que e é o menor elemento positivo de Portanto, .
Como é um divisor comum de e existem inteiros e tais que e
. Portanto,
Logo . Da proposição acima, temos que (ambos positivos) e como
não é possível, uma vez que é máximo divisor comum, então Concluímos
que
1.5. Números primos
O inteiro é um número primo se seus únicos divisores são
Definição 1.1. Os inteiros e são relativamente primos (primos entre si ou co-
primos) se
Corolário 1.1. Se e são primos entre si, podemos encontrar inteiros e tais
que
Lema 1.2. Se e são primos entre si e então
Demonstração: Como e são primos entre si, pelo corolário, podemos encontrar
inteiros e tais que Assim Agora e, por
hipótese, consequentemente, Como
concluimos que
O teorema a seguir mostra que um inteiro pode ser fatorado em
fatores primos e ainda garante que essa fatoração é única.
20
Teorema 1.3. (Teorema da fatoração única). Qualquer inteiro positivo pode
ser fatorado de um único modo como onde
são números primos e onde cada
Demonstração: Primeiro demonstraremos que todo inteiro pode ser fatorado
como produto de potências de números primos.
Suponhamos que todo inteiro possa ser fatorado como um produto de
potências de primos. Se o próprio é um número primo, então ele é um produto de
potências de primos. Se não é um número primo, então onde e
Pela hipótese de indução, como e são menores do que , cada um
deles pode ser fatorado como um produto de potências de primos. Assim é
também um tal produto. Se a propriedade é válida para todos os inteiros
então ela é válida para Consequentemente, pelo princípio básico de indução, a
proposição é verdadeira para todos os inteiros isto é, todo inteiro
é um produto de potências de primos.
Para provar a unicidade também usaremos indução matemática. Suponhamos que
onde são números primos e onde cada
e cada O objetivo é demonstrar que :
1)
2)
3)
Para isto é evidentemente verdadeiro. Por indução supomos que seja
verdadeiro para todos os inteiros Agora, como segue que
No entanto, como é um número primo, pelo corolário, segue-
se que , para algum Assim, Analogamente, como
concluímos que para algum , portanto Em resumo,
21
demonstramos que Portanto, Afirmamos
que isto implica Mas então Se
então e isto é, Se então sendo
podemos aplicar a hipótese de indução para obter:
1) O número de fatores primos (em ) em ambos os membros é o mesmo, isto é,
, logo
2)
3)
Assim, e , isto é o que queríamos demonstrar. Portanto, a hipótese
da unicidade da fatoração para os inteiros menores que implicou na unicidade da
fatoração em
1.6. Aritmética Modular
A aritmética modular é a parte conceitual mais importante deste capítulo.
Apresentaremos teorias imprescindíveis para efetuar a codificação e a decodificação
do RSA.
Definição 1.2. Seja um número inteiro fixo. Definimos se
A relação é referida como “congruência módulo n”, é chamado o módulo da
relação, e lemos como “ é congruente a módulo ”.
Vejamos a seguir as propriedades básicas da congruência modular e suas
respectivas demonstrações:
22
i. A relação congruência módulo define uma relação de equivalência sobre
o conjunto dos inteiros.
Demonstração: Como temos que portanto para
todo Além disso, se então e assim
logo Finalmente, se e então
e e, portanto, , isto é, Isto
implica que
ii. Esta relação de equivalência tem classes de equivalências distintas.
Demonstração: Seja a Dado um inteiro qualquer ,
pelo algoritmo de Euclides, onde Mas então Assim,
existem no máximo classes de congruências distintas; a saber
No entanto, elas são distintas, pois se com, digamos, então
onde é um inteiro positivo menor que , o que é obviamente
impossível. Consequentemente, existem exatamente classes de congruência
distintas
iii. Se e então e
Demonstração: Suponhamos que e ; portanto,
e donde e então
Mas então Além disso,
donde
iv. Se e é realmente primo com , então
23
Demonstração: Se e se e são primos entre si, então
, implica que e assim
v. Se então
Essa propriedade segue de (iii), por indução sobre .
1.7. Inversos Modulares
Definição 1.3. Dizemos que é o inverso se a equação é
verificada em .
Diremos que a classe é o inverso de se a equação
é verificada em Se então não tem inverso.
Suponhamos que tem inverso . A equação
corresponde a dizer que é divisível por Isto é para algum
inteiro Esta última equação implica que Concluímos, portanto que
se tem inverso em então
Agora mostraremos à recíproca. Suponhamos então que é um inteiro e
que A equação é equivalente a em
Concluímos assim que se então tem inverso em
Teorema 1.4. (Teorema de inversão). A classe tem inverso em se, e somente
se, e são primos entre si.
O conjunto dos elementos de que tem inverso é muito importante.
Vamos denotá-lo por
.
24
Quando é um número primo, o significa que não divide
Mas se divide então Portanto, quando é primo, todas as classes
diferentes de têm inverso.
Se e em têm inverso, então também tem inverso em
Diremos que tem inverso e tem inverso em O inverso de
será ]. Logo:
Uma classe de é uma raiz primitiva se todo elemento de é
igual a uma potência de
Teorema 1.5. Se existir um fator primo comum entre e , então não tem
inverso módulo
1.8. Congruência Linear
Uma congruência linear é uma equação do tipo onde
Resolvê-la só é possível se Então existe tal que
Multiplicando a equação por obtemos Como
em esta equação se reduz a
1.9. Algoritmo Chinês do Resto
Um dos primeiros lugares em que aparece é o Manual de matemática de
Sun Tsu, escrito entre 287 d.C. e 473 a.C. Esse mesmo resultado é mencionado na
Aritmética de Nicômaco de Gerasa.
Considere o sistema:
25
Escreveremos a equação (1) na forma onde é um inteiro
qualquer. Assim, podemos substituir na equação (2), obtendo ,
ou ainda:
Para que esta equação tenha solução é necessário que o máximo divisor
comum entre e divida Vamos assumir que Com isto
tem inverso em . Chamando de o inverso, a solução da equação é:
onde é um número inteiro. Substituindo na equação , encontramos:
Mas em . Logo, existe um inteiro tal que
Assim:
De fato, Como estamos supondo que basta
aplicar o algoritmo euclidiano estendido a e para obter e
Teorema 1.6. (Teorema Chinês do Resto). Sejam e inteiros positivos, primos
entre si. O sistema
26
sempre tem uma única solução em
Imagine que construímos uma tabela com casas. No alto da tabela,
escrevemos os elementos de e à esquerda, na vertical os elementos de A
casa da tabela que fica no encontro da tabela indexada por com a linha
indexada por será ocupada pelo inteiro tal que:
i.
ii. e
Diremos que tem coordenadas na tabela. Supondo que
, o teorema afirma que toda casa da tabela é preenchida por algum
inteiro no intervalo que vai de 0 a , porque todos os sistemas de congruências
têm solução em Além disso, como as soluções são únicas, duas casas com
coordenadas distintas são preenchidas por elementos distintos em
1.10. Critérios de divisibilidade
Critérios de divisibilidade por 2, 5 e 10.
Observe que e
consequentemente para todo temos que e
Se é um inteiro representado na base 10, temos
que logo
e Portanto é divisível por 10, por 5 e por 2 se e somente se
e ( respectivamente. Deduzimos daí os seguintes
critérios de divisibilidade para números representados na base 10.
27
i. Um número é divisível por 10 se e somente se o seu algarismo da unidade
é zero.
ii. Um número é divisível por 5 se e somente se o seu algarismo da unidade
é zero ou 5.
iii. Um número é divisível por 2 se e somente se o seu algarismo da unidade
é par.
Critérios de divisibilidade por 3 e 9.
Temos que ou ou seja, ou
para todo Seja um inteiro positivo representado
na base 10, temos que
Deduzimos o seguinte critério:
i. Um inteiro só é divisível por 9 (respectivamente por 3) se e somente se a
soma dos algarismos de sua representação na base 10 for divisível por 9
(respectivamente por 3).
Critério de divisibilidade por 7.
Temos que Vejamos o que acontece com outras
potências maiores de 10.
)
)
28
A partir daí os restos vão se repetir. Mais precisamente, se é um inteiro
qualquer e e seu quociente e resto módulo 6, então:
como , temos que:
assim,
Seja um inteiro positivo representado na base 10.
Temos que:
Escrevendo as potências da maior para a menor,
Critério de divisibilidade por 11.
Observe que assim
Seja um número inteiro positivo representado na base
10. Temos que
logo
29
Deduzimos o seguinte critério:
i. Um inteiro é divisível por 11 se, e somente se, a diferença entre a soma
dos algarismos de ordem par e a soma dos algarismos de ordem ímpar da
sua representação decimal for divisível por 11.
1.11. Função de Euler
Denotamos anteriormente por o conjunto dos elementos inversíveis
de Ou seja,
A função em que cada número inteiro positivo associa um outro
inteiro positivo, a ordem de é conhecida como função de Euler ou função
totiente. Assim a ordem de é denotada por
Mas como calcular ? Seja um primo, então todos os inteiros positivos
menores que são primos com Logo,
tem elementos. Portanto
Como calcular também ? Contaremos os inteiros positivos menores
que que não são divisíveis por Porém é mais fácil contarmos os que são
divisíveis. Se é divisível por então
portanto há inteiros positivos menores que que são divisíveis por Logo há
que não são divisíveis por Isto é,
30
Teorema 1.7. Se são inteiros positivos tais que então
Demonstração: Temos dois inteiros positivos e que satisfazem
Usando o teorema chinês do resto, construiremos uma tabela na horizontal os
números de 0 a e na vertical de 0 a Assim, a tabela tem casas,
cada uma endereçada por dois números onde e A
casa da tabela será preenchida com o inteiro entre e que satisfaz:
Diremos que o número da tabela tem coordenadas
Demonstraremos agora a seguinte afirmação: se, e somente se,
e
Se então e É claro que, se tem
inverso , então Portanto é divisível por
Em particular é divisível por donde De
concluímos que logo é inversível em Se tem
inverso então Portanto é divisível por
Assim é divisível por donde temos que De
concluímos que logo também é inversível em
Agora vamos provar a recíproca da afirmação.
Seja um elemento de e suponhamos que suas coordenadas satisfazem
e . Queremos mostrar que é inversível módulo Seja
o inverso de em e o inverso de em O inverso de se existir,
provavelmente será e conforme definidos anteriormente. Pelo teorema
chinês do resto, tem que existir um inteiro tal que e:
31
Mostraremos que é o inverso de Como e
temos que
logo é divisível por Como e temos que
Assim também é divisível por Como o podemos concluir,
que é divisível por Ou seja, em como queríamos
demonstrar.
Como calcular Por definição isto é o número de elementos de
Portanto, este número é igual ao produto do número de elementos de pelo
número de elementos de que é Portanto
1.12. Fórmula Geral de
Dado um inteiro positivo, vamos fatorar
onde são primos distintos. Pelo teorema
Usando o cálculo de para potências de primos temos:
32
Teorema 1.8. (Teorema de Fermat). Seja um número primo e um número
inteiro, então
Lema1.3. Seja um número primo e e inteiros. Então,
Teorema 1.9. (Pequeno Teorema de Fermat). Seja um número primo e um
inteiro que não é divisível por Então,
Demonstração. Se é primo e é um número inteiro qualquer, então
Suponhamos que sabemos que Neste caso é inversível
módulo pelo teorema de inversão. Seja um inteiro positivo tal que
Multiplicando ambos os membros de por obtemos:
substituindo nesta equação, temos:
1.13. Grupos
Definição 1.4. Diz-se que um conjunto de elementos, não vazio, forma um
se em está definida uma operação binária. Para dois quaisquer elementos
introduzimos uma operação indicada por , então é um grupo se a operação
satisfaz as seguintes propriedades:
33
i. Associatividade: dados temos que
ii. Elemento neutro: existe um elemento tal que para todo
temos
iii. Elemento inverso: dado um elemento qualquer, existe um
elemento (o inverso de a) tal que
Definição 1.5. Um grupo é dito abeliano (ou comutativo) se para todo
O número de elementos de um grupo é a sua ordem. Indicamos por
Quando o número de elementos de é finito, dizemos que é um grupo finito.
Exemplo. O conjunto onde por para queremos dizer que a
soma usual de inteiros, isto é, Então pode-se verificar que é um
grupo abeliano infinito no qual faz o papel de e – o de
1.14. Anéis
Um anel é um conjunto munido das operações de adição e
multiplicação, indicadas por e , respectivamente, tais que para todos
valem as seguintes propriedades:
i. Associatividade da adição:
34
ii. Existência do elemento neutro para a adição:
Existe um elemento chamado zero e denotado por 0, tal que
iii. Existência do elemento inverso para a adição:
Dado existe um elemento chamado simétrico de e denotado por
– tal que
iv. Comutatividade da adição:
v. Associatividade da multiplicação:
vi. Existência do elemento neutro para a multiplicação:
Existe um elemento chamado unidade e denotado por 1 tal que
vii. Comutatividade da multiplicação:
viii. Distributividade da multiplicação com relação à adição:
35
Exemplo. O conjunto dos inteiros positivos, negativos e o 0; + é a adição usual e é
a multiplicação usual de inteiros. É um exemplo de anel comutativo.
Proposição 1.1. Seja um anel. Para todo temos que
Demonstração: Considere as igualdades:
somando-se – aos extremos destas igualdades, obtemos:
daí temos que:
Proposição 1.2. Seja um conjunto munido de uma operação com elemento
neutro
a) O elemento neutro é único.
Demonstração: Suponhamos que e sejam elementos neutros. Então,
e
b) Se a operação é associativa e um elemento de possui um elemento
inverso, esse inverso é único.
Demonstração: Suponhamos que dado um , existam e tais que:
e
36
segue,
Definição 1.6. Um anel será chamado de domínio de integridade, se possuir a
seguinte propriedade:
ou seja,
Definição 1.7. Um elemento de um anel será dito invertível se existir um
elemento tal que Dizemos que é um inverso de
Proposição 1.3. Seja um domínio de integridade. Suponhamos que os
elementos sejam tais que e então
Demonstração: Se segue que Como é um domínio
de integridade e segue que
37
CAPÍTULO II
CÓDIGOS: DA ESTEGANOGRAFIA À CIFRA RSA
As escritas secretas datam de Heródoto (485 – 420 a. C.), o „pai da
história‟, ele narrou os conflitos entre a Grécia e a Pérsia, acontecidos no século V
a.C. Em seu livro Heródoto cita alguns episódios em que a ocultação de mensagens
era usada. Na história de Histaeu, por exemplo, a mensagem foi escrita no couro
cabeludo do mensageiro e esperou-se que o cabelo crescesse para que a
mensagem fosse enviada. Há vários outros métodos de ocultação, como os usados
pelos antigos chineses que escreviam a mensagem em seda fina, que depois era
amassada para formar uma pequena bola, coberta de cera e então era engolida pelo
mensageiro. No século XVI o italiano Giovanni Porta descobriu como ocultar uma
mensagem dentro de um ovo cozido com uma tinta especial que penetrava na casca
e deixava a mensagem na clara do ovo. Já no primeiro século depois de Cristo, há
relatos de como usar o „leite‟ da planta titímalo como tinta invisível.
Quando a comunicação secreta consiste apenas em ocultar a mensagem
ela é conhecida como esteganografia, que deriva do grego steganos – coberto e
graphein – escrever. A esteganografia oferece uma segurança „limitada‟, pois se o
mensageiro for descoberto, a mensagem também é descoberta, por isso a
interceptação da mensagem compromete toda a segurança. Atualmente existem
softwares que permitem a ocultação de mensagens em fotos, que depois só podem
ser lidas pelo destinatário ou por alguém que saiba onde está escondida a
mensagem.
Junto com a esteganografia, ocorreu a evolução da criptografia, que vem
do grego kriptos – oculto. A criptografia é conhecida como a arte dos „códigos
secretos‟ e estuda os métodos de codificar uma mensagem de forma que somente
seu destinatário consiga decifrá-la. O objetivo da criptografia é esconder o
38
significado da mensagem, torná-la incompreensível de acordo com alguma regra
específica e estabelecida entre transmissor e receptor. Se o „inimigo‟ interceptar a
mensagem codificada, ela será ilegível e sem conhecer a „regra‟ da codificação será
quase impossível decifrar a mensagem.
Segundo Lucchesi (1986) a criptologia já era usada pelos egípcios e é
inegável sua importância para que as informações se mantivessem em segurança.
A criptologia já estava presente no sistema de escrita hieroglífica dos egípcios, há quase quatro mil anos. Desde então vem sendo muito utilizada, principalmente para fins militares e diplomáticos (e por amantes também.) (LUCCHESI, 1986 p. XI-XII)
Mesmo sendo ciências independentes, a esteganografia combinada com
a criptografia é capaz de garantir segurança máxima de uma informação, pois oculta
o conteúdo da mensagem e a mensagem propriamente dita.
A criptografia pode ser dividida em dois ramos a transposição e a
substituição. Esses dois tipos de criptografia são conhecidos como criptografia
simétrica, a chave usada para codificar a mensagem é a mesma usada para
decodificar. Esse termo engloba todas as formas tradicionais de cifragem usadas
antes da década de 1970.
Na transposição, as letras da mensagem são rearranjadas formando um
anagrama. E padece de dois problemas:
Para mensagens muito curtas, tais como uma única palavra, este método é relativamente inseguro porque existe um número limitado de maneiras para se rearranjarem poucas letras. (...) à medida que o número de letras aumenta, o número de arranjos possíveis rapidamente explode, tornando impossível obter-se a mensagem original, a menos que o processo exato de mistura de letras seja conhecido. (SINGH, 2007 p. 23)
Nas cifras de substituição, cada letra da mensagem é substituída por
uma letra diferente. No Kama – sutra, escrito no século IV por Vatsyayana, uma das
técnicas encontradas nesse texto aconselha as mulheres a esconderem os detalhes
de seus relacionamentos e enviarem bilhetes, usando a substituição. Esta cifra é
39
simples e possui um alto nível de segurança, tanto que foi usada durante muitos
séculos e chegou-se a cogitar que fosse indecifrável.
Na verdade qualquer código que envolva substituir cada letra sistematicamente por outro símbolo qualquer sofre do mesmo problema. Isto se deve ao fato de que a freqüência média com que cada letra é usada em uma língua é mais ou menos constante. (...) Assim, apenas contando a freqüência de cada símbolo no texto podemos descobrir a que letra corresponde os símbolos mais frequentes. Isto geralmente é suficiente para decifrar toda a mensagem. (COUTINHO, 2003 p. 1-2)
Na década de 40, após a Segunda Grande Guerra Mundial, nascia o
primeiro computador do mundo. Agora os criptoanalistas podiam contar com a
velocidade e a flexibilidade do computador para analisar as várias possibilidades de
chaves até encontrar a chave correta. Com isso os criptógrafos tiveram que evoluir
junto com o computador a fim de criarem cifras mais complexas. Apesar de usarem
o computador e os dígitos binários, a princípio a cifragem continuou sendo simétrica
e restrita somente as pessoas que possuíam computadores.
Já na década de 60 o computador se tornou um produto mais acessível e
muito mais poderoso. Novamente os criptógrafos se depararam com um novo
problema: Como trocar informações de maneira segura? Depois de diversas
tentativas e para tentar controlar esse problema foi criado em 1976 o Padrão de
Cifragem de Dados – DES (Data Encryption Standard). Porém, ainda existia outro
problema: Como distribuir as chaves? Na década de 70, com o boom da informática
e na década de 80 com o surgimento da internet tornou-se mais frequente o uso do
computador, principalmente nas transações bancárias e comerciais, a cifragem
agora necessitava de uma troca de chaves segura, porque antes de compartilhar
uma mensagem cifrada era necessário partilhar a chave com segurança.
Vários cientistas passaram a estudar esse problema e também as
funções para encontrar uma que fosse de mão única, ou seja, fácil de fazer e difícil
de desfazer. Até que encontraram na aritmética modular essa utilidade.
evolução é um termo bem adequado, porque o desenvolvimento de códigos pode ser visto como uma luta evolutiva, já que qualquer código está sempre sob o ataque dos decifradores. Quando se desenvolve uma nova arma, revelando a fraqueza de um código, este deixa de ser útil. Ou ele se torna extinto ou evolui e se transforma num código novo e mais forte. E, por sua
40
vez, o novo código prospera até que os decifradores identifiquem suas fraquezas, e assim por diante. (SINGH, 2007 p. 12)
Um novo tipo de criptografia foi inventada a criptografia assimétrica, a
chave usada na cifragem não é a mesma usada na decifragem. Nesse sistema o
receptor não precisa esperar a chegada de uma informação do emissor antes de
cifrar e mandar uma mensagem de volta para o emissor, o receptor tem apenas
acesso a chave de cifragem pública. Só que ainda havia um problema. A criptografia
assimétrica funcionava na teoria, mas não na prática. Segundo Stallings (2008), é
computacionalmente inviável determinar a chave da decriptografia dado apenas o
conhecimento do algoritmo de criptografia e da chave de criptografia, e é isso que
faz os criptossistemas de chave pública serem tão eficazes.
Em abril de 1977, Rivest, Shamir e Adleman, colocaram fim a essa
angústia e criaram a cifra RSA, que deriva das inicias dos seus nomes. O RSA é
atualmente o código mais conhecido e usado em aplicações comerciais e é tido
como a técnica de uso geral mais aceita e implementada de chave pública. A base
dessa cifra é também a aritmética modular.
Para implementar o RSA necessitamos de dois parâmetros básicos: dois
números primos e Para codificar a mensagem é suficiente conhecer o valor de
que é o produto dos dois primos. Para decodificar uma mensagem é necessário
conhecer os primos e Assim, a chave de codificação do RSA é constituída pelo
número , esta chave é tornada pública e a chave de decodificação é
constituída pelos números primos e . Aparentemente parece muito simples, se
conhecemos o número , basta fatorá-lo.
Mas, para considerar uma chave segura de RSA é indispensável que os
números primos escolhidos possuam cerca de 150 algarismos ou mais, e fatorar
levaria milhares de anos, pois apesar dos avanços, não existem métodos
verdadeiramente eficazes para fatoração.
Na base do método RSA está, por um lado, o celebrado Teorema de Euler-Fermat, de outro a intratabilidade do problema da fatoração de inteiros. Ironicamente, o mesmo teorema de Fermat, em suas generalizações ou recíprocas parciais, é a base de todos os métodos de teste de primalidade conhecidos a partir do século XVII. ( LUCCHESI, 1986 p.69)
41
A seguir relataremos alguns fatos importantes e curiosidades da
criptologia, abordaremos alguns tipos de criptografia que surgiram ao longo dos
séculos, e principalmente a cifra RSA.
2.1. Os hieróglifos e o Mistério Linear B
A palavra hieróglifo deriva da palavra grega hieroglyphica que significa
entalhes sagrados. Eles datam do ano 3000 a. C. e são um tipo de escrita chamada
de sistema de rebus. Nesse sistema usa – se símbolos emprestados para
representar novas palavras com os mesmos sons, independente do significado
original. Por ser muito complicado para registrar coisas cotidianas, outra escrita
chamada hierática evoluiu junto com os hieróglifos e era usada no dia a dia. Por
volta de 600 a.C. o hierático foi substituído por outra escrita mais simples o
demótico. Essas escritas foram usadas por mais de três mil anos pelos antigos
egípcios e perto do final do século IV essas escritas desapareceram. A difusão do
cristianismo foi fundamental para a extinção das escritas egípcias, que foram
substituídas pelo copta, que são as 24 letras do alfabeto grego. Que também foram
substituídas no século XI pela expansão do idioma árabe.
O interesse em decifrar os hieróglifos data do século XVII, porém
somente em 1799, estudiosos franceses encontraram a famosa Pedra de Rosetta
em Fort Julien, na cidade de Rosetta. Essa pedra continha um pequeno trecho
escrito em três escritas grego, demótico e em hieróglifos.
42
Com essa pedra os hieróglifos podiam ser decifrados, já que o trecho
escrito em grego podia ser lido e comparado com os demais. Devido ao Tratado de
Capitulação a pedra foi entregue aos britânicos e permanece lá até hoje.
Jean – François Champollion em 1822 usando a contagem da frequência
de caracteres conseguiu decifrar os hieróglifos egípcios. Em seus estudos
Champollion descobriu que os hieróglifos eram simplesmente o copta puro e que
havia 486 palavras no texto grego encontrado na Pedra de Rosetta e 1419
caracteres no texto em hieróglifos, nesse tipo de escrita há caracteres ideográficos,
silábicos e determinativos. A partir das descobertas de Champollion os egiptólogos
continuaram a aperfeiçoar os hieróglifos e decifraram inscrições encontradas nas
tumbas dos faraós usando várias técnicas, inclusive a cifra de substituição. E
estudiosos também puderam decifrar outras escritas como a cuneiforme da
Babilônia, as runas da Turquia e o alfabeto brâmane da Índia.
Contudo a decifragem da Pedra de Rosetta não foi um feito tão grandioso
como a decifragem de uma escrita de Creta que data da Idade do Bronze, a Linear
B. A grande diferença entre os hieróglifos e Linear B é que a segunda não possuía
pistas de como era feita ou como funcionava. Em 1900 um arqueólogo chamado Sir
43
Arthur Evans encontrou em Creta tabuletas que continham inscrições que foram
divididas em três categorias. As primeiras inscrições consistiam em desenhos, como
os semagramas. O segundo conjunto eram caracteres formados por linhas simples e
foi chamada de Linear A. Já o terceiro eram tabuletas com uma escrita que parecia
com a Linear A, porém um pouco mais refinada, que foi chamada de Linear B.
Várias dúvidas pairavam na cabeça dos arqueólogos, que realmente
buscavam saber se a escrita derivava do grego ou se era uma escrita particular de
Creta. Muitas tentativas de decifrar a Linear B foram em vão e muito cogitou-se
sobre ela.
Após a morte de Sir Arthur, em 1940, a estudiosa Alice Kober, começou
um estudo sobre a Linear B e o seu grande avanço foi o fato de considerar cada
símbolo da escrita como um número de dois algarismos. Porém, não foi Kober quem
decifrou a Linear B. Michael Ventris, um arquiteto inglês e aficionado por
arqueologia, teve acesso aos trabalhos de Kober e resolveu estudar a Linear B e
tentar decifrá-la. Ventris usando puramente sua lógica e criptoanálise foi capaz de
decifrar várias palavras e também chegou a conclusão de que a Linear B era uma
escrita que derivava do grego arcaico. Como Ventris não sabia muito sobre o grego
arcaico, outro pesquisador chamado John Chadwick, se juntou a ele para decifrar a
Linear B. Juntos, Ventris e Chadwick formaram a dupla perfeita. Além de
descobrirem a tradução da Linear, eles foram capazes de descobrir que a escrita era
o idioma de Ulisses, o grande herói conquistador narrado por Homero.
2.2. Código de César
César nasceu em Roma e era de uma família de patrícios chamada
Juliae. Ainda jovem fora obrigado a fugir de Roma para evitar perseguições do
grande ditador Sulla, pois César era casado com Cornélia Cinnila, filha do inimigo
pessoal do ditador. Depois de conseguir o perdão de Sulla, partiu para a Ásia para
realizar o serviço militar e se destacou pela sua bravura e capacidade de liderança.
Após a morte do ditador Sulla em 78 a.C., César volta para Roma e inicia
sua carreira como advogado e depois viaja para Rodes para estudar filosofia e
44
retórica. Em 69 a.C. foi eleito questor pela Assembléia do Povo e no sorteio
subsequente conseguiu um cargo na província de Hispania Ulterior. Quando voltou a
Roma, prosseguiu como advogado e em 65 a.C. foi eleito edil. Como também obteve
muito êxito no cargo de edil, em 63 a.C. foi eleito pontifex maximus. Após alguns
escândalos com sua nova esposa Pompéia, César foi eleito pretor e Marco Túlio
Cicero cônsul sênior e após um turbulento ano como pretor, foi nomeado governador
da Hispania Ulterior.
Em 59 a.C., César foi eleito cônsul sênior da República de Roma pela
Assembléia das Centúrias e se aliou a Gnaeus Pompeius Magnus (Pompeu, o
grande) e a Marcus Licinius Crassus. Os governos de César não eram marcados
pela passividade. Ele iniciou as Guerras Gálicas (58 a.C. – 49 a.C.), onde
conquistou Gália e parte da Germânia, derrotou povos como os helvéticos (58 a.C.),
os nérvios (57 a.C.), os venécios (56 a.C.) e em 52 a.C. venceu a batalha de Alésia.
De acordo com Plutarco, a conquista de Gália resultou em 800 cidades
capituladas, 300 tribos submetidas, um milhão de gauleses escravizados e três
milhões de mortos nos campos de batalha. Apesar de suas conquistas seu governo
estava cada vez mais impopular. Seus aliados Pompeu e Crassus foram nomeados
cônsules e prolongaram seu pro consulado por mais cinco anos.
Com a morte de sua esposa, Pompeu se aproxima da facção
conservadora e de um dos maiores inimigos de César. Em 50 a.C. o senado liderado
por Catão ordenou o regresso de César e proibiu sua candidatura para o cargo de
cônsul in absentia. Porém, como sabia que seria eliminado da vida política ele se
recusou a voltar a Roma e atravessou o rio Rubicão, em 10 de janeiro de 49 a.C.,
esse ato deu início a Guerra Civil. César perseguiu Pompeu e em julho de 48 a.C.
derrotou-o na batalha de Dyrrhachium. Após esse acontecimento, César foi
derrotado. Porém, conquista a vitória na batalha de Farsalo, contra Catão.
De volta a Roma é nomeado ditador romano junto com Marco Antonio, e
é eleito cônsul pela segunda vez. Em 47 a.C. dirigiu-se ao Egito à procura de
Pompeu e descobriu que ele havia sido assassinado, diante disso resolveu ficar no
Egito e substituir o rei Ptolomeu XIII e se envolveu com a rainha do Egito Cleópatra
e tiveram um filho Ptolomeu XV do Egito. Depois de algumas campanhas no Egito,
ele alcançou vitórias também no Oriente Médio e Norte da África.
45
Com todo o vasto império romano ao seu controle, ele volta para Roma,
onde é nomeado ditador vitalício e cognominado Pater Patrie (o pai da pátria). Em
março de 44 a.C., César é assassinado por um grupo de senadores que
acreditavam agir em defesa da República.
Figura 2. Imperador Júlio Cesar
César para se comunicar e preservar informações durante suas batalhas
usava um código que se baseava em substituir uma letra do alfabeto pela seguinte.
Este tipo de cifra é conhecida como cifra de substituição monoalfabética, em que o
alfabeto cifrado permanece fixo durante toda a cifragem. Esse é o mais conhecido
exemplo de código secreto de que se tem notícia.
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
46
A cifra de César não garantia muita segurança para a mensagem, porque
só é possível criar 25 códigos distintos. Ao interceptar a mensagem o inimigo só
teria que testar as 25 chaves em potencial.
Qualquer mensagem cifrada em que se use a substituição pode ser
decifrada através da análise da frequência de cada letra no alfabeto usado e na
mensagem cifrada. Chegou - se a cogitar que as cifras de substituição fossem
indecifráveis e por isso dominaram o primeiro milênio.
2.3. As cifras polialfabéticas: de Alberti a Vigenère
Com o uso da análise de frequência as cifras de substituição
monoalfabética já não eram tão seguras. Para dificultar o trabalho dos
criptoanalistas foram criadas as cifras de substituição polialfabética, nesse sistema o
alfabeto cifrado muda durante a cifragem.
Leon Batista Alberti inventou a cifra polialfabética, que é conhecida como
a Cifra de Alberti. O método usado por Alberti é similar a cifra de substituição, porém
usa deslocamentos diferentes para cada letra, o que dificultava a análise da
frequência. Alberti usava dois discos de mesmo centro com raios diferentes, e que
permitia ver a qualquer momento a correspondência em cada letra no texto cifrado.
Apesar do grande avanço, Alberti não conseguiu desenvolver seu conceito num
sistema completo e geral.
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
F Z B V K I X A Y M E P L S D H J O R G N Q C U T W
G O X B F W T H Q I L A P Z J D E S V Y C R K U H N
Para codificar, por exemplo, a palavra amor, a palavra codificada se
transforma F-P-D-S. A primeira letra F é tirada do primeiro disco, P do segundo
disco, D do primeiro e S do segundo. Isso dificultava a contagem de frequência.
47
O primeiro a tentar aperfeiçoar as ideias de Alberti foi Johannes Trithemis
e depois Giovanni Porta e por último Blaise de Vigenère.
Blaise de Viginère nasceu em 1523 e a partir dos trabalhos de Aberti,
Trithemis e Porta, conseguiu aperfeiçoar e criar uma cifra que ficou indecifrável por
mais de 300 anos. Como era diplomata usava a criptografia apenas por praticidade.
Aos 39 anos, já possuía uma estabilidade financeira e decidiu se dedicar a
criptografia.
Independente de quem descobriu a cifra polialfabética com palavra chave
ela ficou conhecida como cifra de Vigenère.
O que garantia a segurança da cifra de Vigenère era a quantidade de
alfabetos cifrados usados para criar a mensagem original. Primeiro deve-se montar o
chamado quadrado de Vigenère.
48
Para cifrar a frase Amo matemática, é necessário antes de cifrar
escolher uma palavra chave, que no nosso exemplo será HOJE. Então as letras da
frase são substituídas pela palavra chave.
A M O M A T E M A T I C A
H O J E H O J E H O J E H
A primeira letra da frase corresponde a letra H e no quadrado de Vigenère
corresponde a linha 7. Então para cifrar a primeira letra vamos olhar o quadrado da
seguinte forma: na horizontal vamos fazer a correspondência da letra A com a linha
49
7. Logo, teremos que a letra A corresponde a letra H. Na segunda letra vamos fazer
a correspondência da letra M com a linha 14 que começa pela letra O, na terceira a
correspondência da letra O com a linha 9 que começa com a letra J e assim
sucessivamente . Chegamos à seguinte mensagem cifrada:
AMOMATEMATICA – HAXQHHNQHHRGH
A grande dificuldade em decifrar uma mensagem que foi cifrada usando a
cifra de Vigenère é que a análise de frequência é inviável e que remetente e
destinatário podem escolher qualquer palavra existente ou criar uma nova palavra e
usá-la como chave. Essa cifra ficou conhecida como chiffre indéchiffrable, ou seja,
cifra indecifrável. No final do século XIX Charles Babbage e Friedrich Kasiski,
independentemente um do outro, descobriram formas diferentes para decifrar a cifra
de Vigenère.
2.4. As grandes guerras e a criptografia
A partir da invenção do telégrafo, o rádio foi inventado e ele foi
imprescindível para o desenvolvimento da criptografia. Só havia um problema:
apesar de facilitar a comunicação, pois não era necessário o uso de fios e podia ser
usada a longas distâncias, a comunicação via rádio podia ser facilmente
interceptada. No início da Primeira Guerra Mundial, os militares queriam usar o
„poder‟ do rádio, porém não tinham absoluta certeza de que era seguro.
Durante a Primeira Guerra várias cifras foram criadas, porém todas foram
decifradas. A mais conhecida foi a cifra ADFGVX, uma cifra que usava uma mistura
de substituição com transposição. Essa cifra foi usada pelos militares alemães,
porque eles acreditavam que ela era indecifrável. Mas em junho de 1918 o frânces
Georges Painvin, conseguiu decifrar uma mensagem enviada com a cifra ADFGVX.
O fluxo de mensagens enviadas via rádio foi muito grande e a quantidade de cifras
50
também, com isso os criptoanalistas tinham sempre um novo desafio. Um dos
grandes desafios da Primeira Guerra foi a decifragem do telegrama de Zimmermann.
Os sistemas criptográficos usados na Primeira Guerra eram muito falhos.
Em 1918 foi fundada uma empresa chamada Scherbius & Ritter e um de seus
projetos era substituir os antigos sistemas criptográficos que usavam papel e lápis
por uma forma de cifragem que usasse tecnologia. Então o inventor alemão Arthur
Scherbius criou a Máquina Enigma que chegou a ser o mais terrível sistema de
cifragem da história.
A máquina consistia em três elementos conectados por fios: um teclado para
a entrada de cada letra do texto original, uma unidade misturadora, que cifra cada
letra, transformando – a na letra correspondente da mensagem cifrada, e um
mostrador consistindo em várias lâmpadas para indicar as letras do texto cifrado.
Para cifrar uma mensagem, o remetente pressiona a tecla com a letra no teclado,
que envia um impulso elétrico para a unidade misturadora central e depois para o
outro lado, onde o sinal ilumina a letra correspondente ao texto cifrado.
51
A parte fundamental da máquina é o misturador. A máquina padrão possuía
três misturadores, para um alfabeto de 26 letras, eles forneciam 17.576 ajustes
diferentes para os misturadores. Porém os ajustes iniciais é que eram
imprescindíveis. A máquina era acompanhada com um livro dos códigos, que
enumera as chaves para cada dia e que é fornecido a todos que fazem parte da
rede de comunicações.
Para cifrar o remetente tem que possuir a máquina Enigma, o livro dos
códigos e ainda combinar qual será a chave usada (o ajuste inicial dos misturadores)
naquele dia. Já para decifrar a mensagem o destinatário também tem que possuir
uma máquina Enigma e uma cópia do livro dos códigos. O que dificultava a
decifragem da mensagem é que mesmo de posse da máquina o inimigo ainda tinha
que ter a cópia do livro e saber qual a chave usada. Sem esses dados ele seria
obrigado a testar todas as combinações possíveis, até encontrar a chave exata.
Sherbius conseguiu vender 30 mil máquinas enigma para os militares
alemães, já que eles não queriam ter os mesmos problemas da Primeira Guerra
Mundial. Assim no início da Segunda Guerra Mundial a Alemanha possuía o sistema
de criptografia mais seguro do mundo. As máquinas usadas pelos alemães
chegaram a ter cinco misturadores para evitar ataques de criptoanalistas, porque
assim o número de chaves passou para 159.000.000.000.000.000.000
possibilidades.
Por treze anos franceses, britânicos e poloneses haviam tentado descobrir
como decifrar o mistério da máquina enigma e como realmente ela funcionava. Para
isso foi criada na Inglaterra, em Bletchley Park próximo a sede da Escola de Cifras e
Códigos do Governo (GC&CS) uma organização secreta para decifrar códigos e
principalmente a máquina enigma.
Foi em Bletchley Park que a Enigma foi decifrada, de fato se a máquina não
tivesse sido decifrada os militares alemães teriam mais chances de ganhar a guerra.
Historiadores afirmam que esse feito salvou muitas vidas.
A Segunda Guerra Mundial envolveu povos de todos os cantos do mundo,
foram um total de 58 países que participaram da guerra. Além de outras cifras
envolvidas na guerra, havia um problema em especial, os vários idiomas e um deles
52
era o navajo. O navajo é um idioma falado pelos indígenas dos Estados Unidos e foi
usado como método de cifragem durante a guerra pelos Estados Unidos. O código
navajo era impenetrável porque esse idioma não tinha nenhuma ligação com os
idiomas europeu ou asiático. Ao todo foram 420 codificadores navajos e sua maior
contribuição foi o fato do navajo nunca ter sido decifrado pelos japoneses.
2.5. As cifras de chave pública e o RSA
O projeto que deu início ao computador moderno surgiu em 1943, quando
Tommy Flowers resolver transformar um projeto criado em Bletchley Park na
máquina Colossus. Após a Segunda Guerra, Bletchely Park foi destruída e com ela a
máquina Colossus.
Em 1945, J. Presper Eckert e John W. Mauchly criaram a ENIAC (Electronic
Numerical Integrator And Calculator), que realizava cinco mil cálculos por segundo e
é considerada como a precursora do computador moderno.
53
Com a criação da ENIAC a segurança das cifras existentes, que se
baseavam em substituição e transposição, foi colocada em jogo, porque agora os
criptoanalistas podiam contar com uma arma a mais, o computador. Os
computadores podiam pesquisar todas as chaves possíveis em um curto espaço de
tempo.
Em contra partida, os criptógrafos deveriam criar cifras extremamente
seguras ao ataque do computador. E a grande arma dos criptógrafos é o fato do
computador usar números ao invés de letras (os números binários). Os bits, como
são conhecidos os dígitos binários, são uma sequência de um e zero.
Existem alguns padrões de conversão e um deles é os ASCII (American
Standard Code for Information Interchange), que converte cada letra em uma
sequência de 7 dígitos binários. Porém, um problema ainda persistia: a substituição
e a transposição também eram a base do ASCII.
A 1 0 0 0 0 0 1
B 1 0 0 0 0 1 0
C 1 0 0 0 0 1 1
D 1 0 0 0 1 0 0
E 1 0 0 0 1 0 1
F 1 0 0 0 1 1 0
G 1 0 0 0 1 1 1
H 1 0 0 1 0 0 0
I 1 0 0 1 0 0 1
J 1 0 0 1 0 1 0
K 1 0 0 1 0 1 1
L 1 0 0 1 1 0 0
M 1 0 0 1 1 0 1
N 1 0 0 1 1 1 0
O 1 0 0 1 1 1 1
P 1 0 1 0 0 0 0
Q 1 0 1 0 0 0 1
54
R 1 0 1 0 0 1 0
S 1 0 1 0 0 1 1
T 1 0 1 0 1 0 0
U 1 0 1 0 1 0 1
V 1 0 1 0 1 1 0
W 1 0 1 0 1 1 1
X 1 0 1 1 0 0 0
Y 1 0 1 1 0 0 1
Z 1 0 1 1 0 1 0
Para cifrar uma mensagem usando o ASCII é necessário cifrar a palavra
usando os números binários, escolher uma chave cifrá-la e depois „somar‟ os
elementos da palavra com o da palavra chave. Se o elemento do texto e da chave é
igual então a „soma‟ será zero, se diferentes a „soma‟ será um.
MENSAGEM MISSAO
MENSAGEM EM ASCII 100110110010011010011101001110000011001111
CHAVE - AMIGOS 100000110011011001001100011110011111010011
TEXTO CIFRADO 000110000001000011010001010000011100011100
O uso do computador para cifrar mensagens ficou restrito para militares e
para o governo por serem de alto custo. Já na década de 60 o custo ficou mais baixo
e os computadores se tornaram mais acessíveis e as empresas também passaram a
usar o computador para cifrar informações sigilosas.
Com um grande número de empresas usando o computador, os criptógrafos
se depararam com outro problema: como padronizar o sistema de cifragem? As
empresas podiam se comunicar internamente com segurança, mas com outras
empresas não, então a solução era usar um algoritmo de cifragem padrão.
55
O primeiro algoritmo de cifragem usado como padrão foi o Lucifer. Para usá-
lo era necessário que emissor e receptor escolhessem uma chave comum. Após a
escolha da chave o emissor carrega o número e a mensagem no programa Lucifer,
que então produz o texto cifrado. E para decifrar, o receptor introduz a mesma chave
e o texto cifrado no programa, que então reproduz a mensagem original.
A Agência de Segurança Nacional (NSA) se viu prejudicada pelo Lucifer,
porque a NSA era uma organização responsável pela manutenção da segurança
das comunicações militares e do governo e o Lucifer era um dos mais poderosos
sistemas de cifragem. Então a organização pressionou e conseguiu fazer com que o
Lucifer operasse com um número restrito de chaves.
Em 1976 a cifra de Lucifer foi batizada como Padrão de Cifragem de Dados
(DES – Data Encryption Standard) e o número de chaves possíveis era de
aproximadamente 100.000.000.000.000.000. A garantia de segurança da DES era o
simples fato de que nenhum computador civil era capaz de quebrar a cifra.
Porém, ainda existia um grave problema: como distribuir as chaves? Enviar
a chave via telefone não era seguro e enviar a chave pessoalmente era inviável
financeiramente. As empresas civis queriam uma solução que garantisse o envio de
chaves a seus clientes de maneira segura e viável. Até então esse não era
considerado um problema porque somente o governo e os militares usavam esse
tipo de criptografia.
Na década de 60, os Estados Unidos financiaram uma pesquisa conhecida
como Agência de Projetos Avançados de Pesquisa (ARPA – Advanced Research
Projects Agency). Um dos objetivos da ARPA era encontrar uma maneira de
conectar os computadores militares através de grandes distâncias. Então 1969,
surgiu a ARPANet, que conseguiu conectar quatro locais, sites. Com os avanços da
ARPANet, surgia em 1982 a Internet.
Whitfield Diffie, um matemático formado no Massachusetts Institute of
Technology (MIT), já era interessado no problema da distribuição de chaves. Diffie
imaginando como funcionaria a Internet, se perguntou como seria possível uma
pessoa enviar um e-mail ou fazer uma compra via Internet de maneira segura e
como funcionaria essa troca de chaves.
56
Em 1974, Diffie conheceu Martin Hellman, um criptógrafo aspirante. Juntos
eles estudaram como solucionar o problema da distribuição de chaves a longas
distâncias.
A pesquisa de Diffie e Hellman consistia no exame de várias funções
matemáticas. O objetivo deles era encontrar uma função matemática de mão única,
ou seja, fácil de fazer e difícil de desfazer. E foi estudando as funções que eles
chegaram à aritmética modular, que é conhecida como a aritmética dos fenômenos
periódicos.
O esquema de troca de chaves de Diffie-Hellman-Merkle garantia que era
possível uma troca de segredos, porque o interceptador mesmo com a chave em
mãos não seria capaz de desfazer a função e também que receptor e destinatário
não precisavam se encontrar para obterem uma chave secreta. Porém, eles teriam
que estar conectados ao mesmo tempo na internet.
Diffie persistindo em seus estudos para conseguir chegar a uma solução
para a troca de chaves. Inventou a criptografia assimétrica e de chave pública. Nela
o emissor não precisa se preocupar em esconder sua chave de cifragem, na
57
verdade todos podem ter acesso a ela, o que deve ser mantido em segredo é a
chave de decifragem. Porque mesmo de posse da chave pública, ninguém seria
capaz de fazer o caminho inverso e decifrar a mensagem.
Em 1975, Diffie publicou sua ideia de criptografia assimétrica e de chave
pública. Porém, Diffie, Hellman e Merkle apesar de revolucionarem a criptografia não
foram capazes de encontrar essa „função‟. Outros cientistas foram em busca de uma
função de mão única que se encaixasse na cifra assimétrica.
As ideias de Diffie e Hellman sobre a cifra assimétrica instigaram o espírito
desafiador de três pesquisadores: Ron Rivest (cientista de computação), Adi Shamir
(também cientista de computação) e Leonard Adleman (matemático), que partiram
em busca da função de mão única. Depois de inúmeras tentativas e fracassos, os
três cogitaram a possibilidade de desistir da ideia de encontrar tal função.
58
Em abril de 1977, Rivest conseguiu encontrar essa função de mão única. E
denominou o sistema como RSA (Rivest, Shamir e Adleman). A cifra RSA se baseia
na aritmética modular e sua segurança está no uso de números primos.
Uma pessoa escolhe dois números primos quaisquer, que chamaremos de
e . Então multiplica estes dois números e encontra . Que se torna sua chave
pública e qualquer pessoa que queira enviar uma mensagem a ela pode ter acesso
a essa chave. Se uma pessoa quer enviar uma mensagem, ela pega o valor de e o
insere na função de mão única feita para a chave do receptor, que pega essa
função, insere a chave pública, anota o resultado e envia a mensagem para a
pessoa dona da chave. (Detalhes de como é feita a codificação e a decodificação da
cifra RSA serão dados no capítulo 3.)
Para a pessoa que sabe quais os valores de e , é muito fácil reverter a
função. Contudo, como os valores de e não são revelados, pois é a chave
particular, somente ela tem as informações necessárias para decifrar suas
mensagens. Bancos, empresas que fazem vendas pela internet, utilizam números
primos em torno de quanto maior o número maior a segurança da chave. A
empresa RSA Data Security Inc., recomenda com 309 algarismos e para as
agências de inteligência com 600 algarismos.
Depois da descoberta do RSA a revista norte americana Scientific American,
colocou um desafio que consistia na fatoração do número:
n=114.381.625.757.888.867.669.235.779.976.146.612.010.218.296.721.242
.362.562.561.842.935.706.935.245.733.897.830.597.123.563.958.705.058.989.075.
147.599.290.026.879.543.541
Esse número demorou 17 anos para ser fatorado e foram necessários
seiscentos volutários, de países como: Grã-Bretanha, Austrália, Estados Unidos e
Venezuela, usando computadores de médio e grande porte. Eles descobriram que:
p=32.769.132.993.266.709.549.961.988.190.834.461.413.177.642.967.992.
942.539.798.288.533
q=3.490.529.510.847.650.949.147.849.619.903.898.133.417.764.638.493.3
87.843.990.820.577
59
Em 1995, um consultor de informática descobriu que é possível usar o
sistema de assinaturas para decifrar a cifra RSA, o sistema de assinaturas digitais
garante a legitimidade da autoria de um documento eletrônico. O método descoberto
consiste em enviar uma mensagem assinada e marcar o tempo que o sistema leva
para confirmar a assinatura. Fazendo isto para mensagens de tamanhos
ligeiramente diferentes, é possível obter informações suficientes para encontrar a
chave de decodificação do sistema RSA que esteja sendo usado.
Atualmente uma compra pela Internet pode ser protegida pela criptografia
RSA. O comprador visita a página da empresa e seleciona o produto que deseja
comprar. Ele então preenche um formulário que pede seu nome, endereço e
detalhes do seu cartão de crédito e usa a chave pública da empresa para cifrar esse
formulário. O pedido cifrado é transmitido para a empresa, que é a única que pode
decodificá-lo, porque só a empresa possui a chave particular. Tudo é feito
automaticamente pelo browser (Netscape ou Explorer) em conjunto com o
computador da empresa.
Vários estudiosos tentam encontrar um método de fatoração seguro e
rápido. Em 2002, o cientista indiano Manindra Agrawal e seus alunos Neeraj Kayal e
Nitin Saxena, inventaram um método rápido para descobrir se um número muito
grande é primo ou não. Eles descobriram que se um número x não for divisível por
nenhum número primo menor que sua raiz quadrada, então x também é primo. Esse
é um dos algoritmos de primalidade mais eficiente e moderno.
Para tentar mostrar que um número de cem algarismos é primo esse algoritmo precisaria, mesmo em um computador muito rápido, de algo em torno de anos (...). Levando em conta que a idade do universo desde o
Big Bang é calculada em cerca de anos, esse algoritmo não parece muito útil. (COUTINHO apud GARCIA, 2002 p.62)
A cifra RSA é altamente segura, mas não indecifrável, a segurança está
baseada no fato, de ser inviável fatorar um número tão grande quanto, por exemplo,
pois isso levaria aproximadamente meio século para ser feito. Não existem
métodos seguros e nem computadores suficientemente rápidos para isso. Os
próprios criadores da cifra tentam descobrir uma maneira de fatorar esses números.
60
CAPÍTULO III
CRIPTOGRAFIA RSA
Neste capítulo, mostraremos como codificar e decodificar uma
mensagem usando a cifra RSA. Para isso, usaremos os tópicos da teoria dos
números abordados no capítulo 1 de maneira simples. Os cálculos foram mostrados
para que qualquer pessoa possa compreendê-los e quem sabe até enviar uma
mensagem usando a cifra RSA.
3.1. Pré-codificação
O primeiro passo é converter a mensagem em uma sequência de
números. Vamos supor para facilitar a exemplificação, que a mensagem original seja
um texto apenas com palavras, sem números. Portanto, a mensagem é constituída
pelas letras que formam as palavras e pelos espaços entre as palavras.
Na pré-codificação convertemos as letras em números usando a
seguinte conversão:
A B C D E F G H I
10 11 12 13 14 15 16 17 18
J K L M N O P Q R
19 20 21 22 23 24 25 26 27
S T U V W X Y Z
28 29 30 31 32 33 34 35
61
O espaço entre duas palavras será substituído pelo número 99, quando
for feita a conversão. Por exemplo, a frase Eu amo matemática é convertida no
número:
1430991022249922102914221029181210
Porque cada letra corresponde a um número de dois algarismos? Para
evitar ambiguidades. Se a letra A correspondesse ao número 1, B ao 2, e assim
sucessivamente, não teríamos como saber se o número 12 corresponderia AB ou L,
que é a décima segunda letra do alfabeto.
O próximo passo é determinar os parâmetros do RSA que vamos usar.
Os parâmetros são dois números primos distintos escolhidos aleatoriamente, que
vamos denotar por p e q. Ponha O último passo da pré-codificação consiste
em quebrar em blocos o número produzido anteriormente. Estes blocos devem ser
números menores que n. A mensagem pode ser quebrada nos seguintes blocos:
14-30-99-102-224-99-22-102-91-42-210-29-181-210
Os blocos escolhidos são aleatórios, eles não necessitam ter o mesmo
tamanho. O único cuidado é não escolher blocos que comecem pelo número zero,
pois não poderíamos distinguir o bloco 022 do bloco 22.
3.2. Codificando a mensagem
Para codificarmos a mensagem precisamos de , que é o produto dos
primos, diremos que é a chave de codificação do sistema RSA e de um número
inteiro positivo que seja inversível módulo Em outras palavras,
Quando conhecemos p e q é fácil calcular
62
O par é a chave de decodificação do sistema RSA. O próximo
passo é codificar cada bloco separadamente, e a mensagem codificada será a
sequência dos blocos codificados.
Denotaremos o bloco codificado por
Em termos de aritmética modular, é o resíduo de módulo .
Para escolhermos , devemos ter o cuidado de escolher o menor primo
que não divide Vamos escolher p e q de forma que o resto da divisão de cada um
por 6 seja 5, ou seja, e . Então utilizaremos ,
, pois e (o motivo pelo qual foi escolhido
números da forma será explicado na decodificação), logo , também
temos e . Assim, o bloco 14 da
mensagem pré-codificada deve ser codificado como o resto da divisão de por
253:
o C(14)
o C(30)
o C(99)
o C(102)
63
o C(224)
o C(22)
o C(91)
o C(42)
o C(210)
o C(29)
o C(181)
Reunindo todos os blocos, descobrimos que a mensagem codificada é:
214-182-44-126-152-44-22-126-137-212-188-101-180-188
64
3.3. Decodificando a mensagem
A informação de que precisamos para decodificar uma mensagem
consiste em dois números: e o inverso de em O par é a chave de
decodificação. Seja um bloco da mensagem codificada, então será o
resultado do processo de decodificação:
Como na codificação, o bloco é positivo e este resíduo coincide com o
resto da divisão de por Desde que e sejam valores conhecidos é fácil
calcular o valor de d. O processo de decodificação só é válido se ao decodificar um
bloco codificado, obtemos o bloco original. Em outras palavras, se é um bloco da
mensagem original, temos que:
Os dados de codificação serão e , e os de decodificação serão e .
Precisamos verificar que se é um inteiro e então Vamos
provar apenas que isto é e estão no intervalo entre 1 a
logo só podem ser congruentes módulo se são iguais. Por isso precisamos
escolher menor que , e temos que manter os blocos separados, mesmo depois
da codificação.
Por definição de e temos que:
65
sabemos que é o inverso de módulo , logo para algum
inteiro Como e são inteiros maiores que 2 e então
Substituindo:
pelo teorema de Euler temos que, Logo:
portanto:
Há um pequeno erro na demonstração acima, só podemos usar o
teorema de Euler se sabemos que Isto nem sempre é verdade,
porque não temos como controlar os blocos da mensagem.
Temos que onde e são primos distintos. Calcularemos a
forma reduzida de módulo e módulo Faremos o cálculo apenas para um
deles, pois como ambos são primos os cálculos são análogos. Vimos que:
logo
Para usarmos o Teorema de Fermat, precisamos supor que não divide
Então . Logo,
66
Usar o Teorema de Fermat nos ajudou porque o fato de ser primo nos
permite tratar facilmente o caso em que divide Neste caso e a
congruência é verificada. Assim, vale para qualquer valor de
Analogamente, temos que Em outras, é divisível
por e por Como e são primos distintos, temos que daí
podemos concluir que divide
Agora que sabemos que nossa “receita” para decodificação funciona,
mostraremos como é simples calcular Para isso, usaremos o mesmo exemplo que
estamos considerando. Temos , e Aplicaremos o
algoritmo euclidiano estendido para calcular Dividindo temos:
Portanto o inverso de 3 módulo 220 é . Usaremos como expoente
de potências, logo
Mas porque usamos no exemplo e primos da forma ? Para
garantirmos que 3 é inversível módulo Mas o RSA pode ser
implementado usando-se quaisquer dois expoentes inteiros positivos, para
codificação e para decodificação, desde que:
Estamos supondo que e deixam resto 5 na divisão por 6, temos que:
somando nas duas equações:
multiplicando as duas equações, obtemos:
67
Donde chegamos que é um número da forma para qualquer
Qual é o inverso de 3 módulo ?
Temos que . Vamos somar nessa equação, logo
observe que somamos convenientemente para que pudéssemos colocar o
número 3 em evidência. Assim:
Sabemos que e que , temos que:
multiplicando a equação por obtemos:
Logo, é o inverso de 3 módulo Porém é negativo, vamos
somar
assim, é positivo para todo
Se . Podemos reescrever 220 na forma Ou seja,
Nesse caso . Com o valor de e sabendo que fica
muito fácil calcular
Foram apresentadas duas maneiras de calcular o valor de . Cabe ao
leitor escolher a mais conveniente a ele.
Como foi dito anteriormente para decodificar a mensagem é necessário
termos o par No exemplo citado Assim, para decodificar o bloco
68
214 da mensagem codificada, calculamos a forma reduzida de módulo
Nesse caso, o cálculo é inviável sem o uso de um sistema de computação algébrica.
Mas como proceder se não temos um computador para calcular
módulo ? Combinando o Teorema de Fermat com o Algoritmo Chinês do Resto
para calcularmos e Nesse caso temos que fatorar
, pois precisamos dos valores de e
Primeiro vamos fatorar No caso do exemplo citado, vamos supor que já
fatoramos e encontramos, e Então vamos calcular o bloco
codificado módulo 11 e módulo 23, respectivamente.
D(214)
O primeiro passo é calcularmos o resto da divisão de 214, que é o bloco
codificado, pelos números primos que foram encontrados depois que foi fatorado.
Para isso, vamos utilizar as propriedades da aritmética modular:
Como nosso objetivo é calcular módulo 11 e módulo 23,
respectivamente, vamos elevar as congruências a potência 147:
Desta forma podemos calcular os resíduos de módulo 11 e
módulo 23. Sabemos pelo teorema 1.9. (Teorema de Fermat) que
Assim:
de modo análogo, temos que . Logo:
69
Assim sabemos que:
Podemos assim compor o seguinte sistema de congruências:
Fazendo uso do algoritmo chinês do resto podemos encontrar a solução
do sistema. Na congruência (1) isolamos o valor de
Substituindo a equação (3) na congruência (2), temos:
somando -3 na congruência (4), obtemos:
logo,
dividindo a congruência (5) por 11, temos:
portanto,
Substituindo o valor encontrado para em (3)
Chegamos ao bloco 14, que corresponde ao bloco da mensagem original,
afinal estamos decodificando o bloco 214.
70
D(182)
O primeiro passo é calcularmos o resto da divisão de 182 pelos números
primos que foram encontrados depois que foi fatorado. Para isso, vamos utilizar as
propriedades da aritmética modular:
Como nosso objetivo é calcular módulo 11 e módulo 23, vamos
elevar as congruências a potência 147:
Desta forma podemos calcular os resíduos de módulo 11 e
módulo 23, respectivamente. Sabemos pelo teorema 1.9. (Teorema de Fermat) que
Assim:
de modo análogo, temos que . Logo:
Assim sabemos que:
Podemos assim compor o seguinte sistema de congruências:
Fazendo uso do algoritmo chinês do resto podemos encontrar a solução
do sistema. Na congruência (1) isolamos o valor de :
71
Substituindo a equação (3) na congruência (2), temos:
somando na congruência (4), obtemos:
logo,
Podemos somar em (5) para que o número não fique negativo,
assim procederemos da seguinte forma:
dividindo por 11, temos:
portanto,
Substituindo o valor encontrado para em (3)
Chegamos ao bloco 30, que corresponde ao bloco da mensagem original,
afinal estamos decodificando o bloco 182.
D(44)
O primeiro passo é calcularmos o resto da divisão de 44 pelos números
primos que foram encontrados depois que foi fatorado. Para isso, vamos utilizar as
propriedades da aritmética modular:
72
Como nosso objetivo é calcular módulo 11 e módulo 23, vamos
elevar as congruências a potência 147:
Desta forma podemos calcular os resíduos de módulo 11 e
módulo 23, respectivamente. Sabemos que
Pelo teorema 1.9. (Teorema de Fermat) temos que .
Logo:
Assim sabemos que:
Podemos assim compor o seguinte sistema de congruências:
Fazendo uso do algoritmo chinês do resto podemos encontrar a solução
do sistema. Na congruência (2) isolamos o valor de
Substituindo a equação (3) na congruência (1), temos:
somando na congruência (4), obtemos:
logo,
73
Sabemos que :
Podemos somar em (5) para que o número não fique negativo,
assim procederemos da seguinte forma:
logo,
Substituindo o valor encontrado para em (3), temos:
Chegamos ao bloco 99, que corresponde ao bloco da mensagem original,
afinal estamos decodificando o bloco 44.
D(126)
O primeiro passo é calcularmos o resto da divisão de 126 pelos números
primos que foram encontrados depois que foi fatorado. Para isso, vamos utilizar as
propriedades da aritmética modular:
Como nosso objetivo é calcular módulo 11 e módulo 23, vamos
elevar as congruências a potência 147:
Desta forma podemos calcular simplesmente os resíduos de módulo
11 e módulo 23, respectivamente. Sabemos pelo teorema 1.9. (Teorema de
Fermat) que Assim:
74
de modo análogo, temos que . Logo:
Assim sabemos que:
Podemos assim compor o seguinte sistema de congruências:
Fazendo uso do algoritmo chinês do resto podemos encontrar a solução
do sistema. Na congruência (2) isolamos o valor de
Substituindo a equação (3) na congruência (1), temos:
Somando na congruência (4), obtemos:
logo,
Sabemos que . Assim,
portanto,
Substituindo o valor encontrado para em (3) temos que:
75
Chegamos ao bloco 102, que corresponde ao bloco da mensagem
original, afinal estamos decodificando o bloco 126.
D(152)
O primeiro passo é calcularmos o resto da divisão de 152 pelos números
primos que foram encontrados depois que foi fatorado. Para isso, vamos utilizar as
propriedades da aritmética modular:
Como nosso objetivo é calcular módulo 11 e módulo 23, vamos
elevar as congruências a potência 147:
Desta forma podemos calcular os resíduos de módulo 11 e
módulo 23. Sabemos pelo teorema 1.9. (Teorema de Fermat) que
Assim:
de modo análogo, temos que . Logo:
Assim sabemos que:
Podemos assim compor o seguinte sistema de congruências:
76
Fazendo uso do algoritmo chinês do resto podemos encontrar a solução
do sistema. Na congruência (2) isolamos o valor de :
Substituindo (3) na congruência (1), temos:
somando na congruência (4), obtemos:
logo,
assim,
portanto,
Substituindo o valor encontrado para em (3), temos que:
Chegamos ao bloco 224, que corresponde ao bloco da mensagem
original, afinal estamos decodificando o bloco 152.
D(22)
O primeiro passo é calcularmos o resto da divisão de 22 pelos números
primos que foram encontrados depois que foi fatorado. Para isso, vamos utilizar as
propriedades da aritmética modular:
77
Como nosso objetivo é calcular módulo 11 e módulo 23, vamos
elevar as congruências a potência 147:
Desta forma podemos calcular os resíduos de módulo 11 e
módulo 23. Sabemos que .
Sabemos que . Logo:
Assim sabemos que:
Podemos assim compor o seguinte sistema de congruências:
Fazendo uso do algoritmo chinês do resto podemos encontrar a solução
do sistema. Na congruência (2) isolamos o valor de
Substituindo a equação (3) na congruência (1), temos:
somando na congruência (4), obtemos:
logo,
78
assim temos que:
portanto,
Substituindo o valor encontrado para em (3), temos:
Chegamos ao bloco 22, que corresponde ao bloco da mensagem original,
afinal estamos decodificando o bloco 22.
D(137)
O primeiro passo é calcularmos o resto da divisão de 137 pelos números
primos que foram encontrados depois que foi fatorado. Para isso, vamos utilizar as
propriedades da aritmética modular:
Como nosso objetivo é calcular módulo 11 e módulo 23, vamos
elevar as congruências a potência 147:
Desta forma podemos calcular os resíduos de módulo 11 e
módulo 23. Sabemos pelo teorema 1.9. (Teorema de Fermat) que
Assim:
de modo análogo, temos que . Logo:
79
Assim sabemos que:
Podemos assim compor o seguinte sistema de congruências:
Fazendo uso do algoritmo chinês do resto podemos encontrar a solução
do sistema. Na congruência (2) isolamos o valor de :
Substituindo a equação (3) na congruência (1), temos:
somando na congruência (4), obtemos:
logo,
assim,
logo,
portanto,
Substituindo o valor encontrado para em (3), temos:
80
Chegamos ao bloco 91, que corresponde ao bloco da mensagem original,
afinal estamos decodificando o bloco 137.
D(212)
O primeiro passo é calcularmos o resto da divisão de 137 pelos números
primos que foram encontrados depois que foi fatorado. Para isso, vamos utilizar as
propriedades da aritmética modular:
Como nosso objetivo é calcular módulo 11 e módulo 23, vamos
elevar as congruências a potência 147:
Desta forma podemos calcular os resíduos de módulo 11 e
módulo 23. Sabemos pelo teorema 1.9. (Teorema de Fermat) que
Assim:
de modo análogo, temos que . Logo:
Assim sabemos que:
Podemos assim compor o seguinte sistema de congruências:
81
Fazendo uso do algoritmo chinês do resto podemos encontrar a solução
do sistema. Na congruência (2) isolamos o valor de
Substituindo a equação (3) na congruência (1), temos:
somando na congruência (4), obtemos:
logo,
assim,
portanto,
Substituindo o valor encontrado para em (3), temos:
Chegamos ao bloco 42, que corresponde ao bloco da mensagem original,
afinal estamos decodificando o bloco 212.
D(188)
O primeiro passo é calcularmos o resto da divisão de 188 pelos números
primos que foram encontrados depois que foi fatorado. Para isso, vamos utilizar as
propriedades da aritmética modular:
82
Como nosso objetivo é calcular módulo 11 e módulo 23, vamos
elevar as congruências a potência 147:
Desta forma podemos calcular os resíduos de módulo 11 e
módulo 23. Sabemos pelo
Temos pelo Teorema 1.9 (Teorema de Fermat) que .
Logo:
Assim sabemos que:
Podemos assim compor o seguinte sistema de congruências:
Fazendo uso do algoritmo chinês do resto podemos encontrar a solução
do sistema. Na congruência (2) isolamos o valor de :
Substituindo a equação (3) na congruência (1), temos:
somando na congruência (4), obtemos:
logo,
83
logo,
portanto,
Substituindo o valor encontrado para em (3), temos:
Chegamos ao bloco 210, que corresponde ao bloco da mensagem
original, afinal estamos decodificando o bloco 188.
D(101)
O primeiro passo é calcularmos o resto da divisão de 101 pelos números
primos que foram encontrados depois que foi fatorado. Para isso, vamos utilizar as
propriedades da aritmética modular:
Como nosso objetivo é calcular módulo 11 e módulo 23, vamos
elevar as congruências a potência 147:
Desta forma podemos calcular os resíduos de módulo 11 e
módulo 23. Sabemos pelo teorema 1.9. (Teorema de Fermat) que
Assim:
de modo análogo, temos que . Logo:
84
Assim sabemos que:
Podemos assim compor o seguinte sistema de congruências:
Fazendo uso do algoritmo chinês do resto podemos encontrar a solução
do sistema. Na congruência (2) isolamos o valor de :
Substituindo a equação (3) na congruência (1), temos:
somando na congruência (4), obtemos:
logo,
assim,
portanto,
Substituindo o valor encontrado para em (3), temos:
Chegamos ao bloco 29, que corresponde ao bloco da mensagem original,
afinal estamos decodificando o bloco 101.
85
D(180)
O primeiro passo é calcularmos o resto da divisão de 180 pelos números
primos que foram encontrados depois que foi fatorado. Para isso, vamos utilizar as
propriedades da aritmética modular:
Como nosso objetivo é calcular módulo 11 e módulo 23, vamos
elevar as congruências a potência 147:
Desta forma podemos calcular os resíduos de módulo 11 e
módulo 23. Sabemos pelo teorema 1.9. (Teorema de Fermat) que
Assim:
de modo análogo, temos que . Logo:
Assim sabemos que:
Podemos assim compor o seguinte sistema de congruências:
Fazendo uso do algoritmo chinês do resto podemos encontrar a solução
do sistema. Na congruência (2) isolamos o valor de :
86
Substituindo a equação (3) na congruência (1), temos:
somando na congruência (4), obtemos:
logo,
assim,
portanto,
Substituindo o valor encontrado para em (3), temos:
Chegamos ao bloco 181, que corresponde ao bloco da mensagem
original, afinal estamos decodificando o bloco 180.
Após decodificar todos os blocos da mensagem codificada, chegamos a
mensagem:
14-30-99-102-224-99-22-102-91-42-210-29-181-210
Que pode ser reescrito juntando-se cada bloco decodificado:
1430991022249922102914221029181210
Como sabemos que cada letra possui apenas dois algarismos, para
evitar ambigüidade, fica fácil decodificar a mensagem:
87
14 30 99 10 22 24 99 22 10 29 14 22 10 29 18 12 10
E U __ A M O __ M A T E M Á T I C A
Ou seja, EU AMO MATEMÁTICA, que corresponde a frase que
escolhemos no início do capítulo como exemplo.
88
4. CONSIDERAÇÕES FINAIS
A finalidade deste trabalho foi apresentar os tópicos da teoria dos
números necessários às aplicações da cifra RSA de forma simples e compreensível.
O capítulo I nos fez enxergar a beleza da álgebra, e principalmente da
teoria dos números, foram apresentadas definições, propriedades, lemas e teoremas
de matemáticos consagrados como: Fermat, Euclides, Euler e vários outros que
contribuíram para essa área da matemática. E ainda conta com uma introdução da
teoria de grupos e de anéis.
Conhecemos um pouco da fascinante história dos códigos no capítulo II.
Nele abordamos fatos importantes que vão desde a esteganografia até a cifra RSA.
Encontramos códigos que nos deixaram intrigados quanto a sua simplicidade e ao
mesmo tempo complexidade, como por exemplo, o código de César que é
extremamente fácil e que contribuiu para inúmeras de suas vitórias e foi até
considerado indecifrável e também descobrimos que várias das tecnologias usadas
ao longo da história foram aperfeiçoadas com a finalidade de serem usadas na
criptografia.
Por fim, no capítulo III vimos o funcionamento da cifra RSA, com todas as
suas particularidades. Apresentamos como é codificada e decodificada uma
mensagem usando a cifra e os tópicos apresentados no capítulo I.
89
REFERÊNCIAS BIBLIOGRÁFICAS
[1] BLAISE de Vigenère. Disponível em
<http://www.numaboa.com/criptografia/historia/348-vigenere>. Acesso em 09 de
novembro de 2010.
[2] COUTINHO, S. C. Criptografia. Programa de iniciação científica da OBMEP. Rio
de Janeiro. 2007.
[3] COUTINHO. S. C. Números Inteiros e Criptografia RSA. 2º edição. Rio de
Janeiro: IMPA, 2003.
[4] DOMINGUES, Hygino H; IEZZI, Gelson. Álgebra Moderna: volume único. 4º
edição reformulada. São Paulo: Atual, 2003.
[5] GARCIA, Rafael. Galileu. Ano 12. Nº 135. São Paulo. Globo. Outubro de 2002.
[6] HEFEZ, Abramo. Curso de Álgebra, volume 1. 3º edição. Rio de Janeiro:
Associação Instituto Nacional de Matemática Pura e Aplicada - IMPA, 2002.
[7] HEFEZ, A., e VILLELA, M. L. T., Códigos Corretores de Erros. Rio de Janeiro:
IMPA, 2002.
90
[8] HEITLINGER, Paulo. Júlio César (100 – 44 a.n.E). Disponível em
<http://algarvivo.com/arqueo/romano/imperador-cesar.html>. Acesso em 09 de
novembro de 2010.
[9] HERNSTEIN, I. N. Tópicos de Álgebra. São Paulo: Editora Polígono. 1970.
[10] HIERÓGLIFOS. Disponível em
<http://www.discoverybrasil.com/egito/alfabetizacao/hieroglifos/index.shtml>. Acesso
em: 11 de novembro de 2010.
[11] HISTÓRIA da cifra de Vigenère. Disponível em
<http://www.geocaching.com/seek/cache_details.aspx?guid=f7949ec1-9456-4bce-
a08c-56fcb53a1537>. Acesso em 10 de novembro de 2010.
[12] HOLT, Burton W. Jones; RINEHART. WINSTON. Teoría de los números.
México, D.F.: Editorial F. Trillas, S. A. 1969.
[13] LUCCHESI, Cláudio Leonardo. Introdução à criptografia computacional.
Campinas: Editora da UNICAMP, 1986.
[14] ROBLES, Silvia. The RSA cryptosystem. Disponível em
<http://ocw.mit.edu/courses/mathematics/18-304-undergraduate-seminar-in-discrete-
mathematics-spring-2006/projects/rsa_robles.pdf>. Acesso em: 11 de novembro de
2010.
[15] SANT‟ ANA JÚNIOR, Bernadino. Fundamentos da criptologia. Disponível em
<http://www.esao.ensino.eb.br/paginas/GH_online/Lid_mil/2sem_2004/Artigo04.pdf>.
Acesso em: 11 de novembro de 2010.
91
[16] SILVA, Valdir Vilmar da. Números: construção e propriedades. Goiânia:
Editora da UFG, 2003.
[17] SINGH, Simon. O livro dos códigos: tradução de Jorge Calife. 6º edição. Rio
de Janeiro: Record, 2007.
[18] SIQUEIRA, Cleber Brasil de. O uso da análise de frequência no processo de
decifragem dos criptosistemas clássicos. 73 f. Monografia para obtenção do
título de especialista em matemática do ensino básico. Universidade Federal de
Goiás. Goiânia. 2009.
[19] STALLINGS, William. Criptografia e segurança de redes. Tradução: Daniel
Vieira. São Paulo: Pearson Prentice Hall, 2008.
Top Related