Strona główna » Algorytmy » Szyfry » Teoria szyfrowania i kodowania

Teoria szyfrowania i kodowania

Kryptologia

Kryptologia jest to dziedzina nauka zajmująca się badaniem metod szyfrowania oraz jakie zapewniają bezpieczeństwo utajnionym danym. Dzieli się ona na dwie podkategorie. Pierwsza z nich to kryptografia. Ma to za zadanie opisać dokładnie w jaki sposób odbywa się szyfrowanie danych i w jaki sposób dane można odszyfrować. Dodatkowo kryptografia sprawdza poprawność szyfrowania. Jednak w celu ustalenia skuteczności szyfrowania należy zwrócić się w stronę kryptoanalizy. Polega ona na analizie sposobu szyfrowania, a następnie podejmowane są próby złamania szyfru. W zależności od tego jak trudno złamać dany szyfr tym zapewnia on lepszą ochronę. W trakcie badań ustalane jest także z czego powinien składać się klucz, aby dane były dobrze zabezpieczone.

Stegenografia

Wraz z początkiem cywilizacji pojawiło się zapotrzebowanie na szyfrowanie. W dawnych czasach informacje przemierzały bardzo duże odległości pomiędzy władcami. Tekst mógł zostać podmieniony w trakcie podróży co mogłoby wpłynąć na stosunki dyplomatyczne pomiędzy państwami. Najprostszym sposobem ukrycia tekstu jawnego jest stegenografia. Polega ona np. na pisaniu tekstu przy pomocy niewidzialnego atramentu. W trakcie drugiej wojny światowej wiadomość była zmniejszona do rozmiaru kropki i zamiast niej umieszczona. Niedawno sposobem zaliczającym się do stegenografi było dopisywania wiadomości wewnątrz plików graficznych.

Nietrudno zauważyć, że w celu odczytania tajnej wiadomości należało jedynie przechwycić nośnik wiadomości i wiedzieć w jaki sposób odczytać tekst jawny. Innymi słowy taka metoda szyfrowania danych nie ma zastosowania w przypadku wrażliwych danych, które można by było odczytać bez najmniejszego problemu. Nie znaczy to jednak, że stegenografia nie jest już wykorzystywana. Można ją łączyć razem z nowoczesnymi metodami szyfrowania w celu zwiększenia mocy szyfrowania. W takim przypadku nawet po odnalezieniu wiadomości nie można jej od razu odczytać.

Kryptografia

W starożytności jednym ze znanych szyfrów jest szyfr Cezara. Z punktu dzisiejszych czasów wykorzystana metoda szyfrowania danych nie jest zbyt skomplikowana. Jednak w dawnych czasach komputer nie istniał, więc sprawdzenie zaledwie 25 możliwych kluczy dla wspomnianego szyfru było nieco problematyczne. Późniejsze szyfry wykorzystywały coraz bardziej wyszukane metody szyfrowania. Nic dziwnego, że szyfr Vigenère opisany w XVI wieku przez kilka stuleci był uznawany za niemożliwy do złamania.

Dzisiejsze metody szyfrowania przede wszystkim opierają się jak największym utrudnieniu odszyfrowania danych. Przede wszystkim chodzi o to, żeby pomimo niesamowitej mocy obliczeniowej komputerów samo złamanie szyfru zajęło bardzo dużo czasu, ponieważ w praktyce złamanie dowolnego szyfrogramu jest tylko kwestią czasu, która zależy od wykorzystanej metody łamania szyfru oraz dostępnej mocy obliczeniowej.

Rodzaje algorytmów szyfrowania

Większość algorytmów szyfrujących, a w szczególności szyfry, które powstały przed erą komputerów, można podzielić na symetryczne i asymetryczne. W pierwszy przypadku odbiorca rozszyfruje dane przy pomocy tego samego kodu co zaszyfrował je nadawca. W drugim przypadku tj. algorytmu asymetrycznego stosowane są dwa różne klucze. Metody przekazywania wspomnianych kluczy różni się w zależności od zastosowanej metody szyfrowania. Znajomość jednego klucza nie ujawnia drugiego klucza. Z reguły szyfrowanie asymetryczne i symetryczne nie wpływa bezpośrednio na moc szyfrowania.

