Wstęp:
     Standard DES został stworzony przez inżynierów IBM, jako udoskonalona wersja projektu LUCIFER powstałego w późnych latach 60. LUCIFER, był szyfrem blokowy, który pracował na blokach 64-bitowych z kluczem 128-bitowym.W wyniku przeprowadzonych prac powstała udoskonalona wersja LUCIFERA, bardziej odporna na kryptoanalizę, za to z kluczem zmniejszonym do 56 bitów. W roku 1977 został on zaakceptowany przez Narodowy Instytut Standardów i Technologii jako Data Encryption Standard. DES od samego początku był mocno krytykowany, głównie z powodu 56-bitowego klucza, ale także z powodu tzw. S-bloków, czyli elementów struktury wewnętrznej, który były tajne.

 

Opis algorytmu:
     Ogólny schemat szyfrowania za pomocą DES jest przedstawiony na rysunku (kliknij, aby zobaczyć).

 

     Funkcja szyfrowania przyjmuje dwa rodzaje danych wejściowych: tekst jawny oraz klucz. Tekst jawny w przypadku DES musi być 64-bitowy, a klucz jest 56-bitowy.
Przetwarzanie tekstu jawnego na postać zaszyfrowaną obejmuje 3 fazy. Najpierw następuje permutacja wstępna IP, która przestawia bity, tworząc permutowane dane wejściowe. Następnie jest faza 16 iteracji tej samej funkcji, w której skład wchodzą funkcje permutacyjne i podstawiające. Wynik ostatniej iteracji składa się z 64 bitów, stanowiących funkcję wejściowego tekstu jawnego. Oraz klucza. Lewa i prawa strona zostają zamienione, tworząc wynik wstępny. Zostaje on poddany permutacji IP-1, która jest odwrotnością permutacji wstępnej. Wynikiem tych wszystkich działań jest 64-bitowy tekst zaszyfrowany.
     Na prawej połowie schematu pokazany jest sposób wykorzystania 56-bitowego klucza. Podlega on wstępnie permutacji. A na każdą z 16 iteracji tworzy się podklucz (Ki) na drodze kombinacji cyklicznego przesunięcia w lewo i permutacji. Funkcja permutacji jest identyczna dla każdej iteracji, jednak dzięki przesunięciu bitów klucza za każdym razem powstaje inny podklucz.

 

Opis permutacji wstępnej:
     Permutację wstępną i jej odwrotność definiuje się przez tabele przedstawione tutaj (kliknij, aby zobaczyć).

Funkcje te są odwrotne względem siebie

 

Pojedyncza iteracja:
     Istota algorytmu polega na tym, że 64-bitowe dane wejściowe po permutacji przechodzą 16 iteracji, dając po każdej iteracji 64-bitową wartość pośrednią. Każdą 64-bitową wartość pośrednią traktujemy jako oddzielne 32-bitowe części (lewa i prawa). Proces przetwarzania podczas każdej iteracji możemy w skrócie przedstawić w następującej postaci:
Li=Ri-1
Ri=Li-1 f(Ri-1, Ki),
gdzie oznacza funkcję XOR.
Wynik iteracji Li jest równy danym wejściowym tej iteracji Ri-1. A wynik Ri jest różnicą symetryczną XOR Li-1 i funkcji f od Ri-1 i Ki. Funkcję f pokazano na rysunku.
Rysunek obrazujący pojedynczą iterację algorytmu DES.
Na stronie tej zostanie pominięty opis S-bloków, ze względu na charakter tej witryny, która ma na celu pokazać ogólną zasadę działania algorytmów kryptograficznych.

 

