65
3 8. Używanie szyfrów blokowych
Tryb CBC jest szczególnie odpowiedni dla szyfrowania długich wiadomości. W zastosowaniach mających działać w czasie rzeczywistym (np. jeśli Bolek chce rozszyfrowy-* ać kryptogram w chwili, gdy go otrzymuje) mogą jednak wystąpić problemy związane z efektywnością. Szyfrowanie i rozszyfrowywanie działające w czasie rzeczywistym jest rotrzebne na przykład przy bezpiecznych połączeniach telefonicznych. Aby utworzyć inptogram, Alicja używa funkcji szyfrującej. Po zakończeniu szyfrowania, Alicja wysyła zaszyfrowany blok Bolkowi, który używa funkcji rozszyfrowującej. To znaczy, że funkcja szyfrująca i funkcja rozszyfrowująca są używane sekwencyjnie (kolejno). Obliczanie wartości tych funkcji może być czasochłonne. Może się zatem okazać, że istnieje znaczne opóźnienie między szyfrowaniem i rozszyfrowywaniem.
W trybie szyfrowego sprzężenia zwrotnego (cipher feedback modę - tryb CFB; rob. rysunek 3.3) jest inaczej. Aby opisać ten tryb, użyjemy tego samego szyfru blokowego co w trybie CBC.
szyfrowanie rozszyfrowywanie
Rys. 3.3. Tryb CFB
W trybie CFB funkcja szyfrująca nie jest używana bezpośrednio do szyfrowania bloków tekstu otwartego, ale do generowania ciągu bloków klucza. Tekst otwarty szyfrujemy, dodając do niego te bloki klucza modulo 2. Kryptogram rozszyfrowujemy, dodając te same bloki klucza modulo 2. Bloki klucza mogą być generowane jednocześnie przez nadawcę, Alicję, i przez odbiorcę, Bolka. Tylko dodawanie modulo 2 musi być wykonywane sekwencyjnie.
Znów jest potrzebny wektor początkowy IV e (0, 1}". Potrzebna jest też liczba całkowita dodatnia r taka, że 1 ^ r n. Tekst otwarty dzielimy na bloki długości r.