ISSN 2318-471X
ISBN: 978-85-8215-047-4
Números Inteiros Aplicados à Criptografia
José Rui Castro de Sousa, Samuel Chaves Dias, Weslley Florentino de Oliveira,
João Victor Quaresma Santos*, Jhonny Rodrigues Aguilar*, Jamille Lisboa
Silva*, Sara Botelho Moreira*.
Instituto Federal do Norte de Minas Gerais – Campus Almenara
Rodovia BR-367, s/n. Almenara, MG. 39900-000
E-mail: [email protected], [email protected], [email protected]
[email protected], [email protected], [email protected]
[email protected]
RESUMO
A Criptografia ou Criptologia é a prática e o estudo de métodos e processos para a
criação e o envio de mensagens codificadas, ou seja, disfarçadas. Esses disfarces são elaborados
com o objetivo de ocultar informações importantes de forma que apenas os destinatários sejam
capazes de ler a mensagem original. Dessa maneira, caso um terceiro indivíduo intercepte a
mensagem enviada ele não poderá compreendê-la em vista do disfarce elaborado. O processo
de transformar o texto original no texto codificado é chamado de codificação e o processo
inverso é de decodificação, ou seja, decodificar consiste em transformar o texto codificado no
texto original [1] [5]. De um modo geral a criptografia trata da construção e análise de
protocolos que estão relacionadas a vários aspectos de segurança da informação, tais como a
confidencialidade dos dados, integridade de dados, autenticação.
A criptografia moderna transita entre diversas áreas, principalmente na Matemática, na
Ciência da Computação e na Engenharia Elétrica. Aplicações de criptografia incluem cartões
eletrônicos, senhas de computador, e comércio eletrônico [1].
O desenvolvimento e segurança da maioria dos processos modernos estão intimamente
ligados à teoria dos números inteiros, mais especificamente aos números primos, que exercem
papel fundamental em tais processos [6].
Com o passar do tempo e com o desenvolvimento da ciência e consequentemente da
tecnologia, diversos métodos de criptografia foram criados e outros métodos já existentes
tornaram-se frágeis no que se refere segurança da informação.
Dentre os diversos métodos modernos de criptografia, existe o método RSA [3]. O
método tem esse nome devido às iniciais dos nomes de seus inventores (Rivest, Shamir e
Adleman). É um dos métodos mais populares de codificação com chave pública e funciona da
seguinte forma: Um indivíduo que deseja receber mensagens codificadas de certo grupo
disponibiliza para esse grupo um algoritmo para codificar as mensagens, esse algoritmo contém
um par de números chamado de chave pública. Depois de codificada a mensagem, não é
possível decodificá-la usando a chave pública da codificação, somente quem disponibilizou a
chave pública conhece outra chave, chamada chave privada, com a qual é possível decodificar a
mensagem.
A segurança do RSA está na dificuldade de se obter a chave privada. Mesmo
conhecendo a chave pública, a descoberta da chave privada está relacionada com a fatoração de
números inteiros muito grandes [4] [6]. Essa fatoração é feita utilizando-se algoritmos, que hoje
não são eficientes, do ponto de vista de tempo. Essa ineficiência permite que chave privada seja
mantida em segredo por tempo suficientemente para que a informação contida na mensagem
não seja mais interessante. O presente trabalho tem como objeto o estudo do método de
criptografia RSA. Procurar-se-á entender qual sua segurança do ponto de vista matemático e
computacional, e, com isso, possibilitar aos integrantes desse projeto um aprendizado de
conceitos matemáticos ligados à Aritmética e Teoria dos Números, um aprendizado em
programação e de conceitos em Ciência Computacional, bem como vivenciar a aplicabilidade
de conceitos matemáticos no mundo moderno.
A pesquisa foi dividida em três etapas:
* Aluno do curso Técnico Integrado de Informática e Bolsista de Iniciação Científica BIC
JUNIOR/FAPEMIG.
52
ISSN 2318-471X
ISBN: 978-85-8215-047-4
1. Construir junto com os alunos bolsistas os saberes necessários no que se refere
a números inteiros e criptografia. Nesse primeiro momento será utilizada uma
bibliografia básica, que são utilizadas normalmente em cursos de Matemática
Discreta, e já nessa etapa os alunos começarão a construir diversos algoritmos
de acordo com os conceitos estudados [2] [3] [6].
2. Um estudo mais específico e aprofundado do método RSA [6]. Por ser o objeto
da pesquisa, é importante que os alunos estudem o método mais a fundo,
investigando qual a segurança em termos matemáticos e em termos
computacionais. Pretende-se investigar também as possibilidades de
melhoramento do processo utilizado por esse método. Nessa etapa, os alunos
utilizarão os algoritmos construídos na fase anterior para construir o algoritmo
que utilize o Método de decodificação RSA.
3. Finalmente, a última etapa consiste em testar e melhorar o algoritmo construído
na etapa anterior e posteriormente partir para a solução de problemas que
envolvam a criptografia. Nessa fase os alunos poderão perceber a aplicabilidade
do método, bem como terão a oportunidade de visualizar possíveis fragilidades
do mesmo [1] [4] [5].
É importante ressaltar que durante todo o desenvolvimento da pesquisa criar-se-á
softwares que auxiliem nessa investigação. A criação de softwares para o apoio a pesquisa será
voltado para o desenvolvimento desktop. A princípio os alunos bolsistas deverão estudar alguns
conceitos de programação, de orientação a objetos e por fim aplicar a interdisciplinaridade entre
as questões matemáticas e computacionais. É importante ressaltar que a informática se
apresentará com ferramenta para o projeto. A linguagem abordada será a linguagem C++ [2],
tendo em vista sua conotação acadêmica, estando coerente com os conceitos de Ciência da
Computação, além de propor robustez e eficiência aos cálculos. Outro fator importante para
escolha da linguagem é a semelhança com a linguagem PHP (Personal Home Page), geralmente
utilizada para programação Web e que é apresentada para os alunos do curso técnico em
informática.
A pesquisa ainda encontra-se em andamento. Atualmente, o grupo de trabalho está
finalizando a primeira etapa. Para dar base matemática aos alunos do curso Técnico de
Informática integrado ao Ensino Médio, criou-se um grupo de estudo que trabalhou temas como
Números Naturais, Números Inteiros, Divisão Euclidiana, Máximo Divisor Comum, Mínimo
Múltiplo Comum, Equações Diofantinas, Congruência Módulo ݊, etc.
Junto ao estudo bibliográfico [3] [6], iniciou-se o desenvolvimento de alguns algoritmos
em linguagem C++, para solução de problemas que envolvam Teoria dos Números e que
futuramente servirão como partes do algoritmo capaz de codificar e decodificar pelo método
RSA. Foram implementados algoritmos de fatoração, de números inteiros e identificação se um
dado número inteiro é primo ou composto, algoritmo da divisão euclidiana, algoritmo
euclidiano para cálculo do Máximo Divisor Comum, algoritmo para o cálculo do Mínimo
Múltiplo Comum usando o anterior. O algoritmo para a solução de Equações Diofantinas
também já foi criado pelo grupo, e será usado em breve nos problemas envolvendo
congruências.
Até o presente momento os algoritmos tem sido capazes de resolver os problemas
propostos de forma eficiente. Tais algoritmos são partes importantes na construção do trabalho,
visto que além de constituírem um treinamento para os alunos integrantes do grupo na
linguagem C++, serão utilizados na implementação dos algoritmos de criptografia na fase final
do projeto e servirão de teste para análises relacionadas a tempo computacional gasto para
quebrar uma determinada chave de criptografia.
O processo investigativo desse projeto é marco diferencial na formação dos alunos
participantes. Esses têm a possibilidade de melhorar suas habilidades em programação, se
inteirar sobre problemas atuais em Ciência Computação, compreender de forma científica os
métodos utilizados para segurança de dados na atualidade, inserir-se o universo da pesquisa de
* Aluno do curso Técnico Integrado de Informática e Bolsista de Iniciação Científica BIC
JUNIOR/FAPEMIG.
53
ISSN 2318-471X
ISBN: 978-85-8215-047-4
forma a compreender a aplicação dos saberes para a solução de problemas atuais, vivenciar a
interdisciplinaridade, observar que as áreas do conhecimento dialogam e perceber o quanto a
Matemática se faz presente e necessária em nossa vida, desmistificando a ideia de que a
Matemática é uma Ciência isolada e sem aplicabilidade.
Palavras-chave: Criptografia, Números Inteiros, método RSA.
Referências
[1] C. Rackoff and D. Simon. Non-interactive zero-knowledge proof of knowledge and chosen
ciphertext attack. Advances in Cryptology – CRYPTO ’91, “Lecture Notes in Computer
Science Vol. 576” (J. Feigenbaum ed.), Springer-Verlag, 1991.
[2] H. M. Deitel, P. J. Deitel, “C++ Como Programar: 3 ed”. Bookman, São Paulo, 2001.
[3] M. C. Polcino; S. P. Coelho, “Números: Uma introdução à matemática”. Edusp, São Paulo,
2001.
[4] M. Naor and M. Yung. Public-key cryptosystems provably secure against chosen ciphertext
attacks. “Proceedings of the 22nd Annual Symposium on the Theory of Computing”,
ACM,1990.
[5] R. L. Rivest, A. Shamir, L. A. Adleman, A method for obtaining digital signatures and
public-key cryptosystems, Comm. ACM, vol. 21, pp. 120-126, (1978).
[6] S. C. Coutinho, “Números inteiros e criptografia RSA”. IMPA, Rio de Janeiro, 2009.
* Aluno do curso Técnico Integrado de Informática e Bolsista de Iniciação Científica BIC
JUNIOR/FAPEMIG.
54
Download

Area aqui Números Inteiros Aplicados à Criptografia José Rui