Вы находитесь на странице: 1из 67

Universidade Federal do Rio Grande do Norte CCET: Centro de Cincias Exatas e da Terra CT: DCA: Centro de Tecnologia Departamento

de Computao e Automao

Curso: Engenharia de Computao

Disciplina: Relatrio de Graduao

Professores Benjamn Callejas Bedregal Ivan Saraiva Silva Aluno Frederiko Stenio L. N. de Arajo

PaplioXP - Uma Extenso do Algoritmo Criptogrfico Paplio

NATAL 29-07-2003
1

FREDERIKO S. L. N. DE ARAJO

PAPLIOXP - UMA EXTENSO DO ALGORITMO CRIPTOGRFICO PAPLIO

NATAL 29-07-2003
II

FREDERIKO S. L. N. DE ARAJO

PAPLIOXP - UMA EXTENSO DO ALGORITMO CRIPTOGRFICO PAPLIO

Relatrio de Graduao do curso de Engenharia de Computao da disciplina Relatrio de Graduao, como parte dos requisitos para a obteno do ttulo de Engenheiro de Computao pela Universidade Federal do Rio Grande do Norte. Orientador: Benjamn Callejas Bedregal Co-Orientador: Ivan Saraiva Silva

NATAL 29-07-2003
III

FREDERIKO S. L. N. DE ARAJO

PAPLIOXP - UMA EXTENSO DO ALGORITMO CRIPTOGRFICO PAPLIO

Relatrio de Graduao do curso de Engenharia de Computao da disciplina Relatrio de Graduao, como parte dos requisitos para a obteno do ttulo de Engenheiro de Computao pela Universidade Federal do Rio Grande do Norte. Aprovado em 4 de agosto de 2003

BANCA EXAMINADORA _______________________________________________________________ Prof. BENJAMN CALLEJAS BEDREGAL Orientador _______________________________________________________________ Prof.a. THAS VASCONCELOS BATISTA _______________________________________________________________ Msc. KARLA DARLENE NEPOMUCENO RAMOS

Universidade Federal do Rio Grande do Norte

IV

SUMRIO

Captulo 1 Introduo ..................................................................................................1 1.1. Introduo ....................................................................................................1 1.2. Objetivo do trabalho.....................................................................................2 Captulo 2 Fundamentos ..............................................................................................3 2.1. Criptografia ..................................................................................................3 2.2. Cdigos ........................................................................................................4 2.3. Esteganografia..............................................................................................4 2.4. Cifras ............................................................................................................4 2.4.1. Transposio..................................................................................5 2.4.2. Substituio ...................................................................................5 Captulo 3 - Codificador Paplio .....................................................................................6 3.1. Rede de Feistel .............................................................................................6 3.2. Codificador Convolucional ..........................................................................8 3.3. Decodificador Viterbi...................................................................................11 3.4. Viterbi Modificado.......................................................................................14 3.5. Expanso de Chaves.....................................................................................17 3.6. Modos de Operao......................................................................................18 3.6.1. ECB - Eletronic Code Book Mode................................................18 3.6.2. CBC - Cipher Mode Chaing Mode ...............................................19 3.6.3. CFB - Cipher Feedback Mode ......................................................20 3.6.4. OFB Output Feedback Mode .....................................................21 3.7. Algoritmo Paplio........................................................................................22 Captulo 4 - Otimizao Paplio......................................................................................24 4.1. Caractersticas desejveis em um algoritmo criptogrfico...........................24 4.1.1. Avalanche......................................................................................24 4.1.2. Difuso ..........................................................................................24 4.1.3. Confuso........................................................................................25

4.2. Motivao para otimizao ..........................................................................25 4.3. Procedimentos utilizados para otimizao ...................................................26 4.3.1. Medio da Avalanche, Difuso e Confuso ................................26 4.3.1.1. Anlise dos resultados (metrix) ......................................27 4.3.2. Similaridade entre os ndices ........................................................29 4.3.2.1. Anlise dos resultados (similar) .....................................31 4.3.3. Seleo de Polinmios ..................................................................32 Captulo 5 PaplioXP ...................................................................................................33 5.1. PaplioXP - Algoritmo Paplio eXtenso.......................................................33 Captulo 6 Desempenho do PaplioXP ........................................................................35 6.1. Desempenho do PaplioXP frente ao Paplio Tradicional............................35 6.1.1. Anlise dos resultados (sheha) ......................................................35 6.2. Bench-mark do PaplioXP............................................................................37 6.2.1 O algoritmo Rijndael (AES)...........................................................37 6.2.2. PaplioXP comparado ao Rijndael (AES) .....................................37 6.2.2.1. Anlise dos resultados (mortalKombat): PaplioXP x Rijndael(AES).........................................................38 6.2.3. PaplioXP comparado ao Paplio Tradicional ...............................45 6.2.3.1. Anlise dos resultados (mortalKombat): PaplioXP x Paplio Tradicional..................................................45 Concluso........................................................................................................................52 Trabalhos Futuros ...........................................................................................................53 Bibliografia .....................................................................................................................54

VI

ndice de Figuras

Figura 2.1: Conjunto de tcnicas Bsicas que compes a Criptografia .............................. 3 Figura 3.1: Rede de Feistel Codificando............................................................................. 7 Figura 3.2: Codificador Convolucional .............................................................................. 8 Figura 3.3: Mquina de Estados Finitos ............................................................................. 9 Figura 3.4: Computao dos Pesos ..................................................................................... 11 Figura 3.5: Decodificao Viterbi feita para uma cadeia sem erro.................................... 12 Figura 3.6: Decodificao Viterbi feita para uma cadeia com erro ................................... 12 Figura 3.7: Expanso de Chaves......................................................................................... 17 Figura 3.8: Esquemas do modo ECB.................................................................................. 18 Figura 3.9: Esquema do modo CBC ................................................................................... 19 Figura 3.10: Esquema do modo CFB.................................................................................. 20 Figura 3.11: Esquema do modo OFB ................................................................................. 21 Figura 4.1-a: Avalanche, Difuso e Confuso no modo ECB ............................................ 28 Figura 4.1-b: Avalanche, Difuso e Confuso no modo ECB............................................ 28 Figura 4.2: Desvio Padro de 64 Polinmios do Efeito Avalanche no Modo ECB ........... 30 Figura 4.3: Desvio Padro de 64 Polinmios do Efeito Difuso no Modo ECB................ 30 Figura 6.1: Paplio Tradicional x PaplioXP na avalanche no Round no Modo ECB ........ 36 Figura 6.2: Paplio Tradicional x PaplioXP no Hamming Interno no Modo ECB............ 36 Figura 6.3: PaplioXP x Rijndael - Avalanche no Bloco no modo ECB ............................ 39 Figura 6.4: PaplioXP x Rijndael - Avalanche no Bloco no modo CBC ........................... 39 Figura 6.5: PaplioXP x Rijndael - Avalanche no Bloco no modo CFB ............................ 40 Figura 6.6: PaplioXP x Rijndael - Avalanche no Bloco no modo OFB ............................ 40 Figura 6.7: PaplioXP x Rijndael - Confuso no modo ECB ............................................. 41 Figura 6.8: PaplioXP x Rijndael - Confuso no modo CBC ............................................. 41 Figura 6.9: PaplioXP x Rijndael - Confuso no modo CFB.............................................. 42 Figura 6.10: PaplioXP x Rijndael - Confuso no modo OFB ........................................... 42 Figura 6.11: PaplioXP x Rijndael - Difuso no modo ECB .............................................. 43 Figura 6.12: PaplioXP x Rijndael - Difuso no modo CBC.............................................. 43 Figura 6.13: PaplioXP x Rijndael - Difuso no modo CFB .............................................. 44 Figura 6.14: PaplioXP x Rijndael - Difuso no modo OFB .............................................. 44

VII

Figura 6.15: Paplio Tradicional x PaplioXP - Avalanche no Bloco no modo ECB......... 46 Figura 6.16: Paplio Tradicional x PaplioXP - Avalanche no Bloco no modo CBC......... 46 Figura 6.17: Paplio Tradicional x PaplioXP - Avalanche no Bloco no modo CFB ......... 47 Figura 6.18: Paplio Tradicional x PaplioXP - Avalanche no Bloco no modo OFB......... 47 Figura 6.19: Paplio Tradicional x PaplioXP - Confuso no modo ECB .......................... 48 Figura 6.20: Paplio Tradicional x PaplioXP - Confuso no modo CBC .......................... 48 Figura 6.21: Paplio Tradicional x PaplioXP - Confuso no modo CFB .......................... 49 Figura 6.22: Paplio Tradicional x PaplioXP - Confuso no modo OFB .......................... 49 Figura 6.23: Paplio Tradicional x PaplioXP - Difuso no modo ECB............................. 50 Figura 6.24: Paplio Tradicional x PaplioXP - Difuso no modo CBC............................. 50 Figura 6.25: Paplio Tradicional x PaplioXP - Difuso no modo CFB ............................. 51 Figura 6.26: Paplio Tradicional x PaplioXP - Difuso no modo OFB............................. 51

