Você está na página 1de 6

CRIPTOGRAFIA E CIFRA SIMÉTRICA DE FEISTEL

Lucas Gabriel Cardoso Gomes Ferreira | RU - 4089358


Disciplina de Matemática Computacional

RESUMO
Neste artigo discutiremos sobre a utilização do método de Cifragem para criptografia de textos,
abordando principalmente a cifra de Feistel ou rede de Feistel e a exemplificando com o método na
prática.

1 INTRODUÇÃO
Quem nunca enviou uma mensagem por telefone, computador ou outro meio
de comunicação e se perguntou como isto seria de algum modo transformado em uma
informação segura e privada para terceiros? Provavelmente hoje você já deve ter
utilizado algum destes meios de informação sem se preocupar com a segurança, em
alguns casos, por trás de tudo isso existem vários métodos de criptografia para
garantir a confidencialidade dos dados, que podem se tratar de métodos simples e ir
até a grandes cadeias de criptografia.

2 CRIPTOGRAFIA
Quando se trata de troca de mensagens e informações sigilosas, podemos
perceber que este não é um assunto atual, temos vários indícios de escribas que em
torno de 1900 a.C. criavam hieróglifos diferentes dos normais, podendo ser algum tipo
de mensagem oculta, ou como discutido aqui, uma criptografia; um tempo após, temos
o exemplo do povo Hebreu, que em torno de 500 a.C. já utilizavam métodos de
cifragem simples; um pouco adiante, temos o exemplo do Ex-Ditador romano Júlio
César (100 – 44 a.C.) que utilizava um método de cifragem em suas mensagens de
tema militar, cifra esta em que se trocava cada letra do alfabeto por outra a 3 posições
de distância, assim gerando um novo alfabeto criptografado, onde somente receptores
que conheciam a técnica conseguiam decifrar a mensagem.
3 CIFRA DE FEISTEL
A Cifra de Feistel é uma estrutura de cifragem simétrica, onde a mensagem é
convertida em blocos, blocos estes que serão criptografados e transformados em uma
mensagem incompreensível e diferente, onde o único método de se decifrar e
compreender a mensagem original é efetuando o mesmo método de criptografia
utilizando as mesmas chaves e operações.

(esta e as seguintes ilustrações são autorais)

Este diagrama nos exibe como a cifra funciona, primeiramente em caso de


nossa mensagem ser alfabética, devemos converte-la para algum um tipo de sistema
de algarismos, como por exemplo o ASCII, onde cada letra terá um valor binário
definido, valores estes que serão dividida em dois blocos, podemos denominar estes
de esquerda e direita, após isto o bloco da direita vai passar por uma função F, que
pode ser um shift left, shift right, ou qualquer operação que modifique este bloco de
modo cíclico utilizando uma chave K de operações ou valores; em seguida
realizaremos a porta lógica XOR do resultado da função F com bloco esquerdo, após
isto teremos como saída o resultado da Cifra, podendo ser repetida novamente
indeterminadas vezes para gerar uma criptografia mais forte e difícil de ser decifrada.
Em seguida para decifrarmos basta repetir o procedimento utilizando as
mesmas chaves K utilizadas no método de cifragem, após o procedimento ser
concluído teremos como resultado a mensagem original.

3.2 EXEMPLO PRATICO DE CODIFICAÇÃO COM A CIFRA DE FEISTEL


Para exemplificarmos os processos de codificação e descodificação utilizando
o método da Cifra de Feistel utilizaremos o seguinte enunciado:
“Codificar as 4 primeiras letras de seu nome pela cifra simétrica de Feistel de
apenas 2 estágios, utilizando em ambos os estágios a mesma chave criptográfica K,
originada no último dígito nulo de seu RU. A função F será um SHIFT LEFT, cíclico,
de K posições.”
Podemos transformar este processo no seguinte diagrama:

A mensagem a ser criptografada será convertida em um trem de bits por meio


