Автор неизвестен - Tryby dialah symetrycznych algorytmow kryptograficznych - страница 1

Страницы:
1  2 

Wyklad 7

Temat: Tryby d/ialah symetrycznych algorytmow kryptograficznych:

uwagi ogolne; tryby: elektronicznej ksia/ki kodowej - ECB, wiazania blokow zaszyfrowanych - CBC; szyfry strumieniowe; tryby: sprz^zenia zwrotnego szyfrogramu - CFB, sprz^zenia zwrotnego wyjsciowego - OFB; tryb licznikowy; inne tryby dzialah symetrycznych szyfrow blokowych; zastosowania trybow pracy symetrycznych algorytmow kryptograficznych.

7.1. Uwagi ogolne

Tryb pracy algorytmu taczy zwykle szyfr podstawowy, pewien rodzaj sprzezenia zwrotnego oraz proste operacje. Operacje sa proste, poniewaz bezpieczenstwo algorytmu zalezy od algorytmu a nie jego trybu pracy. Kazdy z trybow pracy charakteryzuje sie pewnymi cechami ktore determinuja sposob jego wykorzystania. Taka cecha jest odpornosc na btedy. Z jednej strony pozadana cecha moze byc mozliwosc odczytania tekstu jawnego, w przypadku wystapienia btedow podczas transmisji (pojawia sie przektamania na pojedynczych pozycjach). W innych zastosowaniach taka cecha moze sie okazac wielka wada, kompromitujaca caty system. Wniosek jest prosty nalezy dobierac algorytm i tryb jego pracy zgodnie z wymaganiami systemu. Inne takie cechy to chociazby wydajnosc (czy dtugosc szyfrogramu jest taka sama jak tekstu jawnego), mozliwosc wielokrotnego uzycia do szyfrowania tego samego klucza.

7.2. Tryb elektronicznej ksia/ki kodowej - ECB

Pierwszym omawianym trybem pracy symetrycznych algorytmow kryptograficznych bedzie tryb elektronicznej ksiazki kodowej (Electronic Code Book - ECB). Tryb ten szyfruje kazdy blok tekstu jawnego w blok szyfrogramu. Nazwa trybu odnosi sie do teoretycznej mozliwosci utworzenia ksiazki kodowej tekstu jawnego i odpowiadajacego mu szyfrogramu wynikajacej z takiej samej dtugosci blokow przed i po zaszyfrowaniu (odszyfrowaniu). Jesli dtugosc bloku wynosi 64 bity, to istnieje 264 mozliwych wyrazen wejsciowych dla jednego klucza.

Tryb ten jest najtatwiejszy do zastosowania. Jego podstawowa zaleta jest mozliwosc niezaleznego szyfrowania kazdego bloku wejsciowego, z czego wynika mozliwosc szyfrowania blokow wejsciowych bez zachowania kolejnosci. Cecha ta moze byc szczegolnie przydatna dla plikow, w ktorych musi byc zachowana mozliwosc dostepu losowego, na przyktad w bazach danych. Jesli baza danych bedzie szyfrowana w trybie ECB to kazdy jej rekord moze byc przetwarzany niezaleznie od pozostatych, zaktadajac ze kazdy rekord to kilka blokow algorytmu symetrycznego. Przetwarzanie blokow mozna dodatkowo przyspieszyc przez zastosowanie procesorow (urzadzen szyfrujacych) pracujacych rownolegle. Kazdy procesor bedzie w takim przypadku pracowat niezaleznie, przetwarzajac pewien podzbior blokow wejsciowych. Do zalet tego trybu pracy nalezy rowniez zaliczyc zachowanie bezpieczenstwa podczas szyfrowania wielu wiadomosci przy pomocy tego samego klucza. W przypadku wystapienia btedu w szyfrogramie btednie zostanie odszyfrowany tylko blok w ktorym pojawito sie przektamanie, natomiast pozostate bloki zostana odszyfrowane poprawnie. Sprawa komplikuje sie jesli zostanie utracony lub dodany bit szyfrogramu, wtedy szyfrogram od miejsca wystapienia btedu zostanie odszyfrowany btednie. Poniewaz kazdy blok przetwarzany jest niezaleznie zatem wczesniejsze bloki zachowaty wtasciwa budowe i zostana poprawnie przetworzone. Zjawisku temu mozna przeciwdziatac poprzez mechanizmy zapewniajace odtwarzanie granic blokow (np. wprowadzenie statych struktur ramek).