VIII

ndice de Tabelas

Tabela 2.1: Cifra em Grade................................................................................................. 5 Tabela 3.1: Transio de Estados........................................................................................ 9 Tabela 3.2: Smbolos de Sada............................................................................................ 9 Tabela 3.3: Mquina de Estados do Codificador ................................................................ 10 Tabela 3.4: Mquinas de Estado do Decodificador ............................................................ 13 Tabela 3.5: Mquina de Estados - Viterbi Modificado....................................................... 16 Tabela 3.6: Algoritmo Paplio............................................................................................. 22 Tabela 4.1: Polinmios Eleitos ........................................................................................... 32

IX

Resumo do Relatrio de Graduao do curso de Engenharia de Computao da disciplina Relatrio de Graduao, como parte dos requisitos para a obteno do ttulo de Engenheiro de Computao pela Universidade Federal do Rio Grande do Norte.

FREDERIKO S. L. N. DE ARAJO

PAPLIOXP - UMA EXTENSO DO ALGORITMO CRIPTOGRFICO PAPLIO

Orientador: Benjamn Callejas Bedregal Co-Orientador: Ivan Saraiva Silva

Desde as eras mais remotas, o homem sempre teve a necessidade de guardar sigilo em determinados contextos: segredo de estado, contrabando de informao, manobras militares, transaes comerciais, etc. Nestas situaes so utilizadas tcnicas criptogrficas como a esteganografia, utilizao de cdigos e a composio de cifras, afim de que a informao de carter sigiloso fosse protegida. No sculo XXI o uso da criptografia mais presente e difundido, devido ao uso extensivo que fazemos dos meios de comunicao: telefonia celular, comrcio eletrnico, assinatura de servios oferecidos via satelite, etc. No ano de 2002 um grupo de estudiosos do Departamento de Informtica e Matemtica Aplicada (DIMAp) da Universidade Federal do Rio Grande do Norte (UFRN), Natal, Brasil, propuseram um algoritmo Criptogrfico simtrico em blocos que usa Rede de Feistel para codificao dos blocos. Este
X

algoritmo tem o nome de Paplio e baseado nos princpios da decodificao Viterbi e na codificao Convolucional, processando blocos de comprimento 64 bits e trabalhando com chaves criptogrficas de comprimento 128 bits. O presente trabalho prope uma extenso ao algoritmo Paplio de forma a adicionar-lhe a capacidade de variar o modo como cifrar os textos dependendo do texto o qual se est cifrando e de maneira que atinja os melhores ndices criptogrficos possveis, afim de que seja aumentada a dificuldade de se conseguir quebrar a mensagem codificada. Para validar esta proposta de extenso feita ao Paplio foi construdo um grupo de ferramentas para a anlise de textos criptografados dentre as quais se destaca um bench-mark chamado mortalKombat, para se fazer o comparativo entre algoritmos criptogrficos simtricos. Os ndices usados para se medir a qualidade dos textos cifrados foram; avalanche, difuso e confuso. O algoritmo resultante das extenses feitas ao Paplio recebe o nome de PaplioXP (Paplio eXtenso). Foi realizado um estudo comparativo entre o PaplioXP e o padro criptogrfico da atualidade o Rijndael-AES (Advanced Encription Standard), o qual em nossas anlises iniciais se mostra equivalente ao PaplioXP. Os testes foram executados para os 4 modos de operao: ECB, CBC, CFB, OFB na configurao de chave com comprimento de 128 bits e bloco com comprimento de 128 bits para o Rijndael. Para o PaplioXP a chave usada foi de comprimento 128 bits e bloco de comprimento 64 bits. Outro estudo comparativo feito entre o PaplioXP e o Paplio original, agora chamado de Paplio Tradicional, para constatar se de fato houve ganho de desempenho no processo de cifra. Este estudo mostrou que a melhoria da qualidade foi sensvel.

XI

Captulo 1 Introduo

1.1. Introduo
O Paplio um algoritmo criptogrfico simtrico com chave de comprimento 128 bits que codifica blocos de 64 bits baseado em rede de Feistel que usa como funo de substituio o Viterbi Modificado. A funo Viterbi Modificado usada para a codificao de blocos na rede de Feistel, cuja base a Codificao Convolucional e a Decodificao Viterbi. Paplio fruto do trabalho da dissertao de mestrado [RAM] defendida na UFRN. O presente trabalho uma extenso dos estudos iniciados em [RAM], apresentando mudanas que conferem ao Paplio a capacidade de variar a forma com que codifica um texto em funo dele mesmo e no apenas da chave criptogrfica. O trabalho aborda no captulo II algumas tcnicas bsicas de criptografia (cifra, esteganografia e cdigos), captulo III, fundamentos da teoria do Paplio (Rede de Feistel, cdigos Convolucionais, Decodificao Viterbi), definida a funo de substituio usada na Rede de Feistel; o Viterbi Modificado, fala-se sobre modos de operao dos algoritmos Criptogrficos, ECB, CBC, CFB e OFB e por fim apresentado o algoritmo Paplio. No captulo IV so apresentados os argumentos que justificam uma otimizao para ganho de performance criptogrfica no algoritmo Paplio. Em seguida so feitas anlises que comprovam os efeitos da otimizao. No captulo V so apresentadas modificaes para conferir ao Paplio maior versatilidade no processo de codificao. O algoritmo Paplio estendido recebe o nome de: PaplioXP (Paplio eXtenso). E por fim no captulo VI so mostrados ndices que medem a qualidade dos algoritmos criptogrficos (avalanche, difuso e confuso) do PaplioXP e do Rijndael(AES) nos modos de operao ECB, CBC, CFB e OFB. Neste captulo tambm foram exibidos os ndices de qualidade dos algoritmos nos quatro modos de operao para comparao entre o PaplioXP e o algoritmo Paplio agora chamado de Paplio Tradicional.

1.2. Objetivo do trabalho

Este trabalho tem como objetivo conferir ao algoritmo Paplio a capacidade de variar a sua configurao, mudando o modo como codifica um bloco a cada camada da Rede de Feistel com o intuito de tornar a criptografia desempenhada por este mais forte, dificultando a quebra da mensagem, e otimizar a sua estrutura interna, afim de produzir uma criptografia mais eficiente.

Captulo 2 Fundamentos

2.1. Criptografia
A palavra Criptografia provm do Grego que significa oculto e que significa escrita. Desde as civilizaes antigas a criptografia tem sido associada a proteo de informaes de carter militar ou poltico. Sua histria se divide em trs perodos: at a dcada de 1940 era mais uma arte do que uma cincia, muitos dos algoritmos de encriptao no tinham muita fundamentao matemtica e no possuam uma formulao algbrica consistente. Esta poca conhecida como criptografia pr-cientfica. A partir de 1948 com o surgimento da Teoria da Comunicao por Shannon dar-se incio a Criptografia Cientfica, que era mais elaborada e baseada fortemente em conceitos matemticos. Em 1976 surge a criptografia de chave pblica, atribuda ao trabalho de Diffie e Hellman. O organograma na figura 2.1 mostra as trs tcnicas bsicas que compe a criptografia nos dias de hoje.

Criptografia

Cdigos

Cifras

Esteganografia

Figura 2.1: Conjunto de tcnicas Bsicas que compem a Criptografia

2.2. Cdigos
A criptografia feita por cdigos aquela onde o ocultamento do contedo da mensagem baseado no desconhecimento do significado dos smbolos empregados para se escrever a mensagem criptografada. Um exemplo seria um recado gravado em uma secretria eletrnica em lngua Tupi Guarani; pouqussimas pessoas seriam capazes de entender este recado.

2.3. Esteganografia
No decorrer da histria, o desenvolvimento da criptografia deu-se paralelamente ao da esteganografia. O objetivo da esteganografia esconder a existncia da mensagem, mas encontrando-se esta sempre no estado original. Um dos exemplos clssicos da esteganografia atribudo a histria de Histaius que queria convencer Aristgoras de Mileto a revoltar-se contra o rei Persa. Para passar a mensagem, aquele rapou a cabea do mensageiro, tatuou a mensagem no couro cabeludo e esperou que o cabelo crescesse. O mensageiro pde viajar sem problemas e, quando chegou ao destinatrio, rapou a cabea.

2.4. Cifras
Segundo o dicionrio [GLO] a palavra cifra quer dizer: conjunto dos smbolos ou caracteres convencionais de uma escrita que no deve ser compreendida por todos. As cifras podem ser divididas em duas classes: cifras por transposio e cifras por substituio.

