64
3. Szyfrowanie
W trybie CBC używamy ustalonego wektora początkowego
IV e En,
który może być podany do publicznej wiadomości. Tak jak w trybie ECB, tekst otwarty dzielimy na bloki długości n. Jeśli Alicja ma zaszyfrować ciąg bloków
długości n tekstu otwartego za pomocą klucza e, to przyjmuje
c0 = IV, ej = £e(c,-_i © m.j), 1 ^ j ^ t.
Otrzymuje kryptogram
C = Cj . . . Cf.
Aby rozszyfrować ten kryptogram, Bolek używa klucza rozszyfrowywania d, takiego, że Dd{Ee{w)) = w dla wszystkich bloków w tekstu otwartego. Następnie oblicza
(3.1)
C0 = IV, TTlj = Cy_i © Dd(Cj), 1 ^ j ^ t.
Istotnie, otrzymuje on co © Dd{c\) = co ® co © m\ = m\. W podobny sposób można pokazać, że pozostałe bloki tekstu otwartego są poprawne.
Przykład 3.8.4. Bierzemy ten sam szyfr blokowy, ten sam tekst otwarty i ten sam klucz co w przykładzie 3.8.1. Blokami tekstu otwartego są
m i = 1011, m2 = 0001, m3 = 0100, m4 = 1010.
Kluczem jest
2 3
3 4
Bierzemy wektor początkowy
IV = 1010
Wtedy c0 = 1010, cx = £*(c0 © mx) = £*(0001) = 0010, c2 = £*(o © m2) = £* (0011) = 0110, c3 = £*(c2 © m3) = £*(0010) = 0100, c4 = £*(c3 © m4) = £*(1110) = 1101. Kryptogramem jest
c = 0010011001001101.
Rozszyfrowujemy ten kryptogram, otrzymując m\ = co © En 1 (c\) = 1010 © 0001 = 1011 ,m2 = ci ©£“*(c2) = 0010©0011 =0001,m3 = c2ffi£“1(c3) =0110®0010 = 0100,m4 = c3ffi£“1(c4) =0100 ©1110 = 1010.
Na ogół, w trybie CBC ten sam tekst otwarty jest szyfrowany inaczej dla różnych wektorów początkowych. Ponadto szyfrowanie jednego bloku tekstu otwartego zależy od poprzednich bloków tego tekstu otwartego. Jeśli zatem kolejność bloków kryptogra-mu zostanie zmieniona lub jakieś bloki kryptogramu zostaną podmienione, to rozszyfrowywanie stanie się niemożliwe. Jest to zaleta trybu CBC w porównaniu z trybem ECB.
Zastanowimy się nad skutkami błędów transmisji. W (3.1) blok mj tekstu otwartego jest obliczany z bloków c7 i c7-_i kryptogramu. Jeśli zatem blok c} kryptogramu jest przekazany błędnie, to bloki nij i m j+\ tekstu otwartego mogą być odczytane błędnie. Ale nie ma to wpływu na następne bloki mj+2, mJ+3,... tekstu otwartego. One mogą być odczytane poprawnie.