Vous êtes sur la page 1sur 56

FACULDADES SANTO AGOSTINHO - FASA

FACULDADE DE CIÊNCIAS EXATAS E TECNOLÓGICAS – FACET


CURSO: SISTEMAS DE INFORMAÇÃO

FABIANO OTÁVIO DE FARIA

ESTUDO DA TÉCNICA DE CRIPTOGRAFIA ALGORITMO


POSICIONAL – ALPOS NA SEGURANÇA DOS DADOS DE
UM BANCO DE DADOS

MONTES CLAROS - MG
2006
II

FABIANO OTÁVIO DE FARIA

ESTUDO DA TÉCNICA DE CRIPTOGRAFIA ALGORITMO


POSICIONAL – ALPOS NA SEGURANÇA DOS DADOS DE
UM BANCO DE DADOS

Monografia apresentada à disciplina de


Projeto Orientado a Conclusão de Curso
das Faculdades Santo Agostinho como
requisito parcial à obtenção do Título de
Bacharel em Sistemas de Informação.
Orientador: Prof: Ms. João Batista
Mendes.

MONTES CLAROS - MG
2006
III

APROVAÇÃO

A Comissão Julgadora dos Trabalhos de Conclusão do Curso de Sistemas de


Informação das Faculdades Santo Agostinho, em sessão pública realizada em 03
de junho de 2006, considerou o candidato FABIANO OTÁVIO DE FARIA
aprovado.

1. Prof. Ms. JOÃO BATISTA MENDES


ORIENTADOR

2. Prof. Ms. CLARIMUNDO MACHADO MORAES Jr


AVALIADOR

3. Profa. Ms. JANINE FABIANA PRATES TEIXEIRA


AVALIADORA
IV

DEDICATÓRIA

Aos meus pais Wanderley e Maria de Lourdes (in memorian) pelo estímulo
e boa educação que me deram ao longo da minha vida.
Aos meus irmãos Daniel e Thiago (in memorian) que sempre me deram
força nos momentos difíceis.
Aos meus familiares que sempre torceram por mim nesta longa
caminhada da vida.
Aos meus amigos que sempre estiveram ao meu lado nos momentos bons
e, também nos momentos de dificuldade.
V

AGRADECIMENTOS

À Deus, em primeiro lugar, pelas oportunidades que me ofereceu nesta


vida e por ter me dado a chance de estar neste mundo e contribuir, de alguma
forma, para poder melhorá-lo.
Ao meu orientador Prof. João Batista Mendes, pela orientação, dedicação,
boa vontade, paciência e auxílio prestados durante todo o tempo desta longa
caminhada juntos.
À Profa. Marilée Patta e Silva, pelas orientações metodológicas que
contribuíram de forma significativa para a redação deste trabalho acadêmico.
Ao coordenador do curso de Sistemas de Informação Prof. Antônio
Eugênio Silva, pela dedicação e experiência que coloca à serviço do curso,
contribuindo para uma sólida formação de seus acadêmicos.
Aos demais professores do curso de Sistemas de Informação, com os
quais tive a oportunidade de conviver e adquirir conhecimentos valiosos, que me
serão úteis por toda a vida.
Aos meus colegas Alex, Eros, João e Leandro, pela amizade e
convivência que tivemos ao longo do curso e pelo conhecimento e experiência
compartilhados entre nós.
Aos meus colegas de faculdade pela força e apoio que me deram nos
momentos difíceis pelos quais eu passei.
Aos funcionários da biblioteca, pela cordialidade e presteza no
atendimento aos acadêmicos.
VI

RESUMO

Este trabalho tem como objetivo o estudo da técnica de criptografia Algoritmo


Posicional – ALPOS, como alternativa para prover segurança adicional aos dados
armazenados em um banco de dados qualquer, através da criptografia dos dados.
Para tanto, foi feito um estudo acerca das técnicas de criptografia Data Encryption
Standard – DES e ALPOS que foi a técnica utilizada no desenvolvimento deste
trabalho, sendo que foram propostos algoritmos para criptografar e decriptografar
dados de um banco de dados, baseados no ALPOS. Por fim, é apresentado um
relatório com os resultados obtidos e as respectivas conclusões.
VII

ABSTRACT

This work has as objective the study of the cryptography technique Positional
Algorithm – ALPOS, as alternative to provide additional security to the data stored
in a data base any, through the cryptography of the data. For in such a way, Data
Encryption Standard – DES and ALPOS was made a study concerning the
cryptography techniques that was the technique used in the development of this
work, being that algorithms had been considered to encrypt and decrypt given of a
data base, based on the ALPOS. Finally, a report with the gotten results and the
respective conclusions is presented.
VIII

SUMÁRIO

LISTA DE FIGURAS ...............................................................................................X

LISTA DE TABELAS ..............................................................................................XI

LISTA DE QUADROS ...........................................................................................XII

1 INTRODUÇÃO ..................................................................................................... 1

2 BANCOS DE DADOS RELACIONAIS ................................................................. 6

2.1 FIREBIRD ...................................................................................................... 6

3 CRIPTOGRAFIA .................................................................................................. 8

3.1 DEFINIÇÃO ................................................................................................... 8

3.2 HISTÓRIA DA CRIPTOGRAFIA .................................................................. 13

3.3 CRIPTOGRAFIA MODERNA....................................................................... 14

3.4 TIPOS DE CRIPTOGRAFIA ........................................................................ 14


3.4.1 CRIPTOGRAFIA COM CHAVE SECRETA........................................... 15
3.4.2 CRIPTOGRAFIA COM CHAVE PÚBLICA ............................................ 17

4 DATA ENCRYPTION STANDARD - DES .......................................................... 19

4.1 HISTÓRICO DO DES .................................................................................. 19

4.2 DESCRIÇÃO DO DES................................................................................. 21


4.2.1 CHAVES E SUBCHAVES DO DES ...................................................... 21
4.2.2 PROCESSAMENTO PRINCIPAL DO DES........................................... 24
4.2.2.1 PERMUTAÇÃO INICIAL................................................................. 26
4.2.2.2 ITERAÇÕES DO ALGORITMO DES.............................................. 27
4.2.2.3 PERMUTAÇÃO FINAL (PF) ........................................................... 30

5 ALGORITMO POSICIONAL - ALPOS................................................................ 31

5.1 O PROBLEMA DO “ESTOURO” DE BYTE ................................................. 32


IX

5.2 SEGURANÇA E TIPOS DE ATAQUES ....................................................... 34


5.2.1 VULNERABILIDADES DO ALPOS ....................................................... 35

6 TRABALHOS REALIZADOS .............................................................................. 36

6.1 DESCRIÇÃO DO ALGORITMO................................................................... 36

6.2 DESCRIÇÃO DO ALGORITMO ALPOS NUMÉRICO ................................. 38

7 CONCLUSÕES .................................................................................................. 41

7.1 TRABALHOS FUTUROS............................................................................. 41

REFERÊNCIAS BIBLIOGRÁFICAS ...................................................................... 43


X

LISTA DE FIGURAS

Figura 2.1 – Esquema básico dos métodos de criptografia ................................. .9


Figura 2.2 – Método de criptografia com chave secreta ...................................... 15
Figura 2.3 – Método de criptografia com chave pública....................................... 18
Figura 4.1 – Ilustração do algoritmo de geração de subchaves do DES ............. 22
Figura 4.2 – Processamento principal do algoritmo DES..................................... 25
Figura 6.1 – Algoritmo para criptografar dados do tipo caracter ......................... 37
Figura 6.2 – Algoritmo para decriptografar dados do tipo caracter ..................... 38
Figura 6.3 – Algoritmo para criptografar dados do tipo numérico........................ 39
Figura 6.4 – Algoritmo para decriptografar dados do tipo numérico.................... 40
XI

LISTA DE TABELAS

Tabela 3.1 – Cifra de transposição de colunas .................................................... 12


Tabela 4.1 – Permutação de compressão (PCI) .................................................. 22
Tabela 4.2 – Vetor de rotação de chave (ROT) ................................................... 23
Tabela 4.3 – Permutação de compressão (PC) ................................................... 23
Tabela 4.4 – Tabela de permutação inicial (PI).................................................... 26
Tabela 4.5 – Permutação de expressão (PE) ...................................................... 28
Tabela 4.6 – S-BOX 1 .......................................................................................... 28
Tabela 4.7 – S-BOX 2 .......................................................................................... 28
Tabela 4.8 – S-BOX 3 .......................................................................................... 28
Tabela 4.9 – S-BOX 4 .......................................................................................... 29
Tabela 4.10 – S-BOX 5 ........................................................................................ 29
Tabela 4.11 – S-BOX 6 ........................................................................................ 29
Tabela 4.12 – S-BOX 7 ........................................................................................ 29
Tabela 4.13 – S-BOX 8 ........................................................................................ 29
Tabela 4.14 – P-BOX ........................................................................................... 30
Tabela 4.15 – Permutação final (PF) ................................................................... 30
Tabela 5.1 – Exemplo do algoritmo posicional básico ......................................... 32
Tabela 5.2 – Exemplo posicional grau 3 (23x³ + 26x² + 45x – 63) ....................... 33
Tabela 5.3 – Tempo necessário para quebrar uma chave................................... 34
XII