Tryb ten posiada rowniez pewne wady. Kryptoanalityk posiadajac tekst jawny i szyfrogram dla kilku wiadomosci moze rozpoczac odtwarzanie ksiazki kodowej bez znajomosci klucza. Niebezpieczenstwo wynika rowniez z tendencji do powtarzania fragmentow wiadomosci czy tez duzej nadmiarowosci dla wiadomosci wytwarzanych komputerowo. Poniewaz fragmenty te pojawiaja sie w roznych wiadomosciach, to kryptoanalityk uzyskuje informacje umozliwiajace rozpoczecie ataku bazujacego na analizie statystycznej, niezaleznie od mocy szyfru blokowego. Podatnosc na tego typu ataki jest najwieksza na poczatku i koncu wiadomosci, gdzie istnieja scisle zdefiniowane nagtowki i stopki nazywane niekiedy nagtowkami stereotypowymi i zakonczeniami stereotypowymi.

Wiekszosc wiadomosci nie dzieli sie dokladnie na 64-bitowe (lub innego rozmiaru) bloki szyfrowania. Najczesciej okazuje sie ze ostatni blok jest krotszy, a przeciez tryb ECB wymaga by wszystkie bloki byly stalych rozmiarow. Aby poradzic sobie z tym problemem nalezy zastosowac technike dopelniania blokow. Dopelnianie polega na uzupelnieniu niepelnych blokow przez regularne wzorce -uzupelnianie zerami, jedynkami, na przemian zerami i jedynkami. Aby usunac dopelnienie po odszyfrowaniu, nalezy podac liczbe pozycji dopelniania jako ostatni bajt wiadomosci. Ostatni bajt informujacy o dopelnieniu musi rowniez pojawic sie w sytuacji gdy ostatni blok jest pelny. W celu zaznaczenia ostatniego bajta tekstu jawnego mozna rowniez uzyc znaku konca pliku, a nastepnie wstawic dopelnienie po tym znaku. Na rysunku ponizej przedstawiono rozwiazanie alternatywne, zwane podkradaniem szyfrogramu. Pn-i jest ostatnim pelnym blokiem tekstu jawnego, a Pn jest koncowym i niepelnym blokiem tekstu jawnego. Cn-i jest ostatnim pelnym blokiem szyfrogramu, a Cn jest koncowym i niepelnym blokiem szyfrogramu. C jest wynikiem posrednim i nie jest czejScia przesylanego szyfrogramu.

Szyfrowanie

Deszyfrowanie

Pn-1

Pn C

Cn-1

Cn

n

C

 

 

Ek

T

Ek

C I с

n

T

Dk

T

Dk

Cn-1

Pnl C

Pn-1

Rys. 7.1. Podkradanie szyfrogramu w trybie ECB

Najwie/ksze zagrozenie przy stosowaniu trybu ECB wynika z niezaleznosci blokow. Wczesniej wspomniano o zaletach tego rozwiazania (np. mozliwosc pracy rownoleglej) ale nalezy zwrocic uwage na mozliwosc zmodyfikowania przez atakujacego zaszyfrowanej wiadomosci, nawet bez znajomosci klucza. Atakujacy by przeprowadzic udany atak tego typu musi poznac konstrukcje wiadomosci. Poznawszy ja (np. przez podsluchanie komunikacji) moze zmodyfikowac ja tak by odpowiadala jego zamierzeniom. Ta technika ataku nosi nazwe ataku z powtarzaniem bloku. Oczywiscie uzytkownicy systemu moga utrudnic zadanie atakujacemu przez czesta zmiane klucza, ale to wymusi tylko na atakujacemu szybsza prace. Rozwiazaniem tych problemow moze byc dodanie skrotu MAC, ale

mimo to jest to podstawowy mankament szyfrow blokowych pracujacych w trybie ECB. Napastnik nadal moze usuwac, powtarzac lub zmieniac bloki miejscami.

7.3. Tryb wi^zania blokow zaszyfrowanych - CBC

