76
ÁREA 1 FACULDADE DE CIÊNCIA E TECNOLOGIA ENGENHARIA DA COMPUTAÇÃO DIÊGO PEREIRA DA CONCEIÇÃO FUNDAMENTOS MATEMÁTICOS PARA GERAÇÃO DE ALGORITMOS CRIPTOGRÁFICOS SALVADOR 2011

Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

Embed Size (px)

Citation preview

Page 1: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

ÁREA 1 – FACULDADE DE CIÊNCIA E TECNOLOGIA

ENGENHARIA DA COMPUTAÇÃO

DIÊGO PEREIRA DA CONCEIÇÃO

FUNDAMENTOS MATEMÁTICOS PARA GERAÇÃO DE

ALGORITMOS CRIPTOGRÁFICOS

SALVADOR

2011

Page 2: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

DIÊGO PEREIRA DA CONCEIÇÃO

FUNDAMENTOS MATEMÁTICOS PARA GERAÇÃO DE

ALGORITMOS CRIPTOGRÁFICOS

Monografia apresentada ao Curso de Engenharia

da Computação da Faculdade AREA1, como

requisito parcial para obtenção do grau de

Bacharel em Engenharia da Computação.

Orientador: Leonardo Alexandre L. Melo, Esp.

SALVADOR

2011

Page 3: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

DIÊGO PEREIRA DA CONCEIÇÃO

FUNDAMENTOS MATEMÁTICOS PARA GERAÇÃO DE

ALGORITMOS CRIPTOGRÁFICOS

Monografia apresentada a Área 1 – Faculdade de Ciência e Tecnologia, como

requisito parcial para obtenção do grau de Engenheiro de Computação.

Banca Examinadora

Prof. Esp. Leonardo Alexandre de L. Melo (Orientador)

Profª. MSc. Rosely O. Pestana Bervian

Prof. MSc. Alexandre Silva

Salvador,___de____________de___

Page 4: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

Àquele que, em sua sabedoria, criou todas as coisas, Deus.

Page 5: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

AGRADECIMENTOS

Agradeço a Deus que concretizou esse sonho e mostrou-me que tudo é

possível àquele que crê. Por toda sabedoria e inteligência, fortaleza e

conhecimento. Ele fez muito mais além daquilo que pedi ou imaginei na minha

vida. A Ele seja toda honra.

A minha mãe, por todo amor e compreensão. Você mostrou que

sacrifícios genuínos nos levam a grandes conquistas. E essa conquista é

nossa.

A minha família, por sempre acreditar em mim. Sem o auxílio de vocês

eu nunca teria chegado tão longe.

A Ivan, Binha, Rafa (prima), Rafael e Vanderlei, meus primos que me

acolheram carinhosamente em seu lar durante todo este tempo fazendo da sua

casa a minha casa. Ivan e Binha, vocês foram como verdadeiros pais pra mim.

A Camile, minha namorada, por compreender e me ajudar durante todo

o período de confecção deste trabalho.

A todos os meus amigos, nos quais encontrei alento para carregar a

carga quando esta começava a pesar e levá-la sozinho se tornava algo

impossível. A Alisson pela motivação em busca do desconhecido, a Lucas por

toda coragem quando precisei e a Vanessa pelo incentivo em perseguir esse

objetivo em meio a todos os obstáculos.

Aos amigos da faculdade, por nos mostrar que unidos sempre chegamos

mais longe. Em especial a Geydison, Luiz, Raimundo, Flávio e Leonardo por

compartilharem o conhecimento, o ânimo e serem como verdadeiros

companheiros nessa árdua jornada. Magaly, Rosana, Dudu, Rafael Valverde,

Ana Nery e Verônica vocês também fazem parte desse alicerce.

Ao meu orientador Leonardo Melo pela confiança no sucesso deste

trabalho.

Enfim, a todos que se sintam dignos de participar desta alegria.

Page 6: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

“Em Cristo estão escondidos todos os

tesouros da sabedoria e da ciência”.

Colossenses 2:2,3

Page 7: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

RESUMO

Desde tempos remotos o homem tem percebido a importância do sigilo da informação. Com o advento da internet, tornou-se ainda mais necessário a proteção da informação, pois emissor e receptor agora se encontram conectados a uma rede mundial, onde os dados trafegam livremente e vulneráveis a qualquer tipo de ataque. A fim de prover segurança foram criados os chamados mecanismos de segurança, entre os quais se podem destacar a cifragem, assinatura digital, controle de acesso, integridade dos dados, troca de informações de autenticação, certificação, entre outros. A utilização de cifras tornou-se um padrão na comunicação e novas técnicas vem sendo desenvolvidas desde então. Assim, este trabalho visa mostrar como os mais famosos algoritmos criptográficos foram concebidos utilizando-se uma ciência bem antiga: a Matemática.

Palavras-chaves: Criptografia simétrica. Criptografia assimétrica. Chave.

Criptoanálise.

Page 8: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

ABSTRACT

Since ancient times the man has realized the importance of confidentiality of information. With the advent of the internet, it has become even more necessary to protect the personal information, because now the sender and receiver are connected to a global network, where data travels freely and vulnerable to any attack. In order to provide security, it has been created so-called security mechanisms, among which we can highlight the encryption, digital signature, access control, data integrity, information exchange, authentication, certification, among others. The use of figures has become a standard in the communication and new techniques have been developed since then. This work aims to show how the most popular cryptographic algorithms are designed using a very old science: mathematics.

Keywords: Symmetric encryption. Asymmetric encryption. Key. Cryptanalysis.

Page 9: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

LISTA DE FIGURAS

Figura 1 Citale espartano ................................................................................. 18

Figura 2 Visão geral do processo de criptografia ............................................. 19

Figura 3 Frequência das letras do alfabeto português ..................................... 22

Figura 4 O quadrado de Vigenère .................................................................... 23

Figura 5 Máquina Enigma ............................................................................... 25

Figura 6 Três rotores conectados de maneira a criar um circuito elétrico ....... 25

Figura 7 Cálculo tradicional do mdc ................................................................. 28

Figura 8 Representação geral do algoritmo de criptografia DES ..................... 41

Figura 9 Disposição dos bits em formato matricial ........................................... 42

Figura 10 Permutação Inicial (IP) ..................................................................... 42

Figura 11 Inverso da Permutação Inicial (IP-1) ................................................. 42

Figura 12 Uma iteração do DES ....................................................................... 43

Figura 13 Escolha permutada PC1 .................................................................. 44

Figura 14 Deslocamento linear circular ........................................................... 44

Figura 15 Escolha permutada PC2 .................................................................. 44

Figura 16 Permutação de Expansão E ............................................................ 45

Figura 17 Função de Permutação P ................................................................. 45

Figura 18 Função F .......................................................................................... 46

Figura 19 Definição das oito S-boxes do DES ................................................. 46

Figura 20 Detalhes de uma S-box: troca de 6 bits por 4 bit ............................ 47

Figura 21 Visão geral e completa do DES ....................................................... 48

Figura 22 Inverso do DES ................................................................................ 49

Figura 23 Criptografia com DES triplo .............................................................. 50

Figura 24 Criptografia e decriptografia AES .................................................... 53

Figura 25 Organização do bloco de entrada .................................................... 53

Figura 26 Chave expandida ............................................................................. 54

Figura 27 Transformação ShiftRow .................................................................. 55

Figura 28 S-Box ............................................................................................... 56

Figura 29 S-Box inversa ................................................................................... 56

Figura 30 Expansão de chave do AES ............................................................ 60

Figura 31 Aritmética em modular 7 ................................................................. 63

Page 10: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

Figura 32 Função de mão única genérica Yx (mod P). Alice e Bob usam neste

exemplo, em particular, 7x (mod 11) ................................................................ 65

Figura 33 Criptografia de chave assimétrica .................................................... 68

Figura 34 Autenticação usando Criptografia de Chave Pública ....................... 69

Figura 35 Esquema geral do RSA .................................................................... 71

Figura 36 Exemplo do algoritmo RSA .............................................................. 72

Page 11: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

LISTA DE TABELAS

Tabela 1 Alguns valores da função totiente de Euler Ø(n) .............................. 35

Tabela 2 Parâmetros do AES ........................................................................... 52

Tabela 3 Comparação entre duas funções de mão dupla e única ................... 64

Page 12: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

LISTA DE ABREVIATURAS E SIGLAS

AES Advanced Encryption Standard

ASCII American Standard Code for Information Interchange (Código

Padrão Americano para Troca de Informações)

BITS Binary Digits (Dígitos Binários)

DES Data Encryption Standard

EFF Electronic Frontier Foundation

GF Galois Field (Corpo de Galois)

IBM International Business Machines

MDC Máximo Divisor Comum

MOD Módulo

NBS National Bureau of Standards

NIST National Institute of Standards and Technology

NSA National Security Agency (Agência de Segurança Nacional)

RSA Ronald Rivest, Adi Shamir e Leonard Adleman

TCR Teorema Chinês do Resto

Page 13: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

SUMÁRIO

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

1.1 CONTEXTUALIZAÇÃO ........................................................................... 15

1.2 OBJETIVO GERAL ................................................................................. 15

1.3 OBJETIVO ESPECÍFICO ........................................................................ 15

1.4 JUSTIFICATIVA ...................................................................................... 16

1.5 METODOLOGIA ..................................................................................... 16

2. DAS PRIMEIRAS CIFRAS À ENIGMA ........................................................ 17

2.1 ESTEGANOGRAFIA E CRIPTOGRAFIA ................................................ 17

2.1 CIFRA DE CÉSAR .................................................................................. 20

2.2 CRIPTOANÁLISE ................................................................................... 21

2.3 CIFRA DE VIGENÈRE ............................................................................ 22

2.4 CIFRANDO COM MÁQUINAS: A ENIGMA ............................................ 24

3. CONCEITOS MATEMÁTICOS FUNDAMENTAIS ....................................... 27

3.1 ARITMÉTICA MODULAR ...................................................................... 27

3.2 ALGORITMO DE EUCLIDES ................................................................. 28

3.3 ALGORITMO DE EUCLIDES ESTENDIDO ........................................... 30

3.4 NÚMEROS PRIMOS ............................................................................... 31

3.5 TEOREMAS DE FERMAT E EULER ...................................................... 33

3.6 TEOREMA CHINÊS DO RESTO – TCR ................................................. 33

3.7 OPERAÇÕES SOBRE CORPOS FINITOS ............................................ 33

3.7.1 Operações em GF(28) ...................................................................... 37

4. CRIPTOGRAFIA DE CHAVE SECRETA ..................................................... 40

4.1 DATA ENCRYPTION STANDARD – DES .............................................. 40

4.1.1 Permutação Inicial ............................................................................ 42

4.1.2. Uma iteração do DES ...................................................................... 43

4.1.3 Geração das subchaves Kj ............................................................... 44

4.1.4 A função de iteração F ...................................................................... 45

4.1.5 As S-boxes ....................................................................................... 46

4.1.6 Processo de decriptografia do DES .................................................. 48

Page 14: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

4.2 ADVANCED ENCRYPTION STANDARD – AES ................................... 51

4.2.1 Esquema geral do Rijndael - AES..................................................... 52

4.2.2 Adição de chave da rodada .............................................................. 54

4.2.3 Deslocamento de linhas .................................................................... 55

4.2.4 Substituição de bytes ........................................................................ 55

4.2.5 Embaralhamento de colunas ............................................................ 58