LISTA DE QUADROS

Quadro 3.1 – Aplicação da cifra de César ........................................................... 10


Quadro 3.2 – Texto puro ...................................................................................... 11
Quadro 3.3 – Texto puro separado em blocos..................................................... 11
Quadro 3.4 – Texto cifrado .................................................................................. 12
Quadro 3.5 – Texto simples ................................................................................. 13
Quadro 3.6 – Texto cifrado .................................................................................. 13
Quadro 4.1 – Elementos utilizados na figura 4.2 ................................................. 26
1

1 INTRODUÇÃO

Desde épocas remotas, o homem registra tudo o que acontece ao seu


redor, objetivando o controle das informações que ele julga serem importantes.
Antes da invenção dos primeiros alfabetos, na pré-história, o homem registrava as
informações na sua memória. Já na idade antiga, com o advento do alfabeto, as
informações foram registradas e armazenadas de diversas formas: em paredes de
cavernas, placas de barro que eram utilizadas pelos sumérios, o papiro dos
egípcios e o pergaminho, conforme mostra CARUSO (1999).
De acordo com o mesmo autor, os primeiros métodos de registro e
armazenamento de informações utilizavam códigos que eram compreendidos por
poucas pessoas, as quais detinham o conhecimento do alfabeto utilizado para se
registrar tais informações. As pessoas que tinham acesso a essas informações,
geralmente eram aquelas que exerciam o poder econômico e político na
sociedade em que viviam.
Ainda segundo CARUSO (1999), somente a partir da idade média,
momento em que se começou a utilização e a disseminação de novas técnicas de
impressão, seguida de uma ampla alfabetização que atingiu uma grande parcela
da população, é que as informações se tornaram acessíveis a um número maior
de pessoas.
A utilização do papel, conforme descreve DIAS (2000), trouxe inúmeras
vantagens em relação aos métodos de registro anteriores, pois ele era mais
resistente e fácil de ser transportado de um lugar para outro. Com o uso do papel
para o armazenamento de informações, podia-se garantir uma segurança
relativamente simples. Os documentos que contivessem informações mais
importantes, eram trancados em locais seguros, onde o acesso físico era restrito
a poucas pessoas. Esse método de registro e armazenamento era utilizado até
pouco tempo pelas grandes empresas, antes da invenção dos computadores.
Atualmente, com as mudanças tecnológicas e o uso de computadores de
grande porte, as empresas passaram a contar com dispositivos de
2

armazenamento de dados que, substituíram o papel com a vantagem de permitir o


acúmulo de grandes quantidades de informações em espaços restritos.
É neste contexto que os bancos de dados exercem um papel fundamental
para as empresas, pois são eles os responsáveis pela manipulação e
gerenciamento de processos produtivos, negócios, cadastros de clientes, etc.
Com a chegada dos computadores pessoais e das redes de
computadores, as empresas passaram a ter uma maior preocupação com a
segurança de suas informações. A partir do momento em que os sistemas de
informação das organizações passaram a ser acessados a partir de uma rede
externa, aumentou-se o risco de ocorrerem acessos desautorizados à base de
dados dessas organizações, comprometendo assim, a sua segurança. As
informações representam um elemento importante para uma organização, pois
são fundamentais para o seu sucesso e sobrevivência. Elas são consideradas
recursos que estão sob constante risco, pois podem despertar o interesse de
ladrões e, até mesmo de empresas concorrentes interessadas em informações
estratégicas para proveito próprio.
Geralmente, o alvo preferido desses atacantes é o banco de dados das
empresas, pois é nele que se concentra as informações relacionadas com os seus
negócios. A proteção oferecida pelo banco nem sempre é suficiente para que se
evite o roubo de informações.
Neste contexto, este trabalho propõe-se a fazer um estudo dos algoritmos
baseados nas técnicas de criptografia Data Encryption Standard – DES e
Algoritmo Posicional – ALPOS, objetivando futuramente implementar o ALPOS na
criptografia dos dados do banco de dados, como forma de prover proteção
adicional. Com a criptografia, é possível codificar as informações do banco,
fazendo com que os atacantes tenham dificuldades de decifrar as informações,
caso as mesmas sejam interceptadas.
No contexto tecnológico atual, há, claramente uma necessidade de se
aumentar a segurança dos bancos de dados visando dificultar o acesso às
informações estratégicas.
3

A preocupação com a segurança de informações aumentou a partir do


momento em que as empresas começaram a utilizar computadores com alta
capacidade de processamento para armazenar dados referentes à organização.
Estes computadores permitiram a centralização de um grande volume de
informações. As empresas passaram a trabalhar com uma grande quantidade de
informações, sob a gerência do Sistema Gerenciador de Banco de Dados -
SGBD.
Os bancos de dados contêm informações estratégicas das empresas,
acerca de operações corporativas, estratégias de marketing, etc. Estas mesmas
informações podem se tornar alvos de espiões e de empresas concorrentes que
visam utilizá-las para fins ilícitos ou simplesmente para comprometer a
credibilidade e o funcionamento de uma organização.
Com o aparecimento dos microcomputadores, das redes e com a
popularização da Internet, o acesso às informações armazenadas nos bancos de
dados passou também a ser feito remotamente. Esta propriedade possibilita que
os sistemas de informações, que atualmente se encontram conectados às redes
externas acessem o banco de dados, o que aumenta os riscos de acesso aos
dados por pessoas não autorizadas.
A criptografia é uma contramedida diante de tais ameaças, pois pode ser
usada para prover uma proteção adicional aos dados do banco. Caso as
informações sejam interceptadas por um usuário não autorizado, este terá
dificuldades em decifrá-las, já que as mesmas se encontrarão codificadas e, só
poderão ser manipuladas por quem conhecer o método criptográfico utilizado e
possuir a chave de criptografia que é usada para criptografar e decriptografar as
informações, ou através da utilização de técnicas de criptoanálise.
A garantia que um banco de dados seja à prova de acessos não
autorizados é uma tarefa difícil. O que se pretende, com a criptografia de parte de
um banco de dados é adicionar um novo elemento que dificulte ainda mais a
obtenção dos dados do banco, objetivando desestimular os acessos não
autorizados.
4

Assim, este trabalho se justifica pela necessidade de se fazer um estudo


uma técnica de criptografia para um banco de dados, adicionando um novo
componente que dificulta a interpretação dos dados do banco de dados por parte
de usuários não autorizados.
Buscando atender à essa nova demanda por segurança, gerada no
cenário atual, faz-se a seguinte pergunta. Como a criptografia pode auxiliar na
segurança das informações do banco de dados? Para responder à essa pergunta,
foi feita um estudo do algoritmo de criptografia ALPOS, com o objetivo de
criptografar campos de uma tabela de um banco de dados e analisar os resultados
obtidos, diante das operações de criptografia e decriptografia.
Para a realização deste trabalho, foram executadas as seguintes
atividades:

• Divulgar o funcionamento dos técnicas de criptografia ALPOS e DES;


• Caracterizar o banco de dados Firebird, fazendo uma breve descrição do
seu funcionamento;
• Desenvolver algoritmos para criptografar e decriptografar dados, usando a
técnica do ALPOS.

Na primeira etapa deste trabalho foi utilizada a pesquisa teórica para o


estudo das principais técnicas de criptografia existentes, dando ênfase à técnica
de criptografia Data Encryption Standard – DES e a técnica de criptografia
ALPOS.
Ainda, durante a primeira etapa, utilizou-se também a pesquisa teórica
para o estudo do SGBD Firebird.
Posteriormente, na terceira e última etapa, foram desenvolvidos algoritmos
para a criptografar e decriptografar os dados de campos numéricos do banco de
dados, baseando-se na técnica do ALPOS e também uma descrição completa dos
mesmos.
No capítulo 2 é feita uma breve introdução ao conceito de bancos de
dados relacionais e uma descrição do banco de dados Firebird. No capítulo 3 é
5

apresentado o conceito de criptografia, sua parte histórica, os tipos de criptografia,


suas vantagens e desvantagens e as principais técnicas existentes. No capítulo 4
é feito um estudo da técnica de criptografia DES, abordando sua definição e
importância. Também, faz-se uma descrição das operações envolvidas nos
processos de criptografia e decriptografia de dados. No capítulo 5 é apresentada a
técnica de criptografia ALPOS, através de um estudo detalhado, enfatizando-se
suas características de funcionamento e vulnerabilidades que a mesma se
encontra exposta. No capítulo 6 é feita a descrição do algoritmos de criptografia
ALPOS utilizados e descrição dos algoritmos desenvolvidos para a criptografia de
campos numéricos do banco de dados através de uma análise detalhada dos
mesmos. No capítulo 7 são feitas as conclusões.
6

