Kryptologia - Co to takiego?
Artykuł ten jest wstępem do serii poświęconej szyfrowaniu oraz łamaniu szyfrów. Po długim zwlekaniu postanowiłem jednak napisć te artykuły, ponieważ jest to jedna z ciekawszych dziedzin matematyki, która może być ciekawym hobby, ale i również sposobem na pobudzenie naszych szarych komórek.
Podstawowe pojęcia
Kryptologia (ang. cryptology) - dziedzina matematyki zajmująca się ogólnie mówiąc szyframi. Konkretniej dzieli się ona na:
- kryptografię (ang. cryptography), która zajmuje się tworzeniem algorytmów szyfrujących,
- kryptoanalizę (ang. cryptoanalysis) zajmującą się łamaniem szyfrów.
Tekst czysty (ang. plaintext) - tekst, który zostanie zaszyfrowany. We wzorach oznaczany literą M.
Tekst zaszyfrowany (ang. ciphertext) - tekst, który otrzymamy po zaszyfrowaniu. Oznaczany jako C.
Szyfrowanie (ang. encryption) - funkcja zamieniająca tekst czysty na zaszyfrowany. Oznaczana jako E. Wzór funkcji E(M) = C.
Deszyfrowanie (ang. decryption) - funkcja odwracająca proces szyfrowania, której wynikiem jest tekst jawny. Oznaczana jako D. Wzór funkcji D(C) = M.
Jak wynika z powyższych wzorów, aby treść mogła być zakodowana oraz prawidłowo odkodowana musi być spełnione równanie D(E(M)) = M.
Algorytm kryptograficzny - funkcja służąca do szyfrowania oraz deszyfrowania (mogą to być dwie inne funkcje). Algorytmy te możemy podzielić na: - algorytmy symetryczne (ang. symmetric algorithm) - z kluczem prywatnym (ang. private key), do zakodowania i odkodowania tekstu używamy tego samego klucza, dzielimy je dokładniej na:
- algorytmy blokowe (ang. block algorithm) - tekst jawny dzielony jest na bloki o danej długości (zwykle 64 lub 128 bitów), a następnie każdy blok szyfrowany jest osobno,
- algorytmy strumieniowe (ang. stream algorithm) - tekst szyfrowany jest bit bo bicie lub bajt po bajcie,
- algorytmy asymetryczne (ang. asymmetric algorithm) - z kluczem publicznym (ang. public key) należącym do osoby, do której przesyłamy treść, którego my używamy do procesu szyfrowania, natomiast do odszyfrowania osoba ta używa własnego klucza prywatnego.
Algorytmy ograniczone (ang. restricted algorithm) - algorytmy kryptograficzne opierające trudność deszyfrowania szyfrogramu na ukryciu algorytmu w tajemnicy.
Szyfr podstawieniowy (ang. substitution cipher) - polega na zamianie litery tekstu jawnego na inną literę określoną jakimś wzorem. Możemy wyróżnić: - szyfr monoalfabetyczny (ang. monoalphabetic cipher) - każda litera tekstu czystego zastąpiona zostaje inną literą na podstawie jednego określonego alfabetu (np. przesuniętego o 3 - szyfr Cezara lub 13 - ROT13),
- szyfr polialfabetyczny (ang. polyalphabetic cipher) - pojedyncze litery tekstu jawnego zastąpione zostają inn literą jednak z wielu alfabetów (np. jedna literaz z alfabetu przesuniętego o 2, inna zaś o 3), np. szyfr Vigenere'a,
- szyfr homofoniczny (ang. homophonic cipher) - każda litera tekstu czystego może mieć kilka (w zależności od procentu występowania danej litery w tekście) swoich odpowiedników w tekście zaszyfrowanym,
- szyfr poligramowy (ang. polygram cipher) - zamieniane są większe ilości liter, a nie pojedyncze znaki, np. pary jak w przypadku szyfru Playfair'a, szyfru Hilla, tablicy Polibiusza, metody nihilistycznej oraz szyfru ADFGVX.
- Szyfr przestawieniowy (ang. transposition cipher) - litery tekstu jawnego przestawiane są w określony sposób tworząc szyfrogram.
- Szyfrator synchroniczny - klucz jest generowany niezależnie od tekstu.
- Szyfrator samosynchronizujący - klucz jest generowany w zależności od określonej liczby poprzednich znaków szyfru.