Tryb wiajzania blokow wykorzystuje zjawisko sprzezenia zwrotnego. Wyniki szyfrowania poprzedniego bloku sa danymi wejsciowymi operacji szyfrowania bloku biezacego. Zatem kazdy blok szyfrogramu zalezy nie tylko od bloku tekstu jawnego, ale od wszystkich poprzedzajacych go blokow tekstu jawnego. W trybie wiazania blokow zaszyfrowanych (Cipher Block Chaining - CBC) tekst jawny jest przed szyfrowaniem sumowany modulo 2 z poprzednimi blokami szyfrogramu. Na rysunku ponizej przedstawiono szyfrowanie z wiazaniem blokow. Po zaszyfrowaniu bloku tekstu jawnego w rejestrze sprzezenia zwrotnego znajduje sie blok wynikowy. Zanim bedzie szyfrowany kolejny blok tekstu jawnego, najpierw nastepuje sumowanie modulo 2 z zawartoscia rejestru sprzezenia zwrotnego. Wynik jest zarowno wartoscia szyfrogramu ale i kolejna wartoscia dla rejestru sprzezenia zwrotnego. Dzialania te sa kontynuowane do konca wiadomosci. Wynik szyfrowania kazdego bloku jest zalezny nie tylko od bloku reprezentujacego tekst jawny ale i od poprzedzajacych go blokow.

Szyfrowanie

Deszyfrowanie

Pr-1

Pr

Ci-i

Ci

Ek

T

Ek

J

Ci

Pr-1

Pi

Rys. 7.2. Procesy szyfrowania i deszyfrowania w trybie CBC

Odszyfrowanie przebiega w podobny sposob. Podobnie jak w procesie szyfrowania blok szyfrogramu po odszyfrowaniu jest zapamietywany w rejestrze sprzezenia zwrotnego. Po odszyfrowaniu kolejnego bloku wynik jest sumowany modulo 2 z zawartoscia rejestru sprzezenia zwrotnego. Dzialania te sa kontynuowane do wyczerpania blokow szyfrogramu. Matematycznie procesy szyfrowania i odszyfrowania mozna zapisac nastepujaco:

Ci = Ек(Рі Є Cm);

Pi = Ci-i Є DK(Ci).

W_7_(SK_B).doc 7.5

Oczywiscie przy trybie CBC pojawiaja sie problemy ktore nalezy rozwiazac. Jezeli do szyfrowania dwoch identycznych wiadomosci uzyjemy tego samego klucza to uzyskamy identyczny szyfrogram. Dwie wiadomosci zaczynajace sie w identyczny sposob beda szyfrowane w taki sam sposob do momentu wystapienia pierwszej roznicy. Ten problem dotyka przede wszystkim wiadomosci charakteryzujacych sie wspolnymi naglowkami (np. naglowki dokumentow tekstowych, czy tez format poczty elektronicznej). Te identyczne naglowki umozliwia kryptoanalitykowi pozyskanie uzytecznych informacji, ktore ulatwia mu atak. Aby uniknac tych problemow mozna losowo wybierac dane ktore beda szyfrowane jako pierwsze. Ten blok danych losowych okresla sie jako wektor poczatkowy, zmienna poczatkujaca lub poczatkowa wartoscia zwiazania. Wartosc wektora poczatkowego nie ma znaczenia poniewaz nie reprezentuje zadnych uzytecznych informacji, a ma za zadanie jedynie zapewnic unikalnosc kazdej informacji. Jako wektor poczatkowy mozna uzyc znacznika czasu, lub inne ciagi losowe. W procesie deszyfrowania wartosc ta jest uzywana jako wartosc poczatkowa rejestru sprzezenia zwrotnego. Dzieki zastosowaniu wektora poczatkowego zyskujemy pewnosc (pod warunkiem ze wektor poczatkowy jest wartoscia niepowtarzalna) ze kazdy szyfrogram, nawet dla identycznego tekstu jawnego bedzie wartoscia unikalna. Dodatkowa zaleta tego rozwiazanie jest brak koniecznosci utrzymania wektora poczatkowego w tajemnicy, moze on byc nawet jawnie przesylany z szyfrogramem.

