W tym rozdziale omówimy różne tryby działania szyfru blokowego. Są to reguły proceduralne dla ogólnego szyfru blokowego. Co ciekawe, różne tryby powodują, że osiągane są różne właściwości, które zwiększają bezpieczeństwo bazowego szyfru blokowego.
Szyfr blokowy przetwarza bloki danych o ustalonym rozmiarze. Zazwyczaj rozmiar wiadomości jest większy niż rozmiar bloku. Hence, the long message is divided into a series of sequential message blocks, and the cipher operates on these blocks one at a time.
Electronic Code Book (ECB) Mode
This mode is a most straightforward way of processing a series of sequentially listed message blocks.
Operacja
-
Użytkownik bierze pierwszy blok tekstu jawnego i szyfruje go za pomocą klucza, aby uzyskać pierwszy blok szyfrogramu.
-
Następnie bierze drugi blok tekstu jawnego i wykonuje ten sam proces z tym samym kluczem i tak dalej, i tak dalej.
Tryb ECB jest deterministyczny, to znaczy, że jeśli bloki tekstu jawnego P1, P2,…, Pm są zaszyfrowane dwa razy pod tym samym kluczem, wyjściowe bloki szyfrogramu będą takie same.
W rzeczywistości, dla danego klucza technicznie możemy stworzyć książkę kodową szyfrogramów dla wszystkich możliwych bloków tekstu jawnego. Szyfrowanie pociągnęłoby za sobą tylko szukanie wymaganego tekstu jawnego i wybranie odpowiadającego mu szyfrogramu. Operacja ta jest więc analogiczna do nadawania słów kodowych w książce kodowej i stąd otrzymuje oficjalną nazwę – tryb pracy elektronicznej książki kodowej (ECB). Zilustrowano to w następujący sposób –
Analysis of ECB Mode
W rzeczywistości, wszelkie dane aplikacyjne zazwyczaj posiadają częściowe informacje, które można odgadnąć. Na przykład, zakres wynagrodzenia może być odgadnięty. Szyfrogram z ECB może pozwolić atakującemu na odgadnięcie tekstu jawnego metodą prób i błędów, jeżeli wiadomość w tekście jawnym jest w granicach przewidywalności.
Na przykład, jeżeli wiadomo, że szyfrogram z trybu ECB szyfruje kwotę wynagrodzenia, to niewielka liczba prób pozwoli atakującemu na odzyskanie tej kwoty. Ogólnie rzecz biorąc, nie chcemy używać szyfru deterministycznego, a zatem tryb ECB nie powinien być używany w większości zastosowań.
Cipher Block Chaining (CBC) Mode
Tryb pracy CBC zapewnia zależność wiadomości do generowania szyfrogramu i czyni system niedeterministycznym.
Operacja
Operacja trybu CBC jest przedstawiona na poniższej ilustracji. Kroki są następujące –
-
Wczytanie n-bitowego wektora inicjującego (IV) do górnego rejestru.
-
XOR n-bitowego bloku tekstu jawnego z wartością danych w górnym rejestrze.
-
Zaszyfrowanie wyniku operacji XOR za pomocą bazowego szyfru blokowego z kluczem K.
-
Wprowadzenie bloku szyfrogramu do górnego rejestru i kontynuowanie operacji aż do przetworzenia wszystkich bloków tekstu jawnego.
-
W celu odszyfrowania, dane IV są XORowane z pierwszym odszyfrowanym blokiem szyfrogramu. Pierwszy blok szyfrogramu jest również wprowadzany do rejestru zastępującego IV w celu odszyfrowania następnego bloku szyfrogramu.
Analiza trybu CBC
W trybie CBC bieżący blok tekstu jawnego jest dodawany do poprzedniego bloku szyfrogramu, a następnie wynik jest szyfrowany kluczem. Odszyfrowanie jest więc procesem odwrotnym, polegającym na odszyfrowaniu bieżącego szyfrogramu, a następnie dodaniu do wyniku poprzedniego bloku szyfrogramu.
Zaletą CBC w stosunku do ECB jest to, że zmiana IV skutkuje innym szyfrogramem dla identycznej wiadomości. Po stronie wad, błąd w transmisji zostaje propagowany do kilku dalszych bloków podczas deszyfrowania ze względu na efekt łańcuchowania.
Warto wspomnieć, że tryb CBC stanowi podstawę dobrze znanego mechanizmu uwierzytelniania pochodzenia danych. Dlatego ma on zaletę dla tych zastosowań, które wymagają zarówno szyfrowania symetrycznego, jak i uwierzytelniania pochodzenia danych.
Tryb sprzężenia zwrotnego szyfru (CFB)
W tym trybie każdy blok szyfrogramu zostaje „wprowadzony z powrotem” do procesu szyfrowania w celu zaszyfrowania następnego bloku tekstu jawnego.
Operacja
Operacja trybu CFB jest przedstawiona na poniższej ilustracji. Na przykład, w obecnym systemie, blok wiadomości ma rozmiar „s” bitów, gdzie 1 < s < n. Tryb CFB wymaga wektora inicjalizacji (IV) jako początkowego losowego n-bitowego bloku wejściowego. IV nie musi być tajny. Kroki działania to –
-
Wczytanie IV do górnego rejestru.
-
Zaszyfrowanie wartości danych w górnym rejestrze za pomocą bazowego szyfru blokowego z kluczem K.
-
Wyjęcie tylko 's’ liczby najbardziej znaczących bitów (lewych bitów) z wyjścia procesu szyfrowania i XOR ich z 's’ bitowym blokiem tekstu jawnego w celu wygenerowania bloku szyfrogramu.
-
Wprowadzenie bloku szyfrogramu do górnego rejestru przez przesunięcie obecnych już danych w lewo i kontynuowanie operacji aż do przetworzenia wszystkich bloków tekstu jawnego.
-
Praktycznie, poprzedni blok szyfrogramu jest szyfrowany kluczem, a następnie wynik jest XORowany z bieżącym blokiem tekstu jawnego.
-
Podobne kroki są wykonywane dla deszyfrowania. Wstępnie ustalony IV jest początkowo ładowany na początku deszyfrowania.
Analiza trybu CFB
Tryb CFB różni się znacznie od trybu ECB, szyfrogram odpowiadający danemu blokowi tekstu jawnego zależy nie tylko od tego bloku tekstu jawnego i klucza, ale także od poprzedniego bloku szyfrogramu. Innymi słowy, blok szyfrogramu jest zależny od wiadomości.
CFB ma bardzo dziwną cechę. W tym trybie, użytkownik odszyfrowuje szyfrogram używając tylko procesu szyfrowania szyfru blokowego. Algorytm deszyfrujący bazowego szyfru blokowego nigdy nie jest używany.
Najwyraźniej tryb CFB przekształca szyfr blokowy w rodzaj szyfru strumieniowego. Algorytm szyfrujący jest używany jako generator strumienia kluczy do produkcji strumienia kluczy, który jest umieszczany w dolnym rejestrze. Ten strumień klucza jest następnie XORed z tekstem jawnym, jak w przypadku szyfru strumieniowego.
Przez przekształcenie szyfru blokowego w szyfr strumieniowy, tryb CFB zapewnia niektóre z korzystnych właściwości szyfru strumieniowego przy zachowaniu korzystnych właściwości szyfru blokowego.
On the flip side, the error of transmission gets propagated due to changing of blocks.
Output Feedback (OFB) Mode
It involves feeding the successive output blocks from the underlying block cipher back to it. Te bloki zwrotne dostarczają ciąg bitów do zasilania algorytmu szyfrującego, który działa jako generator strumienia klucza, jak w przypadku trybu CFB.
Generowany strumień klucza jest XOR-ed z bloków tekstu jawnego. Tryb OFB wymaga IV jako początkowego losowego n-bitowego bloku wejściowego. IV nie musi być tajne.
Operacja jest przedstawiona na następującej ilustracji –
Tryb licznikowy (CTR)
Można go traktować jako opartą na liczniku wersję trybu CFB bez sprzężenia zwrotnego. W tym trybie, zarówno nadawca jak i odbiorca muszą mieć dostęp do wiarygodnego licznika, który oblicza nową wspólną wartość za każdym razem, gdy blok szyfrogramu jest wymieniany. Ten współdzielony licznik nie musi być wartością tajną, ale wyzwaniem jest to, że obie strony muszą utrzymywać licznik zsynchronizowany.
Operacja
Zarówno szyfrowanie jak i deszyfrowanie w trybie CTR są przedstawione na poniższej ilustracji. Kroki w działaniu to –
-
Wczytanie początkowej wartości licznika w górnym rejestrze jest takie samo zarówno dla nadawcy jak i odbiorcy. Odgrywa on taką samą rolę jak IV w trybie CFB (i CBC).
-
Zaszyfruj zawartość licznika kluczem i umieść wynik w rejestrze dolnym.
-
Pobierz pierwszy blok tekstu jawnego P1 i przeprowadź XOR do zawartości rejestru dolnego. Wynikiem tego działania jest C1. Wyślij C1 do odbiornika i zaktualizuj licznik. Aktualizacja licznika zastępuje sprzężenie zwrotne szyfrogramu w trybie CFB.
-
Postępuj w ten sposób aż do zaszyfrowania ostatniego bloku tekstu jawnego.
-
Odszyfrowanie jest procesem odwrotnym. Blok szyfrogramu jest XORowany z wyjściem zaszyfrowanej zawartości licznika. Po odszyfrowaniu każdego bloku szyfrogramu licznik jest aktualizowany tak jak w przypadku szyfrowania.
Analiza trybu licznikowego
Nie ma on zależności od wiadomości, a zatem blok szyfrogramu nie zależy od poprzednich bloków tekstu jawnego.
Jak tryb CFB, tryb CTR nie obejmuje procesu deszyfrowania szyfru blokowego. Dzieje się tak dlatego, że tryb CTR tak naprawdę używa szyfru blokowego do generowania strumienia kluczy, który jest szyfrowany za pomocą funkcji XOR. Innymi słowy, tryb CTR również konwertuje szyfr blokowy na szyfr strumieniowy.
Poważną wadą trybu CTR jest to, że wymaga on synchronicznego licznika u nadawcy i odbiorcy. Utrata synchronizacji prowadzi do nieprawidłowego odzyskania tekstu jawnego.
Jednakże tryb CTR ma prawie wszystkie zalety trybu CFB. Dodatkowo, w ogóle nie propaguje błędu transmisji.
.