2.4.1. Transposio
Na transposio as letras originais do texto so preservadas, existindo apenas uma troca das suas posies. Por exemplo, a palavra RAPOSA pode ser codificada para PARASO. Porm, para mensagens muito curtas, este mtodo torna-se pouco seguro, j que h um nmero limitado de formas para reordenar as poucas letras existentes. Uma das estratgias de transposio sistemtica a cifra "em grade" (veja a tabela 2.1), em que a mensagem escrita com letras alternadas em linhas separadas.

MUDAM-SE OS TEMPOS

M D M E S E P S U A S O T M O

MDMESEPSUASOTMO

Tabela 2.1: Cifra em Grade

2.4.2. Substituio
Na substituio as letras do texto so trocadas por outras letras, nmeros ou smbolos. Por exemplo, a palavra raposa passa a OVLMCV. Um dos primeiros exemplos da substituio achase no Kama-Sutra, recomendando s mulheres que aprendam escrita secreta, de forma a ocultarem as suas relaes. Um dos mtodos seria fazer pares de letras do alfabeto ao acaso e substituir cada letra da mensagem original pelo seu par. Cada cifra por substituio tem um algoritmo e uma chave, sendo o algoritmo o mtodo de cifragem (transposio ou substituio). A chave define o alfabeto de cifra exato a ser usado para uma dada cifragem. Segundo o lingista Auguste Kerckhoffs, a segurana deve depender da chave e no do algoritmo. Outro exemplo clssico a cifra de Csar, onde o imperador se limitava a substituir cada letra da mensagem pela terceira sua frente no alfabeto.

Captulo 3 - Codificador Paplio 3.1. Rede de Feistel


A rede de Feistel uma seqncia de operaes sobre um texto com o objetivo de cifrar este. A rede processa o texto em blocos em um nmero de interaes previamente definido, veja sua representao na figura 3.1, o bloco a ser codificado dividido ao meio (D0: direito, E0: esquerdo) que ir gerar um bloco cifrado que obedece as seguintes equaes. Ei = Di-1 Di = Ei-1 Xor F(Di-1, Sci) Onde "i" representa o nmero da interao da rede de Feistel, a funo "F" tem dois argumentos; o primeiro um semibloco proveniente de uma interao anterior da rede, o outro uma subchave criptogrfica, que um bloco gerado por uma funo de expanso de chaves que usa como argumento a chave criptogrfica. A idia da rede de Feistel est centrada na seguinte propriedade da funo Xor. (A Xor B) Xor A = (A Xor A) Xor B = 0 Xor B = B (A Xor B) Xor B = (B Xor B) Xor A = 0 Xor A = A Que em criptografia utilizado como: <Texto> Xor <Chave> = <criptograma> <criptograma> Xor <Chave> = <Texto>

O que acarreta em: <criptograma> Xor <?> = <?> um sistema sem soluo -- codificador ON TIME PAD. Cada transformao na rede de Feistel preserva um semibloco, e codifica o outro semibloco atravs do Xor deste e o resultado de uma funo de substituio que usa como argumentos uma subchave gerada a partir de um chave secreta e o semibloco preservado. O processo de decodificao consiste em processar o texto da ultima camada para a primeira, usando as subchaves tambm de forma inversa. Algbricamente a decodificao pode ser descrita pelas seguintes equaes. Di = Ei+1 Ei = Di+1 Xor F(Ei+1, Sci)

Figura 3.1: Rede de Feistel Codificando

3.2. Codificador Convolucional


Elias (1955), props um codificador da categoria FEC, (Foward Error Correct) que insere redundncia na mensagem afim de que possa ser corrigida em seu destino. Este codificador chamado de codificador Convolucional, pois o cdigo gerado resultado da soma de bits da mensagem original. Uma descrio do codificador Convolucional de uma arquitetura particular o circuito lgico abaixo.

Figura 3.2: Codificador Convolucional

onde temos um registrador de deslocamentos e duas portas Xor de mltiplas entradas. Para esta arquitetura de Codificador convolucional as entradas das portas Xor podem ser ditadas pelos polinmios geradores G1 e G2 cujo significado ; se um coeficiente for Zero a clula do registrador cuja ordem corresponde ao grau do coeficiente no participar da entrada da porta Xor, mas se o coeficiente for Um a clula participar da entrada. Para que o processo de codificao inicie preciso atribuir um estado ao registrador de deslocamentos (carregar uma palavra), depois disso o codificador opera sobre fluxo de bits que chegam continuamente na entrada. Sua sada representada pela concatenao dos fluxos de X1 e X2. O codificador tambm pode ser visto como uma mquina de estados (vide Figura 3.3). No caso da Figura 3.2, o codificador tem trs clulas de memria (clulas 1, 2, 3), para efeito dos nossos clculos foram consideradas apenas as clulas 2 e 3, (qualquer outra combinao seria possvel) logo temos quatro estados possveis: 0, 1, 2 e 3. Inicialmente, atravs do carregamento do clear do contedo as memrias 2 e 3, o codificador colocado no estado 0. Se o primeiro bit de entrada, que armazenada na clula 1, for 0, o prximo estado permanecer em 0, porm se for

1 ocorrer uma transio de estado, e o prximo estado ser 2. A tabela 3.1 exibe a transio dos estados em funo dos bits de entrada.

ESTADO ATUAL 0 1 2 3

PRXIMO ESTADO, SE Entrada = 0: Entrada = 1: 00 10 00 10 01 11 01 11

Tabela 3.1: Transio de Estados

Conforme a taxa de codificao (1/2), para cada bit de entrada existir 2 bits na sada. A tabela 3.2 exibe o estado atual da memria do codificador e os smbolos de sada em funo das entradas. Por exemplo, se o estado atual do codificador 0 e na entrada tem-se um 0, as sadas X2 e X1 sero 0, logo o smbolo de sada do codificador ser 00. Se o bit de entrada for 1, as sadas X2 e X1 sero 1 e o smbolo de sada 11. A tabela 3.2 exibe os smbolos de sada do codificador de acordo com as entradas.

ESTADO ATUAL 0 1 2 3

SMBOLOS DE SADA, SE Entrada = 0: Entrada = 1: 00 11 11 00 10 01 01 10

Tabela 3.2: Smbolos de Sada

A figura 3.3 exibe a representao da mquina de estados das tabelas 3.1 e 3.2. A tabela 3.3 contempla todos os dados do codificador exibido na figura 3.1.
0/11 1 0/01

0/00

1/00 1/11 2

0/10

1/10

1/01

Figura 3.3: Mquina de Estados Finitos

ESTADO ATUAL 0

ENTRADA 0 1

SADA 00 11 11 00 10 01 01 10

PRXIMO ESTADO 0 2 0 2 1 3 1 3

0 1

0 1

0 1

Tabela 3.3: Mquina de Estados do Codificador

Para o nosso codificador o fluxo de bit de entrada 0 1 0 1 1 1 ter como sada os seguintes smbolos: 00 11 10 00 01 10. A profundidade dessa codificao Q=3, isto , cada bit de entrada influenciar em trs pares sucessivos de smbolos da sada. Portanto, para que o ltimo bit de entrada influencie em trs sadas sucessivas, so necessrios mais dois smbolos de sada. O processo de gerao de mais dois smbolos chamado flushing. O flushing consiste em manter a entrada do codificador com 0 durante dois ciclos de modo a descarregar os flips-flops. Desse modo o fluxo de bit na sada do codificador convolucional ser 00 11 10 00 01 10 01 11.

10

3.3. Decodificador Viterbi


Um dos mais populares algoritmos para decodificao de cdigos Convolucionais o algoritmo Viterbi [JAM]. Ele pertence a classe dos decodificadores chamados de; Decodificadores de Mxima Verossimilhana pois garante a mxima similaridade entre a cadeia codificada no emissor e a cadeia decodificada no receptor. Devido a isso grande sua robustez contra rudos incorporados mensagem ao longo do seu trajeto da fonte emissora para o receptor. Para um codificador Convolucional como mostrado na figura 3.2, podemos implementar um decodificador de mxima verossimilhana comparando-se as 2M seqncias de sada (onde M o comprimento de um fluxo que sai de uma das portas do Codificador Convolucional) com todos os 4(2M) caminhos possveis que partem dos quatro ns (quantidade de smbolos que podem sair por vez concatenando-se as sadas do Codificador Convolucional) e selecionando-se a seqncia de cdigo com a maior correlao cruzada. Este clculo extremamente caro em termos computacionais para um M grande e resulta em uma estrutura de decodificador bastante complexa.

Figura 3.4: Computao dos Pesos

