Na początku było słowo
Znając alfabet, potrafimy napisać wiadomość i poprawnie ją odczytać. Jednak to samo jest w stanie zrobić każdy, jeśli tylko zna znaczenie używanych przez nas symboli. Aby więc przesłać wiadomość w sposób dostępny jedynie dla wybrańców, najprościej zapisać ją, posługując się nowym alfabetem.
Bardzo łatwo to uczynić, zmieniając znaczenia poszczególnych liter według określonego klucza. W ten sposób narodził się znany z historii kabalistyki żydowski szyfr Atbasz. Zmienia on litery w szyfrowanej wiadomości w ten sposób, że pierwszej literze alfabetu odpowiada ostatnia, drugiej – przedostatnia i tak dalej.
Inne podejście do tego problemu to rzymski szyfr Cezara. Przypisuje on każdej literze wiadomości literą stojącą w alfabecie o trzy miejsca dalej. Na podobnej zasadzie funkcjonuje szyfrowanie ROT-13. Jest ono stosowane do dziś w czytnikach grup dyskusyjnych i pozwala dla zabawy ukryć treść wiadomości, “przesuwając” cały alfabet o 13 znaków w prawo.
Algorytmiczny klucznik
Najważniejszymi pojęciami w kryptografii są algorytm szyfrowania oraz klucz. Klucz to pewna liczba, która umożliwia zakodowanie, a później odkodowanie szyfrogramu. Odczytanie informacji bez klucza zabiera mnóstwo czasu, a w praktyce najczęściej jest w ogóle niewykonalne.
Aby zmienić wiadomość w kryptogram, musimy kolejne jej porcje poddać działaniu zbioru operacji, który nazywamy algorytmem. Jest on również niezbędny do “podróży” w drugą stronę, kiedy to na podstawie kryptogramu odtwarzamy tekst jawny. Powołując się na analogię z szyfrem Cezara, algorytmem jest tutaj przesuwanie liter, a klucz to wielkość tego przesunięcia, które w tym przypadku ma wartość 3.
Niestety, algorytmy oparte na zamianie jednego alfabetu na inny bardzo łatwo złamać bez znajomości klucza. Wystarczy, że wiadomość jest dostatecznie długa. Wtedy należy porównać częstości występowania określonych symboli w tekście zaszyfrowanym z ich statystyczną częstością występowania w normalnym języku. Po zrobieniu takiego zestawienia odpowiednio zamieniamy symbole i gotowe.
Dla przykładu: w języku polskim najczęściej występującą literą jest “a”. Jeśli mamy pewność, że zaszyfrowana wiadomość jest po polsku, to znajdując symbol, który powtarza się w niej największą liczbę razy, z dużą pewnością natrafimy na “a”. Kolejna pod względem częstości występowania polska litera to “i”. Dalej jest “e”, a im więcej mamy odgadniętych znaków, tym łatwiej dopasować kolejne. Dokładnie tak jak w krzyżówce. Dlatego współczesna, komputerowa kryptografia nie ma za wiele wspólnego z alfabetami.
Poza alfabetem
Dzisiejsza kryptografia bazuje na spostrzeżeniu, że na dowolną informację – obojętnie, czy jest to tekst obwieszczenia rządowego po chińsku, przebój Tatu w formacie MP3 czy też kod źródłowy nowego kompilatora – można popatrzeć jak na ogromną liczbę. Cyfry tej liczby najlepiej wyobrazić sobie jako kolejne bajty reprezentującego ją pliku. W takim ujęciu zadanie kryptografii jest bardzo proste: należy zmienić tę liczbę w inną, tak aby nie dało się jej odczytać bez odpowiedniego algorytmu oraz prawidłowego klucza.
Zamianę możemy przeprowadzić na dwa sposoby. Pierwszy (szyfrowanie strumieniowe) polega na kodowaniu napływających symboli – najczęściej bajtów – jeden za drugim. Jednak efekt tych zabiegów nie jest tak prosty jak przy szyfrach alfabetycznych: ten sam symbol, w zależności od historii strumienia, ma zupełnie inne znaczenie. Dodatkowo szyfrowanie strumieniowe pozwala na kodowanie w czasie rzeczywistym. Z tego względu algorytmy te znajdują zastosowanie w telekomunikacji, między innymi w telefonii komórkowej (protokół A5/1) oraz szyfrowanych połączeniach LAN (protokół RC4).
Drugi, bez wątpienia powszechniejszy sposób szyfrowania, zwany blokowym, polega na dzieleniu tekstu jawnego na krótkie bloki o określonej długości, na przykład 128 bitów. Uzyskane w ten sposób liczby są najpierw mieszane, aby uniknąć powtarzalności kodowania, jak ma to miejsce w szyfrze Cezara, a następnie za pomocą kilku operacji matematycznych przekształcane w inne, które stanowią właściwy szyfrogram. Jednak o kryptograficznej sile tego rodzaju przekształceń decydują nie tyle skomplikowane przekształcenia, ile długość klucza.
Magia wielkości
Jak najprościej rozszyfrować wiadomość, jeśli znamy algorytm, lecz nie znamy klucza? Oczywiście poprzez wypróbowanie wszystkich kombinacji. Jest to tak zwany atak siłowy. Komputery są dziś naprawdę szybkie: wykonują nawet do kilku miliardów operacji na sekundę. Wydaje się więc, że to rozsądne wyjście. Niestety, już proste obliczenia wykazują, że klucz o długości zaledwie 128 bitów może mieć 2
128
wartości. Aby siłowo złamać szyfr, należy przetestować je wszystkie. Jednak 2128 to w przybliżeniu 1038, czyli jedynka z trzydziestoma ośmioma zerami! Jest to liczba tak ogromna, że nawet gdyby nad rozwiązaniem pracowały wszystkie ziemskie komputery jednocześnie, to i tak sprawdzenie wszystkich kombinacji trwałoby tysiące razy dłużej niż wiek wszechświata.
Stosowane dziś algorytmy nie są aż tak odporne na złamanie, zatem znając ich działanie – kody większości dzisiejszych procedur szyfrujących są dziś powszechne dostępne (patrz: “$(LC157089:Najważniejsze algorytmy kryptograficzne)$”) – możemy spróbować złamać szyfr bez znajomości klucza. Wystarczy w tym celu sprawdzić tylko niektóre kombinacje. Niestety, tych “niektórych” pozostaje wciąż tak dużo, że średni czas deszyfracji i tak zajmie wiele dziesiątek lat, i to przy stosunkowo krótkim, 128-bitowym, kluczu. W wypadku dłuższych większość współczesnych algorytmów w dalszym ciągu jest nie do złamania w czasie porównywalnym z wiekiem wszechświata.
Dane techniczne i funkcje programów do szyfrowania | |||||||||||
MaxCrypt 1.10 | FineCrypt 9.0 | Mooseoft Encrypt 2003 Pro | Advanced Encryption Package 2005 | Advanced Hide Folders 4.7 | Hide in Picture 2.1 | PGP 9.0 | CryptoForge 3.2.5 | CryptoMagic 2.0 | DriveCrypt 3.0 | SecureDoc 4.0 | |
WWW [http://] | www.kinocode.com | www.finecrypt.net | www.mooseoft.cjb.net | www.secureaction.com | www.softbe.com | www16.brinkster.com/davitf/hip/ | www.pgp.com | www.cryptoforge.com | www.software-security.com | www.drivecrypt.com | www.securedoc.pl |
Systemy operacyjne | Windows 9x/Me/NT/2000/XP | Windows 2000/XP | Windows 98/Me/NT/2000/XP | Windows 9x/Me/NT/2000/XP | Windows 9x/Me/NT/2000/XP | Windows 9x/Me/NT/2000/XP | Windows 2000/XP Mac OS X | Windows 98/Me/NT(SP4)/2000/XP | Windows 9x/Me/NT/2000/XP | Windows NT/2000/XP | Windows 2000/XP/2003 |
Cena | freeware | 49 USD | 25 USD | 30 USD | 39 USD | freeware | 105 euro | 39,95 USD | freeware | 59,95 euro | 159 USD |
Możliwe algorytmy | |||||||||||
3DES (TripleDes) | n | t | n | n | n | n | t | t | n | n | n |
DESX | n | n | n | n | n | n | n | n | n | n | n |
AES (Rijndael) | t | t | t | t | n | n | t | t | n | t | t |
IDEA | n | t | t | t | n | t | t | n | n | n | n |
GOST | n | t | t | n | n | n | n | t | t | n | n |
Twofish | t | t | t | n | n | n | n | n | t | n | n |
Blowfish | n | n | t | t | n | t | t | t | t | n | n |
CAST | n | t | t | t | n | n | t | n | n | n | n |
Inne | n | MARS, RC-6, Serpent | Square | n | n | n | n | n | DES | n | n |
Funcjonalność | |||||||||||
Szyfrowanie plików i katalogów | t | t | t | t | n | t | t | t | t | n | t |
Ukrywanie lub podmienianie katalogów | n | n | t | n | t | n | n | n | n | n | n |
Ukrywanie w obrazkach/muzyce | n/n | n/n | n/n | n/n | n/n | t/n | n/n | n/n | n/n | t/t | n/n |
Zabezpieczenia poczty | n | n | t | t | n | n | t | n | n | n | n |
Wiping, czyli bezpieczne usuwanie danych | n | n | t | t | n | n | n | t | n | n | t |
Wiping wolnego miejsca na dysku | n | n | n | n | n | n | t | n | n | n | n |
Tworzenie wirtualnych woluminów | n | n | n | n | n | n | t | n | t | t | n |
Zabezpieczenie całego komputera | n | n | n | n | n | n | n | n | n | t | t |
Integracja z Windows – menu kontekstowe | n | t | t | t | n | n | t | t | n | n | t |
Dodawanie zasobów metodą przeciąnij i upuść | n | n | t | n | t | t | t | n | n | n | n |
Tworzenie plików samodekryptujących typu EXE | n | n | t | t | n | n | n | n | n | n | t |
Uwagi | Prosty, ale bardzo szybki program. Funkcjonalność ograniczono tu do minimum, a efekty działania tej aplikacji stanowią pojedyncze katologi z zaszyfrowanymi plikami. | Aplikacja ma własny komunikator, który pozwala bezpiecznie przesyłać pliki pomiędzy użytkownikami. | Bardzo dobra integracja z Windows. Interfejs ma postać wielopanelowego okna, przy czym każdy panel odpowiada innej operacji: szyfrowaniu, wymazywaniu oraz ochronie poczty. | Wiele różnych skór do wyboru. Potrafi przeprowadzić kompresję typu ZIP. Dość dziwaczny układ okna szyfrującego, które nieustannie nie potrafi dokować. | Po uruchomieniu może pracować w trybie stealth. Wtedy w ogóle nie widać, że aplikacja jest zainstalowana w systemie. Wadą programu jest istnienie procesu o nazwie ahfp.exe, który jest widoczny w Menedżerze zadań. | Bardzo prosty i przyjazny dla użytkownika interfejs. Wykorzystuje metodę przeciągnij i upuść. | Doskonale integruje się ze znanymi programami pocztowymi. Obsługuje światowy system wymiany kluczy publicznych. | Możliwość wielokrotnego szyfrowania tego samego pliku. Na przykład po użyciu Blowfisha kryptogram możemy jeszcze zaszyfrować GOST–em. Oblicza czas szyfrowania w MB/s. Oferuje kompresję przed szyfrowaniem. | Przyjazny kreator do tworzenia nowych woluminów. Można go tak skonfigurować, żeby automatycznie odłączał zaszyfrowany wirtualny napęd po określonym czasie. | Klucz można ukryć albo w tokenie USB, albo w obrazku czypliku muzycznym. Program szyfruje nie tyle wirtualne woluminy, ile całe fizyczne napędy, włącznie z tym, z którego startuje system. | Po zalogowaniu użytkownik nie zauważa już pracy programu, który w tle szyfruje dane. Przy awarii dysku można odzyskać wszystkie dane, jeśli tylko dysponuje się kluczem. |
t – tak, n – nie |