Problem dlugosci ostatniego bloku jest rozwiazywany po przez jego dopelnianie podobnie jak w trybie ECB. Jednak tryb CBC udostepnia nam metody ktore umozliwiaja uzyskanie szyfrogramu o takiej samej dlugosci jak tekst jawny. Jezeli potrzebujemy szyfrogramu o dlugosci rownej dlugosci tekstu jawnego to ostatni, niepelny blok musimy zaszyfrowac w inny sposob. Przyjmijmy, ze ostatni blok ma j bitow. Po zaszyfrowaniu ostatniego pelnego bloku ponowmy szyfrowanie, wybierzmy j najbardziej znaczacych bitow z lewej strony i dodajmy je modulo 2 z niepelnym blokiem w celu uzyskania szyfrogramu. Na rysunku ponizej przedstawiono taki sposob szyfrowania ostatniego, niepelnego bloku. Metoda ta umozliwia atakujacemu modyfikowanie ostatnich bitow szyfrogramu, co moze okazac sie szczegolnie uciazliwe w sytuacji gdy modyfikowane bity zawieraja wazne informacje.

W_7_(SK_B).doc


Рп-2

Л

Рп-1

■І

\

7

 

Ek

Сп-2

Сп-1

Рп

Сп

п

Rys. 7.3. Szyfrowanie ostatniego bloku w trybie CBC

Problemow tych mozna uniknac stosujac metod? z podkradaniem szyfrogramu, ktorej zaleta jest to, ze wszystkie bity tekstu jawnego sa poddane dzialaniu algorytmu szyfrujacego. Schematyczny przebieg procesu szyfrowania w trybie CBC z wykorzystaniem metody z podkradaniem szyfrogramu przedstawiono na rysunku ponizej. Pn-i jest ostatnim, pelnym blokiem tekstu jawnego, a Pn jest koncowym, niepelnym blokiem tekstu jawnego. Cn-i jest ostatnim pelnym blokiem szyfrogramu, a Cn jest koncowym, krotkim i niepelnym blokiem szyfrogramu. C jest wynikiem posrednim.

Рп-1

 

 

0

Сп-2

7

С I с

п

\

т

Ek

і

 

 

Ek

1

X

Сп-1

Сп-2

Сп

п

с

 

 

Rys. 7.4. Podkradanie szyfrogramu w trybie CBC

Tryb CBC, bazuje na zjawisku sprzezenia zwrotnego. W przypadku wystapienia blejdu w bloku tekstu jawnego, blad ten bedzie mial odzwierciedlenie w bloku szyfrogramu odpowiadajacemu temu blokowi oraz w wszystkich kolejnych blokach szyfrogramu. Jednak nie ma to wiekszego znaczenia bowiem w procesie odszyfrowania efekt ten zostanie odwrocony, a odtworzony tekst jawny bedzie zawieral tylko pierwotny blad. Bardziej powszechne sa jednak bledy w szyfrogramie. W trybie CBC jeden blad w szyfrogramie zmienia jeden blok i jeden bit odtworzonego tekstu jawnego. Blok w ktorym pojawia sie przeklamanie jest calkowicie znieksztalcony, natomiast nastepny blok ma jednobitowy blad na tej samej pozycji co blad w bloku znieksztalconym. Kolejne bloki nie zawieraja bledow, wiec tryb CBC jest samoodtwarzajacy. Tryb CBC jest trybem samosynchronizujacym, aczkolwiek synchronizacja jest obecna na poziomie blokow. Bardziej niebezpieczne niz przeklamanie bitowe w szyfrogramie jest pojawienie sie dodatkowego bitu lub utrata bitu z strumienia szyfrogramu. Jezeli wystapi taka sytuacja to nastepuje przesuniecie granic blokow, a operacja szyfrowania bedzie wytwarzac smieci. Aby temu zapobiegac system szyfrowania pracujacy w trybie CBC musi zapewniac niezmiennosc struktury blokow albo przez ujecie w ramki, albo przez przechowywanie danych w porcjach wieloblokowych.