2 BANCOS DE DADOS RELACIONAIS

Neste capítulo foi feita uma introdução aos bancos de dados relacionais.
Também foi feita uma descrição do SGBD Firebird, versão 1.5, que pode ser
empregado para a criptografia dos dados, usando uma das técnicas de criptografia
abordadas neste trabalho.

2.1 FIREBIRD

Segundo SILBERSCHATZ (1999), um banco de dados relacional pode ser


entendido como uma coleção de tabelas usadas para representar tanto os dados
como a relação existente entre eles. Cada uma dessas tabelas possui múltiplas
colunas, sendo que cada tabela possui um nome único.
O Firebird é um banco de dados relacional, Cliente / Servidor, de código
aberto, sendo compatível com o padrão SQL-ANSI-92.
Conforme descreve CANTU (2005), a Borland abriu o código fonte do
Interbase 6, em julho de 2000, sendo que este tornou-se Free e Open Source.
Mas, segundo o mesmo autor, muito tempo se passou desde a abertura do código
até a concretização deste processo, fazendo com que a comunidade de usuários
passasse por um período de dúvidas sobre a maneira pela qual a Borland
conduzia o processo de abertura do código. Concluído o processo de abertura do
código, um grupo de pessoas, do qual faziam parte, Ann Harrison que, segundo o
autor é conhecida como a “mãe do Interbase”, possuindo um grande
conhecimento de sua arquitetura interna e Jim Starkey, que foi o idealizador do
Interbase, criou um banco de dados baseado no código do Interbase 6, chamado
Firebird.
No momento em que era feita a abertura do código do Interbase 6, a
Borland fazia o anuncio de que iria continuar a desenvolver uma versão comercial
7

do Interbase, sendo que as novas versões deixariam de ser gratuitas e, também


deixariam de ter o seu código aberto. A partir de então, a Borland não
disponibilizou mais atualizações para o código do Interbase 6, lançando as
versões 6.5 e 7.x do Interbase, somente para fins comerciais.
A partir de então, o Firebird passou por várias atualizações, desde a
versão 1.0, chegando à sua versão estável 1.5.3. O Firebird continua em pleno
desenvolvimento e, atualmente já se encontra na versão 2.0 Beta.
8

3 CRIPTOGRAFIA

Neste capítulo, foram abordados os aspectos gerais da criptografia,


através da sua definição, histórico, os tipos de criptografia existentes, seus pontos
fortes e fracos e os principais métodos utilizados.

3.1 DEFINIÇÃO

A Criptografia é a ciência e a arte de transformar mensagens ou textos,


escritos de forma clara, em cifras ou em códigos, ou seja, ininteligível para outrem
que não o destinatário, conhecedor da convenção empregada na cifragem. Cifra é
a convenção, sistema ou processo de ocultação de sentido. A chave é o elemento
convencionado que torna o texto novamente inteligível. Mensagem ou texto é a
informação que se quer proteger. Remetente, refere-se à pessoa que manda uma
mensagem para outra. Já a pessoa que recebe a mensagem do remetente, é
chamada de destinatário.
De acordo com SOARES (1995), a criptografia surgiu da necessidade de
se enviar informações sensíveis através de meios de comunicação não confiáveis,
onde não é possível garantir que um usuário ilegítimo não irá interceptar o fluxo de
dados para leitura ou modificação. Uma forma de contornar esse problema é a
utilização de um método que modifique o texto original da mensagem a ser
transmitida, gerando o texto criptografado na origem, através de um método de
criptografia. O texto criptografado ou cifrado é transmitido até o destino, onde
sofrerá o processo inverso, no qual o método de criptografia é aplicado para
decodificar o texto criptografado, transformando-o novamente no texto original,
conforme mostra a figura 3.1.
9

Figura 3.1 – Esquema básico dos métodos de criptografia. Fonte: TRINTA e MACÊDO (1998)

Segundo MORENO (2005), as informações podem ser criptografadas,


basicamente, por meio de códigos ou de cifras. Os códigos têm como princípio de
funcionamento, a troca de parte das informações por códigos predefinidos,
garantindo-se assim a proteção das mesmas. As pessoas autorizadas a terem
acesso à essas informações, devem ter o conhecimento prévio dos códigos
utilizados. Já as cifras são técnicas de proteção, onde as informações são cifradas
utilizando-se a transposição e/ou a substituição das letras da mensagem original.
Desta forma, só terão acesso às informações originais, as pessoas autorizadas
que tenham o conhecimento do processo utilizado na cifragem.
De acordo com TANENBAUM (1997), os métodos básicos de criptografia
são divididos, historicamente, em duas categorias: as cifras de substituição e as
cifras de transposição.
Em uma cifra de substituição, cada letra ou grupo de letras da
mensagem é substituído por outra letra ou grupo de letras, de forma que se
pudesse esconder a mensagem. A cifra de substituição mais conhecida é
atribuída ao imperador romano Júlio César que, em 50 a.C, utilizou este método
para cifrar comunicações governamentais. Nesse método, a letra a passa a ser D,
b passa a ser F, assim por diante. Conforme ilustra o quadro 3.1, o texto simples é
apresentado nesse método em letras minúsculas e o texto cifrado em letras
maiúsculas.
No método de cifra utilizado pelo imperador romano Júlio César, o alfabeto
do texto cifrado, de forma genérica, é deslocado k letras, em vez de 3. Nesse
10

caso, k passa a ser uma chave para o método genérico dos alfabetos deslocados
circularmente. O próximo passo é fazer com que cada um dos símbolos do texto
simples, ou seja, as 26 letras do alfabeto, seja substituído para alguma outra letra,
conforme mostrado no quadro 3.1.

Quadro 3.1 – Aplicação da cifra de César. Fonte: TANENBAUM (1997)

Texto simples 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
Texto cifrado Q W E R T Y U I O P A S D F G H J K L Z X C V B N M

O sistema acima é chamado de substituição monoalfabética, onde a


chave é o string de 26 letras que correspondem ao alfabeto completo. Utilizando-
se a chave acima, o texto simples attack seria transformado no texto cifrado
QZZQEA.
Esse sistema, segundo afirma CARVALHO (2001), é muito fraco, sendo
este o mais utilizado por quem entende pouco ou nada de criptografia. A fraqueza
desse sistema está no fato de cada letra ser sempre substituída pelo mesmo
símbolo, independente de que símbolo seja.
Existem também as cifras de substituição polialfabéticas, onde cada
elemento substituído por um número ou grupo de letras mais ou menos complexo
não é mais uma letra, porém sílaba, palavra ou locução freqüente. Tem-se como
exemplo de substituição polialfabética, o Sistema Vigenère.
Conforme descreve CARVALHO (2001), este sistema utiliza um conjunto
de p letras como chave, sendo esta do tipo:

ch = (l1,l2,l3,...,lp).
Divide-se a mensagem em blocos de p letras, onde p é chamado de
período do sistema polialfabético. Para isso, tem-se um bloco de texto puro tp:

tp = (a1,a2,a3,...,ap)
11

Um outro bloco de texto com p letras é a saída que conterá o texto cifrado
tc, fazendo-se a substituição de tp, através do uso da chave ch. A função que faz
a substituição é descrita a seguir:

tc = ((a1+l1) mod 26,(a2+l2) mod 26,...,(ap+lp) mod 26)

Assim, de acordo com o quadro 3.2, tem-se o seguinte texto a ser cifrado.

Quadro 3.2 – Texto puro. Fonte: CARVALHO (2001)

Texto puro
VAMOSATACARAMANHASEMFALTA

Para a cifragem do texto mostrado no quadro 3.2, faz-se o uso da seguinte


chave:

ch = GRITO = (G,R,I,TO) = (6,17,8,19,14)

Neste exemplo, a chave ch é formada por um conjunto de p letras, onde


tem-se p = 5. Conseqüentemente, a mensagem deve ser dividida em blocos de 5
letras, conforme ilustra o quadro 3.3.

Quadro 3.3 – Texto puro separado em blocos. Fonte: CARVALHO (2001)

Texto puro separado em blocos


VAMOS.ATACA.RAMAN.HASEM.FALTA

Por fim, tem-se o processo de substituição, onde o texto é cifrado, ficando


da seguinte forma, conforme mostrado no quadro 3.4.
12

Quadro 3.4 – Texto cifrado. Fonte: CARVALHO (2001)

Texto cifrado
BRUHG.GKIVO.XRUTB.NRAXA.LRTMO

As cifras de transposição, de acordo com TANENBAUM (1997),