4.2.6 Expansão de chave do AES ............................................................. 59

5. CRIPTOGRAFIA DE CHAVE PÚBLICA ...................................................... 62

5.1 O ESQUEMA DE DIFFIE-HELLMAN-MERKLE ...................................... 62

5.2 PRINCÍPIOS DE CRIPTOSSISTEMAS DE CHAVE PÚBLICA ............... 67

5.3 ALGORITMO RSA .................................................................................. 69

6. CONCLUSÃO .............................................................................................. 73

REFERÊNCIAS ................................................................................................ 74

Page 15: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

14

1. INTRODUÇÃO

À medida que o tempo passa, o sigilo da informação tem assumido um

papel relevante na comunicação. A criptografia tem sido a técnica utilizada para

fornecer um canal seguro entre o emissor e o receptor da mensagem. Por um

lado temos a busca por uma cifra inquebrável a fim de manter a privacidade

das mensagens; por outro, decifradores de códigos interessados em ler o

conteúdo destas mensagens. Essa guerra que perdura por séculos tem levado

a uma corrida do conhecimento em todo o mundo onde a informação é o objeto

de grande valor.

Segundo Singh (2010, p. 12), a codificação de mensagens vai

desempenhar um processo cada vez maior na vida diária. O aumento de

ataques à informação tem crescido com o uso da Internet e a criação de

protocolos e aplicações. Stallings (2010, p. 5) comenta que os algoritmos

criptográficos assumem maior importância na garantia da confidencialidade e

autenticidade. Na chamada Era da Informação, a busca por mecanismos de

segurança tem forçado as redes de computadores a defenderem-se de

invasores através da criptografia e diversos protocolos.

Em virtude da possibilidade existente da quebra dos algoritmos

criptográficos (apesar de sua alta eficácia) faz-se necessário uma pesquisa

contínua na criação de cifras inquebráveis e cuja implementação não gere

custos elevados. A grande questão é que a criptografia quântica (até o

presente momento indecifrável) ainda não se tornou uma tecnologia prática.

Por muitos anos os chamados quebradores de códigos estiveram um

passo a frente daqueles que desejavam ocultar as mensagens. Com o

desenvolvimento intelectual e tecnológico, essa disputa tem atingido

proporções inimagináveis e a segurança da informação se tornou prioridade.

Esse trabalho está estruturado de forma a apresentar ao leitor como a

matemática tem contribuído significativamente à criptografia. Vale ressaltar que

há muito mais algoritmos além dos que foram apresentados aqui e não há

preocupação na implementação destes em quaisquer linguagem de

Page 16: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

15

programação, entretanto, espera-se que o conteúdo abordado seja o suficiente

para uma boa compreensão do assunto. O capítulo 2 apresenta os conceitos

básicos da criptografia e as primeiras técnicas mais relevantes. O capítulo 3

apresenta os principais conceitos da matemática utilizados na elaboração dos

algoritmos abordados. O capítulo 4 aborda dois algoritmos que utilizam uma

única chave (secreta) para cifrar e decifrar determinada mensagem. O capítulo

5 apresenta um esquema alternativo na codificação de mensagem através do

uso de chaves públicas na garantia de maior segurança na comunicação. Por

fim, o capítulo 6 conclui o trabalho com algumas observações relevantes entre

a matemática e a criptografia.

1.1 CONTEXTUALIZAÇÃO

Este trabalho surgiu do desejo de compreender melhor como os

algoritmos criptográficos fornecem um canal seguro na comunicação em redes

de computadores. Além de identificar os diversos conceitos utilizados na área

de segurança da informação referente à Criptografia, busca especificamente o

conhecimento prático da matemática na formulação de alguns algoritmos.

1.2 OBJETIVO GERAL

Compreender conceitos e termos usados na Criptografia e de que

maneira determinadas áreas da Matemática são aplicadas aos algoritmos

criptográficos a fim de prover segurança na informação.

1.3 OBJETIVO ESPECÍFICO

Apresentar um histórico da Criptografia até a Era dos Computadores.

Diferenciar Criptografia de Chave Secreta da Criptografia de Chave

Pública.

Entender conceitos matemáticos utilizados na Criptografia

Page 17: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

16

Provar como a matemática é capaz de prover segurança na troca de

mensagens.

1.4 JUSTIFICATIVA

A Matemática proporcionou um avanço bastante significativo na

evolução da Criptografia. Portanto, faz-se necessário entender a estrutura dos

algoritmos criptográficos e os aspectos matemáticos envolvidos a fim de

compreender a importância da Matemática aplicada à Criptografia.

1.5 METODOLOGIA

A pesquisa experimental será a metodologia utilizada. A Criptografia

será o objeto de estudo e a Matemática será a variável que será aplicada a fim

de analisar a influência e o comportamento sobre esse objeto.

Page 18: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

17

2. DAS PRIMEIRAS CIFRAS À ENIGMA

2.1 ESTEGANOGRAFIA E CRIPTOGRAFIA

A necessidade do homem em manter suas comunicações secretas tem

seus registros desde séculos antes de Cristo. Os antigos chineses escreviam

suas mensagens em seda fina, e estas eram amassadas até assumirem a

forma de uma pequena bola e depois cobertas por cera. O mensageiro engolia

a bola de cera e entregava a mensagem com segurança ao destinatário e sem

intercepções (Singh, 2010).

A essa técnica de ocultar a mensagem, dá-se o nome de esteganografia,

termo derivado das palavras gregas steganos (coberto) e graphein (escrever).

Não há qualquer alteração no conteúdo da mensagem, apenas uma forma de

evitar que a mesma seja interceptada e lida por terceiros. Existem diversas

técnicas no uso da esteganografia, por exemplo: marcação de caractere, tinta

invisível, entre outras (Singh, 2010).

Apesar de utilizada por muito tempo, a esteganografia possui uma

fraqueza fundamental: caso a mensagem seja interceptada, o conteúdo da

comunicação, até então secreta, fica comprometida.

Enquanto muitos buscavam uma forma de ocultar a mensagem, outros

desenvolviam paralelamente a criptografia, do grego kriptos (oculto). O objetivo

era esconder o significado da mensagem. O transmissor e o receptor da

mensagem combinavam previamente a maneira que iriam misturar o texto de

forma a torná-lo incompreensível para terceiros. Ao receber a mensagem

codificada, o receptor reverteria o processo para obter a mensagem original.

Por ser uma ciência mais ampla, a criptografia pode ser dividida em

duas áreas: transposição e substituição. Na transposição, as letras do texto

original são rearranjadas de forma sistemática ou aleatória. De maneira mais

simples, a palavra criptografia poderia ser permutada da seguinte forma:

patcrragifoi. Entretanto, à medida que aumenta o número de letras, torna-se

Page 19: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

18

dificultoso o processo de decodificação e até mesmo impossível se o processo

de mistura não for conhecido.

Para cifrar a frase Criptografando seus dados na rede utilizando o

sistema de transposição chamado “cerca de ferrovias”, alterna-se cada letra da

mensagem dispondo-as em duas linhas distintas. Para conseguir o texto

cifrado, basta transcrever de forma alternada uma letra da primeira linha,

seguida por outra da segunda linha:

Mensagem: CRIPTOGRAFANDO SEUS DADOS NA REDE

1ª linha: C I T G A A D S U D D S A E E

2ª linha: R P O R F N O E S A O N R D

Texto cifrado: CITGAADSUDDSAEERPORFNOESAONRD

Fazendo o processo inverso, o receptor pode recuperar a mensagem

facilmente. É possível ainda a utilização de três linhas para aumentar a

complexidade do texto cifrado.

Figura 1. Citale espartano

