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.