Atakujacy system kryptograficzny pracujacy w trybie CBC moze dodawac kolejne bloki na koncu szyfrogramu a dzialania te nie beda zauwazane przez uzytkownika. W pewnych sytuacjach dzialania takie moga byc niepozadane i aby temu zapobiegac nalezy nadawac tekstowi jawnemu pewna strukture taka, aby wiedziec, w ktorym miejscu wiadomosc konczy sie, i moc wowczas wykryc dodatkowe bloki. Atakujacy moze rowniez bazowac w swoim ataku na fakcie ze zmiana bitu szyfrogramu powoduje zmiane jednego bitu w bloku kolejnym po calkowicie znieksztalconym. Aby tego uniknac nalezy cala wiadomosc uzupelniac nadmiarowoscia lub uwierzytelnianiem. Istnieje jeszcze jedna wlasciwosc trybu CBC na ktory nalezy zwrocic uwage. Mimo ze cechy tekstu jawnego sa ukrywane w trybie CBC, to jednak bardzo dlugie wiadomosci nadal beda zawierac pewne wzorce. Na postawie paradoksu dnia urodzin mozna przewidziec, ze pojawia sie identyczne bloki po 2m/2 blokach, przy czym m jest rozmiarem bloku. Dla bloku 64-bitowego jest to ok. 34GB, tak wiec wiadomosc musi byc rzeczywiscie dluga, aby stalo sie to problemem.

7.4. Szyfry strumieniowe

Symetryczne systemy kryptograficzne realizowane z wykorzystaniem dwoch typow szyfrow. Te dwa typy to szyfry blokowe i strumieniowe. Szyfry strumieniowe przeksztalcaja tekst jawny w szyfrogram kolejno bit po bicie. Najprostsza implementacja szyfru zostala przedstawiona na rysunku ponizej. Generator strumienia klucza wytwarza strumien bitow: ki, k2, k3, ... ki. Aby wytworzyc szyfrogram nalezy wygenerowany strumien klucza zsumowac modulo 2 z ciagiem bitow tekstu jawnego pi, p2, p3, ... pi:

ci = pi © ki.

Aby odszyfrowac uzyskany szyfrogram ci nalezy zsumowac go modulo 2 z identycznym strumieniem klucza jak podczas procesu szyfrowania. W ten sposob zostanie odtworzony tekst jawny:

pi = ci © ki. Wzor ten jest prawdziwy bowiem:

pi © ki © ki = pi

Pi

Strumien klucza

Tekst jawny ^

Szyfrowanie

Strumien klucza

Szyfrogram

Ci

^ ^ Tekst jawny

Pi

Deszyfrowanie

Rys. 7.5. Szyfr strumieniowy

Bezpieczenstwo systemow opartych na tego typu szyfrach strumieniowych zalezy wylacznie od wewnejtrznych wlasciwosci generatora strumienia klucza. Przykladowo jezeli generator strumienia klucza wytwarza nieskonczony ciag zer, to szyfrogram bedzie rowny tekstowi jawnemu, a cala operacja nie bedzie miala sensu. Oczywiscie jest to sytuacja krytyczna i w rzeczywistych warunkach jest malo prawdopodobna, aczkolwiek nie mozna jej wykluczyc. Jezeli generator wytwarza powtarzajacy sie wzorzec 16-bitowy, to algorytm bedzie zwyklym sumatorem modulo 2 z bardzo malym stopniem zabezpieczenia. Idealnym rozwiazaniem jest stworzenie generatora wytwarzajacego nieskonczony strumien bitow losowych. Otrzymujemy w ten sposob klucze jednorazowe i doskonale zabezpieczenie. Jednak w rzeczywistosci generator wytwarza ciag bitow zdeterminowanych. Poziom bezpieczenstwa systemu bedzie tym wiekszy im bardziej „losowy" (a wlasciwie zblizony do losowego) bedzie generowany strumien klucza.

Istnieje rowniez inne niebezpieczenstwo ktore moze kompromitowac caly system. Jezeli generator strumienia klucza wytwarza za kazdym, kiedy zostanie wlaczony, ten sam ciag bitow, to zlamanie takiego systemu bedzie bardzo proste. Wystarczy, ze atakujacy pozyska tekst jawny oraz odpowiadajacy mu szyfrogram, to po przez zsumowanie modulo 2 tych strumieni bitow pozyska ciag wyjsciowy generatora klucza. Poniewaz kazda nowa wiadomosc bedzie szyfrowana przy pomocy tego samego strumienia klucza to atakujacy, posiadajacy strumien klucza ma zapewniony dostep do calych zasobow chroniony przez system. Aby zapobiec takiej sytuacji stosuje sie dodatkowe klucze. W takim przypadku ciag wyjsciowy generatora strumienia klucza jest funkcja klucza. Kazda zmiana klucza powoduje zmiane strumienia wyjsciowego generatora uniemozliwiajac przeprowadzenie ataku na system. Oczywiscie jezeli klucz wejsciowy generatora nie bedzie zmieniany to nadal istnieje niebezpieczenstwo ataku na system po przez odtworzenie klucza, bazujac na odpowiadajacej sobie parze tekst jawny - szyfrogram. Szyfry strumieniowe sa szczegolnie uzyteczne w szyfrowaniu nigdy niekonczacego sie strumienia informacji (np. laczy teletransmisyjnych).