Fonte: (http://www.numaboa.com.br/criptografia/transposicoes/322-bastao-de-licurgo, 2002)

Outra forma de transposição bastante utilizada por espartanos militares

foi o citale também conhecido como Bastão de Licurgo, apresentado na figura

1. O receptor enrolava uma tira de couro em volta do bastão e escrevia a

mensagem. Após desenrolar a tira, o que surgia era uma fila de caracteres

ilegíveis. Em muitos casos, o mensageiro utilizava-se da esteganografia ao

usar a tira como cinto, com as letras voltadas para dentro. Para o destinatário

decifrar a mensagem bastava apenas ter um citale de mesmo diâmetro usado

pelo remetente.

Page 20: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

19

Na substituição, as letras do texto original são substituídas por outras

letras, números ou símbolos previamente definidos. Uma das formas

recomendadas é emparelhar as letras do alfabeto de forma aleatória e

substituir o par correspondente no texto cifrado. Por exemplo:

A B F G I K M P Q T W Y Z

L R C N U D X E H J O S V

Dessa forma, o texto original Lançado ao vento poderia ser escrito

como ALGFLKW LW ZPGJW.

Figura 2. Visão geral do processo de criptografia

Fonte: SINGH (2010)

De forma geral, um esquema criptográfico envolve o uso de uma chave

(uma palavra) e um algoritmo (conjunto de operações matemáticas) que o

emissor utiliza para cifrar (tornar ilegível) o texto original. O receptor recebe o

texto cifrado e usa o mesmo algoritmo e chave para decifrar (tornar legível) a

mensagem. A figura 2 ilustra esse processo.

Page 21: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

20

2.1 CIFRA DE CÉSAR

A cifra de César, como ficou bastante conhecida, é uma das técnicas de

substituição mais antiga e simples. Consiste em substituir cada letra do

alfabeto original por outra letra do alfabeto cifrado com posição fixa de três

casas a frente. Sendo assim, tem-se:

Alfabeto original

a b c d e f g h i j k l m n o p q r s t u v w x y z

Alfabeto cifrado:

D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

Para o texto: protegendo a rede

Texto cifrado: SURWHJHQGR D UHGH

Atribuindo um valor numérico a cada letra no alfabeto original iniciando

com 0 a letra a, 1 a letra b e assim por diante, é possível expressar a cifra de

César pela seguinte equação

C = E(k,p) = (p + k) mod 26 (1)

na qual:

p = posição da letra do texto claro;

k = deslocamento entre 1 a 25;

E(k,p) é a relação entre p e k;

C = letra cifrada.

Para a cifra de César, o valor de k sempre será igual a três. Para

decriptografar basta fazer

p = D(k,C) = (C – k) mod 26 (2)

Page 22: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

21

na qual:

D(k,C) é a relação entre k e C.

O cálculo envolvendo aritmética modular (mod) será explicado no

Capítulo 3. Por enquanto, apenas considere a Cifra de César como sendo

circular, ou seja, após a letra z retorna-se a letra a.

Entretanto, a cifra de César pode ser facilmente quebrada devido a

limitação de apenas 25 combinações possíveis. Alguém que testasse todas as

possibilidades acabaria decifrando a mensagem sem realizar muito esforço. A

essa técnica dá-se o nome de “força bruta” (Singh, 2010).

2.2 CRIPTOANÁLISE

Os árabes os primeiros a conseguir decifrar mensagens criptografadas

sem a utilização do ataque por força bruta. Eles criaram a chamada

criptoanálise, a ciência de recuperar a chave utilizada no criptossistema (Singh,

2010).

Devido ao vasto conhecimento na área de linguística, os árabes

analisaram as características do próprio alfabeto e perceberam

comportamentos interessantes. Eles verificaram que, de um modo geral,

algumas letras aparecem com maior frequência em relação às outras. Com

isso, eles puderam explorar as vulnerabilidades das mensagens e decifrá-las

através da análise de frequência das letras.

Realizando um ensaio estatístico nas letras do alfabeto português com

base em vários textos extraídos de livros e periódicos, nota-se que é possível

determinar uma frequência quase fixa dessas letras.

Page 23: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

22

Figura 3. Frequência das letras do alfabeto português

Fonte: (http://www.numaboa.com.br/criptografia/criptoanalise/310-frequencia-portugues, 2005)

7

Na figura 3, a letra que mais aparece no nosso alfabeto é a letra a com

14,63%, seguida da letra e com 12,57% e letra o com 10,73%. Com posse

dessas informações, um criptoanalista aplica a frequência de letras no texto

cifrado e faz uma relação entre essa frequência e a do texto original. Após a

análise, caso uma letra qualquer tenha um fator estatístico de 8%, por exemplo,

é bem provável que ela seja a substituta para a letra s do alfabeto original.

2.3 CIFRA DE VIGENÈRE

A cifra de Vigenère consiste em utilizar 26 cifras de César, com

deslocamento de 1 a 26.

Page 24: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

23

Figura 4. O quadrado de Vigenère

Fonte: STALLINGS (2008)

Inicialmente é montado o quadrado de Vigenère, conforme apresentado

na Figura 4. No topo aparece o alfabeto que representa as letras do texto

original seguido por 26 alfabetos cifrados deslocados de uma letra com relação

ao alfabeto anterior. Sendo assim, é possível cifrar qualquer texto com um ou

mais dos alfabetos cifrados disponíveis.

Para criptografar uma mensagem, é necessário o uso de uma chave que

seja tão longa quanto o texto que se deseja cifrar. Escolhida a palavra-chave,

ela é escrita acima do texto original e repetida até que cada letra da mensagem

tenha um par correspondente. Singh (2010) ilustra um exemplo em que a frase

divert troops to east ridge combinada com a palavra-chave WHITE é

codificada assim:

Palavra-chave

W H I T E W H I T E W H I T E W H I T E W H I

Texto-original

d i v e r T t r o o p s t O E a s t r i d g e

Texto cifrado

Z P D X V P A Z H S L Z B H I W Z B K M Z N M

Page 25: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

24

A cifragem é simples. Para cifrar a primeira letra, d, observamos que a

letra W é a correspondente no alfabeto cifrado, ou seja, neste primeiro

momento será utilizada a linha 22 do quadrado de Vigenère. Basta fazer a

intersecção da letra d com a fileira que inicia com W, o que resulta na letra Z.

Portanto, a letra d no texto original será representada por Z no texto cifrado.

Esse processo é repetido com cada letra da mensagem até que esta seja

codificada completamente (Singh, 2010).

A cifra de Vigenère oferece maior segurança com relação as cifras

monoalfabéticas já que ela não pode ser decifrada pela análise de frequência,

nem por ataque por força bruta devido ao grande número de chaves, o

equivalente a 2626 (6.15611958 x 1036 possiblidades).

2.4 CIFRANDO COM MÁQUINAS: A ENIGMA

A primeira máquina criptográfica é o disco de cifras. Foi criada por Leon

Alberti e utilizava dois discos concêntricos com um alfabeto gravado em cada

um deles. Com isso, era possível cifrar mensagens utilizando o descolamento

simples de César. Para aumentar a complexidade, Alberti aprimorou o disco de

forma a gerar cifras polialfabéticas com a utilização de uma palavra chave, o

equivalente a uma versão mecanizada da cifra de Vigenère. (Singh, 2010)

Apesar de ter sido bastante utilizada devido a facilidade e agilidade em

manusear, o disco de cifras ainda não era indecifrável. Foi Arthur Scherbius,

engenheiro eletricista, que criou o mais conhecido sistema de cifragem da

história: Enigma, uma versão elétrica do disco de cifras. (Singh, 2010)

A Enigma baseava-se no princípio de máquinas de rotor1. Era formada

basicamente por três elementos: um teclado para entrada de texto, três rotores

e um painel de iluminação contendo as letras de A a Z que se acendiam a

cada tecla pressionada.

1 Máquina que consiste em um conjunto de cilindros rotativos independentes, através dos quais podem

fluir pulsos elétricos.

Page 26: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

25

Figura 5. Máquina Enigma

Fonte: (http://pt.wikipedia.org/wiki/Enigma_%28m%C3%A1quina%29, 2011)

Figura 6. Três rotores conectados de maneira a criar um circuito elétrico

Fonte: (http://pt.wikipedia.org/wiki/Enigma_%28m%C3%A1quina%29, 2011)

A figura 5 fornece uma visão geral da Enigma. Os três discos

misturadores eram conectados entre si por fiação elétrica e no interior de cada

um destes as 26 letras do alfabeto, conforme a figura 6.

A cifragem dá-se da seguinte forma: a cada tecla pressionada pelo

operador, o primeiro cilindro desloca uma posição enquanto os outros dois

permanecem estáticos. Após completar uma volta completa, o segundo cilindro

é deslocado uma casa e o terceiro ainda permanece em sua posição inicial.

Quando o segundo cilindro então completar 26 voltas, o terceiro cilindro

desloca de sua primeira posição. Por um longo tempo a Enigma foi

considerada indecifrável porque ela fornecia 26 x 26 x 26, ou seja, 17.576

combinações possíveis dos misturadores.

Page 27: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

26

Scherbius aprimorou a enigma inserindo mais elementos a fim de

aumentar a segurança da cifra. Primeiro, ele tornou possível a remoção e troca

da posição dos misturadores, o que aumenta o número de combinações

multiplicada por um fator de 6. Segundo, ele introduziu um painel de tomadas

para conectar o teclado ao primeiro rotor; o painel permitia a troca de seis

pares de letras fornecendo 100.391.791.500 modos distintos de se conectar.

Desta forma, a Enigma possuía um número total de chaves correspondente a

17.576 x 6 x 100.391.791.500 = 10.000.000.000.000.000

Os poloneses foram os primeiros a decifrar a terrível Enigma. O

matemático Marian Rejewski recebeu o devido mérito por conseguir

transformar em texto claro as mensagens interceptadas. Alguns anos depois, a

Inglaterra reuniu cerca de sete mil pessoas das mais diversas profissões em

uma central chamada Bletchley Park aonde mensagens alemãs chegavam

diariamente para serem decifradas. Dentre todos, Alan Turing destacou-se e

conseguiu criar um mecanismo eletro-mecânico com capacidade de decifrar os

textos ilegíveis em pouco menos de uma hora. (Singh, 2010)

A utilização de máquinas criptográficas durante a Segunda Guerra

Mundial proporcionou o desenvolvimento dos computadores. O processo de

cifragem se daria por meio da utilização de números em vez de letras. O

computador lida com um sistema binário, ou seja, sequências de zero e um

conhecidos como bits. A criptografia cresce potencialmente devido ao grande

avanço tecnológico que ocorreu desde então até a chegada da internet.

Page 28: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

27

3. CONCEITOS MATEMÁTICOS FUNDAMENTAIS

A seguir serão apresentados os conceitos necessários para o

entendimento de alguns cálculos utilizados durante o processo criptográfico de

determinados algoritmos. O conteúdo será o abordado de uma forma aplicada

as necessidades do tema em questão, portanto, alguns elementos da Teoria

dos Números ficarão de fora deste Capítulo.

3.1 ARITMÉTICA MODULAR

Dado qualquer inteiro n positivo e qualquer inteiro a positivo, ao dividir a

por n, obtém-se o quociente q e resto r. De forma geral é possível expressar da

seguinte forma:

a = qn + r 0 ≤ r < |n|; q = [a/n] (3)

Veja os dois exemplos abaixo:

a = 11 ; n = 7; q = 1; r = 4; 11 = 1 x 7 + 4;

a = -11; n = 7; q = -2 r = 3; -11 = (-2) x 7 + 3;

Define-se a mod n como sendo o resto r da divisão de a por n. O inteiro

n é chamado módulo.

11 mod 7 = 4; -11 mod 7 = 4

Dois inteiros a e b são ditos congruentes módulo n, se (a mod n) = (b

mod n). Isso é o mesmo que a ≡ b (mod n). O símbolo “≡” e o uso dos

parênteses em “(mod n)” indicam equivalência de dois binários.

73 ≡ 4 (mod 23); 21 ≡ – 9 (mod 10)

Se a e b são dois números inteiros equivalentes mod n, então são

verdadeiras as propriedades:

Page 29: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

28

(a + b) mod n = (a mod n) + (b mod n)

(a x b) mod n = (a mod n) x (b mod n)

3.2 ALGORITMO DE EUCLIDES

O algoritmo euclidiano é um procedimento utilizado para encontrar o

máximo divisor comum entre dois inteiros positivos (mdc). Consiste

basicamente nos seguintes passos:

1. Divida A por B;

2. O valor de B passa a ser o valor de A e o resto R passa a ser B.

3. O algoritmo termina quando o resto R for zero.

Figura 7. Cálculo tradicional do mdc

Fonte: http://professormarcello.com/index.php?option=com_content&task=

view&id=694&Itemid=47 (2010)

A figura 7 ilustra como é realizado o cálculo do mdc na forma mais

tradicional.

Sabe-se que o resto da divisão entre dois inteiros pode ser expresso

através do módulo, logo:

mdc(a, b) = mdc(b, a mod b) (4)

O mdc(a, b) é sempre um valor inteiro positivo para quaisquer valores de

a e b. Portanto, mdc(a, b) = mdc(|a|, |b|) o que permite ao algoritmo euclidiano

considerar que a > b > 0. Abaixo segue um pseudocódigo:

Page 30: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

29

O algoritmo possui uma sequência finita garantindo que em algum

momento o resto r será zero. Stallings (2008) ilustra um exemplo:

Page 31: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

30

3.3 ALGORITMO DE EUCLIDES ESTENDIDO

Quando os números a e b são relativamente primos, além de calcular o

mdc(a, b), o algoritmo euclidiano pode ser estendido de forma a encontrar o

inverso multiplicativo de b de modo que bb-1 = 1 mod a. O algoritmo satisfaz a

seguinte condição:

ax + by = mdc(a, b) (5)

sendo, x e y dois números inteiros.

Pelo algoritmo de Euclides, o mdc(396, 13) = (61 X 13) – (2 x 396), pois:

13 = 396 x 0 + 13

396 = 30 x 13 + 6 mdc(396, 13)

13 = 6 x 2 + 1 mdc(13, 6)

6 = 1 x 6 + 0 mdc(6, 1)

Logo, o mdc(396, 13) = 1. O algoritmo estendido de Euclides leva em

conta os restos diferentes de zero encontrados nas divisões. Pode ser

expresso da seguinte maneira:

13 = (1 x 13) - (0 x 396) (6)

13 = (1 x 13)

6 = (1 x 396) - (30 x 13) ... em (6) diz que 13 = (1 x 13) (7)

6 = (1 x 396) - (30 x (1 x 13))

6 = (1 x 396) - (30 x 13)

1 = (1 x 13) - (2 x 6) ... em (7) diz que 6 = (1 x 396) - (30 x 13) (8)

1 = (1 x 13) - 2 x ((1 x 396) - (30 x 13))

1 = (1 x 13) - (2 x 396) + (60 x 13)

1 = (61 x 13) - (2 x 396)

Page 32: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

31

O número 61 é o inverso multiplicativo de 13. Aplicando o algoritmo

estendido na criptografia de chave pública, o número inverso é representado

por d, pois d e-1 mod (n).

3.4 NÚMEROS PRIMOS

Um número inteiro p > 0 é considerado um número primo se e somente

se seus únicos divisores forem 1 e o próprio p. O conjunto dos números primos

é infinito e a medida que se avança, a quantidade de primos diminuem.

Terada (2011) diz que a probabilidade de um inteiro n ser primo é em

torno de 1 / ln (n). Essa probabilidade é corolário da Teoria de Números Primos

e afirma que se π(x) denota o número de primos ≤ x, então

= 1

Um teorema fundamental da aritmética diz que qualquer número inteiro

pode ser representado pela multiplicação de um ou mais números primos. A

quantidade de vezes que determinado número aparece é indicado com os

expoentes. Não é fácil determinar os fatores primos de um número grande e é

essa característica que permite ao algoritmo RSA confidencialidade da chave

privada.

91 = 7 x 13

3600 = 24 x 32 x 52

11011 = 7 x 112 x 13

Existe um teorema para testar se um número é primo ou não. Não há

um meio fácil de fazer isso, mas Miller e Rabin propuseram um algoritmo que

gera um número que não é necessariamente primo, mas possui grandes

chances probabilísticas de ser primo (Stallings, 2008).

Considere que qualquer número ímpar n pode ser escrito como

Page 33: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

32

n – 1 = 2kqcom k > 0, q ímpar (9)

Ao fazer (n – 1), tem-se um número inteiro par. Em seguida, divida (n –

1) por 2 até que o resultado q seja um valor ímpar, gerando um total de k

divisões. Stallings (2008) mostra duas propriedades necessárias para a

compreensão do algoritmo de Miller-Rabin. A primeira propriedade descrita diz

que a2 mod p = 1 se e somente se a mod p = 1 para p primo e a < p.

A segunda propriedade é expressa da seguinte forma: Seja p um

número primo maior que 2, então é verdade que p – 1 = 2kq, com k > 0, q

ímpar. Considere um inteiro a no intervalo 1 < a < p – 1. Então uma das

seguintes propriedades é verdadeira:

1. aq mod p = 1 ou aq 1 (mod p).

2. Existe algum número j no intervalo (1 ≤ j ≤ k) tal que a(2j – 1)q mod p = –1

mod p = p – 1 ou a(2j – 1)q –1 (mod p).

O pseudocódigo a seguir mostra como verificar a primalidade de

determinado número. Usando um candidato n como entrada e tendo

conclusivo como resultado mostra que o número não é primo; caso o retorno

seja inconclusivo n pode ou não ser primo.

TESTE (n)

1. Encontre inteiros k, q, com k > 0, q ímpar, de modo que (n – 1 = 2kq);

2. Selecione um inteiro aleatórios a, 1 < a < n – 1;

3. Se aq mod n = 1 então return (“inconclusivo”);

4. para j = 0 até k – 1 faça

5. Se mod n n – 1 então return (“inconclusivo”);

6. return (“composto”).

Page 34: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

33

Stallings (2008) continua com um exemplo:

Tome como exemplo o número primo n = 29. Temos (n – 1) = 28 = 22(7) = 2kq.

Primeiro, vamos testar a = 10. Calculamos 107 mod 29 = 17, que não é 1 nem

28, de modo que o teste continua. O próximo cálculo descobre que (107)2 mod

29 = 28, e o teste inconclusivo, ou seja, 29 pode ser primo. Teste novamente

com a = 2. Tem-se os seguintes cálculos: 27 mod 29 = 12; 214 mod 29 = 28; e o

teste novamente retorna inconclusivo. Se o teste for realizado para todos os

inteiros a no intervalo de 1 a 28, obtém-se o mesmo resultado inconclusivo, que

é compatível com n sendo um número primo.

3.5 TEOREMAS DE FERMAT E EULER

Esses dois teoremas desempenham papel importantíssimo na

criptografia.

Teorema de Fermat

O Teorema de Fermat diz que: Se p é primo e a é um inteiro não

divisível por p, então:

ap-1 ≡ 1 ( mod p ) (10)

Considerando que a não seja relativamente primo de p, é possível

escrever a mesma equação anterior como:

ap ≡ a (mod p) (11)

p = 5, a = 3 ap = 35 = 243 ≡ 3(mod 5) = a(mod 5)

p = 5, a = 10 ap = 105 = 100000 ≡ 10(mod 5) = 0(mod 5) = a(mod p)

Este teorema é utilizado para calcular o resto da divisão quando o valor

do módulo é um número primo.

Page 35: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

34

Calcular 364 mod 31

Inicialmente, o número 64 pode ser decomposto como 64 = 30 x 2 + 4.

Aplicando o Teorema de Fermat para a = 3 e p = 31

330 ≡ 1 (mod 31)

Então,

364 ≡ (330)2 x 34 ≡ 1 x 81 ≡ 19 (mod 31)

Função Totiente de Euler

A função Totiente de Euler é escrita como (n) e é definida como a

quantidade de inteiros positivos menores que n e relativamente primos de n.

Por convenção, (1) = 1.

Determine (37) e (35).

Como 37 é primo, consequentemente todos os números positivos de 1 a 36

farão parte do resultado. Assim, (37) = 36. Para determinar (35), lista-se

todos os inteiros positivos que 35 são relativamente primos dele:

1, 2, 3, 4, 6, 8, 9, 11, 12, 13, 16, 17, 18,

19, 22, 23, 24, 26, 27, 29, 31, 32, 33, 34

Existem 24 números na lista, de modo que (35) = 24.

É notável que para um número primo p, (p) = p – 1. Considerando dois

números primos p e q, com p ≠ q e n o resultado da multiplicação n = pq,

(n) = (pq) = (p) x (q) = (p – 1) x (q – 1) (12)

Page 36: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

35

Tabela 1. Alguns valores da função tociente de Euler (n)

Fonte: STALLINGS (2008)

Teorema de Euler

O teorema de Euler (também conhecido como o Teorema de Fermat-

Euler) afirma que, se a e n são números relativamente primos, então:

≡ 1 (mod n) (13)

a = 3; n = 10; (10) = 4 = 34 = 81≡ 1 (mod 10) = 1 (mod n)

a = 2; n = 11; (11) = 10 = 210 = 1024≡ 1 (mod 11) = 1 (mod n)

Assim como o Teorema de Fermat, uma forma alternativa de expressar

o teorema de Euler é:

≡ a (mod n) (14)

3.6 TEOREMA CHINÊS DO RESTO – TCR

O matemático chinês Sun-Tsu descobriu como calcular inteiros N que ao

serem divididos por 3, 5, 7 respectivamente resultem em 2, 3, 2. A solução é N

Page 37: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

36

= 23. De fato, todos os inteiros expressos por 23 + 105k para qualquer k fazem

parte dessa solução.

Segundo o Teorema Chinês do Resto (TCR), k inteiros, m1, m2,...mk,

relativamente primos entre si, é possível representar um inteiro N

N = n1 mod m1, N = n2 mod m2,...N = nk mod mk (15)

da seguinte forma:

N mod (m1 x m2 x ...mk) (16)

Assim, o inteiro 25 pode ser representado como (4 mod 7, 3 mod 11) ou

25 mod (7 x 11).

Terada (2010) diz que é fácil representar (15) a partir de (16): basta

dividir N por cada mj e obter o resto. Entretanto, obter (16) a partir de (15) não

é um caminho fácil e é disso que trata o TCR.

Tendo N = a mod A, N = b mod B, deseja-se obter N mod (AB). Como A

e B são relativamente primos, é possível calcular o inverso multiplicativo de

forma que a equação se torne verdadeira:

A’A + B’B = 1 (17)

Portanto, A‟ = A-1 mod B e B‟ = B-1 mod A. Multiplicando (17) por N tem-

se:

NA‟A + NB‟B = N (18)

É possível ainda escrever N = a mod A como N = a + rA para qualquer r,

e N = b mod B como N = b + tB para algum t. Substituindo N em (4), obtém-se:

N = (b + tB)A‟A + (a + rA)B‟B (19)

Aplicando mod (AB) em (5) chega-se a:

N = (bA’A + aB’B) mod (AB) (20)

Considere o exemplo a seguir como um teste de validade de (20):

Page 38: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

37

a = 4, A = 7, b = 3, B = 11

A‟ = 7-1 mod 11 = 8

B‟ = 11-1 mod 7 = 2

Então (bA’A + aB’B) mod (AB) = (3 x 8 x 7 + 4 x 2 x 11) mod (77) = 25.

O RSA usa n = qr na geração do par de chaves. Tendo xp mod q e xp

mod r aplica-se o TCR para calcular xp mod n.

3.7 OPERAÇÕES SOBRE CORPOS FINITOS

Stallings (2008) define um corpo como um conjunto de elementos com

operações binárias de adição, subtração, multiplicação e divisão sem sair do

conjunto. Esse conjunto pode ser finito ou infinito. A criptografia se interessa

apenas pelos corpos finitos.

É possível definir a ordem de um corpo finito como uma potência pn,

onde p é um número primo e n é um inteiro positivo. A notação é usada como

GF(pn); GF é a sigla de Galois Field (Stallings, 2008).

3.7.1 Operações em GF(28)

O Advanced Encryption Standard (AES) utiliza a aritmética no corpo

finito GF(28), ou seja, é utilizado um polinômio na forma b7 x7+ b6 x

6 + b5 x5 + b4

x4 + b3 x3 + b2 x

2 + b1 x + b0, onde (b7b6b5b4b3b2b1b0) são os bits do byte B. A

seguir será explicado as operações sobre esse corpo:

Soma

É feito um XOR bit a bit. O símbolo é usado para indicar essa

operação. Para valores de entrada iguais a saída é 0 e para valores diferentes

é sempre 1.

Page 39: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

38

A B Saída

0 0 0

0 1 1

1 0 1

1 1 0

Assim: 11011100 10001110 = 01010010.

Multiplicação

Inicialmente a multiplicação entre os polinômios é feita na aritmética

polinomial comum. Cada termo é distribuído por todos os demais termos do

outro polinômio. O resultado é submetido ao módulo do polinômio irredutível

de grau 8, o AES usa o m(x)= x8 + x4 + x3 + x + 1 ou (11Bh). Stallings (2008)

explica que um polinômio f(x) sobre um corpo F é chamado de irredutível se e

somente se f(x) não puder ser expresso como um produto de dois polinômios,

ambos sobre F, e ambos de grau menor que o de f(x). Isto o caracteriza como

um polinômio primo.

Exemplo: Calcular 53h * 83h.

53h = 01010011 e 83h = 10000011

Representando os valores binários em funções, tem-se:

f(x) = x6 + x4 + x2 + x + 1 e g(x) = x7 + x + 1

f(x) x g(x) = x13 + x11 + x9 + x8 + x7 +

x7 + x5 + x3 + x2 + x +

x6 + x4 + x2 + x + 1

= x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1

Aplicando o módulo pelo polinômio irredutível:

x13 + x11 + x9 + x8 + x6 + x5 + x4 + x3 + 1 mod x8 + x4 + x3 + x + 1 = x7 + x6 + 1 (21)

Page 40: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

39

Quando a multiplicação se dá entre um polinômio e uma

constante existe uma técnica simples de ser implementada. Observe a

igualdade:

x8 mod m(x) = [ m(x) – x8 ] = ( x4 + x3 + x +1 ) (22)

onde m(x) = x8 + x4 + x3 + x + 1, que é o corpo finito usado no AES.

Agora considere um polinômio em GF(2n) na forma f(x) = b7x7 + b6x

6 +

+ b5x5 + b4x

4 + b3x3 + b2x

2 + b1x + b0. Em seguida, multiplique por x e terá:

x f(x) = (b7x8 + b6x

7 + b5x6 + b4x

5 + b3x4 + b2x

3 + b1x2 + b0x) mod m(x) (23)

Se b7 = 0, o polinômio terá um grau menor que 8, o que significa que ele

se encontra na forma reduzida dispensando quaisquer cálculos adicionais. Se

b7 = 1, então é necessário a redução módulo m(x)

x f(x) = (b6x7 + b5x

6 + b4x5 + b3x

4 + b2x3 + b1x

2 + b0x) + (x4 + x3 + x +1) (24)

Dessa forma, o resultado da multiplicação x f(x), na qual x

corresponde a constante 02h :

Se b7 = 0 (b6b5b4b3b2b1b00) (25)

Se b7 = 1 (b6b5b4b3b2b1b00) (00011011) (26)

Exemplo: Calcular 57h x 13h

Inicialmente pode-se dizer que 13h = 01h + 02h + 10h. Então:

57h x 02h = 01010111 x 02h = 10101110 (AEh)

57h x 04h = 57h x 02h x 02h = (AEh) x 02h = 01011100 00011011 = 01000111 (47h)

57h x 08h = 47h x 02h = 01000111 x 02h = 10001110 (8Eh)

57h x 10h = 8Eh x 02h= 10001110 x 02h = 00011100 00011011 = 00000111 (07h)

Juntando os cálculos intermediários tem-se:

57h x 13h = 57h x (01h + 02h + 10h) = 57h + AEh + 07h = FEh.

Page 41: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

40

4. CRIPTOGRAFIA DE CHAVE SECRETA

Como o próprio nome sugere, esse tipo de criptografia exige a utilização

de uma chave que permaneça em segredo entre as partes que se comunicam.

Também é conhecida como criptografia de chave simétrica porque a mesma

chave que se usa para cifrar a mensagem é usada para decifrá-la.

Um grande problema se torna evidente: a distribuição das chaves.

Pense na seguinte situação: Alice deseja enviar uma mensagem confidencial

para Bob; entretanto, eles necessitam obter uma cópia da mesma chave. Eles

não podem simplesmente enviar a chave pelo canal de comunicação porque

uma terceira pessoa pode estar “na escuta da linha” a fim de fazer uma

interceptação. Como eles podem então trocar mensagens de forma segura?

Apesar de muitos acreditarem na insolubilidade do problema, uma

equipe apresentou uma solução brilhante em meados da década de 1970

criando um sistema de cifragem que parecia desafiar toda a lógica. Esta

descoberta tem sido considerada a maior conquista da criptografia desde a

invenção das cifras monoalfabéticas (utilização de apenas um único alfabeto).

(Singh, 2010).

4.1 DATA ENCRYPTION STANDARD – DES

Em 1973 o National Bureau of Standards (NBS) solicitou propostas para

a criação de uma cifra com os seguintes critérios:

possuir um elevado nível de segurança com uma chave de tamanho

pequeno e que realizasse a cifragem e decifragem;

ser compreensível;

a segurança não deve depender da confidencialidade do algoritmo ;

ser adaptável e econômico ;

ser eficaz e exportável.

A IBM propôs o algoritmo Lucifer com um tamanho de chave igual a 128

bits desenvolvido por Horst Feistel, porém a National Security Agency (NSA)

Page 42: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

41

receosa de não conseguir decodificar esse novo padrão de cifras limitou o

tamanho da chave a 56 bits. Foi em 23 de novembro de 1976 que o DES (Data

Encryption Standard), versão de 56 bits do Lucifer, foi adotado como cifra

oficial americana.

Figura 8. Representação geral do algoritmo de criptografia DES

Fonte: STALLINGS (2008)

O DES é composto por três componentes: uma entrada de texto legível,

uma chave e uma saída de texto cifrado. No esquema geral do algoritmo DES

mostrado na figura 8, a entrada é um bloco de 64 bits e a chave tem 56 bits

ditos “úteis” durante o processo criptográfico, pois os 8 bits restantes são

usados como bits de paridade, a fim de verificar a integridade da chave. O

resultado desse processo é uma saída de 64 bits de texto cifrado.

Inicialmente o texto cifrado é submetido a uma Permutação Inicial (IP) e

dividido em dois blocos de 32 bits cada. Em seguida, ocorrem 16 iterações com

subchaves distintas. Durante essas rodadas são utilizadas funções de

permutação e deslocamento linear para gerar as chaves subsequentes. Ao final

Page 43: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

42

dessas iterações as duas metades do texto são trocadas entre si e o resultado

é submetido ao Inverso da Permutação Inicial (IP-1) gerando um texto ilegível

de 64 bits como saída.

4.1.1 Permutação Inicial

Ao receber um bloco de 64 bits como entrada, estes ficam dispostos em

um formato de matriz como ilustra a Figura 9:

Figura 9. Disposição dos bits em formato matricial

Fonte: Adaptado de Stallings (2008)

Mi corresponde a um dígito binário.

As figuras 10 e 11 ilustram as permutações que ocorrem no início e final

respectivamente durante o processo de cifragem do texto. Assumindo que cada

Page 44: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

43

bit ocupa uma posição inicial como mostrado anteriormente, após serem

permutados, o 58º bit do texto original passará a ser o 1º bit, o 50º ocupará a 2ª

posição e assim as permutações ocorrem conforme a Figura 9.

Segundo Terada (2011), as duas permutações não acrescentam valor

criptográfico e são irrelevantes para qualquer criptoanálise que venha ser

aplicada ao DES.

4.1.2. Uma iteração do DES

A entrada de 64 bits é dividida igualmente em duas metades de 32 bits,

como mostra a Figura 12.

Figura 12. Uma iteração do DES

Fonte: Adaptado de Terada (2011)

Em seguida, aplica-se a função F (será detalhada posteriormente) no

bloco da direita (Rj), onde j indica o número da rodada. O resultado dessa

operação é submetido a um XOR com a metade do bloco da esquerda (Lj). A

saída resultante torna-se a nova metade da direita (Rj+1). Neste ponto, Rj passa

a ser a nova metade da esquerda (Lj+1).

Page 45: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

44

4.1.3 Geração das subchaves Kj

A chave inicial K tem um comprimento de 56 bits que passam por uma

permutação PCI, vide Figura 13, e, em seguida, são divididos em dois blocos

de 28 bits cada. É aplicado um deslocamento circular Lj para a esquerda em

cada metade conforme Figura 14. Após passar por uma Permutação e

Contração PC2, como mostra a Figura 15, os 56 bits são reduzidos para 48 bits

gerando a primeira subchave K1.

Figura 13. Escolha Permutada PC1

Fonte: (STALLINGS, 2008)

Figura 14. Deslocamento Linear Circular

Fonte: (STALLINGS, 2008)

Figura 15. Escolha Permutada PC2

Fonte: (STALLINGS, 2008)

Page 46: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

45

Para gerar as suchaves posteriores (K2, K3, ... K16) tomam-se os blocos

antes de sofrerem a Permutação PC2 para serem as novas entradas.

4.1.4 A função de iteração F

Após a divisão do bloco de entrada, a metade da direita Rj sofre uma

Expansão e Permutação E, conforme a Figura 16, expandindo o número deste

sub-bloco de 32 bits para 48 bits. O resultado dessa operação é submetido a

uma operação XOR com a subchave Kj de 48 bits.

Figura 16. Permutação de Expansão E

Fonte: STALLINGS (2008)

Em seguida, os 48 bits resultantes passam por substituições definidas

pelos oito S-boxes. No final desse processo, os bits são “contraídos” para 32

bits e sofrem uma última permutação P, como ilustra a Figura 17.

Figura 17. Função de Permutação P

Fonte: (STALLINGS, 2008)

A Figura 18 ilustra o bloco da função F.

Page 47: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

46

Figura 18. Função F

Fonte: STALLINGS (2008)

4.1.5 As S-boxes

Essa substituição é constituída por 8 S-boxes que recebem 6 bits de

entrada e geram 4 bits de saída. A Figura 19 apresenta a definição das 4

primeiras S-boxes do DES.

Figura 19. Definição das 4 primeiras S-boxes do DES

Fonte: STALLINGS (2008)

Page 48: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

47

Figura 20 Detalhes de uma S-box: troca de 6 bits por 4 bit

Fonte: Adaptado de Terada (2011)

Segundo Terada (2011), a substituição ocorre da seguinte forma:

1. Dos 6 bits de b1b2b3b4b5b6 os dois bits da extremidade definem o índice

de linha na tabela, o que pode resultar em um valor entre 0 e 3. No

exemplo ilustrado da Figura 20, o valor (10) na base 2 corresponde a 2

na base decimal.

2. Os bits b2b3b4b5 definem o índice de coluna. Como são 4 bits, tem-se um

valor situado entre 0 e 15 (1111 é o valor máximo para 4 bits) para um

total de 16 colunas na tabela.

Dessa forma, um mapeamento ocorre para cada grupo de 6 bits de

entrada gerando valores já definidos para uma saída de 32 bits no total. Cada

S-box é única e possui valores em posições específicas.

Page 49: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

48

Figura 21 Visão geral e completa do DES

Fonte: (Adaptado de (TERADA, 2011))

A Figura 21 apresenta uma visão geral do DES com detalhes da entrada

do bloco de 64 bits e da chave de 56 bits. A função F mostra a interação entre

as duas partes compondo o processo completo.

4.1.6 Processo de decriptografia do DES

O processo de decriptografia consiste em realizar o caminho inverso da

criptografia. Por isso, esse método também é conhecido criptografia de chave

simétrica porque se utiliza a mesma chave para cifrar e decifrar a mensagem.

Page 50: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

49

Figura 22. Inverso do DES

Fonte: Adaptado de Terada (2011)

Sendo assim, considere a Figura 22 como o processo de inversão do DES,

onde se tem:

1. A entrada de texto cifrado de 64 bits que passam por uma Permutação

Inicial IP e são divididos em duas metades trocadas.

2. São realizadas 16 iterações utilizando as 16 chaves começando pela

K16, K15, ...K1.

Page 51: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

50

3. Após o processo anterior os bits são obtidos com metades ainda

trocadas. Assim como na criptografia, ocorre uma nova troca entre as

metades e o resultado dessa operação é submetido ao Inverso da

Permutação Inicial IP-1. A saída é o texto legível de 64 bits.

Há também o S-DES que é uma versão simplificada do DES para fins

didáticos. Ele possui redução na quantidade de bits do bloco de entrada (8 bits)

e da chave (10 bits), e apenas duas rodadas.

Devido a alta vulnerabilidade do DES ao ataque de força bruta, foram

realizadas melhorias para dificultar a decriptografia. Como alternativa, foi

desenvolvido o 3DES, DES triplo, com três chaves (Stallings, 2008). Ele possui

uma chave com tamanho de 168 bits e pode ser definido pela função:

C = E( K3, D ( K2 ,E ( K1 ,P ) ) )

na qual:

E = função de Criptografia (Encryption);

D = função de Decriptografia (Decryption).

A compatibilidade com o DES é mantida fazendo-se K3 = K2 ou K1 = K2.

O 3DES é muito resistente à criptoanálise, entretanto é relativamente lento

quando executado em software.

Figura 23. Criptografia com DES triplo

Fonte: Adaptado de Stallings (2008)

A Figura 23 ilustra cada um dos estágios do 3DES.

Page 52: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

51

4.2 ADVANCED ENCRYPTION STANDARD – AES

Em julho de 1998, a Electronic Frontier Foundation (EFF) provou ter

quebrado o DES com o uso de uma máquina que eles chamaram “decifradora

de DES”. A EFF publicou os detalhes para que qualquer pessoa montasse a

sua própria máquina. Ela tinha um custo total de quase 250 mil dólares e

obteve um ataque com sucesso em menos de três dias. Tendo em vista a

tendência do barateamento do hardware e o aumento das velocidades de

processamento, ficou perceptível que o DES estava se tornando inútil

(Stallings, 2008).

Apesar da segurança do 3DES, ele não se mostrava um candidato para

ocupar o lugar do DES. Em vista disso, em 1997 o National Institute of

Standards and Technology (NIST) propôs mundialmente uma alternativa para

um novo AES com os seguintes requisitos:

1. Cifra de bloco simétrica tendo como entrada um bloco de 128 bits.

2. A chave deveria ter suporte para tamanho de 128, 192 e 256 bits.

3. Segurança igual ou superior ao Triple-DES além de uma melhor

eficiência.

4. Implementação de forma segura e eficiente em hardware e software

numa grande variedade de plataformas e aplicações.

5. Simplicidade de projeto.

Em uma primeira rodada de avaliação, 15 algoritmos propostos foram aceitos. Uma segunda rodada estreitou a competição para 5 algoritmos. O NIST completou o processo de avaliação e publicou um padrão final (FIPS PUB 197) em novembro de 2001. O NIST selecionou o Rijndael para o AES como o algoritmo AES proposto. Os dois pesquisadores que desenvolveram e enviaram o Rijndael para o AES são criptógrafos belgas: o Dr. Joan Daemen e Dr. Vincent Rijmen (STALLINGS, 2008, p. 92)

Page 53: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

52

4.2.1 Esquema geral do Rijndael - AES

Antes de iniciar com o esquema geral do AES faz-se necessário

ressaltar a possibilidade do algoritmo em usar tamanhos diferentes para a

chave (128, 192 ou 256 bits) e o bloco de entrada (limitado até 128 bits).

Tabela 2. Parâmetros do AES

Fonte: STALLINGS (2008)

A Tabela 2 estabelece uma relação de parâmetros entre os

componentes do algoritmo.

Considere o bloco de entrada e a chave, ambos, com tamanho igual a

128 bits cada um. O AES possui apenas quatro funções que são utilizadas

durante as 10 rodadas: AddRoundKey, ShiftRows, SubBytes, e MixColumns.

Para criptografar e decriptografar, primeiramente usa-se a função

AddRoundKey (este passo não conta como uma rodada), seguido por nove

rodadas, onde cada uma delas aplica as quatro funções no bloco, e por fim,

uma rodada utilizando novamente as funções exceto MixColumns.

Page 54: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

53

Figura 24. Criptografia e decriptografia AES

Fonte: STALLINGS (2008)

A Figura 24 ilustra os processos de criptografia e decriptografia.

Inicialmente o bloco é representado em forma matricial organizando os

bits de entrada por colunas.

Figura 25. Organização do bloco de entrada

Fonte: STALLINGS (2008)

Page 55: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

54

Como mostra a Figura 25, a matriz tem dimensão 4x4 onde cada

elemento representa um byte e são inseridos seguindo a ordem das colunas e

não das linhas, como se faz tradicionalmente na leitura de matrizes.

Figura 26. Chave expandida

Fonte: STALLINGS (2008)

A representação matricial é a mesma para a chave, mas ao ser

expandida para gerar as demais chaves ela passa a ser representada na forma

vetorial, como ilustra a Figura 26. O vetor de words é formado por 44 words de

quatro bytes cada.

4.2.2 Adição de chave da rodada

A adição de chave da rodada (AddRoundKey) é uma operação básica e

simples do AES. De maneira clara, os 128 bits de entrada são submetidos a

um XOR bit a bit com a chave da rodada. Como pode ser visto, é possível

aplicar essa função em nível de coluna entre os 4 bytes das duas matrizes. Os

valores estão no sistema de numeração hexadecimal.

Page 56: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

55

4.2.3 Deslocamento de linhas

O deslocamento de linhas (ShiftRows) faz uma transformação na

organização dos bytes deslocando-os de forma circular sempre para a

esquerda de acordo a linha na qual se encontram.

Figura 27 Transformação ShiftRow

Fonte: (STALLINGS, 2008)

Como ilustra a figura 27, a primeira linha permanece inalterada, a

segunda sofre deslocamento de um byte, a terceira de dois bytes e a quarta de

três bytes.

4.2.4 Substituição de bytes

Essa operação consiste no mapeamento dos bytes da matriz para novos

bytes baseado na S-Box da Figura 28. A matriz é composta por valores

hexadecimais, tem dimensão 16 x 16 e nela é possível combinar quaisquer

valores de 8 bits, o que resulta em 256 possibilidades distintas.

Page 57: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

56

Figura 28. S-Box

Fonte: STALLINGS (2008)

Figura 29. S-Box inversa

Fonte: STALLINGS (2008)

Os 4 bits da esquerda servem como índice de linha enquanto os 4 bits

da direita indicam o índice da coluna. Assim, o byte 3Ah é permutado para o

byte cuja linha é 3 e coluna A, obtendo-se 80h. A notação usada para valores

hexadecimais será XXh, onde X pode ser um valor entre 0 e 9, A e F.

Page 58: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

57

Segundo Terada (2011, p. 92) a operação SubBytes “trata-se de uma

transformação não-linear para tornar o Rijndael forte contra ataques

criptoanalíticos conhecidos como o Diferencial e o Linear”. Não é do escopo

desse trabalho detalhar sobre esse dois tipos de ataques.

Para uma melhor compreensão segue um exemplo completo da função

SubBytes:

Para reverter a transformação usa-se a S-Box inversa da Figura 29.

Como no exemplo anterior, a entrada 3Ah tem como saída 80h, e a entrada

80h na S-Box inversa gera como saída 3Ah.

A S-box é construída da seguinte forma:

1. Encontre o inverso multiplicativo de cada byte no corpo finito GF(28). O

valor 00h é mapeado para si mesmo.

2. Aplique a seguinte transformação nos 8 bits (b7, b6, b5, b4, b3, b2, b1, b0)

de cada byte da S-box:

b’i = bi b(i+4) mod 8 b(i+5) mod 8 b(i+6) mod 8 b(i+7) mod 8 ci

onde 0 i 8 e ci é o i-ésimo bit do byte c cujo valor é 63h (01100011).

O índice 7 corresponde ao bit mais significativo. A representação em

forma matricial é:

EA 04 65 85

83 45 5D 96

5C 33 98 B0

F0 2D AD C5

87 F2 4D 97

EC 6E 4C 90

4A C3 46 E7

8C D8 95 A6

Page 59: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

58

4.2.5 Embaralhamento de colunas

Essa função consiste no mapeamento dos bytes de cada coluna para

um novo valor como resultado da combinação linear de todas as colunas.

=

Desta forma, é possível expressar a transformação MixColumns sobre

uma única coluna como:

Veja como fica a matriz de bytes após ser submetida a MixColumns:

É importante lembrar que as operações ocorrem em GF(28). Assim, a

adição é a operação XOR bit a bit e a multiplicação de um valor por 02h é

definida pelas equações (25) e (26).

Para s‟0,0, tem-se que:

s‟0,0 = (02h • 87h) (03h • 6Eh) 46h A6h

02h • 87h = (0000 1110) (0001 1011) = (0001 0101)

03h • 6Eh = 6Eh (02h • 6Eh) = (0110 1110) (1101 1100) = (1011 0010).

87 F2 4D 97

6E 4C 90 EC

46 E7 4A C3

A6 8C D8 95

47 40 A3 4C

37 D4 70 9F

94 E4 3A 42

ED A5 A6 BC

Page 60: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

59

Por fim,

02h • 87h = 0001 0101

03h • 6Eh = 1011 0010

46h = 0100 0110

A6h = 1010 0110

0100 0111 47h

4.2.6 Expansão de chave do AES

A chave de 128 bits é organizada em um vetor linear de 4 words cada

uma com 16 bytes. Após a expansão tem-se um total de 44 words (176 bytes);

assim é possível utilizar uma chave de 4 words para as 10 rodadas do AES,

incluindo o estágio AddRoundKey. O pseudocódigo descreve o processo de

expansão:

KeyExpansion ( byte key[16], word w[44] )

{

word temp

for ( i = 0; i < 4; i++ ) {

w[ i ] = ( key[ 4 * i ], key[ 4 * i + 1 ], key[ 4 * i + 2 ], key[ 4 * i + 3] );

}

for ( i = 4; i < 44; i++ ) {

temp = w[ i – 1 ];

if ( i mod 4 = 0 )

temp = SubWord( RotWord( temp )) Rcon[ i / 4 ];

w[ i ] = w[ i – 4 ] temp;

}

}

Page 61: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

60

Figura 30. Expansão de chave do AES

Fonte: STALLINGS (2008)

Como ilustra a Figura 30, os 16 bytes da chave são mapeados para

quatro words. A primeira coluna corresponde a w0, a segunda a w1 e assim

sucessivamente. Analisando cuidadosamente a figura, nota-se que w[i]

depende de w[ i – 1 ] e w[ i – 4 ]. A operação realizada é um XOR com um

diferencial na word que tiver uma posição múltipla de 4. O símbolo g é usado

para indicar a operação mais complexa realizado nessas words específicas.

Ela é composta pelas sub-funções:

1. Deslocamento circular de um byte à esquerda. RotWord transforma a

word de entrada [b0, b1, b2, b3] em [b1, b2, b3, b0].

2. SubWord faz uso da S-box para substituir cada byte da word de entrada.

3. O resultado das etapas acima são submetidos a um XOR com uma

constante de rodada, denominada Rcon[j].

Stallings (2008) diz que a constante de rodada é definida por Rcon[j] =

(RC[j], 0, 0, 0), com (RC[1] = 1, RC[j] = 2 • RC[ j - 1] ) e com multiplicação

definida sobre o corpo GF(28). Os valores de RC[j] em hexadecimal são

Page 62: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

61

J 1 2 3 4 5 6 7 8 9 10

RC[j] 01 02 04 08 10 20 40 80 1B 36

RCon realiza um XOR apenas com os bytes mais à esquerda pois os

demais valores da word são sempre 0. Assim, para RC[4] tem-se Rcon[4] =

08000000.

Para uma melhor compreensão, considere o exemplo a seguir:

Chave da rodada 8 : EA D2 73 B5 8D BA D2 31 2B F5 60 7F 8D 29 2F

Para calcular a chave da rodada 9 são aplicada as funções descritas

anteriormente:

i(decimal) temp Após

RotWord

Após

SubWord

Rcon (9) Após XOR

com Rcon

w[i - 4] w[i] = temp

w[ i – 4 ]

36 7F8D292F 8D292F7F 5DA515D2 1B000000 46A515D2 EAD27321 AC7766F3

na qual: i é a posição da word no vetor, no caso w[36].

Page 63: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

62

5. CRIPTOGRAFIA DE CHAVE PÚBLICA

O conceito de criptografia de chave pública surgiu da necessidade de

solucionar dois problemas da criptografia de chave secreta: a distribuição de

chaves e as “assinaturas digitais”.

Como mencionado no Capítulo 4, o grande gargalo da criptografia

simétrica era fazer com que os usuários trocassem a chave de forma secreta.

Pensando nisso, Whitfield Diffie (matemático formado pelo MIT) iniciou estudos

visando buscar uma forma alternativa de criptografia, algo que revolucionasse

o mundo criptográfico. O resultado de suas pesquisas juntamente com Martin

Hellman e Ralph Merkle resultaram na criptografia de chave assimétrica (Singh,

2010).

Esse novo tipo de cifragem utiliza duas chaves: uma chave pública, de

conhecimento de todos e uma chave privada, exclusiva do proprietário. A

primeira é usada, normalmente, para criptografar o texto claro, enquanto que a

outra é usada para decriptografar. Por isso, esse tipo de criptografia é

considerada como assimétrica porque chaves diferentes são usadas para cifrar

e decifrar a mesma mensagem.

A criptografia de chave simétrica é baseada apenas em permutações e

substituições, mas a criptografia de chave pública utiliza funções matemáticas.

De fato, “o desenvolvimento da criptografia de chave pública é a maior e talvez

a única verdadeira revolução na história da criptografia.” (STALLINGS, 2008).

O RSA (Rivest, Shamir, Adleman) é o um dos principais algoritmos de

chave pública e tem grande aceitação desde a sua publicação em 1978 pelos

pesquisadores do MIT Ron Rivest, Adi Shamir e Leonard Adleman.

5.1 O ESQUEMA DE DIFFIE-HELLMAN-MERKLE

Segundo Singh (2010), Diffie e Hellman concentraram sua pesquisa nas

funções matemáticas. Entenda como função qualquer operação matemática

que transforma um número em outro número. Assim, “triplicar” é uma função

Page 64: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

63

que transforma o número 5 em 15. As cifragens feitas por computador também

podem serem vistas como funções, pois transformam um número (texto

original) em outro (texto cifrado).

Eles buscaram uma função de mão única, ou seja, que fosse de difícil

reversão. A função de “triplicar“ é de mão dupla porque pode ser facilmente

revertida; se um número multiplicado por 3 resultou em 15, então o número

original é obviamente o 5. Diffie e Hellman pensaram em situações do cotidiano

para ilustrar exemplos de funções de mão única e mão dupla. O ato de acender

uma lâmpada é um exemplo de mão dupla porque ao pressionar novamente o

interruptor o estado original da lâmpada (desligada) é restaurado.

Entretanto, o interesse de Diffie e Hellman eram as funções de mão

única. Tomando ainda como exemplo atividades do dia-a-dia, considere o ato

de quebrar um ovo. É fácil quebrá-lo, mas impossível restaurá-lo ao seu estado

original. Ou ainda a mistura de duas tintas de cor azul e amarela para produzir

tinta verde, contudo é impossível desfazer a mistura para recuperar qualquer

uma das cores. Nessa linha de raciocínio, eles passaram a estudar a aritmética

modular.

Figura 31. Aritmética em modular 7

Fonte: Adaptado de Singh (2010)

A Figura 31 mostra um relógio para o cálculo de valores em módulo 7.

Para calcular 2 + 3 posicione-se no número 2 e avance 3 casas obtendo o 5.

Para calcular 2 + 6, comece no 2 e avance 6 casas para obter 1 como

resultado.

2 + 3 = 5 (mod 7) e 2 + 6 = 1 (mod 7)

Page 65: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

64

Isso é uma simples analogia do que os matemáticos realmente fazem.

Primeiro faça o cálculo usando a aritmética normal e obtenha y. Em seguida,

para saber o resultado em (mod x), divida y por x e anote o resto. Então o resto

é a resposta em (mod x). Para calcular 12 x 8 (mod 15), faça:

12 x 8 = 96

96 dividido por 15 = 6, resto 6

12 x 8 = 6 (mod 15)

Para perceber a complexidade de reversão da aritmética modular, faça

uma comparação com uma função reversível. Considere a função f(x) = 3x. Se

o resultado dado for 81, é fácil deduzir que a resposta para x é 4, pois 34 = 81.

Apenas com alguns palpites é possível encontrar o resultado. Caso fosse

sugerido o número 6 como resposta teria-se 36 = 729, o que leva a entender

que o palpite está além do valor correto de x.

Agora, considere que te seja pedido o valor de x para 3x (mod 7) = 1. Se

o palpite inicial for 5, tem-se 35 (mod 7) = 5 que é um resultado alto para o que

se deseja. Logicamente, tenta-se um valor menor para x. Mas certamente isso

seria inútil porque a resposta verdadeira para x é 6. A tabela 3 mostra que a

função 3x (mod 7) não tem uma sequência lógica de resultados como 3x.

Tabela 3 Comparação entre duas funções de mão dupla e única

X 1 2 3 4 5 6

3x 3 9 27 81 243 729

3x (mod 7) 3 2 6 4 5 1

Fonte: Adaptado de Singh (2010)

Imagine a construção da tabela para a função 453x (mod 21.997). Seria

muito dificultoso calcular um valor de x para um resultado 5.787. Veja que ao

Page 66: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

65

escolher x é fácil calcular a função e obter 5.787, mas seria necessário horas

para construir uma tabela como a Tabela 3 e encontrar x.

Depois de dois anos, Hellman chegou a conclusão do uso de uma

função de mão única na forma Yx (mod P). Alice e Bob2 escolhem um valor

para Y e P com uma única restrição de Y ser menor do que P. Não há

problema se Eva ouvir a conversação mesmo que eles usem uma linha

telefônica para trocar essa informação porque as mesmas não secretas.

Figura 32. Função de mão única genérica Yx (mod P). Alice e Bob usam neste

exemplo, em particular, 7x (mod 11)

Alice Bob

Fase 1 Alice escolhe um número,

digamos 3, e o mantém em

segredo. Chame o número de

A.

Bob escolhe um número,

digamos 6, e o mantém em

segredo. Chame o número de

B.

Fase 2 Alice introduz o 3 na função de

mão única e o resultado de

7A(mod 11): 73(mod 11) =

343(mod 11) = 2

Bob introduz o 6 na função

de mão única e o resultado

de 7B(mod 11): 76(mod 11) =

117.649(mod 11) = 4

Fase 3 Alice chama o resultado de

seus cálculos de alfa e envia

seu resultado, 2, para Bob.

Bob chama o resultado de

seus cálculos de beta e envia

seu resultado, 4, para Alice.

A troca Normalmente este seria um momento crucial porque Alice e

Bob estão trocando informações, e portanto esta é uma

oportunidade para Eva escutar e descobrir os detalhes da

informação transmitida. Contudo, Eva pode ouvir sem

comprometer a segurança final do sistema. Alice e Bob podem

usar a mesma linha telefônica através da qual escolheram os

valores de Y e P, e Eva pode interceptar esses números que

estão sendo trocados, ou seja, 2 e 4. Contudo estes números

não são a chave, e por isso não importa que Eva os conheça.

2 Alice, Bob e Eva são personagens clássicos da criptografia (Singh, 2010).

Page 67: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

66

Fase 4 Alice pega o resultado de Bob

e calcula a solução de βA

(mod 11): 43 (mod 11) = 64

(mod 11) = 9

Bob pega o resultado de

Alice e calcula a solução de

αB (mod 11): 26 (mod 11) = 64

(mod 11) = 9

A chave

Miraculosamente Alice e Bob terminaram com o mesmo

número 9. Esta é a chave!

Fonte: Adaptado de Singh (2011)

Os passos seguintes são descritos na Figura 32. Neste ponto, Alice e

Bob podem usar o número 9 como chave para cifrar uma mensagem através

do DES, por exemplo.

Analisando cada passo descrito na Figura 32 é possível notar que Alice

e Bob conseguiram trocar informações e obter uma chave secreta. Mas como

ter certeza que Eva não conseguirá calcular a chave através dos valores

conhecidos de Y e P?

Como Eva não conhece os valores de A e B, ela terá que calcular A

através de alfa como resultado de A na função 7x (mod 11) ou calcular B

através de beta como resultado de B na função 7x (mod 11). Contudo, essa é

uma função de mão única, o que torna esse processo de reversão difícil para

Eva, principalmente se os números forem muito grandes.

Singh (2010) traz uma analogia do esquema de Hellman para a geração

da chave secreta entre Alice e Bob. Presuma que Alice, Bob e Eva tenham um

vaso de três litros com um litro de tinta amarela, cada um. Alice e Bob

acrescentam um litro de sua cor secreta ao seu próprio vaso. Alice pode usar

um tom de vermelho enquanto Bob pode colocar verde. Eles enviam seus

vasos um para o outro. Finalmente Alice pega a mistura de Bob e acrescenta

um litro de sua própria cor secreta. Simultaneamente Bob pega o vaso de Alice

e acrescenta sua cor secreta. Ao final da mistura, Alice e Bob possuem a

mesma cor nos vasos porque ambos possuem as cores amarelo, vermelho e

verde. Entretanto, eles não têm conhecimento da cor secreta que cada um

Page 68: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

67

usou. Quanto a Eva, ela pode ter interceptado um dos vasos após a primeira

mistura, mas não consegue descobrir qual a cor secreta usada para gerar tal

cor porque a mistura de tintas é uma função de mão única.

O problema da distribuição de chaves estava parcialmente resolvido.

Parcialmente porque era necessário que Alice e Bob estivessem “juntos” no

momento da geração da chave. Imagine que Alice deseja enviar uma

mensagem para Bob, mas ele se encontra dormindo. Alice ficaria

impossibilitada de entregar a mensagem porque antes é necessário que haja

uma troca mútua de informações para gerar uma chave secreta. Apesar de um

grande passo, esse esquema prejudicava a espontaneidade do e-mail.

5.2 PRINCÍPIOS DE CRIPTOSSISTEMAS DE CHAVE PÚBLICA

Apesar do esquema criptográfico funcional apresentado anteriormente,

nada havia sido implementado em computador. Entretanto, já se pensava na

ideia de chaves diferentes para cifrar e decifrar a mensagem. Alice teria uma

chave pública que seria do conhecimento de todos, disponível em uma lista

telefônica, por exemplo. Ela não precisa transmitir essa chave de forma

confidencial, antes expõe a todos a sua chave de cifragem pública, inclusive a

maléfica Eva. Contudo, a chave pública em nada ajuda no processo de

decifragem. Mesmo que Bob criptografe a mensagem com a chave pública de

Alice, somente ela poderá decriptografá-la com sua chave particular.

O criptossistema de chave pública pode ser representado pela analogia:

Alice projeta um cadeado e uma chave. Ela guarda a chave, mas manda fabricar milhares de réplicas do cadeado e as distribui pelas agências do correio do mundo inteiro. Se Bob quer mandar uma mensagem, ele a coloca em uma caixa, vai até a agência local dos correios e pede um „cadeado da Alice‟, usando-o para trancar a caixa. Agora ele é incapaz de abri-la, mas quando Alice a receber poderá abri-la com sua chave única. O cadeado e o processo de trancá-la são equivalentes à chave de cifragem pública, porque todos têm acesso aos cadeados e todos podem usá-los para trancar uma mensagem em uma caixa. A chave do cadeado equivale à chave de decifragem particular, porque somente Alice a possui, só ela pode abrir o cadeado e só ela pode ter acesso à mensagem na caixa. (SINGH, 2010, p. 296).

Page 69: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

68

É possível notar duas características na elaboração de algoritmos

assimétricos:

Ser computacionalmente inviável determinar a chave de decriptografia

mesmo com o conhecimento do algoritmo e chave de criptografia.

Qualquer uma das duas chaves podem ser usadas para criptografar

desde que a outra seja usada para decriptografar.

Figura 33 Criptografia de chave assimétrica

Fonte: (STALLINGS, 2008)

A Figura 33 mostra o esquema para a criptografia de chave assimétrica.

Quando usada de forma contrária ao modo convencional, a criptografia

assimétrica provê outros benefícios além da confidencialidade dos dados.

Considere que Bob deseja enviar uma mensagem para Alice e criptografa-a

com sua chave privada. Alice pode facilmente decifrar a mensagem com a

chave pública de Bob. Portanto, a mensagem cifrada com a chave privada de

Bob serve para indicar que ele realmente enviou tal mensagem. Logo, todas as

mensagens criptografadas dessa forma servem como uma assinatura digital.

Esse processo é semelhante às assinaturas em documentos de papel para

verificar se uma mensagem foi enviada por determinada pessoa.

Page 70: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

69

Figura 34. Autenticação usando Criptografia de Chave Pública

Fonte: STALLINGS (2008)

A figura 34 mostra a garantia da autenticação através do uso da

criptografia de chave pública.

5.3 ALGORITMO RSA

Inicialmente, Alice precisa gerar um par de chaves: a chave pública – PU

– e a chave privada – PR. Para isso, é necessário que ela escolha dois

números, p e q, inteiros e primos. Em seguida, Alice multiplica p e q obtendo N.

Suponha que Alice escolheu p = 2 e q = 11. Multiplicando os dois

números, temos que N = 2 x 11 = 22. O valor N é como a chave pública e se

torna disponível a todos, mas somente Alice deve conhecer p e q porque estes

valores são informações específicas e necessárias para a decifragem das

mensagens. Em vista de N ser uma informação acessível a todos, é necessário

que ele seja um valor suficientemente grande de tal forma que seja impossível

encontrar os valores de p e q através da fatoração. Para Singh (2010) este é

talvez o aspecto mais belo e elegante da cifra assimétrica RSA o que garante a

segurança do alogritmo.

Agora Alice deve escolher um terceiro número e que seja menor e

relativamente primo a (p – 1)(q – 1) e calcular um inteiro d que satisfaça e x d =

1 mod (p – 1 )(q – 1). Dois números inteiros são ditos relativamente primos se o

Page 71: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

70

número 1 é o único fator inteiro positivo em comum entre eles. Considerando

os valores de p e q que têm sido utilizados até o momento tem-se:

ed 1 mod (2 – 1 )(11 – 1 )

ed 1 mod 10

Como o valor de e deve ser relativamente primo a 10, um dos valores

possíveis é e = 3. Logo, através do algoritmo de Euclides achamos d = 7, pois

21 = 1 mod 10. De forma geral, o relacionamento entre e e d pode ser expresso

como

ed mod (n) = 1

, onde (n) = (pq) = (p – 1)(q – 1). Isso é equivalente a dizer

ed 1 mod (n)

d e-1 mod (n)

Em posse de todas as informações necessárias, Alice pode enviar uma

mensagem criptografada para Bob. A criptografia e a decriptografia tem a

seguinte forma para um bloco de texto claro M e saída de texto cifrado C:

C = Me mod n

M = Cd mod n = (Me)d mod n = Med mod n

Por fim, a chave pública de Alice é expressa por PU = (e, n) e a chave

secreta por PR = (d, n). Para o exemplo em questão, PU = (3, 22) e PR = (7,

22).

Stallings (2008) resume os ingredientes do esquema RSA:

p,q , dois números primos (privados, escolhidos)

n = pq (público, calculado)

e, com mdc( (n), e) = 1; 1 < e < (n) (público, escolhido)

d e-1 (mod (n)) (privado, calculado)

Page 72: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

71

Figura 35 Esquema geral do RSA

Fonte: STALLINGS (2008)

A figura 35 mostra de forma direta e clara o esquema geral do RSA.

Um exemplo extraído de Stallings (2008) mostra como calcular o par de

chaves e o processo de criptografar e decriptografar uma mensagem:

1. Selecione dois números primos, p = 17 e q = 11.

2. Calcule n = 17 x 11 = 187.

3. Calcule (n) = (p – 1)(q – 1) = 16 x 10 = 160.

4. Escolha um número e que seja menor e relativamente primo a (n) =

160; faça e = 7.

5. Determine d tal que de 1 (mod 160) e d < 160. Usando o algoritmo de

Euclides, tem-se que o valor correto de d = 23, pois 23 x 7 = 161 = 1 x

160 + 1.

As chaves resultantes são: PU = {7, 187} e PR = {23, 187}. Agora

imagine que Bob quer enviar a letra X para Alice. Em ASCII, ela é representada

por 101 1000, que vale 88 decimais. Portanto, o texto claro de entrada é M =

88. Para criptografar o código é necessário calcular C = 887 mod 187. Usando

Page 73: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

72

as propriedades da aritmética modular o cálculo se torna mais fácil, pois 7 = 4 +

2 + 1:

887 mod 187 = [(884 mod 187) x (882 mod 187) x (881 mod 187)] mod 187

881 mod 187 = 88

882 mod 187 = 7744 mod 187 = 77

884 mod 187 = 59.969.536 mod 187 = 132

887 mod 187 = (88 x 77 x 132) mod 187 = 894.432 mod 187 = 11

Bob neste momento envia o texto cifrado, C = 11, para Alice. Para

decriptografar a mensagem, Alice calcula M = 1123 mod 187:

M = 1123 mod 187

1123 mod 187 = [(111 mod 187) x (112 mod 187) x (114 mod 187) x

x (118 mod 187) x (118 mod 187)]

111 mod 187 = 11

112 mod 187 = 121

114 mod 187 = 14.641 mod 187 = 55

118 mod 187 = 214.358.881 mod 187 = 33

1123 mod 187 = (11 x 121 x 55 x 33 x 33) mod 187 = 88

M = 88 = X em ASCII

A Figura 36 ilustra o exemplo.

Figura 36. Exemplo do algoritmo RSA

Fonte: STALLINGS (2008)

Page 74: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

73

6. CONCLUSÃO

A criptografia tem se apresentada como uma arte tão antiga quanto

essencial nas comunicações. À medida que foi evoluindo, ela foi se adequando

a tecnologia da época, o que sempre tornava o processo de decifragem um

novo obstáculo para os quebradores de código. Contudo, a Matemática sempre

mostrou assumir papel importante no estudo da Criptografia.

Desde a invenção do computador, as mensagens passaram a ser

codificadas no sistema de numeração binária. Isso já mostrava que a

Matemática possui uma melhor capacidade de lidar com as mais variadas

técnicas criptográficas.

A primeira vista pode parecer difícil aplicar a matemática à criptografia

de uma forma que traga a segurança necessária. Mas a persistência de alguns

pesquisadores mostrou que há muito a ser explorado, pois até hoje nessa

ciência perduram problemas insolúveis. Não é o simples uso de uma função

matemática que criará a cifra indecifrável, mas a combinação lógica de

diversos dos seus elementos associados até mesmo a outras áreas do

conhecimento, como a física quântica, pode fornecer uma cifra

temporariamente segura, como a Criptografia Quântica.

É importante notar que a evolução da tecnologia está diretamente ligada

a segurança da informação, pois quanto mais poder computacional existir mais

fácil será ter acesso as mensagens criptografadas, principalmente pelo uso da

força bruta. Um grande exemplo é o algoritmo RSA que tem sua segurança

baseada na dificuldade computacional de se fatorar um número relativamente

grande.

Por fim, é importante a constante pesquisa no ramo da Matemática

aplicada à Criptografia. A NSA, por exemplo, possui os melhores matemáticos

do mundo porque sabe do potencial que o conhecimento desses profissionais

podem causar na atual Era da Informação. Em meio ao grande avanço

tecnológico, a matemática prevalece como um dos alicerces que sustém a

criptografia.

Page 75: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

74

REFERÊNCIAS

ALMEIDA. André Tenreiro de. O uso da matemática na criptografia. Rio de Janeiro, s/i 2005. Disponível em: http://www.gta.ufrj.br/grad/05_2/aes/. Acesso em: 06 nov. 2011. BEZERRA, D. J.; MALAGUTTI, P. L.; RODRIGUES, V. C. S. Aprendendo criptologia de forma divertida. Paraíba, 2010. Disponível em: http://www.mat.ufpb.br/bienalsbm/arquivos/Oficinas_Completos/O1Completo.pdf. Acesso em: 06 set. 2011. CÓDIGOS SECRETOS. A cítala espartana. [s/l]. Disponível em: http://www.dm.ufscar.br/~caetano/iae2004/G6/citala.htm. Acesso em 12 set. 2011. DONDA, Daniel. A matemática da cifra de Vigenère. [s/l], 29 set. 2010. Disponível em: http://www.mcsesolution.com/Seguran%C3%A7a/a-matematica-da-cifra-de-vigenere.html. Acesso em: 10 out. 2011. KIOSKEA. Introdução à codificação DES. [s/l], 11 jul. 2009. Disponível em: http://pt.kioskea.net/contents/crypto/des.php3. Acesso em: 19 set. 2011. KUROSE, J. F.; ROSS, K. W. Redes de computadores e a internet. 5 ed. São Paulo: Editora Addison-Wesley, 2010. MAIER, R. R.; Teoria dos números. Brasília, 2005. 139 f. Notas de aula, Departamento de Matemática – IE/UnB. Disponível em: http://www.mat.unb.br/~maierr/tnotas.pdf. Acesso em: 22 nov. 2011. MATHIAS. Leopoldo A. P. Algoritmo de criptografia AES. Disponível em: http://www.gta.ufrj.br/grad/05_2/aes/. Acesso em: 29 out. 2011. NUMABOA. Criptografia Numaboa. Disponível em: http://www.numaboa.com.br/criptografia. Acesso em: 14 set. 2011. SINGH, Simon. O livro dos códigos: a ciência do sigilo – do Egito à criptografia quântica. 8 ed. Rio de Janeiro: Editora Record, 2010. STALLINGS, William. Criptografia e segurança de redes: princípios e práticas. 4 ed. São Paulo: Editora Pearson, 2008. TANENBAUM, A. S. Redes de computadores. 4 ed. Rio de Janeiro: Editora Campus, 2003. TERADA, Routo. Segurança de dados: criptografia em rede computador. 2 ed. São Paulo: Editora Edgar Blucher, 2011.

Page 76: Fundamentos Matemáticos para Geração de Algoritmos Criptográficos

75

ULBRICH, Henrique Cesar; DELLA VALLE, James. Universidade Hacker: desvende todos os segredos do submundo dos hackers. 6 ed. São Paulo: Editora Digerati Books, 2009. VARGAS, Marcello. MDC. Porto Alegre, 07 out. 2010. Disponível em: http://professormarcello.com/index.php?option=com_content&task=view&id=694&Itemid=47. Acesso em: 14 nov. 2011. WIKIPÉDIA. Enigma (máquina). [s/l], 04 de nov. 2011. Disponível em: http://pt.wikipedia.org/wiki/Enigma_%28m%C3%A1quina%29. Acesso em: 13 nov. 2011.