Wróć do informacji o e-podręczniku Wydrukuj Pobierz materiał do PDF Pobierz materiał do EPUB Pobierz materiał do MOBI Zaloguj się, aby dodać do ulubionych Zaloguj się, aby skopiować i edytować materiał Zaloguj się, aby udostępnić materiał Zaloguj się, aby dodać całą stronę do teczki

Główne założenia szyfru Playfair

Od wieków ludzie chronią swoje tajemnice. Spartanom przypisuje się autorstwo pierwszego urządzenia szyfrującego, nazwanego skytale. W trakcie II wojny światowej Niemcy wykorzystywali urządzenie szyfrujące o nazwie Enigma, a Polacy wsławili się złamaniem powstałego wówczas kodu. Jeśli korzystamy z sieci bezprzewodowej (np. WiFi lub GSM/LTE), wszystkie dane są nadawane i mogą zostać odebrane przez dowolny odbiornik bezprzewodowy, znajdujący się w pobliżu. Każde urządzenie (komputer, laptop, tablet, telefon), jeśli korzysta z łączności bezprzewodowej, odbiera wszystko, co jest przesyłane przez nasze urządzenie. Rozsądne zatem jest założenie, że każdy może obserwować bity wysyłane oraz odbierane przez nasz komputer.

Szyfr Playfair, podobnie jak szyfr Cezara, należy do grupy szyfrów podstawieniowych. Charakteryzują się one powstawaniem szyfrogramu przez zamianę znaków tekstu jawnego na inne znaki. Niektóre z nich pracują na pojedynczych znakach, inne – całych grupach. Mówimy wówczas o poligramowych szyfrach podstawieniowychszyfr podstawieniowy poligramowypoligramowych szyfrach podstawieniowych. Do tej właśnie podgrupy szyfrów podstawieniowych należy szyfr Playfair.

Rnj7qAOMN0xQm1
Baron Lyon Playfair
Źródło: domena publiczna. Wikimedia Commons.

Opiera się on na dzieleniu tekstu jawnego na pary znaków, a następnie na zastępowaniu ich innymi parami. Nie odbywa się to jednak w sposób losowy, lecz według określonego algorytmu. Do przeprowadzenia procesu szyfrowania będzie nam potrzebne słowo kluczkluczklucz oraz tabela liter o wymiarach 5 na 5.

Zasada działania szyfru Playfair polega na zamianie par liter na inne według reguł opartych na ich wzajemnym położeniu w tabeli 5 na 5 komórek.

Prześledźmy proces powstawania takiego klucza dla słowa bazowego szyfrogram. Pominiemy literę Q, ponieważ w alfabecie łacińskim jest 26 liter, a nasza tabela ma tylko 25 miejsc. Po wprowadzeniu słowa bazowego otrzymujemy:

s

z

y

f

r

o

g

a

m

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

W kolejnych komórkach wpisujemy pozostałe litery alfabetu. Po uzupełnieniu tabela wygląda następująco:

s

z

y

f

r

o

g

a

m

b

c

d

e

h

i

j

k

l

n

p

t

u

v

w

x

Analiza algorytmu szyfrującego

Przygotowanie tekstu jawnego oraz tablicy liter

Za pomocą szyfru Playfair zaszyfrujemy tekst jawnytekst jawnytekst jawny – będzie to wyraz „lekcja”. W pierwszej kolejności wybieramy słowo, bądź nawet zdanie, pełniące funkcję klucza. W naszym przykładzie kluczem będzie „nauka”.

Gdy mamy już klucz, tworzymy tablicę liter (określaną również macierzą liter). Należy umieścić w niej słowa klucza z pominięciem powtarzających się liter, a następnie dopisanie pozostałych znaków znajdujących się w alfabecie (omijamy wówczas znaki będące już w kluczu).

Jak do tablicy zawierającej 25 komórek wpisać 26‑literowy alfabet?

Najpopularniejszą metodą jest wpisanie w jedną z komórek dwóch liter: „i” oraz „j”. Innym sposobem jest ominięcie litery alfabetu rzadko występującej w słowach wykorzystywanego przez nas języka – dla języka polskiego będzie to np. „x” (choć równie dobrze mogłaby to być litera „q”, jak we wcześniejszym przykładzie). Warto również zastanowić się, w jaki sposób będziemy wpisywać nasze dane do tablicy.

Wykorzystana przez nas metoda polega na rozpoczęciu od lewego górnego rogu tablicy, a następnie przemieszczanie się w prawo, aż do zapełnienia całego wiersza. W kolejnym kroku przechodzimy do następnego wiersza, rozpoczynając ponownie od pierwszej komórki, znajdującej się z lewej strony. Rezultat przeprowadzonej operacji prezentuje się następująco:

R1MTuOmCHXlj3
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Tablica jest już gotowa, możemy zatem przejść do podzielenia tekstu jawnego na pary liter. Słowo „lekcja” składa się z sześciu znaków, a więc wynikiem naszego działania będą trzy pary liter: „le”, „kc” i „ja”. Możliwa jest sytuacja, w której tekst jawny będzie składał się z nieparzystej liczby liter. Wówczas niezbędne będzie dodanie dodatkowej, rzadko występującej litery na końcu naszego słowa bądź zdania – w celu uzyskania parzystej liczby znaków. Podobne działania podejmuje się również wtedy, gdy w tekście jawnym istnieje para złożona z dwóch tych samych liter. Ponownie wybieramy rzadko stosowaną literę i stawiamy ją przed pierwszym z powtórzonych znaków.