reordenam as letras, mas não as disfarçam, ou seja, o conteúdo da mensagem
permanece inalterado. Logo abaixo, tem-se um exemplo de cifra de transposição
de colunas, que baseia-se em uma chave que pode ser uma palavra ou uma frase
contendo letras repetidas. A chave tem por objetivo numerar as colunas de
maneira tal que a coluna 1 permaneça abaixo da letra da chave que estiver mais
próxima do início do alfabeto, e assim sucessivamente. Conforme mostra a tabela
3.1, o texto simples é escrito em linhas. Já o texto cifrado é lido em colunas, sendo
que a leitura do texto se inicia a partir da coluna na qual a letra da chave possua o
menor valor.

Tabela 3.1 – Cifra de transposição de colunas. Fonte: TANENBAUM (1997)

M E G A B U C K
7 4 5 1 2 8 3 6
p l e a s e t r
a n s f e r o n
e m i l l i o n
d o l l a r s t
o m y s w i s s
b a n k a c c o
u n t s i x t w
o t w o a b c d

Segundo o mesmo autor, utiliza-se neste exemplo o conjunto de


caracteres MEGABUCK como chave, conforme ilustra a tabela 3.1. O texto
simples se encontra no quadro 3.5.
13

Quadro 3.5 – Texto simples. Fonte: TANENBAUM (1997)

Texto simples
pleasetrasferonemilliondollarsto
mysswissbnankaccountsixtwotwo

O texto simples, mostrado no quadro 3.5, se transforma no texto cifrado,


conforme ilustra o quadro 3.6.

Quadro 3.6 – Texto cifrado. Fonte: TANENBAUM (1997)

Texto cifrado
AFLLSKSOSELAWAIATOOSSCTCLNMOMANT
ESILYNTWRNNTSOWDPAEDOBUOERIRICXB

São também exemplos de cifras de transposição: o anagrama, a


dispersão, a permutação e a interversão.

3.2 HISTÓRIA DA CRIPTOGRAFIA

Os métodos criptográficos são utilizados desde a antiguidade. Segundo a


ENCICLOPÉDIA BARSA (1997), os gregos já utilizavam com freqüência a escrita
de mensagens sobre uma faixa de couro com os caracteres dispostos de tal
maneira que só faziam sentido ao se enrolar as tiras em um bastão cilíndrico, de
espessura conhecida.
Na segunda guerra mundial, conforme descreve a mesma enciclopédia, os
avanços tecnológicos permitiram aos aliados utilizarem máquinas criptográficas
automáticas de crescente complexidade, que eram capazes de transpor não só
uma, como várias vezes, cada letra ou número. As mensagens obtidas dessa
forma só podiam ser decifradas por outra máquina especificamente programada
para inverter o processo.
14

3.3 CRIPTOGRAFIA MODERNA

Na segunda metade do século XX, a criptografia sofreu enormes


alterações, em conseqüência do desenvolvimento alcançado pelos computadores,
que se encontram a serviço de bancos, de organizações de espionagem militar ou
industrial e de entidades de diversos tipos, o que vem exigindo a invenção de
chaves cada vez mais complexas e impenetráveis.
De acordo com CARVALHO (2001), os computadores introduziram
mudanças no mundo da criptografia, pois agora ela é aplicada a comunicação de
dados, os quais são compostos de bits ou seqüência de bits. As mensagens agora
podem representar qualquer coisa, como: textos, imagens, programas, sons, etc.
Os algoritmos atuais foram inventados para substituírem os algoritmos antigos,
que só executam operações manuais. Os novos algoritmos operam com bits ou
com um conjunto de bits e, agora são capazes de realizar um número muito
grande de operações, sendo adequados para enfrentar o inimigo que também se
beneficia do grande poder dos computadores.

3.4 TIPOS DE CRIPTOGRAFIA

Os métodos de criptografia estão são divididos basicamente em dois tipos,


de acordo com a maneira em que as chaves de codificação e decodificação são
utilizadas. Os métodos de criptografia que utilizam a mesma chave para
codificação e decodificação de textos ou mensagens, são classificados como
simétricos ou de chave secreta. Os métodos que utilizam chaves diferentes, uma
para codificação e outra para a decodificação de textos ou mensagens, são
denominados assimétricos ou de chave pública, conforme mostra SOARES
(1995).
15

3.4.1 CRIPTOGRAFIA COM CHAVE SECRETA

Na criptografia com chave secreta, conforme descreve SOARES (1995), o


transmissor e o receptor de uma mensagem devem ter o conhecimento prévio da
chave secreta e única que será compartilhada por ambos para a codificação e
decodificação. A figura 3.2 mostra o esquema de funcionamento do método de
criptografia com chave secreta.

Figura 3.2 – Método de criptografia com chave secreta. Fonte: TRINTA e MACÊDO (1998)

Ainda, segundo o mesmo autor, o principal problema desse método está


no fato de transmissor e receptor definirem qual chave secreta será utilizada na
codificação e na decodificação, principalmente quando estão distantes um do
outro, pois envolve a transmissão da chave e nem sempre é possível garantir que
essa transmissão não seja interceptada. Caso a transmissão seja interceptada, o
responsável pelo ataque poderá ter acesso a todas as mensagens que serão
16

criptografadas utilizando a chave secreta acordada entre o transmissor e o


receptor.
De acordo com SILBERSCHATZ (1999), para que o esquema de chave
secreta possa funcionar, a chave deve ser fornecida aos usuários autorizados
através de um mecanismo de segurança, isso faz com que esse esquema não
seja mais seguro do que a segurança do mecanismo utilizado para a transmissão
da chave.
Segundo SOARES (1995), um outro problema desse método, está no fato
de que em um sistema com n usuários, comunicando-se dois a dois, são
necessárias n² chaves secretas, ou seja, quanto mais pessoas forem acrescidas
na comunicação mais chaves serão necessárias. Os principais métodos de
criptografia baseados em chave secreta são:

• Data Encryption Standard – DES. Segundo TANENBAUM (1997), tal


método foi desenvolvido pela IBM e adotado pelo governo dos EUA como
método de criptografia padrão. O método DES executa tanto uma
substituição dos caracteres como um rearranjo de sua ordem com base em
uma chave de criptografia. Esse método codifica blocos de sessenta e
quatro bits de texto normal e gera sessenta e quatro bits de texto
criptografado;
• International Data Encryption Algorithm – IDEA. Projetado por dois
pesquisadores na Suíça. Utiliza uma chave de cento e vinte e oito bits. Ele
foi projetado para ser imune à criptoanálise diferencial. Nenhuma técnica ou
máquina conhecida atualmente é capaz de romper o IDEA, conforme atesta
TANENBAUM (1997).
17

3.4.2 CRIPTOGRAFIA COM CHAVE PÚBLICA

A criptografia de chave pública ou assimétrica surgiu em 1976 quando


dois pesquisadores, Diffie e Hellman propuseram um novo sistema de criptografia.
Este sistema baseia-se na utilização de duas chaves diferentes: uma chave
pública e uma chave privada. A chave pública (E) é usada para a codificação e a
chave privada (D) é usada para a decodificação. Estas chaves são escolhidas de
forma tal que a derivação de D a partir de E, se torna muito difícil de ser realizada.
Essa condição possibilita que a chave pública (E) possa ser divulgada, o que
simplifica a tarefa de gerenciamento de chaves, conforme descreve SOARES
(1995).
O esquema de criptografia de chave pública, de acordo com
SILBERSCHATZ (1999), funciona da seguinte forma: têm-se 2 usuários, (A) e (B).
Cada usuário possui uma chave pública e uma chave privada. As chaves públicas
são divulgadas e estão acessíveis para qualquer pessoa. Cada usuário também
possui uma chave privada que deve ser mantida em sigilo pelo mesmo. Caso o
usuário (A) queira compartilhar dados com o usuário (B), o usuário (A) deverá
criptografar os dados usando a chave pública do usuário (B). Dessa forma,
somente o usuário (B) poderá decriptar os dados através de sua chave privada,
possibilitando que a informação seja transferida de forma segura. A figura 3.3
mostra o esquema de funcionamento da criptografia com chave pública.
18

Figura 3.3 – Método de criptografia com chave pública. Fonte: TRINTA e MACÊDO (1998)

Os métodos de criptografia assimétricos, segundo SOARES (1995),


possuem dois inconvenientes: o tamanho das chaves e a lentidão que ocorre nos
processos de codificação e decodificação.
Apesar de ser segura, a criptografia de chave pública é
computacionalmente cara, conforme afirma SILBERSCHATZ (1999). Os principais
métodos de criptografia de chave pública são:

• RSA – É um método de criptografia assimétrico, cujo nome é formado pelas