Tworzenie klucza:
     Klucz 56-bitowy podlega permutacji (permutowany wybór 1) - zobacz tabelę, zanim zostanie użyty jako dane wejściowe algorytmu. Następnie tak powstały 56-bitowy klucz jest traktowany jako dwa 28-bitowe bloki. Bloki te podczas każdej iteracji zostają poddane oddzielnie cyklicznemu przesunięciu w lewo i jeden lub dwa bity - zobacz tabelę. Te przesunięte wartości służą jako dane wejściowe dla tabeli permutowany wybór 2, w wyniku którego powstaje 48-bitów danych, które służą jako wejściowe dla funkcji f(Ri-1,Ki).

 

Odszyfrowywanie przy użyciu DES:
     Proces odszyfrowywania jest identyczny jak szyfrowanie, a różni się tylko kolejnością kluczy użytych w tym procesie. Mianowicie podczas odszyfrowywania używamy jako danych wejściowych tekstu zaszyfrowanego i tych samych kluczy co przy szyfrowaniu lecz w odwrotnej kolejności, czyli K16 podczas pierwszej iteracji K15 podczas drugiej i tak dalej.
Porównanie procesu szyfrowania i deszyfrowania przedstawia rysunek.

 

Tryby pracy DES:

  • Tryb elektronicznej książki kodowej (ECB) - każdy 64-bitowy blok tekstu jawnego jest kodowany niezależnie z zastosowaniem tego samego klucza. Stosuje się do transmisji pojedynczych wartości.
  • Tryb wiązania bloków zaszyfrowanych (CBC) - Dane wejściowe algorytmu szyfrującego stanowią XOR następnych 64-bitów tekstu jawnego i poprzednich 64-bitów tekstu zaszyfrowanego. Stosuje się do transmisji blokowej i uwierzytelniania.
  • Tryb szyfrowania ze sprzężeniem zwrotnym (CFB) - Dane wejściowe są przetwarzane po J bitów za jednym razem. Poprzedzający tekst zaszyfrowany jest używany jako dane wejściowe dla algorytmu szyfrującego, który produkuje pseudolosowe dane wyjściowe, które odejmuje się symetrycznie od tekstu jawnego dla stworzenia następnej jednostki tekstu zaszyfrowanego. Stosuje się do transmisji strumieniowej i uwierzytelniania.
  • Tryb sprzężenia zwrotnego wyjściowego (OFB) - Podobny do CFB, z wyjątkiem faktu, że danymi wejściowymi algorytmu szyfrującego jest poprzedni wynik działania DES. Zastosowanie, to transmisja strumieniowa przez kanał narażony na zakłócenia (na przykład drogą satelitarną).

Potrójny DES
     Algorytm DES od samego początku był krytykowany ze względu na wielkość klucza jak i użycie S-bloków. Właśnie z tego pierwszego powodu, ze względu na możliwość ataków metoda brutalną, była potrzeba wynalezienia alternatywnego sposobu szyfrowania. Jednym z rozwiązań jest IDEA omówiona na odrębne stronie jak również wielokrotne zastosowanie tego samego algorytmu i użycie wielu kluczy. Najprostszą formą szyfrowania wielokrotnego jest szyfrowanie w dwóch etapach. Jednak przedstawiony tutaj zostanie potrójny DES (3DES), ze względu na jego powszechne zastosowanie.

     Oczywiste byłoby zastosowanie trzech etapów szyfrowania z trzema różnymi kluczami. Takie rozwiązanie mimo swoich zalet (niemożność złamania) posiada również wady. Wymaga bowiem klucza 168-bitowego, co jest rozmiarem nieporęcznym. Dlatego alternatywą jest zastosowanie trzech etapów szyfrowania z dwoma kluczami. Funkcja taka przebiega według sekwencji szyfrowanie-deszyfrowanie-szyfrowanie. Przykład można zobaczyć na rysunku.

     Deszyfrowanie w drugim etapie nie ma znaczenia kryptograficznego. Jedyną korzyścią z niego jest to, że pozwala użytkownikom potrójnego DES deszyfrować dane zaszyfrowane przez pojedynczego DES-a. Potrójny DES jest dobrą alternatywą dla DES.

 

home | back | top