O clculo da mxima verossimilhana feita por Viterbi considera que cada um dos 4 ns possui dois predecessor e no 4 e que somente o caminho que possuir a maior auto-correlao liga um n ao outro. Por exemplo, os caminhos que chegam ao no a podem ter pesos 10 e 6 como mostrado na figura 3.4. Em cada n, o peso do caminho sobrevivente determina o novo peso. Por exemplo, para ti o caminho aa adiciona um peso 2 ao peso 8 do n anterior. A adio de pesos pode ser computada pela correlao dos bits codificados recebidos r1i e r2i com o bit de paridade para cada transmisso p1i e p2i para produzir wi = p1ir1i + p2ir2i.

11

A seguir dois exemplos de decodificao Viterbi; um para uma cadeia recebida sem corrupo e outro para uma cadeia corrompida.

Figura 3.5: Decodificao Viterbi feita para uma cadeia sem erro

Figura 3.6: Decodificao Viterbi feita para uma cadeia com erro

12

A tabela 4.1 exibe a uma mquina de estados finita que representa todas as transies possveis em funo da entrada do decodificador Viterbi. Note que as sadas geradas pelo codificador Convolucional so as entradas do algoritmo Viterbi (veja a tabela ).

ESTADO ATUAL

ENTRADA

SADA

PRXIMO ESTADO

00 11

0 1 1 0 1 0 0 1

0 2 2 0 3 1 1 3

00 11

01 10

01 10

Tabela 3.4: Mquinas de Estado do Decodificador

13

3.4. Viterbi Modificado


A explicao que segue foi uma adaptao de [RAM] O algoritmo desenvolvido por Andrew J. Viterbi foi proposto como soluo para a decodificao convolucional. Os smbolos de sada da codificao convolucional representam a entrada para o algoritmo Viterbi. Portanto, o algoritmo Viterbi s decodifica smbolos gerados pela codificao convolucional. Na codificao convolucional a transio de estado rotulada com os smbolos de sada (vide figura 3.3). A quantidade de transies de cada estado (2n) determinada pela quantidade de bits da entrada n. Assim, o algoritmo Viterbi s tratar a quantidade de bits gerada na sada do codificador convolucional. Alm disto, cada estado s tratar um subconjunto dos rtulos de transio, provocando, desta forma, uma limitao no espao de decodificao. O algoritmo Viterbi Modificado, inicialmente, adota os princpios da Codificao Convolucional (CC) e da Decodificao Viterbi (DV). A partir da definio dos componentes bsicos do codificador: registradores de deslocamento e portas Xor, determinam-se os polinmios geradores do par de bits da sada. Por exemplo, o polinmio gerador da sada X1, da figura 3.2, 111, e o da sada X0 101. Com os componentes bsicos e os polinmios definidos, a tabela da codificao convolucional gerada. A quantidade de estados que comporo a tabela depender do parmetro m do codificador. Para o codificador figura 3.2 ,o valor de m, a quantidade de memrias consideradas para o clculo dos estados de codificao igual a 2, as clulas 2 e 3, logo a tabela ter quatro (22) estados possveis. A tabela 3.1 exibe os valores de sada e de prximo estado, caso as entradas sejam 0 ou 1, para todos os estados possveis do codificador da figura 3.2. O erro no algoritmo Viterbi surge toda vez que o rtulo de entrada no pode ser tratado pelo estado atual. A execuo do algoritmo Viterbi Modificado inicia-se no estado 0 e executa o algoritmo Viterbi, descrito na seo anterior, at que um rtulo de entrada no seja tratvel no estado atual. A fim de tratar qualquer rtulo de entrada, independentemente do estado atual, gerou-se alm da sada j existente (S0) mais uma sada (S1). A sada S0 representa o resultado do algoritmo Viterbi propriamente dito, ou seja, corresponde a um conjunto de rtulos de sada, um rtulo de sada para cada rtulo de entrada. Para o exemplo de um decodificador Viterbi associado ao Codificador Convolucional da figura 3.2 cada par de bits de entrada (rtulo de entrada) gera um bit de S0 (rtulo de sada). A sada

14

S1 informa se cada rtulo de sada de S0 foi obtido de acordo com o algoritmo Viterbi, ou se foi obtida de forma especial (Viterbi Modificado). Em outras palavras, informa quando um rtulo de entrada no era tratvel pelo estado atual do polinmio gerador do algoritmo Viterbi. Quando um rtulo de sada de S0 obtido de acordo com o algoritmo Viterbi a sada S1 gera o bit 0, do contrrio a sada S1 gera o bit 1. A tabela 3.4 exibe a mquina de estados do Decodificador Viterbi para o codificador da figura 3.2. Para que seja possvel executar uma codificao a partir dos dados da tabela 3.4 necessrio que cada estado atual possa tratar todos os rtulos de entrada (00,01,10,11), caso contrrio a codificao no se processar. Por exemplo, se o estado atual for 0 e a entrada for 01, no tem como codificar este par de bits. No estado zero, segundo a tabela 3.4, somente os pares 00 e 11 podero ser codificados para 0 e 1, respectivamente. A partir da tabela gerada pela codificao convolucional, identifica-se os rtulos que podero ser tratados por cada estado, acrescentando ao novo fluxo de sada (S1) a informao 0. Por exemplo, no caso da tabela 3.5, os pares 00 e 11 so tratados pelos estados 0 e 1, neste caso, os fluxos de sada dos respectivos pares recebero a informao 0 na sada S1, enquanto a sada S0 receber o resultado do algoritmo Viterbi. No caso dos rtulos de entrada que no podem ser tratados pelo estado atual, a proposta apresentada nesta dissertao que o rtulo no tratvel passe pelo processo de codificao convolucional considerando isoladamente cada bit formador do rtulo. Para o processo de codificao convolucional usa-se como estado inicial o estado atual. Nota-se que a codificao convolucional vai gerar s/n de rtulos adicionais, sendo n/s a taxa de codificao convolucional. Com este procedimento os rtulos gerados podem ser tratados pelo algoritmo Viterbi. A aplicao do algoritmo Viterbi geraria um rtulo de tamanho n para cada um dos rtulos adicionais gerados. Entretanto o que interessa para a codificao a gerao de um nico rtulo de tamanho n. A soluo adotada consiste em considerar, para compor o fluxo S0, apenas o primeiro dos s/n rtulos de tamanho n (o fluxo S1, nestes casos, e s nestes casos recebe o valor 1). Para a continuao do processo de codificao usando o algoritmo Viterbi adota-se como estado atual o estado final do processo de codificao convolucional, at que um novo rtulo no tratvel seja encontrado ou terminar a codificao. Como exemplo de execuo do algoritmo Viterbi Modificado, considerando uma taxa de 1/2, tem-se: Seja o fluxo de bits 0011000001, nota-se que os dois primeiros rtulos de dois bits podem ser tratados com o algoritmo Viterbi iniciando-se no estado 0 (zero). O terceiro rtulo, entretanto, no pode ser tratado, pois, o estado atual, no momento de sua codificao o estado 2 (dois), ver tabela 3.4. O processo de codificao convolucional do rtulo no tratvel resulta
15

nos rtulos adicionais 10 e 11 e no estado final 0 (zero). O quarto rtulo tratvel, usando-se o algoritmo Viterbi, pelo estado final do processo de codificao convolucional, resultando, aps a aplicao do algoritmo de viterbi no estado atual 0 (zero). Mais uma vez nota-se, neste exemplo, que o quinto rtulo no tratvel por este estado. Repete-se ento o processo de codificao convolucional, seguido de decodificao Viterbi, considerando-se apenas o primeiro rtulo (de tamanho 1) da sada da decodificao Viterbi. Os fluxos de bit S0 e S1 so independentes. Ao final da codificao os dois fluxos so concatenados, de forma a gerar um fluxo de bit de mesmo tamanho do original. Para o caso de um algoritmo Viterbi Modificado, baseado no algoritmo Viterbi com os polinmios da figura 3.2,o processo descrito acima pode ser simplificado usando-se a tabela 3.5.

ESTADO ATUAL 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3

ENTRADA 00 01 10 11 00 01 10 11 00 01 10 11 00 01 10 11

S0 0 0 1 1 1 0 1 0 0 1 0 1 0 0 1 1

S1 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1

PRXIMO ESTADO 0 2 1 2 2 2 1 0 0 3 1 3 0 1 3 3

Tabela 3.5: Mquina de Estados - Viterbi Modificado

16

3.5. Expanso de Chaves


O algoritmo Paplio utiliza uma chave de 128 bits, a qual gera 16 subchaves. As subchaves criadas so armazenadas temporariamente em um vetor at que o processo de codificao do bloco seja finalizado. Para gerao das subchaves (vide figura 3.7), a tabela 3.5 de codificao utilizada. O esquema de gerao o seguinte: as quatro primeiras subchaves, rotuladas SC1, SC2, SC3 e SC4 so geradas aplicando-se a codificao Viterbi Modificado na chave inicial de 128 bits, a qual gera dois fluxos de 64 bits. Os dois fluxos de 64 bits passam pelo mesmo processo anterior e geram quatro fluxos de 32 bits que correspondem s quatro primeiras subchaves. Para gerar as quatro subchaves seguintes, concatenam-se os quatro fluxos gerando um s de 128 bits e aplicando-se todo o processo novamente at que subchaves. O esquema se repete at que, dezesseis subchaves sejam criadas. gere mais quatro