iniciais dos nomes dos autores: Rivest, Shamir e Adleman. É o algoritmo de
criptografia de chave pública mais usado e testado. Ele se baseia em
alguns princípios da teoria dos números e no fato de que é extremamente
difícil fatorar números muito grandes, conforme descreve CARVALHO
(2001);
• Knapsack – Segundo CARVALHO (2001), o Knapsack foi o primeiro
algoritmo de chave pública. Também conhecido por algoritmo de mochila,
esse método criado por Merkle e Hellman em 1978 já não é mais usado,
pois descobriu-se que ele é fraco e inadequado aos requisitos de
segurança atuais.
19

4 DATA ENCRYPTION STANDARD - DES

O Data Encryption Standard - DES é um dos algoritmos de criptografia


mais utilizados na atualidade. Ele foi criado em 1977, segundo CARVALHO (2001)
para ser adotado como padrão pelo National Bureau of Standards - NBS nos
Estados Unidos.

4.1 HISTÓRICO DO DES

O surgimento do DES ocorreu a partir do momento em que surgiu a


necessidade de se proteger as informações que eram trocadas entre usuários de
diversas organizações pois, estas não possuíam ou seguiam um padrão para a
utilização de sistemas criptográficos.
Observando a necessidade de se proteger tais informações, coube ao
governo americano, na década de 70, definir um algoritmo de criptografia padrão
para utilização dentro ou fora das empresas e, de organizações do governo.
O desenvolvimento do padrão de criptografia a ser adotado, ficou sob a
responsabilidade do NBS, hoje chamado de National Institute of Standards and
Technology - NIST, que definiu os requisitos a serem atendidos pelos algoritmos
criptográficos.
De acordo MORENO (2005), em 15 de maio de 1973, o NBS, emitiu uma
chamada que solicitava propostas de algoritmos criptográficos que dessem
proteção aos dados nas operações de transmissões e armazenamento. Os
algoritmos candidatos deveriam estar de acordo com os padrões especificados
pelo NBS.
A primeira chamada emitida pelo NBS não obteve o êxito esperado pois
os algoritmos que foram apresentados não estavam totalmente desenvolvidos,
uma vez que se esperava por algoritmos praticamente concluídos.
20

Em agosto de 1974, durante a segunda chamada emitida pelo NBS,


apareceram outros algoritmos candidatos, dentre os quais o Lucifer, algoritmo
desenvolvido pela International Business Machines - IBM, se destacou junto ao
NBS, conforme afirma MORENO (2005).
O Lucifer foi projetado na década de 70, por Horst Feistel, um imigrante
alemão que chegou aos Estados Unidos em 1934. Após a conclusão do
desenvolvimento do sistema Lucifer, o mesmo foi apresentado à NBS.
Ele foi avaliado pelo NBS com a ajuda da National Security Agency - NSA,
onde o mesmo foi submetido à vários testes, com a intenção de se obter as
características de seu funcionamento, bem como detectar possíveis falhas visando
a sua adequação aos requisitos exigidos pelo NBS para torná-lo seguro.
Após sofrer várias modificações, o Lucifer foi adotado como padrão em 15
de julho de 1977, já com a denominação de Data Encryption Standard - DES. O
uso do DES passou a ser obrigatório nos órgãos federais do governo americano,
com o objetivo de dar proteção às informações federais americanas, as quais
possuíam um grau de sigilo menor que as informações referentes à segurança
nacional.
Pouco tempo depois outras organizações tais como, instituições bancárias
e empresas particulares passaram a adotar o DES como padrão, sendo os bancos
os maiores usuários de criptografia depois do governo.
De acordo com CARVALHO (2001), a não divulgação, pelo governo
americano, dos critérios de projeto do DES, causou muita polêmica, pois
especulou-se que algum tipo de vulnerabilidade tenha sido inserida no DES e, tal
mecanismo permitiria ao governo decifrar facilmente mensagens criptografadas de
terceiros.
21

4.2 DESCRIÇÃO DO DES

O DES é um algoritmo cifrador de blocos simétrico que criptografa


informações através de um processo pelo qual cifra-se blocos de 64 bits,
retornando blocos de texto cifrado de 64 bits através do uso de uma chave de 56
bits. As operações utilizadas pelo DES são: permutações, substituições, XOR e
deslocamentos. A seguir são apresentados a descrição do cálculo das subchaves
e o processo de funcionamento do algoritmo principal do DES.

4.2.1 CHAVES E SUBCHAVES DO DES

No DES, as chaves são armazenadas em uma entrada de 64 bits que


equivalem à 8 bytes, de cada byte é retirado o último bit, reduzindo-se o tamanho
da chave para 56 bits, os quais são utilizados na geração de um bloco de texto
cifrado de 64 bits. A figura 4.1, ilustra os passos utilizados para se gerar as
subchaves utilizadas pelo DES.
22

CHAVE (64 Bits)

PCI (56 Bits)

C (28 Bits) D (28 Bits)

Rotacionar Rotacionar

PC (48 Bits)

Subchave (48 Bits)

Figura 4.1 – Ilustração do algoritmo de geração de subchaves dos DES. Fonte: MORENO (2005)

Inicialmente, conforme mostra a figura 4.1, a chave de 64 bits é submetida


à uma permutação de compressão inicial (PCI), obedecendo-se a tabela de
compressão inicial, que é representada pela tabela 4.1.

Tabela 4.1 – Permutação de compressão inicial (PCI). Fonte: MORENO (2005)

57 49 41 33 25 17 09 01 58 50 42 34 26 18
10 02 59 51 43 35 27 19 11 03 60 52 44 36
63 55 47 39 31 23 15 07 62 54 46 38 30 22
14 06 61 53 45 37 29 21 13 05 28 20 12 04

Ainda, acordo com a tabela 4.1, pode-se observar que dos 64 bits da
chave original, somente serão utilizados 56 bits na chave permutada, sendo que o
primeiro bit da saída ou chave permutada será igual à 57, sendo este o 57° bit
chave original ou de entrada; seguindo-se esse raciocínio, têm-se o segundo bit
da chave permutada igual à 49 que é o 49° bit da chave original e, assim por
diante. O 4° bit da chave original será o último bit da chave permutada.
23

Ainda, conforme mostra a figura 4.1, após a conclusão da permutação


inicial, tem-se a divisão do vetor resultante de 56 bits em duas partes iguais de 28
bits cada uma. As partes são denominadas de C e D respectivamente, sendo que
cada uma delas receberá 28 bits. Os bits mais significativos serão destinados à
parte C, já os bits menos significativos ficarão com a parte D. Cada uma dessas
partes será rotacionada para a esquerda um ou dois bits dependendo do número
de iterações que estiver em execução, sendo que cada uma dessas partes
executa uma iteração, de acordo com o que ilustra a tabela 4.2.

Tabela 4.2 – Vetor de rotação de chave (ROT). Fonte: MORENO (2005)

1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1

Observando-se a tabela 4.2, têm-se os valores dos bits que serão


rotacionados para as iterações sofridas por C e D respectivamente. Por exemplo,
nas iterações 1 e 2 será rotacionado apenas um bit para a esquerda, já nas
iterações 3, 4, 5, 6, 7 e 8 serão deslocados 2 bits e assim respectivamente. Após
a realização de cada deslocamento, tem-se a realização da permutação de
compressão (PC), que tem como função, concatenar as duas partes, C e D
formando-se uma subchave de 48 bits. No término desse processo, têm-se a
geração de 16 subchaves, derivadas da chave original, conforme mostra a tabela
4.3.

Tabela 4.3 – Permutação de compressão (PC). Fonte: MORENO (2005)

14 17 11 24 01 05 03 28
15 06 21 10 23 19 12 04
26 08 16 07 27 20 13 02
41 52 31 37 47 55 30 40
51 45 33 48 44 49 39 56
34 53 46 42 50 36 29 32
24

4.2.2 PROCESSAMENTO PRINCIPAL DO DES

É no processamento principal do DES que são realizadas as permutações,


substituições, desmembramentos e a operação XOR “ou exclusivo”. Utiliza-se as
subchaves, criadas pelo módulo gerador de subchaves, no processo principal do
algoritmo que será executado 16 vezes. Para cada iteração é utilizada uma
subchave diferente, derivada da chave original.
Na cifragem de um bloco de texto (64 bits), faz-se necessário a utilização
das subchaves na ordem crescente, ou seja, na primeira iteração do processo
principal do DES, utiliza-se a subchave 1, na segunda iteração, a subchave 2 e
assim por diante. Para se decifrar um bloco de texto, as subchaves são utilizadas
na ordem decrescente, ou seja, para se decifrar a primeira iteração, utiliza-se a
subchave 16, na segunda iteração, a subchave 15, e assim sucessivamente. A
figura 4.2, ilustra a seqüência de operações executadas no processamento
principal do DES que são utilizadas na cifragem e decifragem de um bloco de
textos durante as 16 iterações. O que diferencia o processo de onde, para cada
iteração, o que se altera é apenas a ordem em que as subchaves são aplicadas.
25

Texto Claro (64 Bits)

1ª Etapa
Permutação Inicial (PI)

L0 K1 R0

