Kody i szyfry
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 V2 są 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.