Criptografia

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

Transcript of Criptografia

Page 1: Criptografia

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

Page 2: Criptografia

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

Page 3: Criptografia

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

Page 4: Criptografia

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.

Page 5: Criptografia

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.

Page 6: Criptografia

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.

Page 7: Criptografia

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.

Page 8: Criptografia

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

Page 9: Criptografia

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

Page 10: Criptografia

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

Page 11: Criptografia

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

Page 12: Criptografia

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

Page 13: Criptografia

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

Page 14: Criptografia

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.

Page 15: Criptografia

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.

Page 16: Criptografia

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 é

Page 17: Criptografia

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.

Page 18: Criptografia

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

Page 19: Criptografia

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.

Page 20: Criptografia

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.

Page 21: Criptografia

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

Page 22: Criptografia

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)

Page 23: Criptografia

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)

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

da seguinte forma, conforme mostrado no quadro 3.4.

Texto puro separado em blocos VAMOS.ATACA.RAMAN.HASEM.FALTA

Page 24: Criptografia

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.

Page 25: Criptografia

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.

Page 26: Criptografia

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).

Page 27: Criptografia

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

Page 28: Criptografia

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).

Page 29: Criptografia

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.

Page 30: Criptografia

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.

Page 31: Criptografia

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.

Page 32: Criptografia

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.

Page 33: Criptografia

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.

Page 34: Criptografia

22

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.

CHAVE (64 Bits)

PCI (56 Bits)

PC (48 Bits)

Subchave (48 Bits)

C (28 Bits) D (28 Bits)

Rotacionar Rotacionar

Page 35: Criptografia

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

Page 36: Criptografia

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.

Page 37: Criptografia

25

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

Texto Claro (64 Bits)

Permutação Inicial (PI)

1ª Etapa

L0 K1 R0

L1 = R0 K2 R1

Xor F

F

2ª Etapa

Xor

L16 = R15 R16

Permutação Final (PF)

Texto Cifrado (64 Bits)

3ª Etapa

Page 38: Criptografia

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

Li Left block (bloco da esquerda) inicialmente armazena os 32 bits mais significativos resultantes da permutação inicial (PI)

Ri Right block (bloco da direita) inicialmente armazena os 32 bits menos significativos resultantes da permutação inicial (PI)

Ki Subchave correspondente à iteração i

F Função que realiza operações como P-BOX e S-BOX, utiliza a subchave Ki e 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

Page 39: Criptografia

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.

Page 40: Criptografia

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

Page 41: Criptografia

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.

Page 42: Criptografia

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

Page 43: Criptografia

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.

Page 44: Criptografia

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

criptografado) 66 67 68 70 71 72

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

Page 45: Criptografia

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.

Page 46: Criptografia

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

Page 47: Criptografia

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.

Page 48: Criptografia

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.

Page 49: Criptografia

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

Page 50: Criptografia

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).

Page 51: Criptografia

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

Page 52: Criptografia

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

Page 53: Criptografia

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.

Page 54: Criptografia

42

Posteriormente, analisar os dados criptografados no banco de dados para

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

Page 55: Criptografia

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

Page 56: Criptografia

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.