128 bits

Chave Chave Viterbi Modificado

64 bits

64 bits

CE Viterbi Modificado

CD Viterbi Modificado

32 bits

32 bits

32 bits

32 bits

CE

CD

CE

CD

Figura 3.7: Expao de Chaves

17

3.6. Modos de Operao 3.6.1. ECB - Eletronic Code Book Mode


No modo ECB o texto claro dividido em blocos de igual tamanho, que so codificados independentemente usando-se a mesma chave criptogrfica. A caracterstica de independncia entre os blocos codificados permite ao codificador em modo ECB por exemplo codificar uma base de dados que organizada em arquivos consultados de maneira aleatria. A independncia entre os blocos tambm garante ao modo ECB robustez contra erros pois caso um bloco apresente algum erro, s ele ser prejudicado, e no toda a mensagem. A figura 3.8 ilustra os esquemas do codificador e do decodificador no modo ECB.

Figura 3.8: Esquemas do modo ECB

18

3.6.2. CBC - Cipher Mode Chaing Mode


O modo CBC incorpora um mecanismo de retroalimentao ao cifrador de blocos, o que significa que o bloco anterior influencia na construo do bloco atual. Isso conseguido fazendo-se uma operao XOR entre o bloco da mensagem que se quer codificar e o ltimo bloco cifrado obtido. Em seguida o bloco operado codificado usando-se um codificador em blocos. Para evitar o caso em que duas mensagens iguais que codificadas com a mesma chave obtenham cifras iguais usado um vetor de inicializao que pode ser um bloco aleatrio colocado no incio da mensagem afim de influenciar na construo de todos os blocos da mensagem. O vetor de inicializao tem tambm a funo de emular o bloco cifrado anterior que ser usado na construo do primeiro bloco. A figura 3.9 ilustra os esquemas do codificador e do decodificador no modo CBC.

Figura 3.9: Esquema do modo CBC

19

3.6.3. CFB - Cipher Feedback Mode


O modo CBC apenas codifica ou decodifica corretamente se receber ou transmitir um bloco completo de informao. Isto pode se converter em um srio inconveniente se o protocolo de comunicao usado variar o tamanho do bloco de informao com o qual trabalha. A proposta do modo CFB trabalhar com uma quantidade de dados inferior ao tamanho do bloco. O esquema usado para explicar o modo CFB pode ser visualizado na figura 3.10. Ele consiste em uma fila de comprimento de um bloco que a entrada de um cifrador no modo ECB. Esta fila por sua vez alimentada pelo produto do Ou-Exclusivo entre o semibloco de texto que se deseja codificar e a sada do cifrador. Para o decodificador o esquema similar, mas com a diferena de que os semiblocos que alimentam a fila so retirados do texto de entrada. Como no modo CBC aqui tambm faz-se necessrio pelas mesmas razes um vetor de inicializao.

Figura 3.10: Esquema do modo CFB

20

3.6.4. OFB Output Feedback Mode


O modo CFB foi projetado para resolver o problema do desperdcio de banda do canal, mas possui uma fraqueza: se um bloco transmitido apresentar algum tipo de erro na transmisso, toda a mensagem decriptada no destino estar perdida. Em um ambiente com baixa taxa de erro como uma rede de computadores essa limitao do modo CFB no crtica. Porm quando se trata de comunicaes mveis, aonde o tempo de envio de um pacote grande, cerca de 0,25s e o sinal est sujeito a interferncias eltro magnticas das mais diversas como; flutuaes na rede eltrica, uma outra transmisso que esteja operando na mesma faixa de freqncia, falha em algum dos dispositivos de transmisso enfim; a probabilidade de um pacote est corrompido no um fator que possa ser desprezado, o que torna bastante desejvel que a corrupo de um pacote no ato da transmisso no prejudique a decodificao dos demais blocos da mensagem. Para suprir essa deficincia do modo CFB a idia inicial que se tem a da remoo do encadeamento, mas esta abordagem seria ao custo de uma mesma mensagem encriptada com a mesma chave sempre resultar em um mesmo criptograma. A soluo encontrada foi manter a realimentao, mas de uma forma controlada a qual no sofresse influncia alguma do meio externo. Isso implementado com uma pequena modificao na estrutura do modo CFB, onde o bloco de entrada da fila que alimenta o cifrador de blocos a sua prpria sada.

Figura 3.11: Esquema do modo OFB

21

3.7. Algoritmo Paplio


Para a encriptao de um texto o algoritmo Paplio se vale de uma rede de Feistel que usa como funo de substituio o Viterbi Modificado. A entrada de Paplio consiste em dois argumentos: o texto que se deseja cifrar, e a chave criptogrfica. A primeira ao de Paplio submeter a chave a um processo de expanso de chave, que a gerao a partir da chave ,128 bits, de 16 blocos de 32, visto na seo 3.5. Em seguida o texto dividido em blocos de 64 bits e cada um deles processado pela Rede de Feistel. Procedimento Paplio (texto, cifra, chave) Incio caracter bloco[BLOCO_PAPILIO]; caracter subChave[ROUND_PAPILIO][HALF_BLOCK]; inteiro i;

ExpansoChave (chave); Enquanto (i < tamanho(texto)) faca inicio copia (bloco, texto[i], BLOCO_PAPILIO); Feistel (bloco, subChave); cifra := cifra + bloco; i := i + BLOCO_PAPILIO; fim fim
Tabela 3.6 Algoritmo Paplio

22

O processo de decriptao bastante similar, diferindo apenas em dois aspectos: o texto de entrada um texto anteriormente cifrado por Paplio e a Rede de Feistel processa da ltima camada para a primeira para recuperar o texto original. Paplio foi implementado em linguagem C nos quatro modos de operao: ECB, CBC, CFB e OFB. Para a computao da funo de substituio Viterbi Modificado usada a representao em forma de mquina finita de estados, que construda por uma rotina que implementa o Viterbi Modificado.

23

Captulo 4 - Otimizao Paplio 4.1. Caractersticas desejveis em um algoritmo criptogrfico


Um algoritmo criptogrfico deve oferecer a maior dificuldade possvel descoberta por indivduo no autorizado do contedo da mensagem cifrada. Os algoritmos da atualidade se baseiam em trs critrios para atingir tal objetivo, so eles: avalanche, difuso e confuso.

4.1.1. Avalanche
A avalanche diz respeito a influncia que um bit da chave ou do texto claro tem no resultado do processo de cifra. considerado bom o algoritmo onde havendo modificao de um bit na chave ou no texto claro, influencie no estado de 50% dos bits do texto cifrado[RAM]. Essa caracterstica torna difcil ao criptoanalista deduzir a chave ou o texto claro a partir do texto cifrado, pois se ele erra em pelo menos um bit o texto cifrado que ele obtm diferente do cifrado do original em 50% dos bits.

4.1.2. Difuso
A difuso a destruio da estatstica dos smbolos presentes no texto cifrado. Ela cobe o ataque estatstico, que se baseia na idia de que smbolos do texto cifrado tem freqncia de apario similar aos smbolos do texto claro. Caso o texto claro seja proveniente de uma linguagem natural, basta que o criptoanalista disponha de uma tabela da freqncia natural de apario destes caracteres para fazer a correspondncia um para um dos smbolos do texto cifrado e do texto claro.

24

4.1.3. Confuso
A confuso o quo obscura a relao entre o texto claro e o texto cifrado. Quando um bit da chave ou do texto claro alterado o algoritmo que satisfaz a confuso deve produzir um texto cifrado com smbolos diferentes de quando no lhe alterado nenhum bit na chave ou no texto claro. A confuso similar a avalanche, s que ela se preocupa com os smbolos gerados e no com o estado dos bits.

4.2. Motivao para otimizao


O algoritmo Paplio utiliza como funo de substituio o Viterbi Modificado, que pode ser visto como uma mquina de estados que construda pelo algoritmo Viterbi Modificado o qual tem como entrada um par de polinmios em notao binria. Os polinmios so ento fator determinante no processo de cifra influenciando diretamente nos valores dos ndices de avalanche, difuso e confuso. Para tornar o algoritmo Paplio mais eficiente fomos levados a selecionar um conjunto de polinmios que confiram a Paplio bons ndices criptogrficos contribuindo diretamente para tornar a criptografia produzida por ele mais forte.

25

