Professional Documents
Culture Documents
1
Universidade do Estado de Santa Catarina (Udesc) – Centro de Ciências Tecnológicas
Campus Universitário Prof. Avelino Marcante s/n – Bairro Bom Retiro
CEP 89223-100 – Joinville – SC – Brasil
vilson@void.cc, {claudio, parpinelli, charles}@joinville.udesc.br
1. Introdução
A criptografia moderna utiliza de diversos métodos para a criação de algorı́tmos cada vez
mais confiáveis na codificação de dados.
Em sua maioria, tais métodos estão baseados em propriedades de teoremas ma-
temáticos. Desta forma, propôe-se analisar a aplicação de um destes teoremas, o Teo-
rema Fundamental da Aritmética, que usado como axioma em um conceito formal, cri-
ado pelo matemático Kurt Gödel [Hintikka 1999], revela-se como base para algorı́tmos
criptográficos.
Permite-se ainda analisar tal algorı́tmo na forma de uma aplicação prática, com o
desenvolvimento de um software de codificação de dados.
O artigo está organizado da seguinte forma: na sessão 2 é apresentado o Teorema
Fundamental da Aritmética, a sessão 3 apresenta os números de Gödel, assim como sua
definição matemática. A sessão 4 une os conceitos dos teoremas apresentados em uma
aplicação prática ligada à criptografia e conclui o artigo através de sua análise.
Para todo número natural n maior que 1, ou este é um número primo, ou pode
ser escrito como um produto de números primos, de maneira unı́voca.
1
Iniciais do sobrenome de seus criadores: Ron Rivest, Adi Shamir e Len Adleman
2
A prova foi generalizada e tornada correta posteriormente pelo matemático Carl Friederich Gauss
Por exemplo:
2100 = 22 × 31 × 52 × 71 (1)
3. Os Números de Gödel
Kurt Gödel, em 1931, deu um grande passo para para a evolução da matemática com seu
Teorema da Incompletude [Gödel 1931]. Para a prova de tal teorema, Göedel precisou de
uma abstração, uma formalização que o possibilitasse trazer ao seu campo de domı́nio –
a teoria dos números [Andrews 1995] – toda e qualquer sistema formal. Desta maneira,
poderia “operar” sobre tais sistemas com regras aritméticas, botando-os em prova, ana-
lisando suas caracterı́sticas, testando portanto sua completude, o objetivo primordial de
sua tese.
Este propôs então os Números de Gödel [Hofstadter 1989], um conceito formal
a partir da teoria dos números.
3.1. Definição
Os Números de Gödel (NG) são definidos por uma função que designa um número natural
a cada sı́mbolo ou fórmula de alguma linguagem formal e a potência destes números
primos seguindo a posicionalidade na palavra ou texto. A estes números naturais dá-se o
nome de Números de Gödel.
Portanto, tendo um conjunto contável S, pode-se definir a função de geração de
Números de Gödel (função de numeração de Gödel) por:
f : S → N
Como para S pode-se ter qualquer conjunto de elementos contáveis, toda e qual-
quer linguagem formal pode ser convertida para uma representação no domı́nio dos
números naturais.
Para exemplificar, deseja-se criar um Número de Gödel para a palavra abba.
Definindo-se o conjunto S por S = { a, b } pode-se ter a seguinte função de mapeamento
223
f (a) = 1 (2)
f (b) = 2 (3)
N Gabba = 21 × 32 × 52 × 71 = 3150
Define-se assim uma relação entre o alfabeto de S com os números naturais, onde
a palavra abba constitui o NG 3150, de forma unı́voca.
Os NG são portanto únicos e representam numericamente uma palavra de um sis-
tema formal qualquer. Haja visto que esta representação se faz por produto de números
primos, que por si só são de difı́cil busca por métodos computacionais, têm tal dificuldade
aumentada pelo fato desta representação ter grande complexidade espacial, fazendo cres-
cer o tamanho do NG de maneira exponencial, devido ao produto dos números primos
desta sequência.
para codificar a mensagem, que só poderá ser aberta pelo destinatário e ninguém mais,
nem mesmo o próprio emissor.
Um exemplo de algorı́tmo gerador de chaves públicas e privadas é o popular
RSA [Rivest et al. 1978], criado em 1978 por Ronald Rivest, Adi Shamir e Len Adle-
man, e utilizado na codificação em protocolos seguros como SSL 3 [Rescorla 2000] e na
criação de certificados de segurança para serviços de risco como as redes virtuais privadas,
VPN 4 [Holden 2003].
4.2. Formulação
As caracterı́sticas dos Números de Gödel e do Teorema Fundamental da Aritmética possi-
bilita a criação de um algorı́tmo de criptografia baseado em chaves. Dos NG, tal algorı́tmo
herda a função numeradora, que unida com a propriedade da univocacidade garantida pelo
TFA, proporciona a geração de números naturais únicos para cada sı́mbolo ou combinação
destes. Além disso, garante-se também a operação inversa, onde tais números gerados po-
dem ser convertidos novamente aos seus sı́mbolos originais, haja visto que a fatoração é
dada pela sequência 2i × 3j × 5k × 7l × ....
Assim a proposta é fazer uma codificação usando os NG e uma decodificação
através da fatoração destes. Portanto, define-se o algorı́tmo que implementa estas
operações:
Codificação
Decodificação
4.3. Aplicação
A partir dos algorı́tmos de codificação e decodificação por TFA, pôde-se desenvolver
um software que implementa tal sistema criptográfico. O aplicativo foi desenvolvido
buscando-se certa eficiência, mesmo que somente para a demonstração do método. Para
tal, utilizou-se a linguagem de programação C [Kernighan and Ritchie 1978]. Ainda, para
as operações de fatoração e multiplicação de números naturais, utilizou-se a biblioteca
PARI, componente do sistema de computação algébrica PARI/GP 5 .
Optou-se pelo uso desta biblioteca devida à necessidade da computação de gran-
des valores numéricos.
Para a execução do software necessita-se, para a codificação, de duas entradas: o
arquivo texto contendo a chave (chave.txt, neste exemplo) e uma palavra que será codifi-
cada (original.txt). Para a decodificação, ainda é necessária a chave e o número natural
que será fatorado (criptografado.txt).
O arquivo texto que abriga a chave possui o formato hsı́mbolo códigoi, onde
sı́mbolo é qualquer caractere ASCII e código um número natural maior ou igual a zero.
Como exemplo:
a 1
b 2
5
PARI/GP: http://pari.math.u-bordeaux.fr
226
*** CODIFICACAO
entrada = aaba
codificado = 1050
*** DECODIFICACAO
saida = aaba
4.4. Análise
5. Conclusões
O Teorema Fundamental da Aritmética revelou fatos interessantes. Aplicá-lo como axi-
oma para os Números de Gödel, fez propor um método criptográfico, que apesar de pouco
eficiente, demonstra a base na qual algorı́tmos de criptografia massivamente usados atu-
almente são desenvolvidos.
Ainda, descobriu-se que a propriedade da incompletude dos sistemas formais,
descoberta e provada por Kurt Gödel dos Números de Gödel, não é somente uma ca-
racterı́stica de ineficiência de algorı́tmos. Nota-se que se vista de um novo ângulo, o
da criptografia moderna, revela-se como um identificador não da ineficiência, mas da
eficiência de segurança de algorı́tmos criptográficos. Quanto mais os computadores são
incapazes de quebrar as chaves criadas por estes algorı́tmos, mais tempo estes perdurarão
como padrões de codificação.
O software desenvolvido permitiu analisar de maneira prática a teoria aqui desen-
volvida. Comprovou-se a dificuldade da decodificação de uma mensagem criptografada,
pela fatoração em termos de números primos de um número natural de milhares de casas
decimais.
Enfim, de axioma para aplicação em novos teoremas, à base para o desenvolvi-
mento de soluções práticas, o Teorema Fundamental da Aritmética prova que as teorias
podem ser usadas para uma gama de aplicações, e não somente destinadas a hipóteses não
implementadas.
Referências
Andrews, G. E. (1995). Number Theory. Dover Publications, 1st edition.
Choudhury, S. and Choudhury, S. (2002). Public Key Infrastructure and Implementation
and Design. Wiley, 1st edition.
Gödel, K. (1931). Uber formal unentscheidbare satze der principia mathematica und
verwandter systeme, i. Mathematik und Physik, 38.
Hintikka, J. (1999). On Gödel. Wadsworth Publishing, 1st edition.
Hofstadter, D. R. (1989). Gödel, Escher, Bach: An Eternal Golden Braid. Vintage Books,
1st edition.
Holden, G. (2003). Guide to Firewalls and Network Security: Intrusion Detection and
VPNs. Course Technology, 1st edition.
Kernighan, B. and Ritchie, D. (1978). The C Programming Language. Prentice Hall, 1st
edition.
Mao, W. (2003). Modern Cryptography: Theory and Practice. Prentice Hall, 1st edition.
Mollin, R. A. (1998). Fundamental Number Theory with Applications. CRC-Press, 1st
edition.
Ord, T. (2002). Hypercomputation: computing more than the turing machine. Honours
Thesis, University of Melbourne.
Rescorla, E. (2000). SSL and TLS: Designing and Building Secure Systems. Addison-
Wesley Professional, 1st edition.
228
Rivest, R., Shamir, A., and Adleman, L. (1978). A method for obtaining digital signatures
and public-key cryptosystems. Communications of the ACM, Vol. 21 (2), pp.120-126.
Schneier, B. (1995). Applied Cryptography: Protocols, Algorithms, and Source Code in
C. Wiley, 2nd edition.