FACULDADES SANTO AGOSTINHO - FASA FACULDADE DE CIÊNCIAS EXATAS E TECNOLÓGICAS – FACET CURSO: SISTEMAS DE INFORMAÇÃOFABIANO 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: Mendes. Prof: Ms. João Batista 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. através da criptografia dos dados. sendo que foram propostos algoritmos para criptografar e decriptografar dados de um banco de dados. é apresentado um relatório com os resultados obtidos e as respectivas conclusões. 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.VI RESUMO Este trabalho tem como objetivo o estudo da técnica de criptografia Algoritmo Posicional – ALPOS. Para tanto. Por fim. . como alternativa para prover segurança adicional aos dados armazenados em um banco de dados qualquer. baseados no ALPOS. . through the cryptography of the data.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. Finally. For in such a way. based on the ALPOS. being that algorithms had been considered to encrypt and decrypt given of a data base. a report with the gotten results and the respective conclusions is presented. 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. ..........................................................2...... 27 4....................... 21 4......................XI LISTA DE QUADROS ...........................4.................... 17 4 DATA ENCRYPTION STANDARD ...................................................................... 13 3............................................. 24 4......................................XII 1 INTRODUÇÃO ...................................... 6 3 CRIPTOGRAFIA .....2 DESCRIÇÃO DO DES...3 PERMUTAÇÃO FINAL (PF) ...................... 26 4...................................2.....................................................VIII SUMÁRIO LISTA DE FIGURAS ........................1 O PROBLEMA DO “ESTOURO” DE BYTE .............................................................. 14 3.......3 CRIPTOGRAFIA MODERNA...................................1 FIREBIRD .......................................... 1 2 BANCOS DE DADOS RELACIONAIS .2..................................... 30 5 ALGORITMO POSICIONAL ....................................................................................................2...........2 ITERAÇÕES DO ALGORITMO DES...............4....... 14 3...........1 DEFINIÇÃO ....... 6 2.2......................1 CHAVES E SUBCHAVES DO DES .............. 21 4..................................................4 TIPOS DE CRIPTOGRAFIA ...... 8 3..........................................2......................X LISTA DE TABELAS ........................................................................ALPOS.....DES ................................................................................2 HISTÓRIA DA CRIPTOGRAFIA ................................2.... 31 5............1 CRIPTOGRAFIA COM CHAVE SECRETA........................................................................................................................... 19 4...................................................... 8 3..........................................2. 19 4.............................2 CRIPTOGRAFIA COM CHAVE PÚBLICA ...........1 HISTÓRICO DO DES ...............................2 PROCESSAMENTO PRINCIPAL DO DES....................................................... 15 3................................................................................1 PERMUTAÇÃO INICIAL................. 32 ......................................... .......................................................IX 5..................................................2.................................... 41 7.......................2 SEGURANÇA E TIPOS DE ATAQUES ............................................1 VULNERABILIDADES DO ALPOS ............................................................................1 TRABALHOS FUTUROS.................. 34 5... 36 6........... 41 REFERÊNCIAS BIBLIOGRÁFICAS .................................................................................. 35 6 TRABALHOS REALIZADOS ..............................1 DESCRIÇÃO DO ALGORITMO....................... 36 6............ 43 .......................... 38 7 CONCLUSÕES ..............................................2 DESCRIÇÃO DO ALGORITMO ALPOS NUMÉRICO ..... .1 – Algoritmo para criptografar dados do tipo caracter ..........2 – Método de criptografia com chave secreta ...... .........1 – Esquema básico dos métodos de criptografia .....................2 – Processamento principal do algoritmo DES.......9 Figura 2..................................2 – Algoritmo para decriptografar dados do tipo caracter ......3 – Método de criptografia com chave pública..................... 18 Figura 4..3 – Algoritmo para criptografar dados do tipo numérico........ 15 Figura 2............. 37 Figura 6...........4 – Algoritmo para decriptografar dados do tipo numérico. 40 . 39 Figura 6.......................... 25 Figura 6........... 38 Figura 6........... 22 Figura 4.......................X LISTA DE FIGURAS Figura 2..1 – Ilustração do algoritmo de geração de subchaves do DES ..................................... .......................................................................................................7 – S-BOX 2 ...................11 – S-BOX 6 ................... 28 Tabela 4....................................................................................................... 30 Tabela 4. 28 Tabela 4........ 29 Tabela 4...............................................................................................................................................................1 – Exemplo do algoritmo posicional básico ......3 – Permutação de compressão (PC) .......................... 32 Tabela 5..................................................................................................... 12 Tabela 4........... 29 Tabela 4......................... 29 Tabela 4....... 22 Tabela 4.9 – S-BOX 4 ...............................................................................................2 – Vetor de rotação de chave (ROT) ................... 33 Tabela 5..................... 29 Tabela 4......................................................................................4 – Tabela de permutação inicial (PI)................ 28 Tabela 4.......13 – S-BOX 8 ........ 29 Tabela 4...1 – Permutação de compressão (PCI) .... 23 Tabela 4..........................................................................................................................15 – Permutação final (PF) .................................... 28 Tabela 4....2 – Exemplo posicional grau 3 (23x³ + 26x² + 45x – 63) ............................................1 – Cifra de transposição de colunas ........XI LISTA DE TABELAS Tabela 3................. 30 Tabela 5................................................... 26 Tabela 4........6 – S-BOX 1 .....14 – P-BOX ............ 34 ................12 – S-BOX 7 ..........8 – S-BOX 3 ........................3 – Tempo necessário para quebrar uma chave.........................................................................10 – S-BOX 5 ..........5 – Permutação de expressão (PE) .......... 23 Tabela 4. .4 – Texto cifrado ..........................5 – Texto simples .....................................................................................2 ............... 11 Quadro 3..................1 – Elementos utilizados na figura 4..........................XII LISTA DE QUADROS Quadro 3......................................................... 12 Quadro 3......1 – Aplicação da cifra de César .....................................................................2 – Texto puro ............3 – Texto puro separado em blocos..... 26 .......................................................... 11 Quadro 3.............................. 10 Quadro 3...............6 – Texto cifrado ............................... 13 Quadro 4.................. 13 Quadro 3............................. pois ele era mais resistente e fácil de ser transportado de um lugar para outro. Já na idade antiga. Esse método de registro e armazenamento era utilizado até pouco tempo pelas grandes empresas. as quais detinham o conhecimento do alfabeto utilizado para se registrar tais informações. geralmente eram aquelas que exerciam o poder econômico e político na sociedade em que viviam. As pessoas que tinham acesso a essas informações. conforme descreve DIAS (2000). Ainda segundo CARUSO (1999). o homem registra tudo o que acontece ao seu redor. o papiro dos egípcios e o pergaminho. antes da invenção dos computadores. as empresas passaram a contar com dispositivos de . conforme mostra CARUSO (1999). De acordo com o mesmo autor. trouxe inúmeras vantagens em relação aos métodos de registro anteriores. os primeiros métodos de registro e armazenamento de informações utilizavam códigos que eram compreendidos por poucas pessoas. onde o acesso físico era restrito a poucas pessoas. na pré-história. A utilização do papel. é que as informações se tornaram acessíveis a um número maior de pessoas. Os documentos que contivessem informações mais importantes. objetivando o controle das informações que ele julga serem importantes. momento em que se começou a utilização e a disseminação de novas técnicas de impressão. as informações foram registradas e armazenadas de diversas formas: em paredes de cavernas. placas de barro que eram utilizadas pelos sumérios.1 1 INTRODUÇÃO Desde épocas remotas. podia-se garantir uma segurança relativamente simples. Antes da invenção dos primeiros alfabetos. com o advento do alfabeto. com as mudanças tecnológicas e o uso de computadores de grande porte. Com o uso do papel para o armazenamento de informações. eram trancados em locais seguros. seguida de uma ampla alfabetização que atingiu uma grande parcela da população. somente a partir da idade média. o homem registrava as informações na sua memória. Atualmente. é possível codificar as informações do banco. fazendo com que os atacantes tenham dificuldades de decifrar as informações. comprometendo assim.2 armazenamento de dados que. Geralmente. o alvo preferido desses atacantes é o banco de dados das empresas. pois podem despertar o interesse de ladrões e. a sua segurança. . A partir do momento em que os sistemas de informação das organizações passaram a ser acessados a partir de uma rede externa. como forma de prover proteção adicional. As informações representam um elemento importante para uma organização. Com a criptografia. objetivando futuramente implementar o ALPOS na criptografia dos dados do banco de dados. Elas são consideradas recursos que estão sob constante risco. substituíram o papel com a vantagem de permitir o acúmulo de grandes quantidades de informações em espaços restritos. as empresas passaram a ter uma maior preocupação com a segurança de suas informações. há. aumentou-se o risco de ocorrerem acessos desautorizados à base de dados dessas organizações. caso as mesmas sejam interceptadas. cadastros de clientes. claramente uma necessidade de se aumentar a segurança dos bancos de dados visando dificultar o acesso às informações estratégicas. No contexto tecnológico atual. até mesmo de empresas concorrentes interessadas em informações estratégicas para proveito próprio. 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. etc. 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. pois são eles os responsáveis pela manipulação e gerenciamento de processos produtivos. Neste contexto. Com a chegada dos computadores pessoais e das redes de computadores. negócios. É neste contexto que os bancos de dados exercem um papel fundamental para as empresas. pois são fundamentais para o seu sucesso e sobrevivência. O que se pretende. estratégias de marketing. sob a gerência do Sistema Gerenciador de Banco de Dados SGBD. pois pode ser usada para prover uma proteção adicional aos dados do banco. que atualmente se encontram conectados às redes externas acessem o banco de dados. Esta propriedade possibilita que os sistemas de informações. acerca de operações corporativas. este terá dificuldades em decifrá-las. . A garantia que um banco de dados seja à prova de acessos não autorizados é uma tarefa difícil. objetivando desestimular os acessos não autorizados. ou através da utilização de técnicas de criptoanálise. As empresas passaram a trabalhar com uma grande quantidade de informações. A criptografia é uma contramedida diante de tais ameaças. o acesso às informações armazenadas nos bancos de dados passou também a ser feito remotamente. Caso as informações sejam interceptadas por um usuário não autorizado. 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. Os bancos de dados contêm informações estratégicas das empresas. das redes e com a popularização da Internet. Com o aparecimento dos microcomputadores. Estes computadores permitiram a centralização de um grande volume de informações. 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. o que aumenta os riscos de acesso aos dados por pessoas não autorizadas. etc.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. 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. já que as mesmas se encontrarão codificadas e. baseando-se na técnica do ALPOS e também uma descrição completa dos mesmos.4 Assim. Para a realização deste trabalho. No capítulo 3 é . este trabalho se justifica pela necessidade de se fazer um estudo uma técnica de criptografia para um banco de dados. na terceira e última etapa. faz-se a seguinte pergunta. seu funcionamento. Como a criptografia pode auxiliar na segurança das informações do banco de dados? Para responder à essa pergunta. com o objetivo de criptografar campos de uma tabela de um banco de dados e analisar os resultados obtidos. Posteriormente. dando ênfase à técnica de criptografia Data Encryption Standard – DES e a técnica de criptografia ALPOS. foram executadas as seguintes atividades: • Divulgar o funcionamento dos técnicas de criptografia ALPOS e DES. • Caracterizar o banco de dados Firebird. adicionando um novo componente que dificulta a interpretação dos dados do banco de dados por parte de usuários não autorizados. foram desenvolvidos algoritmos para a criptografar e decriptografar os dados de campos numéricos do banco de dados. durante a primeira etapa. gerada no cenário atual. 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. utilizou-se também a pesquisa teórica para o estudo do SGBD Firebird. diante das operações de criptografia e decriptografia. Ainda. 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. fazendo uma breve descrição do • Desenvolver algoritmos para criptografar e decriptografar dados. Buscando atender à essa nova demanda por segurança. foi feita um estudo do algoritmo de criptografia ALPOS. sua parte histórica. abordando sua definição e importância. . No capítulo 4 é feito um estudo da técnica de criptografia DES. suas vantagens e desvantagens e as principais técnicas existentes. enfatizando-se suas características de funcionamento e vulnerabilidades que a mesma se encontra exposta. os tipos de criptografia. No capítulo 5 é apresentada a técnica de criptografia ALPOS. No capítulo 7 são feitas as conclusões. Também. através de um estudo detalhado. faz-se uma descrição das operações envolvidas nos processos de criptografia e decriptografia de dados. 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.5 apresentado o conceito de criptografia. 6 2 BANCOS DE DADOS RELACIONAIS Neste capítulo foi feita uma introdução aos bancos de dados relacionais.1 FIREBIRD Segundo SILBERSCHATZ (1999). Também foi feita uma descrição do SGBD Firebird. criou um banco de dados baseado no código do Interbase 6. em julho de 2000. de código aberto. Mas. O Firebird é um banco de dados relacional. possuindo um grande conhecimento de sua arquitetura interna e Jim Starkey. Conforme descreve CANTU (2005). segundo o mesmo autor. Cada uma dessas tabelas possui múltiplas colunas. sendo compatível com o padrão SQL-ANSI-92. usando uma das técnicas de criptografia abordadas neste trabalho. Cliente / Servidor. No momento em que era feita a abertura do código do Interbase 6. 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. muito tempo se passou desde a abertura do código até a concretização deste processo. sendo que este tornou-se Free e Open Source.5. que foi o idealizador do Interbase. Ann Harrison que. 2. a Borland fazia o anuncio de que iria continuar a desenvolver uma versão comercial . 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. segundo o autor é conhecida como a “mãe do Interbase”. sendo que cada tabela possui um nome único. um grupo de pessoas. a Borland abriu o código fonte do Interbase 6. versão 1. Concluído o processo de abertura do código. chamado Firebird. do qual faziam parte. que pode ser empregado para a criptografia dos dados. 3. desde a versão 1. o Firebird passou por várias atualizações.5 e 7. atualmente já se encontra na versão 2. sendo que as novas versões deixariam de ser gratuitas e.5.x do Interbase. também deixariam de ter o seu código aberto. . A partir de então.0. chegando à sua versão estável 1.0 Beta. somente para fins comerciais. A partir de então. O Firebird continua em pleno desenvolvimento e. a Borland não disponibilizou mais atualizações para o código do Interbase 6.7 do Interbase. lançando as versões 6. . A chave é o elemento convencionado que torna o texto novamente inteligível.1. seus pontos fortes e fracos e os principais métodos utilizados. em cifras ou em códigos. ou seja. os tipos de criptografia existentes. é chamada de destinatário. escritos de forma clara. ininteligível para outrem que não o destinatário. foram abordados os aspectos gerais da criptografia. 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. Cifra é a convenção.8 3 CRIPTOGRAFIA Neste capítulo. transformando-o novamente no texto original. histórico. 3. O texto criptografado ou cifrado é transmitido até o destino. Remetente. 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. sistema ou processo de ocultação de sentido. no qual o método de criptografia é aplicado para decodificar o texto criptografado. conforme mostra a figura 3. Mensagem ou texto é a informação que se quer proteger. gerando o texto criptografado na origem. através de um método de criptografia. conhecedor da convenção empregada na cifragem.1 DEFINIÇÃO A Criptografia é a ciência e a arte de transformar mensagens ou textos. onde sofrerá o processo inverso. através da sua definição. refere-se à pessoa que manda uma mensagem para outra. Uma forma de contornar esse problema é a utilização de um método que modifique o texto original da mensagem a ser transmitida. Já a pessoa que recebe a mensagem do remetente. de forma genérica. Nesse . Fonte: TRINTA e MACÊDO (1998) Segundo MORENO (2005). Desta forma. é deslocado k letras. o alfabeto do texto cifrado. historicamente. cada letra ou grupo de letras da mensagem é substituído por outra letra ou grupo de letras. os métodos básicos de criptografia são divididos.C. devem ter o conhecimento prévio dos códigos utilizados. Em uma cifra de substituição. de forma que se pudesse esconder a mensagem. a troca de parte das informações por códigos predefinidos. as pessoas autorizadas que tenham o conhecimento do processo utilizado na cifragem. Conforme ilustra o quadro 3. b passa a ser F. o texto simples é apresentado nesse método em letras minúsculas e o texto cifrado em letras maiúsculas.1 – Esquema básico dos métodos de criptografia. só terão acesso às informações originais.9 Figura 3.1. Já as cifras são técnicas de proteção. garantindo-se assim a proteção das mesmas. utilizou este método para cifrar comunicações governamentais. a letra a passa a ser D. por meio de códigos ou de cifras. Nesse método. As pessoas autorizadas a terem acesso à essas informações. em duas categorias: as cifras de substituição e as cifras de transposição. No método de cifra utilizado pelo imperador romano Júlio César. assim por diante. em 50 a. Os códigos têm como princípio de funcionamento. em vez de 3. De acordo com TANENBAUM (1997). basicamente. A cifra de substituição mais conhecida é atribuída ao imperador romano Júlio César que. onde as informações são cifradas utilizando-se a transposição e/ou a substituição das letras da mensagem original. as informações podem ser criptografadas. Para isso. Fonte: TANENBAUM (1997) Texto simples a Texto cifrado 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 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. Conforme descreve CARVALHO (2001). ou seja.l3. onde cada elemento substituído por um número ou grupo de letras mais ou menos complexo não é mais uma letra. O próximo passo é fazer com que cada um dos símbolos do texto simples. segundo afirma CARVALHO (2001). Tem-se como exemplo de substituição polialfabética.1 – Aplicação da cifra de César.lp).. este sistema utiliza um conjunto de p letras como chave. sendo esta do tipo: ch = (l1. conforme mostrado no quadro 3. onde a chave é o string de 26 letras que correspondem ao alfabeto completo.. as 26 letras do alfabeto. A fraqueza desse sistema está no fato de cada letra ser sempre substituída pelo mesmo símbolo. sendo este o mais utilizado por quem entende pouco ou nada de criptografia. o texto simples attack seria transformado no texto cifrado QZZQEA. k passa a ser uma chave para o método genérico dos alfabetos deslocados circularmente. Divide-se a mensagem em blocos de p letras.l2. Utilizandose a chave acima. o Sistema Vigenère. Esse sistema... porém sílaba.a3..10 caso.. Quadro 3.ap) .a2. onde p é chamado de período do sistema polialfabético. seja substituído para alguma outra letra. é muito fraco. tem-se um bloco de texto puro tp: tp = (a1.. palavra ou locução freqüente..1. Existem também as cifras de substituição polialfabéticas. independente de que símbolo seja. onde o texto é cifrado.2.RAMAN.ATACA.11 Um outro bloco de texto com p letras é a saída que conterá o texto cifrado tc. Fonte: CARVALHO (2001) Texto puro VAMOSATACARAMANHASEMFALTA Para a cifragem do texto mostrado no quadro 3. Fonte: CARVALHO (2001) Texto puro separado em blocos VAMOS.14) Neste exemplo.. conforme mostrado no quadro 3.2.. tem-se o seguinte texto a ser cifrado. .(a2+l2) mod 26. a mensagem deve ser dividida em blocos de 5 letras. conforme ilustra o quadro 3. através do uso da chave ch.TO) = (6. onde tem-se p = 5.17. tem-se o processo de substituição.3.R. faz-se o uso da seguinte chave: ch = GRITO = (G.3 – Texto puro separado em blocos. ficando da seguinte forma. a chave ch é formada por um conjunto de p letras. fazendo-se a substituição de tp. Conseqüentemente.(ap+lp) mod 26) Assim.4.FALTA Por fim.. Quadro 3. de acordo com o quadro 3..2 – Texto puro.19.I. A função que faz a substituição é descrita a seguir: tc = ((a1+l1) mod 26.8.HASEM. Quadro 3. 4 – Texto cifrado. Tabela 3. tem-se um exemplo de cifra de transposição de colunas.GKIVO. utiliza-se neste exemplo o conjunto de caracteres MEGABUCK como chave.NRAXA. reordenam as letras.12 Quadro 3. o conteúdo da mensagem permanece inalterado.1. conforme ilustra a tabela 3. Já o texto cifrado é lido em colunas. .XRUTB.5. mas não as disfarçam. de acordo com TANENBAUM (1997). sendo que a leitura do texto se inicia a partir da coluna na qual a letra da chave possua o menor valor. Logo abaixo. o texto simples é escrito em linhas. ou seja. e assim sucessivamente.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 f l l l i t r a n s e m i d o l e r o n o n s t s s t w a r o m y s w i u n o t t s i x b a n k a c c o w o a b c d Segundo o mesmo autor. que baseia-se em uma chave que pode ser uma palavra ou uma frase contendo letras repetidas.LRTMO As cifras de transposição. O texto simples se encontra no quadro 3.1. Conforme mostra a tabela 3. Fonte: CARVALHO (2001) Texto cifrado BRUHG. 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. a dispersão.6. a permutação e a interversão.5. Fonte: TANENBAUM (1997) Texto simples pleasetrasferonemilliondollarsto mysswissbnankaccountsixtwotwo O texto simples. . As mensagens obtidas dessa forma só podiam ser decifradas por outra máquina especificamente programada para inverter o processo. Fonte: TANENBAUM (1997) Texto cifrado AFLLSKSOSELAWAIATOOSSCTCLNMOMANT ESILYNTWRNNTSOWDPAEDOBUOERIRICXB São também exemplos de cifras de transposição: o anagrama. Na segunda guerra mundial. Segundo a ENCICLOPÉDIA BARSA (1997). se transforma no texto cifrado. que eram capazes de transpor não só uma. 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. 3. como várias vezes. mostrado no quadro 3.6 – Texto cifrado. os avanços tecnológicos permitiram aos aliados utilizarem máquinas criptográficas automáticas de crescente complexidade.5 – Texto simples. Quadro 3. cada letra ou número.2 HISTÓRIA DA CRIPTOGRAFIA Os métodos criptográficos são utilizados desde a antiguidade. conforme descreve a mesma enciclopédia. de espessura conhecida. conforme ilustra o quadro 3.13 Quadro 3. de organizações de espionagem militar ou industrial e de entidades de diversos tipos.14 3. . agora são capazes de realizar um número muito grande de operações. os computadores introduziram mudanças no mundo da criptografia. são denominados assimétricos ou de chave pública. Os algoritmos atuais foram inventados para substituírem os algoritmos antigos. sons. Os novos algoritmos operam com bits ou com um conjunto de bits e.4 TIPOS DE CRIPTOGRAFIA Os métodos de criptografia estão são divididos basicamente em dois tipos. que só executam operações manuais. pois agora ela é aplicada a comunicação de dados. a criptografia sofreu enormes alterações. são classificados como simétricos ou de chave secreta. conforme mostra SOARES (1995). imagens. uma para codificação e outra para a decodificação de textos ou mensagens. etc.3 CRIPTOGRAFIA MODERNA Na segunda metade do século XX. o que vem exigindo a invenção de chaves cada vez mais complexas e impenetráveis. de acordo com a maneira em que as chaves de codificação e decodificação são utilizadas. os quais são compostos de bits ou seqüência de bits. Os métodos que utilizam chaves diferentes. como: textos. As mensagens agora podem representar qualquer coisa. em conseqüência do desenvolvimento alcançado pelos computadores. 3. programas. De acordo com CARVALHO (2001). sendo adequados para enfrentar o inimigo que também se beneficia do grande poder dos computadores. que se encontram a serviço de bancos. Os métodos de criptografia que utilizam a mesma chave para codificação e decodificação de textos ou mensagens. 15 3. 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. principalmente quando estão distantes um do outro.4. segundo o mesmo autor. o responsável pelo ataque poderá ter acesso a todas as mensagens que serão . pois envolve a transmissão da chave e nem sempre é possível garantir que essa transmissão não seja interceptada.1 CRIPTOGRAFIA COM CHAVE SECRETA Na criptografia com chave secreta. Caso a transmissão seja interceptada. A figura 3.2 – Método de criptografia com chave secreta. conforme descreve SOARES (1995).2 mostra o esquema de funcionamento do método de criptografia com chave secreta. Fonte: TRINTA e MACÊDO (1998) Ainda. 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. Figura 3. são necessárias n² chaves secretas.16 criptografadas utilizando a chave secreta acordada entre o transmissor e o receptor. Nenhuma técnica ou máquina conhecida atualmente é capaz de romper o IDEA. comunicando-se dois a dois. 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. tal método foi desenvolvido pela IBM e adotado pelo governo dos EUA como método de criptografia padrão. 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. está no fato de que em um sistema com n usuários. Utiliza uma chave de cento e vinte e oito bits. ou seja. Ele foi projetado para ser imune à criptoanálise diferencial. De acordo com SILBERSCHATZ (1999). Segundo TANENBAUM (1997). conforme atesta TANENBAUM (1997). a chave deve ser fornecida aos usuários autorizados através de um mecanismo de segurança. um outro problema desse método. • International Data Encryption Algorithm – IDEA. Os principais métodos de criptografia baseados em chave secreta são: • Data Encryption Standard – DES. Segundo SOARES (1995). . quanto mais pessoas forem acrescidas na comunicação mais chaves serão necessárias. para que o esquema de chave secreta possa funcionar. Projetado por dois pesquisadores na Suíça. Diffie e Hellman propuseram um novo sistema de criptografia. Cada usuário também possui uma chave privada que deve ser mantida em sigilo pelo mesmo.2 CRIPTOGRAFIA COM CHAVE PÚBLICA A criptografia de chave pública ou assimétrica surgiu em 1976 quando dois pesquisadores.4. Essa condição possibilita que a chave pública (E) possa ser divulgada. possibilitando que a informação seja transferida de forma segura. funciona da seguinte forma: têm-se 2 usuários. A chave pública (E) é usada para a codificação e a chave privada (D) é usada para a decodificação. (A) e (B). Cada usuário possui uma chave pública e uma chave privada. . o que simplifica a tarefa de gerenciamento de chaves.3 mostra o esquema de funcionamento da criptografia com chave pública. conforme descreve SOARES (1995). Este sistema baseia-se na utilização de duas chaves diferentes: uma chave pública e uma chave privada. As chaves públicas são divulgadas e estão acessíveis para qualquer pessoa. de acordo com SILBERSCHATZ (1999). Estas chaves são escolhidas de forma tal que a derivação de D a partir de E.17 3. o usuário (A) deverá criptografar os dados usando a chave pública do usuário (B). A figura 3. Dessa forma. Caso o usuário (A) queira compartilhar dados com o usuário (B). se torna muito difícil de ser realizada. O esquema de criptografia de chave pública. somente o usuário (B) poderá decriptar os dados através de sua chave privada. 3 – Método de criptografia com chave pública.18 Figura 3. Apesar de ser segura. É o algoritmo de criptografia de chave pública mais usado e testado. pois descobriu-se que ele é fraco e inadequado aos requisitos de segurança atuais. 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. Fonte: TRINTA e MACÊDO (1998) Os métodos de criptografia assimétricos. . Também conhecido por algoritmo de mochila. conforme descreve CARVALHO (2001). cujo nome é formado pelas iniciais dos nomes dos autores: Rivest. a criptografia de chave pública é computacionalmente cara. o Knapsack foi o primeiro algoritmo de chave pública. segundo SOARES (1995). esse método criado por Merkle e Hellman em 1978 já não é mais usado. Shamir e Adleman. Os principais métodos de criptografia de chave pública são: • RSA – É um método de criptografia assimétrico. • Knapsack – Segundo CARVALHO (2001). conforme afirma SILBERSCHATZ (1999). possuem dois inconvenientes: o tamanho das chaves e a lentidão que ocorre nos processos de codificação e decodificação. A primeira chamada emitida pelo NBS não obteve o êxito esperado pois os algoritmos que foram apresentados não estavam totalmente desenvolvidos. definir um algoritmo de criptografia padrão para utilização dentro ou fora das empresas e. Ele foi criado em 1977.DES O Data Encryption Standard . 4. na década de 70.NIST. que definiu os requisitos a serem atendidos pelos algoritmos criptográficos. uma vez que se esperava por algoritmos praticamente concluídos. estas não possuíam ou seguiam um padrão para a utilização de sistemas criptográficos. O desenvolvimento do padrão de criptografia a ser adotado. segundo CARVALHO (2001) para ser adotado como padrão pelo National Bureau of Standards . o NBS.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. Observando a necessidade de se proteger tais informações. de organizações do governo. Os algoritmos candidatos deveriam estar de acordo com os padrões especificados pelo NBS.DES é um dos algoritmos de criptografia mais utilizados na atualidade. emitiu uma chamada que solicitava propostas de algoritmos criptográficos que dessem proteção aos dados nas operações de transmissões e armazenamento. . ficou sob a responsabilidade do NBS. em 15 de maio de 1973.19 4 DATA ENCRYPTION STANDARD . De acordo MORENO (2005). hoje chamado de National Institute of Standards and Technology .NBS nos Estados Unidos. coube ao governo americano. O Lucifer foi projetado na década de 70. a não divulgação. um imigrante alemão que chegou aos Estados Unidos em 1934.NSA. o mesmo foi apresentado à NBS. . com o objetivo de dar proteção às informações federais americanas. Pouco tempo depois outras organizações tais como.20 Em agosto de 1974. algoritmo desenvolvido pela International Business Machines . tal mecanismo permitiria ao governo decifrar facilmente mensagens criptografadas de terceiros. durante a segunda chamada emitida pelo NBS. Após sofrer várias modificações. Após a conclusão do desenvolvimento do sistema Lucifer. O uso do DES passou a ser obrigatório nos órgãos federais do governo americano. já com a denominação de Data Encryption Standard . dentre os quais o Lucifer. instituições bancárias e empresas particulares passaram a adotar o DES como padrão. bem como detectar possíveis falhas visando a sua adequação aos requisitos exigidos pelo NBS para torná-lo seguro. as quais possuíam um grau de sigilo menor que as informações referentes à segurança nacional. Ele foi avaliado pelo NBS com a ajuda da National Security Agency . causou muita polêmica. se destacou junto ao NBS. De acordo com CARVALHO (2001). conforme afirma MORENO (2005). pois especulou-se que algum tipo de vulnerabilidade tenha sido inserida no DES e. apareceram outros algoritmos candidatos. com a intenção de se obter as características de seu funcionamento. sendo os bancos os maiores usuários de criptografia depois do governo. o Lucifer foi adotado como padrão em 15 de julho de 1977.DES. onde o mesmo foi submetido à vários testes. dos critérios de projeto do DES. pelo governo americano. por Horst Feistel.IBM. 4. os quais são utilizados na geração de um bloco de texto cifrado de 64 bits.1. retornando blocos de texto cifrado de 64 bits através do uso de uma chave de 56 bits. A seguir são apresentados a descrição do cálculo das subchaves e o processo de funcionamento do algoritmo principal do DES.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. As operações utilizadas pelo DES são: permutações. as chaves são armazenadas em uma entrada de 64 bits que equivalem à 8 bytes. de cada byte é retirado o último bit. ilustra os passos utilizados para se gerar as subchaves utilizadas pelo DES. A figura 4. reduzindo-se o tamanho da chave para 56 bits. XOR e deslocamentos.1 CHAVES E SUBCHAVES DO DES No DES.21 4. substituições. .2. somente serão utilizados 56 bits na chave permutada. assim por diante. a chave de 64 bits é submetida à uma permutação de compressão inicial (PCI). que é representada pela tabela 4. Tabela 4.1 – Permutação de compressão inicial (PCI). . seguindo-se esse raciocínio. O 4° bit da chave original será o último bit da chave permutada. Fonte: MORENO (2005) Inicialmente. obedecendo-se a tabela de compressão inicial. sendo este o 57° bit chave original ou de entrada. Fonte: MORENO (2005) 57 10 63 14 49 02 55 06 41 59 47 61 33 51 39 53 25 43 31 45 17 35 23 37 09 27 15 29 01 19 07 21 58 11 62 13 50 03 54 05 42 60 46 28 34 52 38 20 26 44 30 12 18 36 22 04 Ainda. pode-se observar que dos 64 bits da chave original.1. têm-se o segundo bit da chave permutada igual à 49 que é o 49° bit da chave original e. sendo que o primeiro bit da saída ou chave permutada será igual à 57.1 – Ilustração do algoritmo de geração de subchaves dos DES.1.22 CHAVE (64 Bits) PCI (56 Bits) C (28 Bits) D (28 Bits) Rotacionar Rotacionar PC (48 Bits) Subchave (48 Bits) Figura 4. acordo com a tabela 4.1. conforme mostra a figura 4. Fonte: MORENO (2005) 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1 Observando-se a tabela 4. Tabela 4. As partes são denominadas de C e D respectivamente. 6. 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. 5.3. concatenar as duas partes. Fonte: MORENO (2005) 14 15 26 41 51 34 17 06 08 52 45 53 11 21 16 31 33 46 24 10 07 37 48 42 01 23 27 47 44 50 05 19 20 55 49 36 03 12 13 30 39 29 28 04 02 40 56 32 .1. No término desse processo. 4. tem-se a divisão do vetor resultante de 56 bits em duas partes iguais de 28 bits cada uma. derivadas da chave original. Tabela 4. sendo que cada uma dessas partes executa uma iteração. têm-se os valores dos bits que serão rotacionados para as iterações sofridas por C e D respectivamente. 7 e 8 serão deslocados 2 bits e assim respectivamente. Por exemplo. que tem como função. de acordo com o que ilustra a tabela 4. têm-se a geração de 16 subchaves. Após a realização de cada deslocamento. conforme mostra a tabela 4.3 – Permutação de compressão (PC). após a conclusão da permutação inicial.23 Ainda. nas iterações 1 e 2 será rotacionado apenas um bit para a esquerda.2. Os bits mais significativos serão destinados à parte C. tem-se a realização da permutação de compressão (PC). já os bits menos significativos ficarão com a parte D. conforme mostra a figura 4.2.2 – Vetor de rotação de chave (ROT). sendo que cada uma delas receberá 28 bits. C e D formando-se uma subchave de 48 bits. já nas iterações 3. criadas pelo módulo gerador de subchaves. utiliza-se a subchave 1. no processo principal do algoritmo que será executado 16 vezes.2 PROCESSAMENTO PRINCIPAL DO DES É no processamento principal do DES que são realizadas as permutações.24 4. na segunda iteração. para se decifrar a primeira iteração. ou seja. utiliza-se a subchave 16. Na cifragem de um bloco de texto (64 bits). desmembramentos e a operação XOR “ou exclusivo”. a subchave 15. na segunda iteração. para cada iteração. . a subchave 2 e assim por diante.2. O que diferencia o processo de onde. o que se altera é apenas a ordem em que as subchaves são aplicadas. faz-se necessário a utilização das subchaves na ordem crescente.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. as subchaves são utilizadas na ordem decrescente. ou seja. derivada da chave original. Utiliza-se as subchaves. Para se decifrar um bloco de texto. substituições. na primeira iteração do processo principal do DES. Para cada iteração é utilizada uma subchave diferente. e assim sucessivamente. A figura 4. 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) . Nessa permutação. e a descrição de cada um deles é apresentada no quadro 4. Os valores dessa permutação são definidos na tabela 4.1 4. Tabela 4. Fonte: MORENO (2005) 58 60 62 64 57 59 61 63 50 52 54 56 49 51 53 55 42 44 46 48 41 43 45 47 34 36 38 40 33 35 37 39 26 28 30 32 25 27 29 31 18 20 22 24 17 19 21 23 10 12 14 16 09 11 13 15 02 04 06 08 01 03 05 07 .4 – Tabela de permutação inicial (PI).1 – Elementos utilizados na figura 4. os bits permutados do bloco de texto claro.2.2. utiliza a subchave Ki e o bloco Ri .1 PERMUTAÇÃO INICIAL A permutação inicial é o primeiro passo que é executado ao iniciar-se o processamento principal do algoritmo DES.2.26 Os elementos utilizados na figura 4. Quadro 4.2. mantendo-se no vetor de bits resultante da permutação inicial.4. nenhum bit é descartado ou adicionado. Fonte: MORENO (2005) Elemento Li Ri Ki F Descrição Left block (bloco da esquerda) inicialmente armazena os 32 bits mais significativos resultantes da permutação inicial (PI) Right block (bloco da direita) inicialmente armazena os 32 bits menos significativos resultantes da permutação inicial (PI) Subchave correspondente à iteração i Função que realiza operações como P-BOX e S-BOX.1. 27 4. Ao fim das 16 iterações.2.2. a iteração que está sendo executada. voltando a formar um vetor de 64 bits que irá passar pela permutação (PF). De acordo com MORENO (2005). A função f (Ki. Operação XOR com a subchave correspondente à iteração executada. aplica-se a função VR = f (Ki. recebe VR. onde o vetor resultante terá 48 bits. onde o vetor resultante da permutação inicial divide-se em duas partes. sendo que L conterá os bits significativos e R. R e L são concatenados. as operações ocorridas com R e L são descritas a seguir: • • • • Para i de 1 até 16. ficará com os bits restantes. Li Ri recebe Ri – 1 (Li recebe Ri anterior). No decorrer desta etapa são executadas 16 iterações do DES. onde VR é o vetor resultante. Efetua-se uma operação XOR de VR com Li (VR = VR XOR Li). Ri – 1) realiza as seguintes operações: • • • • Operação de permutação de expansão. k é a subchave e i. Ri – 1). A permutação de expansão (PE) realiza permutação sobre Ri (32 bits). A PE é definida pelos valores representados na tabela 4. ficando cada uma delas com 32 bits.2 ITERAÇÕES DO ALGORITMO DES A segunda etapa do processamento principal do algoritmo DES inicia-se após a permutação inicial (PI). . R (right = direita) e L (left = direita). Operação de permutação P-BOX. Operação e substituição S-BOX.5. 7 .13 Tabela 4. conforme mostram as tabelas 4.5 – Permutação de expansão (PE). Fonte: MORENO (2005) 15 03 00 13 01 13 14 08 08 04 07 10 14 07 11 01 06 15 10 03 11 02 04 15 03 08 13 04 04 14 01 02 09 12 05 11 07 00 08 06 02 01 12 07 13 10 06 12 12 06 09 00 00 09 03 05 05 11 02 14 10 05 15 09 Tabela 4.6 a 4.S-BOX 2.28 Tabela 4. Fonte: MORENO (2005) 32 08 16 24 01 09 17 25 02 10 18 26 03 11 19 27 04 12 20 28 05 13 21 29 04 12 20 28 05 13 21 29 06 14 22 30 07 14 23 31 08 16 24 32 09 17 25 01 A operação Xor com subchave. A operação S-BOX. realiza operação de XOR entre o vetor resultante da PE com a subchave da iteração que está sendo executada. Fonte: MORENO (2005) 10 13 13 01 00 07 06 10 09 00 04 13 14 09 09 00 06 03 08 06 03 04 15 09 15 06 03 08 05 10 00 07 01 02 11 04 13 08 01 15 12 05 02 14 07 14 12 03 11 12 05 11 04 11 10 05 02 15 14 02 08 01 07 12 . Fonte: MORENO (2005) 14 00 04 15 04 15 01 12 13 07 14 08 01 04 08 02 02 14 13 04 15 02 06 09 11 13 02 01 08 01 11 07 03 10 15 05 10 06 12 11 06 12 09 03 12 11 07 14 05 09 03 10 09 05 10 00 00 03 05 06 07 08 00 13 Tabela 4.S-BOX 1.S-BOX 2.6 . realiza as substituições de bits.8 . utilizando-se de oito tabelas chamadas de caixa de substituição ou S-BOXES que contêm valores predefinidos. S-BOX 4.29 Tabela 4.12 . Fonte: MORENO (2005) 07 13 10 03 13 08 06 15 14 11 09 00 03 05 00 06 00 06 12 10 06 15 11 01 09 00 07 13 10 03 13 08 01 04 15 09 02 07 01 04 08 02 03 05 05 12 14 11 11 01 05 12 12 10 02 07 04 14 08 02 15 09 04 14 Tabela 4.11 .13 .9 .S-BOX 8.10 . .14.S-BOX 5. Fonte: MORENO (2005) 13 01 07 02 02 15 11 01 08 13 04 14 04 08 01 07 06 10 09 04 15 03 12 10 11 07 14 08 01 04 02 13 10 12 00 15 09 05 06 12 03 06 10 09 14 11 13 00 05 00 15 03 00 14 03 05 12 09 05 06 07 02 08 11 E. Fonte: MORENO (2005) 12 10 09 04 01 15 14 03 10 04 15 02 15 02 05 12 09 07 02 09 02 12 08 05 06 09 12 15 08 05 03 10 00 06 07 11 13 01 00 14 03 13 04 01 04 14 10 07 14 00 01 05 07 11 13 00 05 03 11 08 11 08 06 13 Tabela 4.S-BOX 6. Fonte: MORENO (2005) 02 15 04 11 12 11 02 08 04 02 01 12 01 12 11 07 07 04 10 01 10 07 13 14 11 13 07 02 06 01 08 13 08 05 15 06 05 00 09 15 03 15 12 00 15 10 05 09 13 03 06 10 00 09 03 04 14 08 00 05 09 06 14 03 Tabela 4. finalmente a P-BOX. Fonte: MORENO (2005) 04 13 01 06 11 00 04 11 02 11 11 13 14 07 13 08 15 04 12 01 00 09 03 04 08 01 07 10 13 10 14 07 03 14 10 09 12 03 15 05 09 05 06 00 07 12 08 15 05 02 00 14 10 15 05 02 06 08 09 03 01 06 02 12 Tabela 4. que é uma permutação comum que obedece os valores ilustrados na tabela 4.S-BOX 7. 3 PERMUTAÇÃO FINAL (PF) A permutação final.2. Fonte: MORENO (2005) 16 01 02 19 07 15 08 13 20 23 24 30 21 26 14 06 29 05 32 22 12 18 27 11 28 31 03 04 17 10 09 25 4. Fonte: MORENO (2005) 40 39 38 37 36 35 34 33 08 07 06 05 04 03 02 01 48 47 46 45 44 43 42 41 16 15 14 13 12 11 10 09 56 55 54 53 52 51 50 49 24 23 22 21 20 19 18 17 64 63 62 61 60 59 58 57 32 31 30 29 28 27 26 25 . ela é executada após as 16 iterações do processamento principal do DES. Tabela 4.2.15.30 Tabela 4. consiste em apenas uma troca de bits.14 – P-BOX.15 – Permutação final (PF). obedecendose os valores da tabela 4. e assim sucessivamente. G e H conforme a tabela da American Standard Code for Information Interchange . que é o (valor equivalente na tabela ASCII ao caractere B).ASCII. por exemplo. utilizando-se a função. E. F. Para que isso ocorra. sem que ocorra acréscimo de nenhum bit. uma seqüência de caracteres AAABBB. após ser criptografada. E.1. B. C. D. 67. mais precisamente no algoritmo de Cifra criado pelo imperador romano Júlio César. diferentemente do algoritmo de Cifra de César. o seu valor correspondente em decimal criptografado será 66. C. conforme mostra a tabela 5. F. 68. Em um algoritmo posicional básico. G e H. 66.ALPOS. MORENO (2005) faz uma breve descrição de como se criptografa uma seqüência de caracteres em um algoritmo posicional básico e. (valor equivalente na tabela ASCII ao caractere C). exposto anteriormente. De acordo com MORENO (2005). eliminandose a possibilidade de se tentar descobrir a freqüência de letras utilizadas para criptografar o texto. na qual os valores (65. o ALPOS leva em conta cada posição do texto que será cifrado.31 5 ALGORITMO POSICIONAL . 70.ALPOS O Algoritmo Posicional . pode-se transformar nos caracteres B. esse algoritmo baseia-se em cifras de substituição. a mesma seqüência de caracteres sendo criptografada. Dacêncio e Moreno em 2001. respectivamente à esses bytes. Segundo o mesmo autor. Sabendo-se que A está localizado na posição 1. 71 e 72) correspondem. D. 69. admite-se o valor decimal dos bytes A. é um algoritmo criptográfico criado para fins didáticos pelos autores: Chiaramonte. em seguida. . na qual cada posição é criptografada de maneira distinta. O segundo byte assumirá o seu valor decimal que será 67. Para exemplificar como a função proposta pelos autores do ALPOS atua sobre uma seqüência de caracteres. utilizando-se de uma função. o grau da expressão posicional é que determina a complexidade e a segurança do algoritmo. O problema em se utilizar expressões posicionais nesse tipo de algoritmo. maior será a complexidade e a segurança dos dados criptografados através do ALPOS. 5. essa será mais segura do que uma expressão posicional baseada numa equação do segundo grau. Quanto maior for o grau da expressão posicional. que pode ser representada pela (variável x). está no fato de que há a possibilidade de ocorrer o “estouro” de um byte. por isso recomenda-se a utilização da função proposta pelos autores do ALPOS. Assim. no qual o .32 Tabela 5. segundo MORENO (2005). pode ser do tipo a*x + b. um número que é gerado através de uma expressão matemática que faz o uso da posição do byte. segundo o mesmo autor. Fonte: MORENO (2005) Seqüência Valor decimal na tabela ASCII Valor da posição Valor decimal ASCII (código criptografado) A 1 A 2 A 3 B 4 B 5 B 6 65 65 65 66 66 66 66 67 68 70 71 72 C D F G H Código em caracteres (criptografado) B O algoritmo posicional básico. no qual soma-se ao valor do byte original representado em ASCII.1 – Exemplo do algoritmo posicional básico. por exemplo.1 O PROBLEMA DO “ESTOURO” DE BYTE Na criptografia posicional. mostrou-se ainda ser muito simples de ser quebrado. A expressão. se a expressão posicional for uma equação de terceiro grau. de acordo com o mesmo autor. onde a e b correspondem a valores da chave e x corresponde a posição. 711 200 210 Ê 175 » As colunas que estão destacadas em cinza.303 e 5. é utilizado na penúltima linha da tabela 5.645 6 6 200 722 1. conforme mostra a tabela 5. Utilizandose expressão posicional. ultrapassaram 256 e. Fonte: MORENO (2005) Sequência Valor decimal na tabela ASCII Valor da posição Resultado da expressão: 23x³ + 26x² . . têm-se as seguintes fases. 1. No exemplo anterior.2 – Exemplo posicional grau 3 (23x³ + 26x² + 45x – 63).2.45x¹ .711. Para se resolver o problema de “estouro” de um byte.637. onde se utiliza o resto da mesma como o valor criptografado. A solução desse problema está na realização de um divisão. foi utilizada uma expressão posicional de terceiro grau. No exemplo a seguir. onde os coeficientes 23. que é o valor máximo que se pode armazenar em um byte. descrita anteriormente.2.45x – 63 Valor da expressão + valor ASCII original Valor decimal na tabela (código criptografado) Código em caracteres (criptografado) A 65 1 A 65 2 A 65 3 B 66 4 B 66 5 3. cujo o valor obtido foi 210. para criptografar a seqüência original AAABBB.237 3. utilizando-se a mesma regra do valor anterior. A expressão utilizada nesse exemplo será f(x) = 23x³ + 26x² . pode-se dividir o 722 por 256.63. onde MOD é um operador que retorna o resto da divisão. o mesmo deve assumir o valor encontrado em MOD 256. 26.33 valor decimal do código criptografado é maior que 256. 3. onde o resto desta divisão. Tabela 5.303 231 þ B 66 6 5. não poderão ser armazenados em um byte. -45 e –63 foram escolhidos de forma aleatória.571 5. Os outros valores devem ser calculados. indicam os caracteres da seqüência nos quais ocorreram o “estouro” de um byte. que são o resultado da soma do valor da equação posicional mais o valor decimal na tabela ASCII. Os números 722.637 5 -59 135 657 1. portanto. 445.9 dias 1. foi utilizado um computador AMD K6-2 de 300Mhz.982. ultrapassa uma hora. onde calculou-se o tempo médio ocorrido no teste de força bruta em chaves de grau 3.2 SEGURANÇA E TIPOS DE ATAQUES Alguns testes foram realizados sobre o ALPOS para medir a sua segurança.34 5.9 dias 1.78142E+19b = 881. Levando-se em consideração que .445. A tabela 5. Fonte: MORENO (2005) Grau 3 4 5 6 7 8 9 10 N Mínimo (segundos) 0.000b = 74.671.457 milênios 1.3 – Tempo necessário para quebrar uma chave. através do qual várias chaves são testadas.496 milênios 600 + ((256(Grau-2)) * 386) 2.08649E+17b = 3.78142E+19b = 881. Tabela 5.982.000b = 74.297.65786E+12B = 525 séculos 4.110b 6.110b 6. onde o valor encontrado foi 386 milissegundos.922.24411E+14B = 13. Para obter tal modelo.922.92 25.3 mostra os tempos máximo e mínimo para que se quebrem chaves de diferentes graus de segurança. até que se descubra a mensagem original.65786E+14b = 525 séculos 4.08649E+17b = 3. a partir uma mensagem cifrada.232 milênios Conforme descreve MORENO (2005). os testes foram realizados utilizando-se chaves até o grau 4.12044E+21b = 225.787.24411E+14b = 13. 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.237 milênios 2.457 milênios 1.237 milênios 600 + ((256(Grau-3)) * 386) Máximo (segundos) 98.92 25. Conforme mostra MORENO (2005). os autores deste algoritmo posicional realizaram um ataque de força bruta.6 98.475.297. para a obtenção dos valores acima do grau 4.496 milênios 7.475. segundo o mesmo autor. sendo que o tempo para se quebrar uma chave após esse grau. Ainda. .35 cada chave suporta um valor até 256. substituídos no modelo. Para que este problema seja contornado. utilizando-se um computador diferente. por meio do teste de força bruta. 5. assim por diante. Como o tempo mínimo para se descobrir uma chave de grau 3 foi de 600 milissegundos.2. Ainda. Por conseguinte. ainda com base no mesmo computador. de acordo com o mesmo autor. o tempo gasto para se encontrar uma chave de grau n será de (256 ^ (n – 3)) * 386 milissegundos. torna-se necessário recalcular os tempos médio e mínimo para uma chave de grau 3 devem ser recalculados e. Entretanto. 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.1 VULNERABILIDADES DO ALPOS Conforme descreve MORENO (2005). o valor do tempo para o teste de força bruta para uma chave de grau 4. Tal vulnerabilidade pode ser explorada por um criptoanalista que pode obter uma chave em menos tempo. 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. comprovou-se a existência de chaves equivalentes. durante os testes realizados. deve-se criar regras para a composição de chaves. uma chave grau 3 pode possuir uma chave equivalente de grau 2. igual a 256 vezes o valor do tempo para uma chave de grau 3 e. por se ter uma chave grau 3 como base para os cálculos. o ALPOS mostrou-se resistente contra um ataque de força bruta. por exemplo. an se encontram armazenados no vetor valores. Têm-se ainda.. . .. é um algoritmo baseado em cifras de substituição. que os valores a1. x.1. + an * x ¹. Para a cifragem dos dados.. . a posição do caractere e n. que é executado n vezes durante o cálculo da expressão posicional. . ou seja. 6. a2.. caracteres cifrados. an representam os valores da chave.. a2. através da seguinte operação: valores[i] * posição de i O algoritmo para a criptografia de caracteres é descrito na figura 6.1 DESCRIÇÃO DO ALGORITMO A versão para criptografar dados do tipo texto segue o funcionamento do algoritmo ALPOS tradicional. que recebe como entrada. uma para criptografar dados do tipo texto e outra para a criptografia de dados do tipo numérico (inteiro ou float). caracteres legíveis provenientes do banco de dados e retorna como resultado. o algoritmo utiliza a seguinte expressão posicional: f (x) = a1 * x + a2 * x ¹ + . representa o número de elementos da chave. onde a1.36 6 TRABALHOS REALIZADOS Neste capítulo foram descritas duas versões do algoritmo ALPOS.. . Retorna nova_letra. Sobre cada letra do texto de entrada. ou seja. Para i de 1 até gchave faça vchave soma Fim Para // A variável nova_letra corresponde ao caracter // criptografado. // Cálculo da função soma. ele recebe uma cadeia de caracteres criptografados como entrada e. gera como saída. (antiga_letra + soma) MOD 256. nova_letra Fim. Figura 6. a cadeia de caracteres original.2 .37 Algoritmo CripStrALPOS (S:Caracter):Caracter.1 – Algoritmo para criptografar dados do tipo Caracter valores [i]. Início soma 0. o algoritmo aplica uma fórmula. já incluindo a operação mod. baseada nos princípios do ALPOS tradicional para determinar a outra letra correspondente. O algoritmo é descrito na figura 6. soma + vchave * exponencial (pos. i). O algoritmo DecripStrALPOS faz o caminho inverso do CripStrALPOS. Vale considerar que. Início subtra 0. subtra + vchave * exponencial (pos. o valor do byte original representado em ASCII. . Com isso. 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.2 – Algoritmo para decriptografar dados do tipo Caracter valores [i]. Retorna antiga_letra. as entradas de texto que contiverem caracteres idênticos. caso o texto de entrada for constituído de caracteres idênticos. 6. Fim. haveria o risco de se descobrir o método de criptografia utilizada pelo algoritmo mas. dificultando sua interpretação por parte de usuários desautorizados. a posição do byte. Soma-se à essa expressão.38 Algoritmo DecripStrALPOS (S:Caracter):Caracter. // Executa o processo inverso da soma. que gerará um texto constituído de caracteres variados. Figura 6. Para i de 1 até gchave faça vchave subtra Fim Para. serão criptografadas pelo StrALPOS.2 DESCRIÇÃO DO ALGORITMO ALPOS NUMÉRICO A segunda versão do ALPOS trata da criptografia de números (Inteiros e Reais). // Retorna o caracter legível. i). antiga_letra (nova_letra – subtra) MOD 256. o dado criptografado deve ser do mesmo domínio do dado original. N1 DIV 10. n1 nx ct R Nx N1 CT num * 1000.3. viabilizando sua utilização para criptografar dados do tipo Inteiro e Real. Algoritmo CripNumALPOS (Num : numérico) : Inteiro.3 – Algoritmo para criptografar dados do tipo Numérico . Fim. para criptografar um campo do tipo numérico de uma tabela do banco de dados. o CripNumALPOS sempre retorna um dado do tipo inteiro. n1 MOD 10. Assim.39 Foi necessário fazer esta adaptação do ALPOS pois os dados criptografados serão gravados no banco de dados. CT + 1. 0. Nx * 10 + (R + CT). Enquanto (n1 > o) faça Fim Enquanto. O Algoritmo CripNumALPOS faz exatamente esta operação. Figura 6. Retorna Nx. Início // Transforma um float de até 3 decimais em um inteiro. Ele recebe um dado Numérico e retorna como resultado outro dado Numérico criptografado. // Retorna o número “Num” criptografado. O algoritmo CripNumALPOS é descrito na figura 6. Uma vez que um dado real armazena um inteiro e o inteiro não armazena valor real. 1. Algumas observações acerca do NumALPOS. Os valores Numéricos manipulados pelo algoritmo. • • Ele trabalha com números reais com no máximo 3 casas decimais.40 O algoritmo DecripNumALPOS faz a operação inversa do CripNumALPOS. Figura 6. Nx MOD 10 – CT. Enquanto Nx > 0 faça Fim Enquanto. CT – 1.4 – Algoritmo para criptografar dados do tipo Numérico . O algoritmo DecripNumALPOS é descrito na figura 6. Fim. N * 10 + R. Retorna N DIV 1000. Algoritmo DecripNumALPOS (Nx : inteiro) : Numérico. // N corresponde ao n° decriptografado que é retornado // pelo algoritmo. Início // Nx corresponde ao n° criptografado. CT N R N Nx CT num Dígitos (Nx).4. são de uma dimensão tal que seu produto por 1000 não gera overflow. 0. Ele recebe um dado numérico criptografado e devolve como saída o dado original. Nx DIV 10. Desta forma. estes seriam criptografados pelo aplicativo cliente.41 7 CONCLUSÕES A principal contribuição deste trabalho é promover uma segurança adicional aos dados armazenados no banco de dados. seria importante que fossem executadas posteriormente. 7. Na realidade. antes de exibi-los para o usuário final. Seguindo-se esta lógica. Para manipular os dados armazenados no banco de dados. A proposta inicial era o desenvolvimento de uma interface de comunicação com o banco de dados. Os dados transitariam criptografados pela rede até chegar ao servidor. 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. onde os dados seriam inseridos e recuperados somente através desta aplicação. o sistema promove uma segurança parcial na transmissão dos dados. seria necessário que uma aplicação buscasse os dados criptografados no banco para que estes fossem decriptografados localmente. . ele teria em suas mãos somente dados ilegíveis e sem utilidade. se um hacker conseguisse interceptar as informações do banco de dados. antes do cliente enviar os dados para armazenamento no servidor. A primeira. a aplicação seria executada em um desktop (cliente) e.1 TRABALHOS FUTUROS Algumas atividades não puderam ser realizadas e. uma vez que estes seguem criptografados até o servidor e são armazenados de forma ilegível. 42 Posteriormente. analisar os dados criptografados no banco de dados para verificar a qualidade. se realmente os dados ficaram ilegíveis. . ou seja. 1997. Cláudia. rev. PEREIRA. Sérgio. LEMOS. 3. Segurança em informática e de informações. de acordo com a ABNT – São Paulo: Cortez. Carlos A. Daniel Balparda de. SUDARSHAN S. DIAS. 2. mans e wans às redes atm. São Paulo: Makron Books. Fábio Dacêncio. CARUSO. 367p. CHIARAMONTE. ed. p. ed. Rodolfo Barros. COLCHER. MORENO. Criptografia. STEFFEN. 1999. ed. Metodologia do trabalho científico. Abraham. SOARES. Sistema de banco de dados. CARVALHO. 705p . 308p. Carlos Henrique. Rio de Janeiro: Book Express. Rio de Janeiro: Elsevier. 2. Segurança e auditoria da tecnologia da informação. 4. 493-494. 335p. Criptografia em software e hardware. 22. Rio de Janeiro: Axcel Books. Flávio Deny. Rio de Janeiro – São Paulo: Encyclopaedia Britannica do Brasil Publicações. SEVERINO. e ampl. e ampl. 2000. SILBERSCHATZ. Luiz Fernando Gomes. Edward David. v. ed. 288p. 1999. Guido. São Paulo: Novatec. Criptografia: métodos e algoritmos. São Paulo: Editora SENAC São Paulo. Firebird essencial. 724p. 2001. Redes de computadores: Das lans. 2002. 218p. ENCICLOPÉDIA BARSA. 218p. 2005. ed. A.43 REFERÊNCIAS BIBLIOGRÁFICAS CANTU. Henry F. 2005. Rio de Janeiro: Ciência Moderna. Antônio Joaquim. 1995. 2. KORTH. rev. Acessado em: 17/11/05. Redes de computadores. Rio de Janeiro: Campus. Um estudo sobre criptografia e assinatura digital. 3. ed.htm.di. Fernando Antônio Mota. 1998. .br/~flash/ais98/cripto/criptografia. Andrew S.44 TANENBAUM. TRINTA. Departamento de Informática da Universidade Federal de Pernambuco. MACÊDO.ufpe. 923p.1997. http://www. Rodrigo Cavalcanti de.