4.3. Procedimentos utilizados para otimizao 4.3.1. Medio da Avalanche, Difuso e Confuso
Inicialmente foram coletados ndices de avalanche, difuso e confuso para 64 polinmios em notao binria. Para os testes de Confuso e Difuso foram usados 3136 caracteres de textos em lngua Inglesa, mais precisamente um dos livros do projeto Gutenberg [GUT] onde foram desprezados os primeiros 400 caracteres para a eliminao do cabealho que contm a descrio de cada um. As chaves usadas nestes teste so geradas de modo aleatrio, como tambm os blocos de texto usados no teste da avalanche. Para se medir a avalanche que o percentual de bits alterados na sada do codificador quando se altera um bit do texto de entrada, fez-se a mdia das distncias de Hamming entre o bloco de texto encriptado a partir de um bloco de texto claro e o bloco provenientes da encriptao do bloco de texto claro alterado em um bit em todas as possibilidades. Para se medir a difuso, ou destruio da informao estatstica dos caracteres do texto encriptado, foi calculado o desvio padro das freqncias do conjunto de caracteres do texto cifrado. Para se medir a confuso que a influncia que um bit da chave ou do texto claro tem na formao do criptograma foi usada a mdia das distncias Euclidianas entre o texto encriptado do texto claro com uma chave e todos os textos resultantes da encriptao do texto claro e da chave alterada em um bit. Para a realizao destes testes foi implementado em linguagem C um programa chamado metrix, cuja entrada um arquivo que contm a descrio dos textos que sero utilizados no teste (quantidade de textos, seu tamanho e seu path), e tambm a quantidade de avalanches que ser feita por cada polinmio. Como sada o programa retorna trs arquivos correspondentes a cada ndice (avalanche, difuso e confuso), cada linha destes arquivos tem um par de nmeros; polinmio e ndice obtido. Para se permitir uma melhor leitura dos dados os resultados obtidos das medidas foram normalizados de forma a ficarem entre zero e um. Aps a normalizao o resultado dos trs arquivos foi plotado em um nico grfico onde o eixo horizontal corresponde aos polinmios e o vertical ao valor normalizado do ndice obtido. Vale ainda destacar que a curva relativa ao ndice difuso foi exagerada por um fator de 10x para que fosse possvel a sua visualizao. Nas figuras 4.1-a
26

e 4.1-b so exibidos os resultados dos ndices avalanche, difuso e confuso para para dois textos diferentes (tor0 e tor1 respectivamente) no modo ECB.

4.3.1.1. Anlise dos resultados (metrix)


Podemos observar que o ndice avalanche, representado pela curva vermelha, para a grande maioria dos polinmios atinge ndice superior aos 45%, o que bom pois est prximo do valor terico de 50%. Constatamos ainda que a difuso no ultrapassou os 4% (3% para a figura 4.1-a e 3,7% para a figura 4.1-b) de desvio padro o que demonstra que no h relao estatstica entre o texto claro e o criptograma. Para avalanche a grande maioria dos polinmios supera os 35% de dissimilaridade entre o texto cifrado com uma chave e o mesmo texto cifrado com a chave alterada em um bit. Os dois grficos usam textos diferentes e chaves diferente, mas como se pode ver os resultados so bastante similares para o conjunto de polinmios investigados. Como ltima observao constatamos que o comportamento dos polinmios correspondentes a metade direita de ambos os grficos exibe um resultado inferior comparada a metade esquerda.

27

Figura 4.1-a: Avalanche, Difuso e Confuso no modo ECB

Figura 4.1-b: Avalanche, Difuso e Confuso no modo ECB

28

4.3.2. Similaridade entre os ndices


Com base nos resultados obtidos nesta primeira anlise julgou-se por bem avaliar o comportamento de Paplio para constatar se os ndice obtidos podem ser sempre, ou em grande maioria das vezes, conseguidos independente do texto e da chave criptogrfica, sendo ele funo apenas dos polinmios. Para que isso fosse confirmado, foi desenvolvido um programa chamado similar em linguagem C cuja entrada um arquivo contendo informaes sobre: a quantidade de arquivos a serem processados, o tamanho deles, seus caminhos, a quantidade de avalanches serem feitas, e a quantidade de interaes do programa. Para cada teste foram processados 10 arquivos [GUT], que foram uniformemente distribudos para o conjunto de polinmios. O programa nada mais faz do que medir o desvio padro dos ndices avalanche e difuso para 100 interaes de todos os 64 polinmios. As chaves so geradas de maneira aleatria como tambm os blocos do teste avalanche. Optou-se por no medir a similaridade do ndice Confuso atingidos plos polinmios em virtude da execuo do teste para Confuso ter custo computacional elevado e pelo fato verificado nas curvas de ndice feitas pelo programa metrix ,figuras 12-a e 12-b, que o efeito Confuso est correlacionado com o efeito avalanche, o que significa que a economia que estamos fazendo no representa prejuzo algum na qualidade da anlise similaridade dos ndices atingidos plos polinmios geradores de mquinas de estado Paplio. O programa similar gera dois arquivos de sada, um referente aos desvios para o ndice difuso e o outro como os desvios referente aos desvios do ndice avalanche. O programa foi executado cinco vezes e as curvas foram plotadas todas em um mesmo grfico para conferir se h convergncia de valores. Para cada execuo do programa foi utilizado um conjunto de dez textos que no foram usados nos outros testes.

29

Figura 4.2: Desvio Padro de 64 Polinmios do Efeito Avalanche no Modo ECB

Figura 4.3: Desvio Padro de 64 Polinmios do Efeito Difuso no Modo ECB

30

4.3.2.1. Anlise dos resultados (similar)


O resultado que vemos nos grficos nos d as seguintes certezas: o comportamento das mquinas de Paplio sempre o mesmo, pois as curvas provenientes de chaves diferentes e textos diferentes apresentam desvios padres muito baixos. No caso da Avalanche isso muito forte, por ela ser medida usando-se blocos aleatrios podemos afirmar que as curvas apresentadas na figura 4.2 exibem o comportamento geral do Paplio para a avalanche. Para as curvas exibidas na figura 4.3 os textos influenciam sobre o ndice difuso conseguido, mas a variao considerada pequena, pois valores de picos das curvas so muito pequenos, inferiores a 1%, o que implica que em termos de desempenho as mquinas de estado Paplio se comportam de maneira similar. Logo caso ela seja uma boa mquina, isto , confere a encriptao Paplio ndices Avalanche, Difuso e Confuso bons, ela tem alta probabilidade de sempre dar ao algoritmo um bom desempenho.

31

4.3.3. Seleo de Polinmios


A certeza do comportamento regular das mquinas de Paplio nos impulsioram a fazer mais uma investigao: descobrir um subconjunto de Polinmios que confira a encriptao Paplio bons ndices criptogrficos. Foi ento escrito um programa chamado torneio em linguagem C para fazer a seleo de tais polinmios. Foi usado como critrio de otimizao o ndice Avalanche, por ser barato em termos computacionais e por haver correlao direta entre uma boa Avalanche e bom ndice Confuso. Julgou-se por bem desprezar o resultado da difuso na escolha dos polinmios bons, pelo fato dos grficos apresentados pelo metrix no que se refere a difuso terem sido consideradas boas em geral para todos os Polinmios, prximas do limite terico de zero, mesmo a parte irregular tinha um erro inferior aos 4%, o que o bom senso em engenharia diz que um erro aceitvel est na casa dos 3%. Para a seleo dos Polinmios foram considerados apenas os 32 primeiros pois de antemo sabemos que seu comportamento sempre melhor do que os seus 32 subsequentes, como mostrado pelas curvas provenientes de metrix. O torneio, implementou a estratgia de fornecer ao Paplio uma mquina gerada pelo polinmio avaliado, e fazer uma srie de 50 avalanches usando blocos e chaves geradas de forma aleatria. Em cada interao do programa marca ponto Polinmio que chegar mais perto do valor ideal que de uma Avalanche de 50%. Para se evitar que cassemos em um timo local, um polinmio era considerado elegvel se marcasse 20 pontos, ento ele era retirado do torneio, e o programa continuava a processar sobre os demais, at que fossem selecionados oito polinmios. Posteriormente o programa foi executado com uma entrada mais difcil, agora os Polinmios tinham que marcar 50 pontos para serem considerados eleitos, e o resultado se repetiu. Os polinmios vencedores do torneio se apresentam na tabela 4.1.

O POLINMIOS ELEITOS NO TORNEIO 14 21 22 23 28 29 30 31

Tabela 4.1 Polinmios Eleitos

32

Captulo 5 PaplioXP 5.1. PaplioXP - Algoritmo Paplio eXtenso


