szyfrowanie

Szyfry podstawieniowe

W szyfrach podstawieniowych każdą literę tekstu jawnego zastępujemy określonym symbolem, niekoniecznie należącym do alfabetu.
Jeżeli w tekście jawnym daną literę zawsze zastępujemy tym samym symbolem, to szyfr taki nazywamy prostym szyfrem podstawieniowym.

Określmy w następujący sposób przyporządkowanie symboli alfabetu $${\small \begin{array}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}\hline \textrm{Alfabet} & & & & & & & & & & & & & & & & & & & & & & & & & &\\ \textrm{tekstu} & A & B & C & D & E & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & T & U & V & W & X & Y & Z\\ \textrm{jawnego} & & & & & & & & & & & & & & & & & & & & & & & & & &\\ \hline \textrm{Alfabet} & & & & & & & & & & & & & & & & & & & & & & & & & &\\ \textrm{kryptogramu} & C & E & G & I & K & M & O & Q & S & U & W & Y & A & B & D & F & H & J & L & N & P & R & T & V & X & Z\\ & & & & & & & & & & & & & & & & & & & & & & & & & &\\ \hline \end{array} } $$ wówczas $$ \begin{array}{ccccccccc} \textrm{Tekst jawny} & & & & & & & & \textrm{Tekst zaszyfrowany} \\ MATEMATYKA & & & & & & & & ACNKACNWC \end{array} $$ Innym przykładem szyfru podstawieniowego jest podstawienie za pomocą hasła. Szyfr ten polega na zdefiniowaniu słowa-hasła, którego kolejne symbole zastępują początkowe symbole alfabetu tekstu jawnego, symbole niewystępujące w słowie-haśle natomiast przyporządkowujemy na same siebie.
Niech naszym słowem-hasłem będzie \(BIEGAC\), wówczas przyporządkowanie symboli alfabetu będzie następujące: $${\small \begin{array}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}\hline \textrm{Alfabet} & & & & & & & & & & & & & & & & & & & & & & & & & &\\ \textrm{tekstu} & A & B & C & D & E & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & T & U & V & W & X & Y & Z\\ \textrm{jawnego} & & & & & & & & & & & & & & & & & & & & & & & & & &\\ \hline \textrm{Alfabet} & & & & & & & & & & & & & & & & & & & & & & & & & &\\ \textrm{kryptogramu} & B & I & E & G & A & C & D & F & H & J & K & L & M & N & O & P & Q & R & S & T & U & V & W & X & Y & Z\\ & & & & & & & & & & & & & & & & & & & & & & & & & &\\ \hline \end{array} } $$ W tym przypadku $$ \begin{array}{ccccccccc} \textrm{Tekst jawny} & & & & & & & & \textrm{Tekst zaszyfrowany} \\ MATEMATYKA & & & & & & & & MBTAMBTYKB \end{array} $$ Innym przykładem szyfru podstawieniowego jest przesunięcie cykliczne, polega on na zastępowaniu każdego symbolu tekstu jawnego symbolem tego samego alfabetu przesuniętym w nim o \(k\) miejsc, gdzie \(k > 0\) i mniejsze od ilości liter alfabetu.
Dla \(k = 5\) przekształcenie tekstu jawnego ma postać:
$${\small \begin{array}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}\hline \textrm{Alfabet} & & & & & & & & & & & & & & & & & & & & & & & & & &\\ \textrm{tekstu} & A & B & C & D & E & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & T & U & V & W & X & Y & Z\\ \textrm{jawnego} & & & & & & & & & & & & & & & & & & & & & & & & & &\\ \hline \textrm{Alfabet} & & & & & & & & & & & & & & & & & & & & & & & & & &\\ \textrm{kryptogramu} & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & T & U & V & W & X & Y & Z & A & B & C & D & E\\ & & & & & & & & & & & & & & & & & & & & & & & & & &\\ \hline \end{array} } $$ wtedy $$ \begin{array}{ccccccccc} \textrm{Tekst jawny} & & & & & & & & \textrm{Tekst zaszyfrowany} \\ MATEMATYKA & & & & & & & & RFYJRFYDPF \end{array} $$ W szyfrach podstawieniowych deszyfrowanie polega na przekształceniu symboli szyfrogramu za pomocą odwzorowania odwrotnego, które otrzymujemy poprzez zamianę wierszy określonej tablicy szyfrowania.