Xor F
2ª Etapa

L1 = R0 K2 R1

Xor F

L16 = R15 R16

Permutação Final (PF)


3ª Etapa

Texto Cifrado (64 Bits)

Figura 4.2 – Processamento principal do algoritmo DES. Fonte: MORENO (2005)


26

Os elementos utilizados na figura 4.2, e a descrição de cada um deles é


apresentada no quadro 4.1.

Quadro 4.1 – Elementos utilizados na figura 4.2. Fonte: MORENO (2005)

Elemento Descrição
Left block (bloco da esquerda) inicialmente armazena os 32 bits mais
Li significativos
resultantes da permutação inicial (PI)
Right block (bloco da direita) inicialmente armazena os 32 bits menos
Ri significativos resultantes da permutação inicial (PI)
Ki Subchave correspondente à iteração i
Função que realiza operações como P-BOX e S-BOX, utiliza a subchave Ki e
F o bloco Ri - 1

4.2.2.1 PERMUTAÇÃO INICIAL

A permutação inicial é o primeiro passo que é executado ao iniciar-se o


processamento principal do algoritmo DES. Nessa permutação, nenhum bit é
descartado ou adicionado, mantendo-se no vetor de bits resultante da permutação
inicial, os bits permutados do bloco de texto claro. Os valores dessa permutação
são definidos na tabela 4.4.

Tabela 4.4 – Tabela de permutação inicial (PI). Fonte: MORENO (2005)

58 50 42 34 26 18 10 02
60 52 44 36 28 20 12 04
62 54 46 38 30 22 14 06
64 56 48 40 32 24 16 08
57 49 41 33 25 17 09 01
59 51 43 35 27 19 11 03
61 53 45 37 29 21 13 05
63 55 47 39 31 23 15 07
27

4.2.2.2 ITERAÇÕES DO ALGORITMO DES

A segunda etapa do processamento principal do algoritmo DES inicia-se


após a permutação inicial (PI). No decorrer desta etapa são executadas 16
iterações do DES, onde o vetor resultante da permutação inicial divide-se em duas
partes, R (right = direita) e L (left = direita), ficando cada uma delas com 32 bits,
sendo que L conterá os bits significativos e R, ficará com os bits restantes.
De acordo com MORENO (2005), as operações ocorridas com R e L são
descritas a seguir:

• Para i de 1 até 16, aplica-se a função VR = f (Ki, Ri – 1), onde VR é o vetor


resultante, k é a subchave e i, a iteração que está sendo executada;
• Efetua-se uma operação XOR de VR com Li (VR = VR XOR Li);
• Li recebe Ri – 1 (Li recebe Ri anterior);
• Ri recebe VR.

Ao fim das 16 iterações, R e L são concatenados, voltando a formar um


vetor de 64 bits que irá passar pela permutação (PF).
A função f (Ki, Ri – 1) realiza as seguintes operações:

• Operação de permutação de expansão;


• Operação XOR com a subchave correspondente à iteração executada;
• Operação e substituição S-BOX;
• Operação de permutação P-BOX.

A permutação de expansão (PE) realiza permutação sobre Ri (32 bits),


onde o vetor resultante terá 48 bits. A PE é definida pelos valores representados
na tabela 4.5.
28

Tabela 4.5 – Permutação de expansão (PE). Fonte: MORENO (2005)

32 01 02 03 04 05 04 05 06 07 08 09
08 09 10 11 12 13 12 13 14 14 16 17
16 17 18 19 20 21 20 21 22 23 24 25
24 25 26 27 28 29 28 29 30 31 32 01

A operação Xor com subchave, realiza operação de XOR entre o vetor


resultante da PE com a subchave da iteração que está sendo executada.
A operação S-BOX, realiza as substituições de bits, utilizando-se de oito
tabelas chamadas de caixa de substituição ou S-BOXES que contêm valores
predefinidos, conforme mostram as tabelas 4.6 a 4.13

Tabela 4.6 - S-BOX 1. Fonte: MORENO (2005)

14 04 13 01 02 15 11 08 03 10 06 12 05 09 00 07
00 15 07 04 14 02 13 01 10 06 12 11 09 05 03 08
04 01 14 08 13 06 02 11 15 12 09 07 03 10 05 00
15 12 08 02 04 09 01 07 05 11 03 14 10 00 06 13

Tabela 4.7 - S-BOX 2. Fonte: MORENO (2005)

15 01 08 14 06 11 03 04 09 07 02 13 12 00 05 10
03 13 04 07 15 02 08 14 12 00 01 10 06 09 11 05
00 14 07 11 10 04 13 01 05 08 12 06 09 03 02 15
13 08 10 01 03 15 04 02 11 06 07 12 00 05 14 09

Tabela 4.8 - S-BOX 2. Fonte: MORENO (2005)

10 00 09 14 06 03 15 05 01 13 12 07 11 04 02 08
13 07 00 09 03 04 06 10 02 08 05 14 12 11 15 01
13 06 04 09 08 15 03 00 11 01 02 12 05 10 14 07
01 10 13 00 06 09 08 07 04 15 14 03 11 05 02 12
29

Tabela 4.9 - S-BOX 4. Fonte: MORENO (2005)

07 13 14 03 00 06 09 10 01 02 08 05 11 12 04 15
13 08 11 05 06 15 00 03 04 07 02 12 01 10 14 09
10 06 09 00 12 11 07 13 15 01 03 14 05 02 08 04
03 15 00 06 10 01 13 08 09 04 05 11 12 07 02 14

Tabela 4.10 - S-BOX 5. Fonte: MORENO (2005)

02 12 04 01 07 10 11 06 08 05 03 15 13 00 14 09
15 11 02 12 04 07 13 01 05 00 15 10 03 09 08 06
04 02 01 11 10 13 07 08 15 09 12 05 06 03 00 14
11 08 12 07 01 14 02 13 06 15 00 09 10 04 05 03

Tabela 4.11 - S-BOX 6. Fonte: MORENO (2005)

12 01 10 15 09 02 06 08 00 13 03 04 14 07 05 11
10 15 04 02 07 12 09 05 06 01 13 14 00 11 03 08
09 14 15 05 02 08 12 03 07 00 04 10 01 13 11 06
04 03 02 12 09 05 15 10 11 14 01 07 05 00 08 13

Tabela 4.12 - S-BOX 7. Fonte: MORENO (2005)

04 11 02 14 15 00 08 13 03 12 09 07 05 10 06 01
13 00 11 07 04 09 01 10 14 03 05 12 02 15 08 06
01 04 11 13 12 03 07 14 10 15 06 08 00 05 09 02
06 11 13 08 01 04 10 07 09 05 00 15 14 02 03 12

Tabela 4.13 - S-BOX 8. Fonte: MORENO (2005)

13 02 08 04 06 15 11 01 10 09 03 14 05 00 12 07
01 15 13 08 10 03 07 04 12 05 06 11 00 14 09 02
07 11 04 01 09 12 14 02 00 06 10 13 15 03 05 08
02 01 14 07 04 10 08 13 15 12 09 00 03 05 06 11

E, finalmente a P-BOX, que é uma permutação comum que obedece os


valores ilustrados na tabela 4.14.
30

Tabela 4.14 – P-BOX. Fonte: MORENO (2005)

16 07 20 21 29 12 28 17
01 15 23 26 05 18 31 10
02 08 24 14 32 27 03 09
19 13 30 06 22 11 04 25

4.2.2.3 PERMUTAÇÃO FINAL (PF)

A permutação final, consiste em apenas uma troca de bits, ela é


executada após as 16 iterações do processamento principal do DES, obedecendo-
se os valores da tabela 4.15.

Tabela 4.15 – Permutação final (PF). Fonte: MORENO (2005)

40 08 48 16 56 24 64 32
39 07 47 15 55 23 63 31
38 06 46 14 54 22 62 30
37 05 45 13 53 21 61 29
36 04 44 12 52 20 60 28
35 03 43 11 51 19 59 27
34 02 42 10 50 18 58 26
33 01 41 09 49 17 57 25
31

5 ALGORITMO POSICIONAL - ALPOS

O Algoritmo Posicional - ALPOS, é um algoritmo criptográfico criado para


