Szyfrowanie danych”



Pobieranie 329.94 Kb.
Strona4/7
Data28.04.2016
Rozmiar329.94 Kb.
1   2   3   4   5   6   7

Rijndael/AES


Szyfr AES może operować na bloku o zmiennej długości, używając kluczy zmiennej długości. Oficjalna specyfikacja dopuszcza użycie bloków 128-, 192- lub 256-cio bitowych, szyfrowanych kluczami 128-, 192- lub 256-cio bitowymi. Dopuszczalne są wszystkie z 9 kombinacji.

Rijndael jest "iterowanym szyfrem blokowym", co oznacza, że blok wejściowy oraz klucz przechodzą wielokrotne RUNDY transformacji, zanim wyprodukują wynik. Po każdej rundzie, powstaje szyfr pośredni, zwany STANEM (State).5


Serpent

Serpent (ang. „wąż") był kolejnym finalistą konkursu AES6. Jego konstrukcja przypomina czołg. Jest to propozycja najbardziej zachowawcza spośród wszystkich przesłanych do AES, pod wielo­ma względami odmienna od ostatecznie wybranego laureata. O ile AES największy nacisk kładzie na elegancję i wydajność, Serpent został zaprojektowany wyłącznie z myślą o bezpieczeństwie. Naj­lepszy znany atak obejmuje jedynie 10 z 32 istniejących tur . Wadą algorytmu Serpent jest jego szybkość: jest on trzykrotnie wolniejszy od AES.

Pod pewnymi względami Serpent przypomina AES. Składa się on z 32 tur. Każda tura obej­muje przekształcenie przez XOR względem 128-bitowego klucza tury, użycie 128-bitowej liniowej funkcji mieszającej i równoległe zastosowanie 32 czterobitowych S-boksów. Wszystkie 32 S-boksy są identyczne dla wszystkich tur, ale do dyspozycji jest osiem różnych S-boksów, których używa się po kolei w następujących turach.

Algorytm Serpent wykorzystuje pewne szczególnie pomysłowe rozwiązanie programowe. Zwykła implementacja byłaby bardzo powolna, gdyż w każdej z 32 tur konieczne jest przejrzenie 32 S-boksów. Łącznie oznaczałoby to konieczność przejrzenia 1024 S-boksów, co może trwać bardzo długo. Sztuczka polega na zastąpieniu S-boksów wyrażeniami logicznymi (boolowskie). Każdy z czterech bitów wynikowych jest wyrażany w postaci funkcji boolowskiej czterech bitów wej­ściowych. Procesor bezpośrednio oblicza wartość funkcji korzystając z operacji AND, OR i XOR. Najważniejszy jest fakt, że w 32-bitowych procesorach można równolegle obliczać transformację przez wszystkie 32 S-boksy, gdyż każdy bit wynikowy opisany jest tą samą funkcją, choć działającą na różnych danych wejściowych. Tego rodzaju implementację nazywamy implementacją plasterkową (ang. bitslice). Serpent został zaprojektowany specjalnie z myślą o takiej implementacji. Prze­prowadzenie fazy mieszania jest w niej względnie proste.7

Gdyby Serpent był tak szybki jak Rijndael (obecnie AES), prawie na pewno zostałby wybra­ny jako algorytm AES, a to z uwagi na jego konserwatywną konstrukcję. Jednak szybkość jest pojęciem względnym. Jeśli mierzymy ją względem liczby szyfrowanych bajtów, Serpent jest pra­wie tak szybki jak DES i znacznie szybszy od 3DES. Serpent jest powolny jedynie w porównaniu z pozostałymi finalistami konkursu AES.

Skipjack

Algorytm Skipjack to tajny algorytm opracowywany w latach 1987-1993 przez NSA8 jako narzędzie do zapewniania bezpiecznej komunikacji głosowej oraz do wymiany danych z jednoczesnym umożliwieniem kontroli i podsłuchu przez uprawnione agencje rządu USA. Urządzenia działające w systemie SKIPJACK
(np. telefony) mają zainstalowany odporny na ingerencje układ scalony. Dystrybucja kluczy odbywa się ręcznie.

SKIPJACK szyfruje 64-bitowe bloki w 32 etapach za pomocą 80-bitowego klucza. Zakładając, że dysponuje się hipotetyczną maszyną złożoną z 1, 2 miliarda jednodolarowych układów scalonych z zegarem 1 GHz i szyfrowaniem potokowym
w jednym cyklu zegara zakres kluczy SKIPJACK wyczerpałby się po upływie roku.

3DES


3DES to algorytm polegający na zakodowaniu wiadomości DESem trzy razy:

  1. kodujemy pierwszym kluczem

  2. dekodujemy drugim kluczem

  3. kodujemy trzecim kluczem

c = E3(D2(E1(m)))

Użycie dekodowania jako drugiej fazy nie wpływa na siłę algorytmu (dekodowanie w DESie jest identyczne jak kodowanie, tylko ma odwróconą kolejność rund), ale umożliwia używania 3DESa w trybie kompatybilności z DESem – za klucz pierwszy i drugi, lub drugi i trzeci przyjmujemy dowolny taki sam klucz, a za ostatni zwykły klucz DESowski:



c = E3(D1(E1(m))) = E3(m)

c = E3(D3(E1(m))) = E1(m) 9

3DES używa takich samych rozmiarów bloków oraz trybów jak zwykły DES. Siła 3DESa jest tylko dwukrotnie, nie trzykrotnie większa od siły zwykłego DESa.


Blowfish


Blowfish to szyfr blokowy stworzony przez Bruce'a Schneier'a w 1993 roku jako szybka i bezpłatna alternatywa dla istniejących ówcześnie algorytmów.

Algorytm operuje na 64-bitowych blokach i używa kluczy od 32 do 448 bitów.

Algorytm ma postać szyfru Feistela z 16 rundami z SBOXami zależnymi od klucza. Każda zmiana klucza wymaga dość sporej ilości wstępnych obliczeń, żeby ustalić SBOXy. Z tego powodu atak brute-force trwa znacznie dłużej niż można by się spodziewać.

W typowych algorytmach jeśli długość klucza to k, a koszt zakodowania bloku to B, koszt ataku brute-force wynosi 2kB. W przypadku Blowfisha trzeba dla każdego klucza obliczyć SBOXy, co zajmuje tyle co zakodowanie ok. 29 bloków, a więc czas ataku brute-force wynosi około 2k + 9B (a zatem atak na 64-bitowy Blowfish zajmuje mniej więcej tyle czasu co na 73-bitowy bardziej tradycyjny szyfr). Wadą tego rozwiązania są dość duże wymagania pamięciowe – potrzebne są ponad 4kB pamięci, co nie jest problemem dla nawet słabych komputerów, ale jest już dla np. kart chipowych.10

Nie istnieją (2004) znane ataki na Blowfisha o ilości rund większej niż 4.
Są znane dość duże jak na symetryczny szyfr blokowy grupy słabych kluczy, czyli takich, dla których Blowfish jest słabszy niż dla typowych kluczy (większość szyfrów posiada takowe, jednak szansa na wylosowanie takiego klucza jest bardzo niska).

Twofish

Twofish był następnym finalistą AES. Można go traktować jako kompromis między AES a Serpent. Jest on niemal tak szybki jak AES, ale zapewnia wyższy poziom bezpieczeństwa. Co ważniejsze, nie ma on znanej prostej reprezentacji algebraicznej. Najlepszy znany atak obejmuje 8 z 16 tur. Największą wadą Twofish jest to, że zmiana klucza szyfrującego może być kosztowna, gdyż najlepsza implementacja tego algorytmu wymaga wielu obliczeń wstępnych.

Algorytm Twofish wykorzystuje te same struktury Feistela, co DES. Podczas szyfrowania Twofish 128-bitowy tekst otwarty dzieli się na cztery wartości 32-bitowe, na których wykonywana jest później większość operacji. Funkcja tury składa się
z dwóch wywołań funkcji g, funkcji o nazwie PHT oraz dodawania klucza. Wynik funkcji jest poddawany operacji XOR z pozostałą częścią danych (dwie pionowe kreski na prawo od bloku funkcji).

Każda funkcja g składa się z czterech S-boksów11 i z mieszającej funkcji liniowej bardzo po­dobnej do funkcji mieszającej AES. S-boksy są już nieco inne.


W przeciwieństwie do wszystkich innych omawianych wcześniej szyfrów, tym razem S-boksy nie są stałe: ich zawartość zależy od klu­cza. Specjalny algorytm wylicza tablice S-boksów na podstawie klucza. Uzasadnieniem takiego rozwiązania jest utrudnienie analizy S-boksów potencjalnym włamywaczom. Dlatego właśnie w wielu implementacjach Twofish niezbędne są dodatkowe obliczenia wstępne dla każdego nowego klucza. W ich trakcie wyznacza się nowe S-boksy, które następnie są przechowywane w pamięci.12

Funkcja PHT miesza dwa wyniki funkcji g korzystając z 32-bitowych operacji dodawania.

W algorytmie Twofish zastosowano dodatkowe przetwarzanie wstępne
i końcowe. Polega ono na dodawaniu pewnych informacji z klucza do danych. W ten sposób szyfr trudniej poddaje się większości ataków, zaś wzrost kosztu jest niewielki.

Tak jak w przypadku innych szyfrów, Twofish ma schemat przetwarzania klucza, pozwalający uzyskać klucze tur oraz dwa dodatkowe klucze: początkowy


i końcowy.

1   2   3   4   5   6   7


©absta.pl 2016
wyślij wiadomość

    Strona główna