Na rozwiazaniu z dodatkowym kluczem bazuja samosynchronizujace szyfry strumieniowe zwane tez szyframi z szyfrogramem samokluczujacym. Dodatkowo, kazdy bit ciagu klucza jest funkcja pewnej stalej liczby poprzednich bitow szyfrogramu. Na rysunku ponizej przedstawiono schemat dzialania samosynchronizujacego szyfru strumieniowego. Stan wewnetrzny generatora strumienia klucza jest funkcja n poprzednich bitow szyfrogramu. Zlozonosc kryptograficzna zawiera sie w funkcji wyjsciowej, ktora pobiera stan wewnetrzny i wytwarza bit strumienia klucza. Poniewaz stan wewnetrzny zalezy od n poprzednich bitow szyfrogramu, generator strumienia klucza wykorzystywany w procesie deszyfrowania bedzie automatycznie zsynchronizowany z generatorem strumienia klucza do szyfrowania po odebraniu n bitow szyfrogramu. Aby zsynchronizowac nadajnik z odbiornikiem, przesylana wiadomosc poprzedza sie losowym naglowkiem o dlugosci n bitow. Naglowek ten jest szyfrowany, przesylany a nastepnie deszyfrowany po stronie odbiorczej. Deszyfrowanie bedzie nieprawidlowe dla n poczatkowych bitow (naglowek ktory nie zawiera zadnych uzytecznych informacji), po czym nastapi synchronizacja nadajnika z odbiornikiem. Problem przy stosowaniu samosynchronizujacych szyfrow strumieniowych jest propagacja bledow. Kazde przeklamanie na jednym bicie w szyfrogramie powoduje po stronie odbiorczej bledne wytworzenie n bitow strumienia klucza. Zatem dla kazdego bledu w szyfrogramie wystapi n odpowiadajacych mu bledow w tekscie jawnym do czasu, az znieksztalcone bity opuszcza rejestr stanu wewnetrznego generatora strumienia klucza. Samosynchronizujace szyfry strumieniowe sa rowniez podatne na ataki powtorzeniowe, aby zminimalizowac tego typu niebezpieczenstwa nalezy wykorzystac znaczniki czasu.

Pi

K

Ci

Stan wewnetrzny

Funkcja wyjsciowa

=1=

4

Pi

Rys. 7.6. Generator strumienia klucza samosynchronizujacego szyfru strumieniowego

Jezeli klucz jest generowany niezaleznie od strumienia wiadomosci to otrzymujemy synchroniczny szyfr strumieniowy zwany tez algorytmem z kluczem samokluczujacym. W takim przypadku generatory strumienia klucza zarowno po stronie nadawczej jak i po stronie odbiorczej musza generowac identyczne strumienie klucza. Taki system dziala poprawnie do momentu utraty synchronizacji pomiedzy nadajnikiem a odbiornikiem. Przyczyna takiego stanu moze byc utrata bitu podczas transmisji szyfrogramu, albo przeklamanie bitowe na jednym z generatorow (generatory nie wytwarzaja identycznych strumieni klucza). Jezeli wystapi jedna z powyzszych sytuacji to od momentu wystapienia bledu kazdy znak szyfrogramu bedzie odszyfrowany nieprawidlowo. Aby powrocic do prawidlowej pracy systemu nalezy ponownie zsynchronizowac nadajnik z odbiornikiem. Jednak dzialanie to nie jest proste poniewaz proces synchronizacji nalezy przeprowadzic w taki sposob aby nie powtorzyc zadnej czesci strumienia klucza. Zatem wymaganie takie wyklucza synchronizacje po przez ponowne inicjowanie obu generatorow. Zaleta synchronicznych szyfrow strumieniowych jest brak propagacji bledow w przypadku przeklamania w szyfrogramie. Wszystkie zarowno poprzedzajace jak nastepujace po nim bity zostana odszyfrowane prawidlowo. Generatory uzywane w systemach pracujacy w oparciu o synchroniczne szyfry strumieniowe musza byc zdeterminowane (identyczne strumienie klucza po stronie nadawczej jak i odbiorczej). Takie generatory nosza nazwe okresowych, poniewaz ciagi bitow sa powtarzalne. Jednak nie stanowi to problemu jezeli dlugosc okresu generatora jest o wiele dluzsza od liczby bitow wytwarzanych przez ten generator miedzy zmianami klucza. Jezeli dlugosc okresu jest mniejsza od dlugosci tekstu jawnego, to pewne czesci tekstu jawnego beda szyfrowane w taki sam sposob, a to stanowi juz powazna wade. Mozna przyjac ze dlugosc okresu powinna byc o kilka rzedow wieksza niz zaklada ilosc bitow poddawanych szyfrowaniu pomiedzy zmianami klucza. Synchroniczne szyfry strumieniowe uniemozliwiaja dokonywanie manipulacji szyfrogramem polegajacych na dodawaniu lub wycinaniu bitow z szyfrogramu, poniewaz takie dzialanie powoduje utrate synchronizacji i bedzie natychmiast wykryte. Atakujacy moze jednak dokonywac zmian kolejnosci bitow w szyfrogramie, a dzialania takie nie zostana wykryte. Synchroniczne szyfry strumieniowe sa podatne na atak wstawieniowy. Jednak jezeli nie bedziemy uzywac tego samego ciagu klucza do szyfrowania roznych wiadomosci mozemy zapewnic ochrone przed tego typu atakiem.