fins didáticos pelos autores: Chiaramonte, Dacêncio e Moreno em 2001. De
acordo com MORENO (2005), esse algoritmo baseia-se em cifras de substituição,
mais precisamente no algoritmo de Cifra criado pelo imperador romano Júlio
César, exposto anteriormente.
Segundo o mesmo autor, diferentemente do algoritmo de Cifra de César, o
ALPOS leva em conta cada posição do texto que será cifrado, utilizando-se de
uma função, na qual cada posição é criptografada de maneira distinta, eliminando-
se a possibilidade de se tentar descobrir a freqüência de letras utilizadas para
criptografar o texto.
Para exemplificar como a função proposta pelos autores do ALPOS atua
sobre uma seqüência de caracteres, MORENO (2005) faz uma breve descrição de
como se criptografa uma seqüência de caracteres em um algoritmo posicional
básico e, em seguida, a mesma seqüência de caracteres sendo criptografada,
utilizando-se a função.
Em um algoritmo posicional básico, por exemplo, uma seqüência de
caracteres AAABBB, após ser criptografada, pode-se transformar nos caracteres
B, C, D, E, F, G e H, sem que ocorra acréscimo de nenhum bit. Para que isso
ocorra, admite-se o valor decimal dos bytes A, B, C, D, E, F, G e H conforme a
tabela da American Standard Code for Information Interchange - ASCII, na qual os
valores (65, 66, 67, 68, 69, 70, 71 e 72) correspondem, respectivamente à esses
bytes. Sabendo-se que A está localizado na posição 1, o seu valor correspondente
em decimal criptografado será 66, que é o (valor equivalente na tabela ASCII ao
caractere B). O segundo byte assumirá o seu valor decimal que será 67, (valor
equivalente na tabela ASCII ao caractere C), e assim sucessivamente, conforme
mostra a tabela 5.1.
32

Tabela 5.1 – Exemplo do algoritmo posicional básico. Fonte: MORENO (2005)

Seqüência A A A B B B
Valor decimal na tabela ASCII 65 65 65 66 66 66
Valor da posição 1 2 3 4 5 6
Valor decimal ASCII (código
66 67 68 70 71 72
criptografado)
Código em caracteres (criptografado) B C D F G H

O algoritmo posicional básico, segundo MORENO (2005), mostrou-se


ainda ser muito simples de ser quebrado, por isso recomenda-se a utilização da
função proposta pelos autores do ALPOS, no qual soma-se ao valor do byte
original representado em ASCII, um número que é gerado através de uma
expressão matemática que faz o uso da posição do byte, que pode ser
representada pela (variável x). A expressão, por exemplo, pode ser do tipo a*x +
b, onde a e b correspondem a valores da chave e x corresponde a posição.

5.1 O PROBLEMA DO “ESTOURO” DE BYTE

Na criptografia posicional, de acordo com o mesmo autor, o grau da


expressão posicional é que determina a complexidade e a segurança do algoritmo.
Quanto maior for o grau da expressão posicional, maior será a complexidade e a
segurança dos dados criptografados através do ALPOS. Assim, segundo o
mesmo autor, se a expressão posicional for uma equação de terceiro grau, essa
será mais segura do que uma expressão posicional baseada numa equação do
segundo grau.
O problema em se utilizar expressões posicionais nesse tipo de algoritmo,
está no fato de que há a possibilidade de ocorrer o “estouro” de um byte, no qual o
33

valor decimal do código criptografado é maior que 256, que é o valor máximo que
se pode armazenar em um byte.
Para se resolver o problema de “estouro” de um byte, o mesmo deve
assumir o valor encontrado em MOD 256, onde MOD é um operador que retorna
o resto da divisão.
No exemplo a seguir, foi utilizada uma expressão posicional de terceiro
grau. A expressão utilizada nesse exemplo será f(x) = 23x³ + 26x² - 45x¹ - 63, onde
os coeficientes 23, 26, -45 e –63 foram escolhidos de forma aleatória. Utilizando-
se expressão posicional, descrita anteriormente, para criptografar a seqüência
original AAABBB, têm-se as seguintes fases, conforme mostra a tabela 5.2.

Tabela 5.2 – Exemplo posicional grau 3 (23x³ + 26x² + 45x – 63). Fonte: MORENO (2005)

Sequência A A A B B B

Valor decimal na tabela ASCII 65 65 65 66 66 66

Valor da posição 1 2 3 4 5 6

Resultado da expressão: 23x³ + 26x² - 45x – 63 -59 135 657 1.645 3.237 5.571

Valor da expressão + valor ASCII original 6 200 722 1.711 3.303 5.637

Valor decimal na tabela (código criptografado) 6 200 210 175 231 5

Código em caracteres (criptografado) Ê » þ

As colunas que estão destacadas em cinza, indicam os caracteres da


seqüência nos quais ocorreram o “estouro” de um byte. Os números 722, 1.711,
3.303 e 5.637, que são o resultado da soma do valor da equação posicional mais
o valor decimal na tabela ASCII, ultrapassaram 256 e, portanto, não poderão ser
armazenados em um byte. A solução desse problema está na realização de um
divisão, onde se utiliza o resto da mesma como o valor criptografado. No exemplo
anterior, pode-se dividir o 722 por 256, onde o resto desta divisão, cujo o valor
obtido foi 210, é utilizado na penúltima linha da tabela 5.2. Os outros valores
devem ser calculados, utilizando-se a mesma regra do valor anterior.
34

5.2 SEGURANÇA E TIPOS DE ATAQUES

Alguns testes foram realizados sobre o ALPOS para medir a sua


segurança. Conforme mostra MORENO (2005), os autores deste algoritmo
posicional realizaram um ataque de força bruta, através do qual várias chaves são
testadas, até que se descubra a mensagem original, a partir uma mensagem
cifrada.
Ainda, segundo o mesmo autor, os testes foram realizados utilizando-se
chaves até o grau 4, sendo que o tempo para se quebrar uma chave após esse
grau, ultrapassa uma hora. A tabela 5.3 mostra os tempos máximo e mínimo para
que se quebrem chaves de diferentes graus de segurança.

Tabela 5.3 – Tempo necessário para quebrar uma chave. Fonte: MORENO (2005)

Grau Mínimo (segundos) Máximo (segundos)


3 0.6 98,92
4 98,92 25.297,110b
5 25.297,110b 6.475.922,000b = 74,9 dias
6 6.475.922,000b = 74,9 dias 1,65786E+12B = 525 séculos
7 1,65786E+14b = 525 séculos 4,24411E+14B = 13.457 milênios
8 4,24411E+14b = 13.457 milênios 1,08649E+17b = 3.445.237 milênios
9 1,08649E+17b = 3.445.237 milênios 2,78142E+19b = 881.982.496 milênios
10 2,78142E+19b = 881.982.496 milênios 7,12044E+21b = 225.787.671.232 milênios
N 600 + ((256(Grau-3)) * 386) 600 + ((256(Grau-2)) * 386)

Conforme descreve MORENO (2005), para a obtenção dos valores acima


do grau 4, os autores do ALPOS trabalharam na criação de um modelo
matemático para medir o tempo gasto na quebra de uma chave de grau n. Para
obter tal modelo, foi utilizado um computador AMD K6-2 de 300Mhz, onde
calculou-se o tempo médio ocorrido no teste de força bruta em chaves de grau 3,
onde o valor encontrado foi 386 milissegundos. Levando-se em consideração que
35

cada chave suporta um valor até 256, o valor do tempo para o teste de força bruta
para uma chave de grau 4, igual a 256 vezes o valor do tempo para uma chave de
grau 3 e, assim por diante. Por conseguinte, o tempo para o cálculo de uma chave
de grau n é igual a 256 vezes o tempo de uma chave de grau n-1.
Ainda, de acordo com o mesmo autor, por se ter uma chave grau 3 como
base para os cálculos, o tempo gasto para se encontrar uma chave de grau n será
de (256 ^ (n – 3)) * 386 milissegundos, por meio do teste de força bruta. Como o
tempo mínimo para se descobrir uma chave de grau 3 foi de 600 milissegundos,
ainda com base no mesmo computador, obteve-se então a seguinte equação do
modelo que faz a estima do tempo necessário para se encontrar as chaves:

600 + ((256 ^ (n – 3)) * 386)

Para a obtenção do modelo que calcula o tempo gasto para se encontrar


as chaves, utilizando-se um computador diferente, torna-se necessário recalcular
os tempos médio e mínimo para uma chave de grau 3 devem ser recalculados e,
substituídos no modelo.

5.2.1 VULNERABILIDADES DO ALPOS

Conforme descreve MORENO (2005), o ALPOS mostrou-se resistente


contra um ataque de força bruta. Entretanto, durante os testes realizados,
comprovou-se a existência de chaves equivalentes, por exemplo, uma chave grau
3 pode possuir uma chave equivalente de grau 2. Tal vulnerabilidade pode ser
explorada por um criptoanalista que pode obter uma chave em menos tempo. Para
que este problema seja contornado, deve-se criar regras para a composição de
chaves.
36

6 TRABALHOS REALIZADOS

Neste capítulo foram descritas duas versões do algoritmo ALPOS, uma


para criptografar dados do tipo texto e outra para a criptografia de dados do tipo
numérico (inteiro ou float).

6.1 DESCRIÇÃO DO ALGORITMO

A versão para criptografar dados do tipo texto segue o funcionamento do