Com os resultados obtidos nas sees anteriores apresentamos aqui uma proposta de extenso para o Algoritmo Paplio visando uma criptografia mais forte comparvel a dos melhores algoritmos existentes na atualidade, aumentando consideravelmente as formas com as quais ele encripta um texto. Na abordagem Tradicional do Paplio, trabalha apenas com uma mquina de estados e a usa em todo processo. A mquina usada para o Paplio Tradicional era a gerada pelo polinmio 61. A proposta para PaplioXP que se use um conjunto de mquinas de Paplio, mais precisamente 8 mquinas, as geradas a partir dos polinmios eleitos pelo programa torneio. Essas mquinas so escolhidas a cada rodada da rede de Feistel, usando-se uma funo de disperso dupla. A razo para o uso de uma funo de disperso dupla que elas retornam ndices que so equiprovveis para um vasto conjunto de entradas, conforme [SZW]. As entradas usadas na funo de disperso dupla so o valor da rodada corrente e o semibloco que serve como entrada para a funo de substituio na rede de Feistel. A estrutura de Feistel sempre garante o retorno deste semibloco rodada rodada o que significa que o algoritmo sempre acertar mquina de estados que ser usada no processo de encriptao, e sempre acertar as mquinas para o processo de decriptao. Outra modificao o estado inicial que a mquina de estados assume na funo de substituio Viterbi Modificado; na abordagem tradicional ela sempre usava um valor fixo, (zero) para qualquer chave e em todas as situaes. A modificao proposta que se aplique tambm uma funo de dispero para se determinar o estado inicial da funo Viterbi Modificado. A funo de dispero utilizada a mesma para a seleo das mquinas de estado nas rodadas da rede de Feistel, ele usa com entradas o bloco que ser processado pela funo Viterbi Modificado e um inteiro de valor constante para a aplicao. Esta modificao na funo de substituio no lhe tira a condio de funo, pois a funo de dispero tambm uma funo e sabemos da matemtica elementar que a composio de funes tambm uma funo. Essas duas modificaes conferem ao PaplioXP um versatilidade incrvel. Imagine na abordagem tradicional usvamos apenas uma funo de substituio. Agora temos a possibilidade de escolha de (4x8)16 possibilidades de funes de substituio o que nos d um total de 280 escolhas para funes de substituio para a encriptao de cada bloco. O mais
33

interessante que essas configuraes so feitas dinamicamente, em funo do texto que se quer codificar, o que torna a quebra de um bloco por anlise do texto codificado virtualmente impossvel pelo fato do processo no ser dependente apenas da chave criptogrfica, mas tambm da prpria mensagem que se deseja recuperar.

34

Captulo 6 Desempenho do PaplioXP 6.1. Desempenho do PaplioXP frente ao Paplio Tradicional


Para comprovar o ganho de performance do PaplioXP em relao a abordagem Tradicional de Paplio foi confeccionado um programa chamado de sheha que mede a avalanche a cada rodada, comparando os blocos gerados pela codificao de um bloco e do mesmo bloco alterado em um bit no incio. O valor mostrado no grfico por rodada o somatrio das distncias de Hamming entre todos os blocos possveis gerados alterando-se um bit (so 64 possibilidades) e o bloco original. Sheha tambm mede o Hamming Interno, que o percentual de bits alterados com relao ao bloco de entrada a cada rodada, no se fazendo alterao alguma no bloco de entrada.

6.1.1. Anlise dos resultados (sheha)


O grfico que exibe o comparativo entre PaplioXp e Paplio Tradicional , figura 6.1, mostra que a avalanche progressiva rodada aps rodada e converge em ambos aps a sexta rodada. Repare que a curva do Paplio Tradicional majorada pela curva exibida pelo PaplioXP. Isto implica PaplioXP tem um desempenho melhor em relao ao Tradicional, atingindo a avalanche de 50% com menos rodadas. Para 64 blocos de 64 bits cada a Avalanche atingida quando o somatrio das distncias de Hamming igual a 2048 bits alterados. O grfico que exibe o comparativo do Hamming Interno entre PaplioXp e a abordagem Tradicional, figura 6.2, mostra que neste ponto eles so equivalentes.

35

Figura 6.1: Paplio Tradicional x PaplioXP na avalanche no Round no Modo ECB

Figura 6.2: Paplio Tradicional x PaplioXP no Hamming Interno no Modo ECB

36

6.2. Bench-mark do PaplioXP


Para sabermos de fato em que patamar est o PaplioXP ns o comparamos com o mais eminente representante do estado da arte da criptografia simtrica que o Rijndael, o padro criptogrfico de chave privada do sculo XXI.

6.2.1 O algoritmo Rijndael (AES)


Em outubro de 2000 o NIST (National Institute for Standards and Technology) anuncia oficialmente a adoo do algoritmo Rijdael como novo padro Criptogrfico para emprego em aplicaes criptogrficas militares culminando em um processo de mais de trs anos destinado a proporcionar a comunidade internacional um novo algoritmo de criptografia, potente, eficiente e fcil de implementar. A palavra Rijndael usada para referenciar este algoritmo um acrnimo formado pelos nomes dos seus autores, os belgas Joan Daemen e Vincent Rijmen. O critrio de escolha usado pelo NIST foi um concurso pblico, onde o estudo, reviso e avaliao foram feitos por membros da comunidade internacional de criptografia. AES um sistema de encriptao por blocos, projetado para manejar tamanho de chaves e de blocos variveis, ambos compreendidos entre os 128 bits e 256 bits. Realiza vrias de suas operaes internas ao nvel de byte interpretando estes como elementos de um corpo de Galois GF(28).

6.2.2. PaplioXP comparado ao Rijndael (AES)


PaplioXP foi comparado com o Rijndael nos modos criptogrficos ECB, CBC,CFB e OFB, usando chave de comprimento 128 bits. A implementao usada do Rijndael foi a da biblioteca criptogrfica crypto disponvel no site da organizao OpenSSL [OPE]. Para se efetuar a comparao entre os dois algoritmos foi escrito um programa em linguagem C chamado mortalKombat que tem como entrada um arquivo que diz quantos textos devem ser processados, o seu tamanho, o caminho deles e a quantidade de avalanches que executada. O mortalKombat aplica avalanche em 50 blocos sorteados aleatoriamente de comprimento 128 bits, pois esse o tamanho mnimo que o Rijndael trabalha, fazemos ento com que PaplioXP codifique dois blocos ao invs de um. Nos testes da Confuso e da Difuso so utilizados textos provenientes do site Projeto Gutenberge [GUT]. As chaves para todos os teste so sorteadas de maneira aleatria.
37

6.2.2.1. Anlise dos resultados (mortalKombat): PaplioXP x Rijndael(AES)


No que se refere ao ndice Avalanche (o ideal que se atinja 50%) vemos que o PaplioXP tem desempenho praticamente o mesmo do que Rijndael nos modos ECB e CBC (figuras 6.3, 6.4). Nos modos CFB e OFB ( figuras 6.5 e 6.6) podemos considerar um empate tcnico. No quesito Confuso (ganha que tiver em torno dos 50%) a curva do Rijndael majora a do PaplioXP, mas por uma diferena muito pequena (ver figuras 6.7, 6.8, 6.9, 6.10). No quesito Difuso (ganha quem obter o menor ndice) a disputa se deu na casa dos centsimos (veja as figuras 6.11, 6.12, 6.13, 6.14) onde hora o PaplioXP ganhava, hora o Rijdael.

38

Figura 6.3: PaplioXP x Rijndael - Avalanche no Bloco no modo ECB

Figura 6.4: PaplioXP x Rijndael - Avalanche no Bloco no modo CBC

39

Figura 6.5: PaplioXP x Rijndael - Avalanche no Bloco no modo CFB

Figura 6.6: PaplioXP x Rijndael - Avalanche no Bloco no modo OFB

40

Figura 6.7: PaplioXP x Rijndael - Confuso no modo ECB

Figura 6.8: PaplioXP x Rijndael - Confuso no modo CBC

41

Figura 6.9: PaplioXP x Rijndael - Confuso no modo CFB

Figura 6.10: PaplioXP x Rijndael - Confuso no modo OFB

42

Figura 6.11: PaplioXP x Rijndael - Difuso no modo ECB

Figura 6.12: PaplioXP x Rijndael - Difuso no modo CBC

43

Figura 6.13: PaplioXP x Rijndael - Difuso no modo CFB

Figura 6.14: PaplioXP x Rijndael - Difuso no modo OFB

44

6.2.3. PaplioXP comparado ao Paplio Tradicional


No intuito de constatar at que ponto as alteraes incorporadas ao PalioXP valem a pena, ele foi confrontado com o seu predecessor o Paplio Tradicional. O confronto foi da mesma forma que o feito entre PaplioXP e Rijndael.

6.2.3.1. Anlise dos resultados (mortalKombat): PaplioXP x Paplio Tradicional