7.5. Tryb sprzezenia zwrotnego szyfrogramu - CFB

Szyfry   blokowe   moga   byc   rowniez   zaimplementowane jako

samosynchronizujace szyfry strumieniowe. Taki tryb pracy nazywa sie trybem sprzezenia zwrotnego szyfrogramu (Cipher Feedback). Tryb CFB eliminuje koniecznosc posiadania tekstu jawnego o dlugosci jednego bloku by rozpoczac proces szyfrowania lub deszyfrowania. Wlasciwosc ta jest szczegolnie uzyteczna w chronionym srodowisku sieciowym gdzie terminal musi przekazywac do komputera glownego kazdy znak zaraz po jego wprowadzeniu (tryb znakowy). W takim przypadku tryb CBC okazuje sie niemozliwy do zastosowania. Natomiast tryb CFB spelnia te wymagania. Tryb CFB umozliwia szyfrowanie danych w jednostkach mniejszych niz rozmiar bloku. W sytuacji srodowiska sieciowego przedstawionej powyzej nalezy szyfrowac jeden znak na raz (tzw. 8-bitowy CFB). Dlugosc jednostki uzywanej do szyfrowania zawiera sie w przedziale od 1 bitu do wartosci odpowiadajacej dlugosci bloku.

Na rys. 7.7 przedstawiono schemat dzialania trybu 8-bitowego CFB z algorytmem 64-bitowym. Algorytm w trybie CFB operuje na kolejce (rejestrze) o rozmiarze bloku wejsciowego (na rysunku 64 bity). W pierwszej fazie rejestr wypelniono wartoscia poczatkowa (wektor poczatkowy). Po zaszyfrowaniu zawartosci rejestru 8 bitow skrajnych z lewej strony dodaje sie modulo 2 z pierwszy 8-bitowym znakiem tekstu jawnego w celu uzyskania pierwszego znaku 8-bitowego szyfrogramu. Ten znak moze byc nastepnie przeslany. Te same 8 bitow podaje sie na 8 bitow skrajnych z prawej strony kolejki, a wszystkie pozostale bity sa przesuwane o 8 pozycji w lewo. Odrzuca sie najbardziej znaczace 8 bitow. Nastepny znak szyfruje sie dokladnie w ten sam sposob. Odszyfrowanie jest odwrotnoscia tego procesu. Po obu stronach, szyfrowania i odszyfrowania, algorytm blokowy stosuje sie w trybie szyfrujacym.

Rejestr przesuwajqcy

3

D

Ostatnie 8 bajtow

_!_

Klucz K —► Szyfrowanie

Lewy skrajny bajt \ ki

Pi

X

e

ci

Rejestr przesuwajqcy

3

Ostatnie 8 bajtow^_

- Szyfrowanie

Klucz K

Lewy skrajny bajt

I

ki

ci

X

Pi

Szyfrowanie