algoritmo ALPOS tradicional, ou seja, é um algoritmo baseado em cifras de
substituição, que recebe como entrada, caracteres legíveis provenientes do banco
de dados e retorna como resultado, caracteres cifrados.
Para a cifragem dos dados, o algoritmo utiliza a seguinte expressão
posicional: f (x) = a1 * x + a2 * x ¹ + ... + an * x ¹, onde a1, a2, ... , an
representam os valores da chave, x, a posição do caractere e n, representa o
número de elementos da chave. Têm-se ainda, que os valores a1, a2, ... , an se
encontram armazenados no vetor valores, que é executado n vezes durante o
cálculo da expressão posicional, através da seguinte operação:

valores[i] * posição de i

O algoritmo para a criptografia de caracteres é descrito na figura 6.1.


37

Algoritmo CripStrALPOS (S:Caracter):Caracter;


Início
soma 0;
// Cálculo da função soma.
Para i de 1 até gchave faça
vchave valores [i];
soma soma + vchave * exponencial (pos, i);
Fim Para
// A variável nova_letra corresponde ao caracter
// criptografado, já incluindo a operação mod.
nova_letra (antiga_letra + soma) MOD 256;
Retorna nova_letra;
Fim.
Figura 6.1 – Algoritmo para criptografar dados do tipo Caracter

Sobre cada letra do texto de entrada, o algoritmo aplica uma fórmula,


baseada nos princípios do ALPOS tradicional para determinar a outra letra
correspondente.
O algoritmo DecripStrALPOS faz o caminho inverso do CripStrALPOS, ou
seja, ele recebe uma cadeia de caracteres criptografados como entrada e, gera
como saída, a cadeia de caracteres original. O algoritmo é descrito na figura 6.2
38

Algoritmo DecripStrALPOS (S:Caracter):Caracter;


Início
subtra 0;
// Executa o processo inverso da soma.
Para i de 1 até gchave faça
vchave valores [i];
subtra subtra + vchave * exponencial (pos, i);
Fim Para.
antiga_letra (nova_letra – subtra) MOD 256;
// Retorna o caracter legível.
Retorna antiga_letra;
Fim.
Figura 6.2 – Algoritmo para decriptografar dados do tipo Caracter

Vale considerar que, caso o texto de entrada for constituído de caracteres


idênticos, haveria o risco de se descobrir o método de criptografia utilizada pelo
algoritmo mas, os autores do ALPOS descobriram essa falha de segurança e
implementaram a seguinte expressão: a*x + b, onde a e b representam os valores
da chave e x, a posição do byte. Soma-se à essa expressão, o valor do byte
original representado em ASCII. Com isso, as entradas de texto que contiverem
caracteres idênticos, serão criptografadas pelo StrALPOS, que gerará um texto
constituído de caracteres variados, dificultando sua interpretação por parte de
usuários desautorizados.

6.2 DESCRIÇÃO DO ALGORITMO ALPOS NUMÉRICO

A segunda versão do ALPOS trata da criptografia de números (Inteiros e


Reais).
39

Foi necessário fazer esta adaptação do ALPOS pois os dados


criptografados serão gravados no banco de dados.
Assim, para criptografar um campo do tipo numérico de uma tabela do
banco de dados, o dado criptografado deve ser do mesmo domínio do dado
original.
O Algoritmo CripNumALPOS faz exatamente esta operação. Ele recebe
um dado Numérico e retorna como resultado outro dado Numérico criptografado.
Uma vez que um dado real armazena um inteiro e o inteiro não armazena
valor real, o CripNumALPOS sempre retorna um dado do tipo inteiro, viabilizando
sua utilização para criptografar dados do tipo Inteiro e Real.
O algoritmo CripNumALPOS é descrito na figura 6.3.

Algoritmo CripNumALPOS (Num : numérico) : Inteiro;


Início
// Transforma um float de até 3 decimais em um inteiro.
n1 num * 1000;
nx 0;
ct 1;
Enquanto (n1 > o) faça
R n1 MOD 10;
Nx Nx * 10 + (R + CT);
N1 N1 DIV 10;
CT CT + 1;
Fim Enquanto;
// Retorna o número “Num” criptografado.
Retorna Nx;
Fim.
Figura 6.3 – Algoritmo para criptografar dados do tipo Numérico
40

O algoritmo DecripNumALPOS faz a operação inversa do


CripNumALPOS. Ele recebe um dado numérico criptografado e devolve como
saída o dado original.
Algumas observações acerca do NumALPOS.

• Ele trabalha com números reais com no máximo 3 casas decimais;


• Os valores Numéricos manipulados pelo algoritmo, são de uma dimensão
tal que seu produto por 1000 não gera overflow.

O algoritmo DecripNumALPOS é descrito na figura 6.4.

Algoritmo DecripNumALPOS (Nx : inteiro) : Numérico;


Início
// Nx corresponde ao n° criptografado.
CT num Dígitos (Nx);
N 0;
Enquanto Nx > 0 faça
R Nx MOD 10 – CT;
N N * 10 + R;
Nx Nx DIV 10;
CT CT – 1;
Fim Enquanto;
// N corresponde ao n° decriptografado que é retornado
// pelo algoritmo.
Retorna N DIV 1000;
Fim.
Figura 6.4 – Algoritmo para criptografar dados do tipo Numérico
41

7 CONCLUSÕES

A principal contribuição deste trabalho é promover uma segurança


adicional aos dados armazenados no banco de dados.
A proposta inicial era o desenvolvimento de uma interface de comunicação
com o banco de dados, onde os dados seriam inseridos e recuperados somente
através desta aplicação.
Na realidade, a aplicação seria executada em um desktop (cliente) e,
antes do cliente enviar os dados para armazenamento no servidor, estes seriam
criptografados pelo aplicativo cliente. Os dados transitariam criptografados pela
rede até chegar ao servidor.
Seguindo-se esta lógica, o sistema promove uma segurança parcial na
transmissão dos dados, uma vez que estes seguem criptografados até o servidor
e são armazenados de forma ilegível.
Desta forma, se um hacker conseguisse interceptar as informações do
banco de dados, ele teria em suas mãos somente dados ilegíveis e sem utilidade.
Para manipular os dados armazenados no banco de dados, seria
necessário que uma aplicação buscasse os dados criptografados no banco para
que estes fossem decriptografados localmente, antes de exibi-los para o usuário
final.

7.1 TRABALHOS FUTUROS

Algumas atividades não puderam ser realizadas e, seria importante que


fossem executadas posteriormente. A primeira, seria implementar os algoritmos e
aplicá-los sobre uma base de dados para analisar o impacto das operações de
criptografia e decriptografia dos dados do banco de dados.
42

Posteriormente, analisar os dados criptografados no banco de dados para


verificar a qualidade, ou seja, se realmente os dados ficaram ilegíveis.
43

REFERÊNCIAS BIBLIOGRÁFICAS

CANTU, Carlos Henrique. Firebird essencial. Rio de Janeiro: Ciência Moderna,


2005. 308p.

CARUSO, Carlos A. A; STEFFEN, Flávio Deny. Segurança em informática e de


informações. 2. ed. rev. e ampl. São Paulo: Editora SENAC São Paulo, 1999.
367p.

CARVALHO, Daniel Balparda de. Criptografia: métodos e algoritmos. 2. ed. Rio de


Janeiro: Book Express, 2001. 218p.

DIAS, Cláudia. Segurança e auditoria da tecnologia da informação. Rio de Janeiro:


Axcel Books, 2000. 218p.

ENCICLOPÉDIA BARSA. Criptografia. Rio de Janeiro – São Paulo: Encyclopaedia


Britannica do Brasil Publicações, 1997. v. 4. p. 493-494.

MORENO, Edward David; PEREIRA, Fábio Dacêncio; CHIARAMONTE, Rodolfo


Barros. Criptografia em software e hardware. São Paulo: Novatec, 2005. 288p.

SEVERINO, Antônio Joaquim. Metodologia do trabalho científico. 22. ed. rev. e


ampl. de acordo com a ABNT – São Paulo: Cortez, 2002. 335p.

SILBERSCHATZ, Abraham; KORTH, Henry F; SUDARSHAN S. Sistema de banco


de dados. 3. ed. São Paulo: Makron Books, 1999. 724p.

SOARES, Luiz Fernando Gomes; LEMOS, Guido; COLCHER, Sérgio. Redes de


computadores: Das lans, mans e wans às redes atm. 2. ed. Rio de Janeiro:
Elsevier, 1995. 705p
44

TANENBAUM, Andrew S. Redes de computadores. 3. ed. Rio de Janeiro:


Campus,1997. 923p.

TRINTA, Fernando Antônio Mota; MACÊDO, Rodrigo Cavalcanti de. Um estudo


sobre criptografia e assinatura digital. Departamento de Informática da
Universidade Federal de Pernambuco. 1998.
http://www.di.ufpe.br/~flash/ais98/cripto/criptografia.htm. Acessado em:
17/11/05.

Vous aimerez peut-être aussi