do sistema ASCII, este trem de bits será dividido em dois blocos
Como sugerido do enunciado transmitiremos a mensagem “Luca”, que
convertida com a tabela ASCII gera os seguintes Bytes:

L 0100 1100
u 0111 0101
c 0110 0011
a 0110 0001

Transformando estes Bytes em um trem de bits plano e divido em duas partes


teremos o seguintes blocos de bytes:

Bloco Esquerdo Bloco Direito


010011000111010 0110001101100001

De acordo com o Diagrama o primeiro passo para a codificação é efetuar a


função F do bloco direito utilizando a chave criptográfica K, que neste caso será o
valor decimal 8 presente no último digito nulo de meu RU, a partir desta chave iremos
realizar um Shift Left, que nada mais é do que o deslocamento de posições dos bits
para a esquerda, mas resguardando os bits perdidos no processo e os relocando no
final da memória. Neste caso iremos deslocar todos os bits para a esquerda 8 vezes,
cada um dos bits perdidos retornará para o final da memória.

Nosso próximo passo é efetuar a porta logica XOR do bloco esquerdo com o
valor adquirido com a função F do bloco da direita. Para isso utilizaremos a tabela
verdade da porta lógica XOR.

(tabela verdade porta lógica XOR)

Realizando isso concluímos o primeiro estágio da criptografia, porém, como dito


no enunciado faremos 2 estágios, sendo assim repetiremos o processo feito
anteriormente utilizando como bloco direito o resultado da Porta Lógica XOR e como
bloco esquerdo o mesmo bloco direito utilizado no estágio 1.
Assim teremos os seguintes blocos:

Bloco Esquerdo Bloco Direito


0110001101100001 0010110100010110

A partir disso iremos realizar o processo descrito anteriormente com estes bytes
e utilizar novamente a mesma chave K.
Realizando o mesmo procedimento teremos os seguintes resultados:
Função F do bloco da direita:
Porta lógica XOR do bloco da esquerda com o resultado da função F do bloco
da direita:

Após isto, teremos nossa criptografia de 2 estágios finalizada, sendo que o


bloco esquerdo será o resultado da Porta lógica XOR enquanto a bloco direito
criptografado continuará sendo o bloco direito do estágio 2. Contudo formaremos o
trem de bits 01110101010011000010110100010110, já podendo ser transmitido com
segurança para o receptor da informação que futuramente irá decodificar a
mensagem.

3.2 EXEMPLO PRATICO DE DESCODIFICAÇÃO COM A CIFRA DE FEISTEL


Para decodificarmos nosso trem de bits utilizando a Cifra de Feistel basta
efetuarmos o mesmo processo da codificação utilizando o novo trem de bits e as
chaves K
Para isto iremos utilizar os seguintes blocos adquiridos anteriormente na
codificação:

Bloco Esquerdo Bloco Direito


0111010101001100 0010110100010110

Primeiramente iremos efetuar a Função F do bloco direito.

Agora efetuaremos a porta lógica XOR de do bloco da esquerda com o


resultado da função F do bloco da direita.
Concluímos a primeira parte da decodificação, agora basta efetuarmos o segundo
estágio utilizando os resultados adquiridos e teremos nossa mensagem decifrada.
Como Bloco esquerdo utilizaremos o resultado a porta direita e como porta direita
utilizaremos o resultado da porta logica XOR.
Neste momento efetuaremos a função F do bloco direito.

Agora basta efetuar a porta lógica XOR do bloco da esquerda com o resultado
da função F.

Feito isto teremos nossa mensagem decifrada, resultando o trem de bits


01001100011101010110001101100001.
Como prova real podemos efetuar a separação de cada byte (resultando em
0100 1100 0111 0101 0110 0011 0110 0001) e efetuar a conversão para o sistema
ASCII, teremos nossa mensagem decifrada.

L 0100 1100
u 0111 0101
c 0110 0011
a 0110 0001

Você também pode gostar