Spróbujmy teraz przedstawić przesunięcie cykliczne w trochę inny sposób. W tym celu przyporządkujmy każdej literze alfabetu kolejne liczby od 0 do 25: $${\small \begin{array}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}\hline & & & & & & & & & & & & & & & & & & & & & & & & & &\\ \textrm{Alfabet} & A & B & C & D & E & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & T & U & V & W & X & Y & Z\\ & & & & & & & & & & & & & & & & & & & & & & & & & &\\ \hline \textrm{Prezentacja} & & & & & & & & & & & & & & & & & & & & & & & & & &\\ \textrm{liczbowa} & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10 & 11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 & 21 & 22 & 23 & 24 & 25\\ & & & & & & & & & & & & & & & & & & & & & & & & & &\\ \hline \end{array} } $$ Określamy funkcję \(f\colon \{0,1,\dots,25\} \to \{0,1,\dots,25\}\) $$f(x) = x + k\ (\bmod 26),$$ gdzie \(x\) jest liczbą odpowiadającą danej literze, a \(k \in \left[ 1,25 \right] \).
Pokażmy raz jeszcze jak wygląda szyfrowanie cykliczne dla \( k = 5 \). Nasza funkcja przyjmuje wówczas postać \( f(x) = x + 5\ (\textrm{mod}\ 26) \). $${\small \begin{array}{|r|c|c|c|c|c|c|c|c|c|c|}\hline \textrm{Tekst jawny} & M & A & T & E & M & A & T & Y & K & A\\ \hline \textrm{Prezentacja liczbowa} & 12 & 0 & 19 & 4 & 12 & 0 & 19 & 24 & 10 & 0\\ \hline f(x) = x + 5 & 12 + 5 & 0 + 5 & 19 + 5 & 4 + 5 & 12 + 5 & 0 + 5 & 19 + 5 & 24 + 5 & 10 + 5 & 0 + 5\\ \hline \textrm{Prezentacja liczbowa} & 17 & 5 & 24 & 9 & 17 & 5 & 24 & 3 & 15 & 5\\ \hline \textrm{Szyfrogram} & R & F & Y & J & R & F & Y & D & P & F\\ \hline \end{array} } $$ Deszyfrowanie powyższego szyfrogramu polega na odszyfrowaniu kryptogramu szyfrem cyklicznym przesuwającym alfabet o \( 26 - 5 = 21 \) znaków, czyli \( g(x) = x + 21\ (\textrm{mod}\ 26) \) $${\small \begin{array}{|r|c|c|c|c|c|c|c|c|c|c|}\hline \textrm{Szyfrogram} & R & F & Y & J & R & F & Y & D & P & F\\ \hline \textrm{Prezentacja liczbowa} & 17 & 5 & 24 & 9 & 17 & 5 & 24 & 3 & 15 & 5\\ \hline g(x) = x + 21 & 17 + 21 & 5 + 21 & 24 + 21 & 9 + 21 & 17 + 21 & 5 + 21 & 24 + 21 & 3 + 21 & 15 + 21 & 5 + 21\\ \hline \textrm{Prezentacja liczbowa} & 12 & 0 & 19 & 4 & 12 & 0 & 19 & 24 & 10 & 0\\ \hline \textrm{Tekst jawny} & M & A & T & E & M & A & T & Y & K & A\\ \hline \end{array} } $$ Teraz w analogiczny sposób przejdźmy do szyfrowania korzystając z funkcji \( f(x) = x + 3\ (\textrm{mod}\ 26) \)
$$ \begin{array}{|r|c|c|c|c|c|c|}\hline \textrm{Tekst jawny} & A & P & A & R & A & T\\ \hline \textrm{Prezentacja liczbowa} & 0 & 15 & 0 & 17 & 0 & 19\\ \hline f(x) = x + 3 & 0 + 3 & 15 + 3 & 0 + 3 & 17 + 3 & 0 + 3 & 19 + 3\\ \hline \textrm{Prezentacja liczbowa} & 3 & 18 & 3 & 20 & 3 & 22\\ \hline \textrm{Szyfrogram} & D & S & D & U & D & W\\ \hline \end{array} $$ Nie bez powodu w przykładzie przyjęliśmy \( k = 3 \). Jest to szyfr nazywany szyfrem Cezara, który już sam Juliusz Cezar wykorzystywał do szyfrowania swoich wiadomości. Rozkodowanie wiadomości polega na zastosowaniu funkcji deszyfrującej \( g(x) = x + 23\ (\textrm{mod}\ 26) \)

Jako podsumowanie przedstawmy listę kroków, jaką należy zastosować podczas szyfrowania korzystając z przesunięcia cyklicznego

  1. zamieniamy wybrany znak na liczbę, która jest jej przypisana,
  2. wykonujemy działanie \(x + k \ (\textrm{mod } n)\), gdzie \(x\) jest liczbą przypisaną kodowanej literze,
  3. otrzymany wynik ponownie zamieniamy na literę, która jest przypisana otrzymanej liczbie.
Specjalną grupę szyfrów podstawieniowych stanowią szyfry afiniczne, którym poświęcamy osobny rozdział.