5. Szyfry i kryptografia

5.9. Szyfry strumieniowe

Szyfry strumieniowe (ang. stream ciphers) są ważną klasą szyfrów z kluczem symetrycznym. Należą do klasy szyfrów blokowych, (z długością bloku =1, a więc oddzielnie szyfrujemy każdą literę tekstu jawnego). Istotą szyfru strumieniowego jest to, że przekształcenie szyfrujące może zmieniać się dla każdego szyfrowanego symbolu.

Szyfry strumieniowe są użyteczne w sytuacji, gdy

  • wysokie jest prawdopodobieństwo błędów transmisji, ponieważ w szyfrach strumieniowych nie ma propagacji błędu;
  • dane muszą być przesyłane symbol po symbolu (np. szyfrator lub deszyfrator nie ma pamięci).

Zdefiniujemy teraz szyfr strumieniowy formalnie. Niech V1 i V2 będą alfabetami. Punktem wyjścia jest blokowa funkcja szyfrująca (szyfrująca bloki o długości 1) E : K V1 V2 i blokowa funkcja deszyfrująca (deszyfrująca bloki o długości 1) spełniające warunek:

\underset{m \in V_1}{\forall} \quad \underset{k_1 \in V_1}{\forall}\quad \underset{k_2 \in K}{\exists} D(k2 , E(k1 , m) m .

Tworzymy ciąg (k1)\underset {_{i=1}}{_{ \infty }} , gdzie ki K dla każdego i N . Nazywamy ten ciąg strumieniem kluczy. Definiujemy nowy system kryptograficzny (V1 ,V2 , \tilde K, \tilde E, \tilde D) następująco. V1 i Vsą wprowadzonymi już alfabetami, \tilde K {(<i>k</i><sub><i>i</i> </sub>)<sup><span class="equation" style="width:100%;;;;">\underset {_{i=1}}{_{ \infty }}  ; ki K} zbiorem kluczy,  \tilde E: \tilde K V1*  V2* funkcją szyfrującą, dokładniej \tilde E zadane jest wzorem:

\tilde E ((ki )\underset {_{i=1}}{_{ \infty }}, * m1m2 ...mr ) E(k1, m1)E(k2 , m2 )...E(kr , mr ) c1c2 ...cr

\tilde D: \tilde K V2* V1* funkcją deszyfrującą, dokładniej \tilde D zadane jest wzorem:

\tilde D((ki )\underset {_{i=1}}{_{ \infty }} c1c2 ...cr ) D(k1, c1)D(k2 , c2 )...D(kr , cr ) m1m2 ...mr

Taki system kryptograficzny nazywamy szyfrem strumieniowym.