Odszyfrowanie

Rys. 7.7. Tryb 8-bitowego sprzezenia zwrotnego szyfrogramu CFB

Rys. 7.8. Tryb я-bitowego CFB z uzyciem algorytmu blokowego я-bitowego

Rysunek powyzej przedstawia tryb n-bitowego CFB dla algorytmu o bloku dlugosci n bitow. Wtedy proces szyfrowania i deszyfrowania mozemy zapisac w nastepujacy sposob:

Ci = Pi © EK(Ci-1); Pi = Ci © EK(Ci-1).

Algorytm w trybie CFB podobnie jak algorytm w trybie CBC laczy znaki tekstu jawnego w ten sposob, ze szyfrogram zalezy od calego poprzedzajacego tekstu jawnego. W celu zainicjowania procesu CFB rejestr przesuwajacy musi zostac wypelniony wartoscia poczatkowa (wektor poczatkowy). Wektor ten musi byc niepowtarzalny, w przeciw przypadku kryptoanalityk moze odtworzyc zwiazany z nim tekst jawny.

W trybie CFB blad wystepujacy w tekscie jawnym wplywa na caly szyfrogram i powraca na swoje miejsce po odszyfrowaniu. W przypadku bledu w szyfrogramie pojawia sie jeden blad w tekscie jawnym. Nastepnie blad ten jest propagowany do rejestru przesuwajacego, powodujac znieksztalcenia szyfrogramu tak dlugo, az przesunie sie do drugiego konca rejestru. W 8-bitowym trybie CFB jeden blad znieksztalca lacznie 9 bajtow szyfrogramu. W ogolnym przypadku n-bitowy blad w szyfrogramie spowoduje bledne odszyfrowanie bloku biezacego i nastepnych m/n-1 blokow, przy czym m jest rozmiarem bloku. Algorytm pracujacy w trybie CFB jest algorytmem samo odtwarzajacym ze wzgledu na bledy synchronizacji. Blad wnika do rejestru przesuwajacego, w ktorym znieksztalca 8 bajtow danych do chwili, az opusci rejestr z drugiej strony. Tryb CFB jest przykladem zastosowania szyfru blokowego jako samosynchronizujacego szyfru strumieniowego (na poziomie bloku).

7.6. Tryb sprzezenia zwrotnego wyjsciowego - OFB

Tryb sprzezenia zwrotnego wyjsciowego (Output Feedback) jest metoda dzialania szyfru blokowego jako synchronicznego szyfru strumieniowego. Dzialanie algorytmow w trybie OFB jest bardzo podobne do pracy w trybie CFB. Podstawowa roznica miedzy oboma trybami polega na tym, ze w trybie OFB n bitow poprzedniego bloku wyjsciowego jest przesuwanych na skrajne prawe pozycje kolejki. Odszyfrowanie jest odwrotnoscia tego procesu. Takie dzialanie okresla sie n-bitowym OFB. Po obu stronach, szyfrowania i odszyfrowania, algorytm blokowy jest stosowany w swoim trybie szyfrujacym. Metoda ta nosi nazwe trybu wewnetrznego sprzezenia zwrotnego, poniewaz mechanizm sprzezenia zwrotnego jest niezalezny zarowno od ciagu tekstu jawnego, jak i ciagu szyfrogramu. Na rysunku ponizej przedstawiono tryb 8-bitowego sprzezenia zwrotnego wyjsciowego OFB.

Rejestr przesuwajqcy

3

Klucz K

Ostatnie 8 bajtow j_

Szyfrowanie

Lewy skrajny bajt \ kj

Pi

ci

Rejestr przesuwajqcy

3

Klucz K

Ostatnie 8 bajtow

*~ Szyfrowanie

Lewy skrajny bajt

1

ki

ci

Pi

Szyfrowanie

Deszyfrowanie

Rys. 7.9. Tryb 8-bitowego sprzezenia zwrotnego wyjsciowego OFB

Jesli rozmiar bloku algorytmu wynosi n, to n-bitowy tryb OFB mozemy opisac w nastepujacy sposob:

Страницы:
1  2 


Похожие статьи

Автор неизвестен - 13 самых важных уроков библии

Автор неизвестен - Беседы на книгу бытие

Автор неизвестен - Беседы на шестоднев

Автор неизвестен - Богословие

Автор неизвестен - Божественность христа