Algorytmy symetryczne można podzielić na blokowe oraz strumieniowe. Podczas szyfrowania blokowego dane są dzielone na bloki równej długości, a następnie każdy jest oddzielnie szyfrowany w ten sam sposób. Zazwyczaj długość bloków określa się w bitach lub bajtach w przypadku szyfrów komputerowych. Dla starszych metod bloki mogą składać się z n znaków. Przykładem takiej metody jest szyfr Cztery kwadraty w którym dane są szyfrowane po podzieleniu ich na pary znaków. Jednak szyfrowanie strumieniowe polega na szyfrowaniu bit po bicie tekstu jawnego w czasie rzeczywistym. Jednym z najpopularniejszych szyfrów tego typu jest DES.

Dziś jednym z najpowszechniej używanych metod szyfrowania do zabezpieczenia komunikacji poprzez Internet jest szyfrowanie RSA, które opiera się na używaniu bardzo dużych liczb pierwszych jako klucza szyfrującego oraz wprowadza klucz publiczny oraz klucz prywatny. Należy jednak pamiętać, że wszystkie metody szyfrowania są powszechnie znane. Pozwala to na ewentualne wykrycie luk w metodzie szyfrowania. Jednak najważniejszy jest fakt, że moc szyfru zależy jedynie od jakości klucza którym dane zostaną zaszyfrowane.

Kryptoanaliza

Kryptoanaliza bada moc szyfrowania danych poprzez próbę złamania szyfrogramu, czyli tekstu zaszyfrowanego, poprzez analizę sposobu szyfrowania. Podczas deszyfrowania można korzystać z tekstu jawnego oraz hasła w celu dokładnego zrozumienia jak dane są szyfrowane. Jednak dopiero przeprowadzenie próby złamania szyfrogramu bez znajomości hasła i tekstu jawnego może świadczyć o niskim poziomie szyfrowania danych.

Próba deszyfrowania danych może odbywać się poprzez brute-force - sprawdzenie wszystkich możliwości i wyznaczenie ile średnio różnych kluczy należy sprawdzić, aby odczytać zaszyfrowany tekst. Jednak z reguły podejście to jest mało wydajne i zdecydowanie lepsze są ataki słownikowe - na podstawie częstotliwości występowania liter w danym języku można odczytać jak dane zostały zaszyfrowane. Jednak zdecydowanie częściej użycie obydwu metod tj. próba wszystkich haseł i sprawdzanie czy odszyfrowane dane mają sens najszybciej pozwalają odczytać tekst jawny.

Istnieją dwie metody szyfrowania danych. Szyfrowanie przestawieniowe pozwala na utajnienie wiadomości poprzez przestawienie znaków tekstu jawnego. Nie jest to metoda idealna, ponieważ dane wciąż składają się z tych samych znaków co tekst jawny. Tego typu metoda szyfrowani danych była już wykorzystywana w starożytności. Wtedy do takiego szyfrowania było wykorzystywane Scytale, które wykonywało transpozycję znaków tekstu jawnego. Druga metoda to szyfrowanie podstawieniowe, które polega na zastąpieniu znaków innymi znakami.

Kodowanie

Jednym z najczęstszych błędów podczas omawiania szyfrowania danych jest mylenie szyfrowania razem z kodowaniem. Kodowanie jest to jedynie sposób zapisu i w żaden sposób nie wpływa na zabepieczenie danych (chyba, że tablica kodowania jest utajniona). Z tego względu zamiana zapisu wiadomości z kodu ASCII na alfabet Morse'a nie szyfruje danych, a jedynie zmienia w jaki sposób dane zostały zapisane tj. co reprezentuje, który znak. Dopiero, gdy zostanie użyty klucz można powiedzieć, że dane zostały zaszyfrowane, a nie jedynie zakodowane. Bardzo często mówi się, że informacje telewizji satelitarnej są zakodowane, ale odnosi się to bardziej do formatu zapisu kolejnych klatek niż faktu, że nie można oglądać kanału do którego nie ma się dostępu.

Podsumowanie

Kryptografia to obecnie jedno z najważniejszych zagadnień dzisiejszych czasów. Szyfrowane są nie tylko prywatne wiadomości, ale również przelewy bankowe i międzynarodowe dokumenty. Należy jednak pamiętać, że nawet najbardziej wyszukana metoda szyfrowania nie będzie odpowiednio szyfrowała danych jeśli dane zostaną zaszyfrowane przy pomocy słabego hasła (klucza).