Para Avalanche vemos que o PaplioXP tem desempenho sensivelmente melhor do que o Paplio Tradicional tendo um valor mdio mais prximo do ideal de 50% de bits alterados nos modos ECB e CBC (figuras 6.15, 6.16). Nos modos CFB e OFB (figuras 6.17 e 6.18) podemos considerar um empate tcnico. Na anlise da Confuso (ganha que tiver em torno dos 50% de dissimilaridade entre os textos) a curva do PaplioXP majora a do Paplio Tradicional, mas por uma diferena muito pequena mas que no pode ser desprezada (ver figuras 6.19, 6.20, 6.21, 6.22). Na Difuso (ganha quem obter o menor ndice) o PaplioXP se mostrou forte em relao ao Tradicional no modo ECB (veja figura 6.23). Regular no modo CBC e CFB (veja figuras 6.24, 6.25) e teve desempenho inferior ao Tradicional no modo OFB (veja figura 6.26).

45

Figura 6.15: Paplio Tradicional x PaplioXP - Avalanche no Bloco no modo ECB

Figura 6.16: Paplio Tradicional x PaplioXP - Avalanche no Bloco no modo CBC

46

Figura 6.17: Paplio Tradicional x PaplioXP - Avalanche no Bloco no modo CFB

Figura 6.18: Paplio Tradicional x PaplioXP - Avalanche no Bloco no modo OFB

47

Figura 6.19: Paplio Tradicional x PaplioXP - Confuso no modo ECB

Figura 6.20: Paplio Tradicional x PaplioXP - Confuso no modo CBC

48

Figura 6.21: Paplio Tradicional x PaplioXP - Confuso no modo CFB

Figura 6.22: Paplio Tradicional x PaplioXP - Confuso no modo OFB

49

Figura 6.23: Paplio Tradicional x PaplioXP - Difuso no modo ECB

Figura 6.24: Paplio Tradicional x PaplioXP - Difuso no modo CBC

50

Figura 6.25: Paplio Tradicional x PaplioXP - Difuso no modo CFB

Figura 6.26: Paplio Tradicional x PaplioXP - Difuso no modo OFB

51

Concluso

A idia de seleo de Polinmios do algoritmo Paplio, de acordo com os ndices Difuso, Confuso e Avalanche o confere uma sensvel melhoria em relao a estes. Contudo a inovao principal incorporada ao algoritmo Paplio o uso de um conjunto de funes de substituio que so escolhidas a cada rodada na Rede de Feistel em funo do bloco que se quer codificar. A escolha do estado inicial da funo Viterbi Modificado tambm em funo do bloco que se quer codificar na entrada. Isto conferem uma versatilidade enorme ao algoritmo permitindo que se tenha a opo de 280 funes de substituio diferentes para a codificao de cada bloco. Com isso temos convico de que o nico ataque possvel para se quebrar a codificao de um bloco feita por PaplioXP a fora bruta, j que a codificao fortemente dependente do texto de entrada, que o segredo que se quer descobrir.

52

Trabalhos Futuros

Uma das extenses propostas para Paplio o nmero de rodadas variado, o que permite a se optar por um processo de ciframento mais rpido e com uma boa segurana (aplicaes domsticas) ou um processo um pouco mais lento, mas com alto grau de segurana (aplicaes comerciais e militares). Outra extenso a procura de outros conjuntos de mquinas de estado, o que pode resultar em Paplios personalizados ou Paplios mais fortes caso se amplie o tamanho do conjunto de mquinas de estado que o PaplioXP gerencia. Por ltimo seria interessante ao Paplio incorporar idias inseridas pelo Rijndael como comprimento do bloco varivel e tamanho da chave varivel, o que o tornaria extremamente verstil oferecendo uma gama de opes para operao.

53

Bibliografia

[SZW]: SZWARCFITER, Jayme; MARKENZON, Lilian. Estruturas de Dados e Seus Algoritmos. Rio de Janeiro, LTC, 1994. [JAM]: SPILKER, James J. Jr. Digital Communications by Satellite. Englewood Cliffs, New Jersey. Prentice Hall. 1977. [SCN]: SCHNEIER, Bruce. Applied Cryptography Second Edition: protocols, algorithms, and source code in C. USA. John Wiley & Sons, inc. 1996. [RAM]: RAMOS, Karla, Darlene Nepomuceno. Proposta de um Algoritmo de Criptografia Baseado no Algoritmo Viterbi e Codificao Convolucional. Dissertao de Mestrado. UFRN. 2002. [GLO]: FERNANDES, Francisco; LUFTY, Celso; GUIMARES, Marques. Dicionrio Brasileiro Globo. So Paulo. Globo. 1991 [NUM]: numaboa. Acessado em 26 de julho de 2003 http://www.numaboa.com/criptologia [CIE]: cinenciaj. Acessado em 26 de julho de 2003 http://www.ajc.pt/cienciaj/n32/escrita.php [OPE]: Projeto OpenSSL
Copyright (c) 1998-2000 The OpenSSL Project, http://www.openssl.org/ Author: OpenSSL Project (openssl@openssl.org) Modified: 2002-04-17 16:00:05. Generated from ``index.wml'' via WML 2.0.9 (18-Oct-2002). by OpenSSL Project (openssl@openssl.org) on 2003-04-10 23:17:48.

54

[GUT]: Relao dos 50 Livros usados nos testes Difuso e Confuso, provenientes do projeto Gutemberg. Acessado em - 17-05-2003 http://www.veritel.com.br/gutenberg/etext02/ 03tom10.txt - Tom Swift and His Airship, Victor Appleton 1mlaz10.txt - The Poems of Emma Lazarus, Vol.I, Narrative, Lyric, and Dramatic, Emma Lazarus 1ward10.txt - The Complete Works of Artemus Ward, Part 1, Charles Farrar Browne 2cpns10.txt - The Two Captains, La Motte-Fouque, Friedrich Heinrich Karl, Freiherr de 2ndsm10.txt - The Second-Story Man, Upton Sinclair 42pom10.txt - Forty-Two Poems, James Elroy Flecker acdbh10.txt - Augustus Does His Bit, George Bernard Shaw atblf10.txt - The Author of Beltraffio, Henry James birds10.txt - The Birds, Aristophanes bncor10.txt - Mr. Bonaparte of Corsica, John Kendrick Bangs cambp10.txt - Samuel Butler's Cambridge Pieces, Samuel Butler cvrly10.txt - DAYS WITH SIR ROGER DE COVERLEY, JOSEPH ADDISON and RICHARD STEELE cwanp11.txt - American Newspaper, Charles Dudley Warner cwcdc11.txt - Causes of Prevailing Discontent, Charles Dudley Warner cwfpg11.txt - Mr. Froude's Progress, Charles Dudley Warner cwins11.txt - Indeterminate Sentence, Charles Dudley Warner cwlcr10.txt - Literary Copyright, Charles Dudley Warner cwpoc10.txt - The Story of Pocahantas, Charles Dudley Warner cwsne10.txt - How Spring Came in New England, Charles Dudley Warner drkga10.txt - Drake's Great Armada, Walter Biggs gartt10.txt - The Garotters, William D. Howells glads10.txt - William Ewart Gladstone, James Bryce gratc10.txt - Great Catherine, George Bernard Shaw hnmtl10.txt - Old Love Stories Retold, Richard Le Gallienne incap10.txt - The Inca of Perusalem, George Bernard Shaw jptwn10.txt - THE JAPANESE TWINS, Lucy Fitch Perkins lastt10.txt - The Last Stetson, John Fox Jr. lied210.txt - How He Lied to Her Husband, George Bernard Shaw
55

locrn10.txt - Locrine - A Tragedy, Algernon Charles Swinburne mt6lt10.txt - Letters Vol. 6, Mark Twain mtbbg10.txt - A Burlesque Autobiography, Mark Twain mtcrg11.txt - Curious Republic of Gondour, Mark Twain mtdtl10.txt - A Dog's Tale, Mark Twain mtfco10.txt - Fenimore Cooper Offences, Mark Twain mthts10.txt - How Tell a Story and Others, Mark Twain mtpbg11.txt - Essays on Paul Bourget, Mark Twain mtswe10.txt - The Stolen White Elephant, Mark Twain nb10v10.txt - Memoirs of Napoleon Bonaparte, V10, Louis Antoine Fauvelet de Bourrienn nwthp10.txt - New Thought Pastels, Ella Wheeler Wilcox oflvc10.txt - O'Flaherty V. C., George Bernard Shaw ouamc10.txt - Our American Cousin,Tom Taylor plghp10.txt - The Pilgrims of Hope, William Morris pmprg10.txt - Poems of Progress, Ella Wheeler Wilcox truth10.txt - Truth and the Myth, A.R. Narayanan whelv10.txt - The Elevator, William D. Howells whtyc11.txt - The Young Contributor, William Dean Howells whvan10.txt - Notes of a Vanished Summer, William Dean Howells whvne11.txt - First Visit to New England, William Dean Howells wldam10.txt - Wild Animals I Have Known, Ernest Thompson Seton wnohl10.txt - Within an Inch of His Life, Emile Gaboriau

56

Вам также может понравиться