62
3. Szyfrowanie
Przykład 3.8.1. Rozważamy szyfr blokowy polegający na permutacji bitów w wektorach bitów długości 4 (tzn. szyfr przestawieniowy z alfabetem U = (0, 1} i blokami długości 4). Wtedy K = S4, a funkcją szyfrującą dla klucza n e Są jest
En : {0, l}4 -> {0, 1 }4, bJC(l)t,n(2)i,n(3)b7z(4)-
Szyfrujemy tekst otwarty
Dzielimy go na bloki długości cztery. Ostatni blok ma długość trzy. Uzupełniamy go do długości cztery, dodając jedno zero. Otrzymujemy
mamy zatem bloki
m\ = 1011, m2 = 0001, m3 = 0100, m4 = 1010.
Używamy klucza
2 3
3 4
Każdy blok szyfrujemy oddzielnie. Otrzymujemy c\ = E„{mi) = 0111,C2 = E„ (m2) = 0010, c3 = E„(m3) = 1000, c4 = £w(m4) = 0101. Kryptogramem jest
c = 0111001010000101.
Trybu ECB można również używać wraz z algorytmem szyfrowania, który przekształca bloki długości n na bloki dłuższe. Tak jest na przykład w systemie RSA (por. punkt 8.3.2).
Gdy używamy trybu ECB, jednakowe bloki tekstu otwartego są szyfrowane przez jednakowe bloki kryptogramu. Jest zatem możliwe rozpoznawanie regularności tekstu otwartego w kryptogramie. To ułatwia ataki statystyczne. Także, jeśli używamy trybu ECB, to przeciwnik może zastąpić bloki kryptogramu innymi blokami kryptogramu, zaszyfrowanymi za pomocą tego samego klucza. Takie manipulowanie kryptogramem jest trudne do wykrycia przez odbiorcę. Z tych powodów trybu ECB nie należy używać do szyfrowania długich tekstów otwartych.
Bezpieczeństwo trybu ECB można zwiększyć, jeśli pewna część każdego bloku jest wybrana losowo, a pozostała część pochodzi z tekstu otwartego. Ale wtedy trzeba generować losowo wiele bitów i trzeba szyfrować więcej bloków. To zmniejsza efektywność trybu ECB.
Tryb wiązania bloków szyfrowych (cipherblock chaining modę - tryb CBC; zob. rysunek 3.2) pozwala uniknąć problemów trybu ECB. W tym trybie szyfrowanie bloku zależy nie tylko od klucza, ale także od poprzednich bloków. Szyfrowanie jest więc zależne od kontekstu. Jednakowe bloki w innym kontekście są szyfrowane inaczej. Adresat