Cifra Feistel Block
A codificação Feistel não é um esquema específico de codificação de bloco. É um modelo de design do qual muitas cifras de bloco diferentes são derivadas. DES é apenas um exemplo de uma cifra Feistel. Um sistema criptográfico baseado na estrutura de cifras Feistel usa o mesmo algoritmo para criptografia e descriptografia.
Processo de criptografia
O processo de criptografia usa a estrutura Feistel que consiste em várias rodadas de processamento do texto simples, cada rodada consistindo em uma etapa de “substituição” seguida por uma etapa de permutação.
A estrutura de Feistel é mostrada na ilustração a seguir -
O bloco de entrada para cada rodada é dividido em duas metades que podem ser denotadas como L e R para a metade esquerda e a metade direita.
Em cada rodada, a metade direita do bloco, R, segue inalterada. Mas a metade esquerda, L, passa por uma operação que depende de R e da chave de criptografia. Primeiro, aplicamos uma função de criptografia 'f' que recebe duas entradas - a chave K e R. A função produz a saída f (R, K). Então, nós XOR a saída da função matemática com L.
Na implementação real do Feistel Cipher, como o DES, em vez de usar a chave de criptografia inteira durante cada rodada, uma chave dependente de rodada (uma subchave) é derivada da chave de criptografia. Isso significa que cada rodada usa uma chave diferente, embora todas essas subchaves estejam relacionadas à chave original.
A etapa de permutação no final de cada rodada troca o L modificado e o R não modificado. Portanto, o L para a próxima rodada seria R da rodada atual. E R para a próxima rodada será a saída L da rodada atual.
As etapas de substituição e permutação acima formam uma 'rodada'. O número de rodadas é especificado pelo projeto do algoritmo.
Quando a última rodada for concluída, os dois sub-blocos, 'R' e 'L', são concatenados nesta ordem para formar o bloco de texto cifrado.
A parte difícil de projetar uma Cifra Feistel é a seleção da função redonda 'f'. Para ser um esquema inquebrável, essa função precisa ter várias propriedades importantes que estão além do escopo de nossa discussão.
Processo de descriptografia
O processo de descriptografia na cifra Feistel é quase semelhante. Em vez de começar com um bloco de texto simples, o bloco de texto cifrado é alimentado no início da estrutura do Feistel e, a seguir, o processo é exatamente o mesmo descrito na ilustração fornecida.
Diz-se que o processo é quase semelhante e não exatamente o mesmo. No caso da descriptografia, a única diferença é que as subchaves usadas na criptografia são usadas na ordem inversa.
A troca final de 'L' e 'R' na última etapa da Cifra Feistel é essencial. Se eles não forem trocados, o texto cifrado resultante não poderá ser descriptografado usando o mesmo algoritmo.
Número de rodadas
O número de rodadas usadas em uma codificação Feistel depende da segurança desejada do sistema. Mais número de rodadas fornece um sistema mais seguro. Mas, ao mesmo tempo, mais rodadas significam os processos ineficientes de criptografia e descriptografia lentos. O número de rodadas nos sistemas, portanto, depende da compensação entre eficiência e segurança.