Rodzaje rozkładu liter w tablicy

Gdy posiadamy już zarówno wypełnioną tablicę, jak i podzielony na pary tekst jawny, możemy przejść do samego szyfrowania. W zależności od położenia liter z jednej pary w tablicy wyróżniamy trzy sytuacje:

  • litery znajdują się w tej samej kolumnie,

  • litery znajdują się w tym samym wierszu,

  • litery nie znajdują się ani w tej samej kolumnie, ani w wierszu.

Szyfrowanie par liter tekstu jawnego

W przypadku każdego z wymienionych scenariuszy przeprowadzone przez nas operacje będą inne. Rozpocznijmy więc właściwy proces szyfrowania. Pierwszym krokiem jest rozpatrzenie sytuacji występującej w przypadku pary liter „le”.

Rrj3AOjML48xD
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Zarówno litera „l”, jak i „e” znajdują się w tej samej kolumnie. W przypadku takiego scenariusza zamieniamy nasze znaki na znajdujące się bezpośrednio pod nimi. Jeżeli jedna z liter znajduje się na samym dole kolumny, wówczas zastąpi ją znak znajdujący się na samej górze tej  kolumny. Rozpatrując naszą parę, literę „l” zastąpi „r”, a literę „e” zastąpi „l”.

R1L6dNcO0VWLI
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Wynikiem przeprowadzonej zamiany jest para liter „rl”. Wciąż pozostają nam jeszcze dwie pary do zaszyfrowania. Zajmijmy się więc literami „kc”.

R15bRSAfz3HMa
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Litery „k” oraz „c” znajdują się w osobnych kolumnach oraz wierszach. Aby zaszyfrować daną literę, musimy znaleźć komórkę przecięcia wiersza, w którym znajduje się nasza szyfrowana litera oraz kolumnę, w której jest ulokowana druga litera. W ten sposób „k“ z pary „kc” zostanie zastąpione przez „n”.

R1UiwJGZet93d
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Analogicznie postępujemy w przypadku litery „c”.

R1GdW7ERCMnsn
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

W ten sposób uzyskaliśmy kolejną zaszyfrowaną parę – „nf”. Do ukończenia procesu szyfrowania pozostało nam jedynie zajęcie się parą „ja”. Tak jak w poprzednich dwóch przypadkach, zacznijmy od analizy rozłożenia liter w naszej tablicy.

R1HbWFVCNPzvj
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Typ sytuacji jest identyczny, jak w przypadku pary „le”. Podmieniamy więc obie litery na te znajdujące się pod nimi. Wynikiem naszych działań jest para „qd”. W tym momencie wystarczy złączyć zaszyfrowane pary i odczytać szyfrogram. Po złączeniu „rl”, „nf”, „qd” otrzymujemy słowo „rlnfqd”.

Ciągle jednak nie przeanalizowaliśmy sytuacji, w której obie litery występują w tym samym wierszu. Zmieńmy więc nasz tekst jawny „lekcja” na to samo słowo, tylko tym razem w wołaczu – „lekcjo”. Pierwsze dwie pary nie uległy zmianie, natomiast ostatnia litera została zamieniona z „a” na „o”. Przeanalizujmy więc scenariusz dla nowej pary „jo”.

R16glNdyFMxne
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Litery „j” oraz „o” są ulokowane w tym samym wierszu. W takiej sytuacji litery z naszej pary zamienimy na znaki znajdujące się na prawo od nich. Jeżeli litera znajduje się na końcu wiersza, wówczas zostaje podmieniona na pierwszą z lewej strony tego wiersza. Jest to sytuacja dość podobna do tej, gdy dwa znaki znajdowały się w tej samej kolumnie.

R5vKfxbFGtOLD
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

W ten sposób „j” zostało zamienione na „l”, natomiast „o” na „h”. Wynikiem całej operacji jest zaszyfrowana para „lh”. Biorąc pod uwagę wcześniej zaszyfrowane pary „le” i „kc”, naszym szyfrogramem jest słowo „rlnflh”.

Dla zainteresowanych

Dostępne w dystrybucji języka Python biblioteki, pozwalające na realizowanie funkcji szyfrowania, są opisane na stronie dokumentacji.

Wśród wielu innych bibliotek, które pozwalają na operacje kryptograficzne, możemy wyróżnić cryptographycryptographycryptography. Dysponuje ona gotowymi metodami dla różnych sposobów szyfrowania, m.in.:

  • RSA,

  • Kodowanie Huffmana.

Już wiesz

Podsumujmy najważniejsze elementy tego e‑materiału:

  • szyfr Playfair jest przykładem szyfru podstawieniowego,

  • szyfr ten jest łatwy w implementacji,

  • analiza częstotliwościowa znaków występujących w badanym szyfrogramie jest efektywnym sposobem na złamanie takiego szyfru.

Słownik

cryptography
cryptography

niezależna od systemu operacyjnego biblioteka kryptograficzna dla języka Python

klucz
klucz

informacja służąca zazwyczaj do szyfrowania i deszyfrowania wiadomości

szyfr podstawieniowy poligramowy
szyfr podstawieniowy poligramowy

rodzaj szyfru podstawieniowego polegający na zamianie nie pojedynczych znaków, a całych ich grup na inne

tekst jawny
tekst jawny

informacja przeznaczona do zaszyfrowania lub będąca rezultatem procesu deszyfrowania