Szyfr blokowy Feistel
Feistel Cipher nie jest specyficznym schematem szyfru blokowego. Jest to model projektowy, z którego wywodzi się wiele różnych szyfrów blokowych. DES to tylko jeden przykład szyfru Feistel. System kryptograficzny oparty na strukturze szyfru Feistela wykorzystuje ten sam algorytm zarówno do szyfrowania, jak i deszyfrowania.
Proces szyfrowania
Proces szyfrowania wykorzystuje strukturę Feistel składającą się z wielu rund przetwarzania tekstu jawnego, z których każda składa się z etapu „podstawienia”, po którym następuje etap permutacji.
Struktura Feistel jest pokazana na poniższej ilustracji -
Blok wejściowy do każdej rundy jest podzielony na dwie połowy, które można oznaczyć jako L i R dla lewej połowy i prawej połowy.
W każdej rundzie prawa połowa bloku R przechodzi bez zmian. Ale lewa połowa, L, przechodzi operację zależną od R i klucza szyfrującego. Najpierw stosujemy funkcję szyfrującą „f”, która pobiera dwa dane wejściowe - klucz K i R. Funkcja generuje dane wyjściowe f (R, K). Następnie XOR wynik funkcji matematycznej z L.
W rzeczywistej implementacji szyfru Feistel, takiej jak DES, zamiast używać całego klucza szyfrowania podczas każdej rundy, z klucza szyfrowania wyprowadzany jest klucz zależny od rundy (podklucz). Oznacza to, że każda runda używa innego klucza, chociaż wszystkie te podklucze są powiązane z oryginalnym kluczem.
Krok permutacji na końcu każdej rundy zamienia zmodyfikowane L i niezmodyfikowane R. Dlatego L dla następnej rundy będzie R bieżącej rundy. A R dla następnej rundy będzie wyjściem L bieżącej rundy.
Powyższe kroki podstawiania i permutacji tworzą „rundę”. Liczba rund jest określona przez projekt algorytmu.
Po zakończeniu ostatniej rundy dwa podbloki „R” i „L” są łączone w tej kolejności, aby utworzyć blok szyfrogramu.
Trudną częścią projektowania szyfru Feistela jest wybór okrągłej funkcji „f”. Aby być schematem nierozerwalnym, funkcja ta musi mieć kilka ważnych właściwości, które są poza zakresem naszej dyskusji.
Proces deszyfrowania
Proces deszyfrowania w szyfrze Feistela jest prawie podobny. Zamiast zaczynać od bloku tekstu jawnego, blok tekstu zaszyfrowanego jest wprowadzany na początek struktury Feistela, a następnie proces jest dokładnie taki sam, jak opisano na podanej ilustracji.
Mówi się, że proces jest prawie podobny, a nie dokładnie taki sam. W przypadku deszyfrowania jedyną różnicą jest to, że podklucze używane w szyfrowaniu są używane w odwrotnej kolejności.
Ostateczna zamiana „L” i „R” w ostatnim kroku szyfru Feistela jest niezbędna. Jeśli nie zostaną one zamienione, wynikowy szyfrogram nie może zostać odszyfrowany przy użyciu tego samego algorytmu.
Liczba rund
Liczba rund użytych w Feistel Cipher zależy od pożądanego zabezpieczenia systemu. Większa liczba rund zapewnia bezpieczniejszy system. Ale jednocześnie więcej rund oznacza nieefektywne powolne procesy szyfrowania i deszyfrowania. Liczba rund w systemach zależy zatem od kompromisu między wydajnością a bezpieczeństwem.