3. Kod Reeda - Solomona jako szyfr blokowy
Podstawowym założeniem wszystkich algorytmów szyfrujących jest, aby powstały szyfrogram nie posiadał cech statystycznych, które mogły by wykazywać zależność z tekstem jawnym. Dodatkowo kryptogram nie powinien posiadać nadmiarowości tekstu jawnego. Według znanego kryptologa, Claude'a Shannona, efekt taki możemy uzyskać przez różne techniki mieszania i rozpraszania tekstu jawnego, polegającej na naprzemiennym stosowaniu podstawień i przestawień. Opisywana metoda odchodzi od kanonów kryptografii, do procedur
szyfrowania i deszyfrowania procedury kodowania i dekodowania kodów cyklicznych, w których występują m. in. nieliniowe operacje mnożenia wielomianów, oraz jedną permutację λ, za pomocą której każdy znak tekstu jawnego zastępuje się innym znakiem. Dzięki opisanym operacją skutecznie likwiduje się nadmiarowość tekstu jawnego, jak również dużą przestrzeń klucza szyfrującego. Sprawia to dodatkowa operacja permutacji λ. Ilość możliwych kombinacji klucza wyraża się wzorem:
Zatem w omawianym algorytmie liczba kluczy wyniesie:
q - stopień ciała nad którym utworzono cykliczny kod Reeda - Solomona,
n - wielkość wektora kodowego,
Wyliczona liczba sprawia , że szyfr jest bardzo odporny na złamanie. Wartość q = 256 wynika z tego ,że algorytm szyfrujący został oparty na kodzie Reeda Solomona nad ciałem GF(256). Wykorzystywany alfabet to nic innego jak kod ASCII, a za względu na endomorficzność szyfru, (szyfr jest endomorficzny gdy tekst jawny i kryptogram operują na tym samym alfabecie), może szyfrować plik dowolnego rodzaju. Znakami alfabetu w zaś elementy ciała skończonego GF(q) ( naszym przypadku GF(256) ).
Cały proces szyfrowania określa system algebraiczny zwany ciałem skończonym i wyrażający się ogólnym wzorem:
jest to zbiór liczb całkowitych oraz dwóch działań dodawania i mnożenia. Elementy zbioru określa q-elementowe ciało skończone. Wielomian generujący kodu cyklicznego (n,k) wyraża się wzorem:
Sekwencja elementów ciała GF(q):
stowarzyszona z wielomianem:
przedstawia k-elementowy blok tekstu jawnego. Jednocześnie określając permutacje λ:
i wektor klucza:
Tworzymy przekształcenie szyfrujące, generujące szyfrogram korygujący manipulacje:
Przekształcenie E jest funkcja trzech zmiennych:
gdzie C jest procedurą obliczającą elementy nadmiarowe tekstu jawnego, które będą wykorzystywane do korekcji błędów, λ jest permutacja która przyporządkowuje każdemu elementowi tekstu jawnego inny znak, K jest kluczem szyfrującym i c zaszyfrowany blok kryptogramu.