ου γαρ εστιν κρυπτον ο ου φανερον γενησεται ουδε αποκρυφον ο ου γνωσθησεται και εις φανερον ελθη
Wersja PL ENG Version

Szyfry symetryczne

Szyfry symetryczne używają tych samych sekretnych kluczy do szyfrowania tekstu jawnego i deszyfrowania tekstu ukrytego. Są szybsze niż szyfry z kluczem publicznym i umożliwiają efektywne szyfrowanie dużej ilości danych. Ich stosowanie wymaga jednak opracowania bezpiecznego sposobu dystrybucji sekretnych kluczy.

Definicja Szyfr symetryczny zdefiniowany na (K, M, C), gdzie:
  • K - zbiór zawierający wszystkie możliwe klucze,
  • M - zbiór zawierający wszystkie możliwe wiadomości,
  • C - zbiór zawierający wszystkie możliwe szyfrogramy (zaszyfrowane wiadomości)
to para efektywnych algorytmów (E, D), gdzie:
  • E: K × M -> C
  • D: K × C -> M
takich, że dla każdego m należącego do M, k należącego do K zachodzi równość:
  • D(k, E(k, m)) = m   (reguła konsystencji)
  • Funkcja E jest często losowa
  • Funkcja D jest zawsze deterministyczna

Szyfry symetryczne dzielą się na szyfry strumieniowe i szyfry blokowe.

Szyfry strumieniowe

Szyfry strumieniowe bazują na generowaniu teoretycznie nieskończonego strumienia bitów (lub bajtów) klucza, którego następnie używają do szyfrowania danych wejściowych bit po bicie (lub bajt po bajcie).

Szyfry strumieniowe operują na ciągłym strumieniu znaków tekstu jawnego. Wiadomości nie są dzielone na mniejsze bloki.

Szyfry blokowe

Szyfry blokowe operują na większych partiach danych (nazywanych blokami), które szyfrowane są kolejno, jeden po drugim. Podczas szyfrowania dane wejściowe są dzielone na bloki równej długości, a następnie każdy z tych bloków jest przetwarzany przez kolejne funkcje z wykorzystaniem sekretnego klucza. Zarówno długość bloku danych, jak i klucza oraz kolejne operacje wykonywane na danych są określone przez konkretny algorytm. W procesie dekrypcji używa się funckji odwrotnych.

Algorytmy szyfrów blokowych często umożliwiają mieszanie danych z paru bloków i ich wspólne szyfrowanie, w celu zapewnienia większego bezpieczeństwa (tak działa na przykład szyfr AES w trybie CBC).

Działanie szyfrów blokowych można przedstawić jako efektywne i deterministyczne funkcje, które permutują zawartość kolejnych bloków danych (czyli mieszają wszystkie bity w bloku). Funkcje permutujące muszą działać w sposób pseudolosowy, a ich dane wyjściowe powinny być nierozróżnialne od danych czysto losowych. W celu odszyfrowania zakodowanych wiadomości, należy zastosować odpowiednie permutacje odwrotne. Permutacje odwrotne muszą być porównywalnie efektywne.