2. Podstawowe typy algorytmów kryptograficznych
Obecnie najczęściej są stosowane systemy szyfrowania wykorzystujące przekształcenia matematyczne. W ramach tej grupy systemów można wyróżnić dwa podstawowe typy algorytmów szyfrowych:
- algorytmy z kluczem prywatnym, w których tego samego klucza używa się do szyfrowania i odszyfrowania informacji (tzw. algorytmy z kluczem symetrycznym);
- algorytmy z kluczem publicznym (tzw. algorytmy z kluczem asymetrycznym), w których używa się klucza publicznego do zaszyfrowania informacji, a klucza prywatnego do jej odszyfrowania (klucz publiczny - bo można go udostępnić publicznie bez utraty tajności informacji oraz klucza do deszyfrowania).
Występujący w podanych typach algorytmów termin "klucz", oznacza klucz kryptograficzny, czyli ciąg symboli, od którego w sposób istotny zależy wynik przekształcenia kryptograficznego (np. szyfrowania, deszyfrowania, obliczania kryptograficznej funkcji kontrolnej, obliczania podpisu lub weryfikacji podpisu).
W publikacjach związanych z szyfrowaniem informacji można znaleźć szereg innych kontekstów użycia terminu "klucz":
- klucz podpisu - element danych specyficzny dla podmiotu i stosowany jedynie przez ten podmiot w procesie podpisywania;
- klucz prywatny - element pary kluczy asymetrycznych podmiotu, stosowany jedynie przez ten podmiot, który w przypadku systemu szyfrowania asymetrycznego określa przekształcenie deszyfrujące, a w przypadku systemu podpisywania asymetrycznego określa przekształcenie podpisu. Oznacza również:
- w kryptografii klucz, który jest przeznaczony do deszyfrowania, stosowany wyłącznie przez właściciela,
- w systemie kryptograficznym klucz z pary kluczy użytkownika, który jest znany jedynie przez użytkownika.
- klucz prywatny podpisu - element pary kluczy asymetrycznych podmiotu, który służy do określenia prywatnego przekształcenia podpisu;
- klucz publiczny - klucz przeznaczony do stosowania pezez dowolny podmiot w celu szyfrowania komunikowania się z właścicielem odpowiedniego klucza prywatnego. Oznacza również:
- klucz, który jest publicznie znany, ale niekoniecznie jest ogólnie dostępny. Może być dostępny jedynie dla wszystkich członków wstępnie określonej grupy,
- w systemie kryptograficznym klucz z pary kluczy użytkownika, który jest publicznie znany.
- klucz do szyfrowania danych - klucz kryptograficzny wykorzystywany do szyfrowania i deszyfrowania danych;
- klucz szyfrowania kluczy - klucz kryptograficzny stosowany do szyfrowania i deszyfrowania kluczy szyfrujących dane, lub innych kluczy szyfrujących klucze;
- klucz tajny - klucz stosowany przez ograniczoną liczbę korespondentów do szyfrowania i deszyfrowania danych;
- klucz weryfikacji - element danych odpowiadający kluczowi podpisu podmiotu i wykorzystywany w procesie weryfikacji.
Każdy klucz ma przypisany przedział czasu (tzw. okres ważności klucza kryptograficznego), w którym określony klucz uprawniony jest do użytku lub w którym klucze dla danego systemu mogą pozostawać skuteczne. Z kluczami związane jest zwykle centrum certyfikacji kluczy, tj. ośrodek generujący i wydający certyfikaty, nadzorowany przez organ certyfikacji. Certyfikat klucza jest to zatem informacja o kluczu podmiotu podpisana przez organ certyfikacji, co powoduje, że jest niemożliwa do podrobienia.
Porównanie typów systemów kryptograficznych pozwala uwypuklić ich następujące właściwości:
- Algorytmy z kluczem prywatnym
- wspólny tajny klucz - tajność klucza decyduje o bezpieczeństwie!
- konieczne wcześniejsze bezpieczne uzgodnienia klucza,
- łatwa realizacja poufności i uwierzytelniania,
- duża szybkość działania,
- bezpieczeństwo informacji jest zależne od rozmiaru przestrzeni kluczy,
- Najbardziej znany system: DES (Data Encryption Standard).
- Algorytmy z kluczem publicznym
- para kluczy u każdego użytkownika,
- klucz szyfrujący jest jawny, może być opublikowany,
- klucz deszyfrujący jest tajny, ma go tylko właściciel,
- łatwa realizacja niezaprzeczalności i dystrybucji kluczy,
- mała szybkość działania,
- konstrukcja związana z arytmetyką dużych liczb całkowitych,
- bezpieczeństwo informacji jest zależne od znalezienia efektywnych rozwiązań problemów arytmetyki dużych liczb całkowitych,
- najbardziej znany system: RSA (Rivest Shamir Adleman).
Ze względu na cechy charakterystyczne obu ww. algorytmów, w praktyce stosuje się tzw. algorytmy hybrydowe, w których algorytm z kluczem publicznym służy do wymiany losowych kluczy sesji, które są później używane do algorytmu z kluczem prywatnym.
Każdy z systemów (algorytmów ) kryptograficznych będzie posiadał pewne wspólne elementy, takie jak:
- algorytm szyfrowania
- klucze szyfrowania
- długość klucza
- informację jawną (do zaszyfrowania)
- kryptogram (informację zaszyfrowaną).
Zdolność systemu kryptograficznego do ochrony informacji przed atakiem nazywana jest mocą kryptograficzną. Zależy ona od takich czynników jak:
- tajność klucza;
- stopień skomplikowania klucza (trudność odgadnięcia lub przebadania wszystkich możliwych kluczy);
- podatność na złamanie algorytmu szyfrowania (tj. możliwość odwrócenia algorytmu szyfrowania bez znajomości klucza szyfrującego);
- podatność na atak z tekstem jawnym (tj. możliwość odszyfrowania kryptogramu, jeżeli jest znana część informacji pierwotnej);
- znajomość przez napastnika cech charakterystycznych zaszyfrowanej informacji (regularności w przesyłanej informacji);
- inne, oprócz znajomości klucza, sposoby odczytywania informacji (tzw. tylne drzwi).
Inny sposób klasyfikacji algorytmów szyfrowania to ich podział na algorytmy tajne i jawne. Algorytm tajny (firmowy) posiada następujące cechy charakterystyczne:
- bezpieczeństwo oparte nie tylko na tajności klucza, ale i na tajności algorytmu;
- mniejsza liczba użytkowników - zatem mniejsza motywacja do złamania szyfru.
Algorytm jawny (powszechnie znany) posiada następujące cechy charakterystyczne:
- możliwość niezależnej oceny odporności na złamanie;
- możliwość zastosowania w międzynarodowej elektronicznej wymianie danych;
- możliwość normalizacji w ramach danego kraju;
- łatwość i wiarygodność testów;
- dostosowanie norm i zaleceń (ISO, CCITT) do właściwości systemów DES i RSA.
Na informację zaszyfrowaną można przeprowadzić ataki (tj. próby rozszyfrowania informacji) na szereg sposobów:
- atak analityczny - próba przełamania kodu lub znalezienia klucza metodami systematycznymi (np. statystyczna analiza wzorców symbolicznych; wykrywanie szczelin w algorytmie szyfrowania). Jest przeciwieństwem ataku na zasadzie pełnego przeglądu;
- atak tekstem zaszyfrowanym - atak analityczny, podczas którego kryptoanalityk dysponuje jedynie tekstem zaszyfrowanym;
- atak za pomocą wybranego tekstu jawnego - atak polegający na tym, że kryptoanalityk może wykonać eksperyment szyfrowania wiadomości i obserwowania skutków takiego szyfrowania;
- atak znanym tekstem jawnym - atak analityczny, podczas którego kryptoanalityk dysponuje w istotnych ilościachtekstem jawnym i odpowiadającym mu tekstem zaszyfrowanym;
- atak na zasadzie pełnego przeglądu - atak na zabezpieczenia systemu informatycznego poprzez wypróbowanie wszystkich możliwych wartości kluczy lub haseł. Jest przeciwieństwem ataku analitycznego.