Szyfrowanie i deszyfrowanie
Szyfrowanie i deszyfrowanie to proces, który konwertuje dane w postaci zwykłego tekstu na format zakodowany, uniemożliwiając ich odczyt bez prawidłowego klucza deszyfrującego. Ten niezbędny środek bezpieczeństwa chroni poufne informacje przed nieautoryzowanym dostępem, zapewniając prywatność i bezpieczeństwo plików. Z drugiej strony mamy proces deszyfrowania, który jest odwrotnym przekształceniem zakodowanego tekstu w jawny format.
Szyfrowanie
W kryptografii szyfrowanie i odszyfrowywanie to proces przekształcania informacji w sposób, który w idealnym przypadku może być zdekodowany tylko przez osoby upoważnione. Proces ten przekształca oryginalną reprezentację informacji, znaną jako tekst jawny, w alternatywną formę, zwaną szyfrogramem. Pomimo swojego celu, szyfrowanie samo w sobie nie zapobiega ingerencji, lecz uniemożliwia potencjalnym przechwytywaczom dostęp do zrozumiałej treści.
Ze względów technicznych schemat szyfrowania zazwyczaj wykorzystuje pseudolosowy klucz szyfrujący generowany przez algorytm. Wiadomość można odszyfrować bez posiadania klucza, ale dobrze zaprojektowany schemat szyfrowania wymaga znacznych zasobów obliczeniowych i umiejętności. Autoryzowany odbiorca może z łatwością odszyfrować wiadomość za pomocą klucza przekazanego przez nadawcę odbiorcom, ale nie nieautoryzowanym użytkownikom.
Dzisiaj możemy podzielić na szyfry symetryczne i asymetryczne, wykorzystuje się także szyfry blokowe i szyfry strumieniowe.
Szyfry symetryczne
Szyfry symetryczne to algorytmy kryptograficzne, w których do szyfrowania i deszyfrowania wykorzystuje się ten sam klucz tajny. W szyfrach symetrycznych nadawca i odbiorca dzielą jeden sekret – wspólny klucz K – używany zarówno do zamiany tekstu jawnego na szyfrogram, jak i odwrotnie. Algorytmy symetryczne dzielą się na szyfry blokowe, które przetwarzają dane w blokach bitów, oraz szyfry strumieniowe, działające na pojedynczych bitach lub bajtach danych.
Zalety i wady
- Wysoka wydajność i szybkość przetwarzania dużych ilości danych.
- Prosta implementacja i niski narzut obliczeniowy.
- Konieczność bezpiecznego przekazania i przechowywania klucza.
- Ryzyko ujawnienia sekretu – kompromitacja klucza oznacza złamanie wszystkich komunikacji zabezpieczonych tym kluczem.
Przykłady
- DES – klasyczny szyfr blokowy oparty na przestawieniach i podstawieniach w blokach 64-bitowych.
- AES – zaawansowany standard z blokiem 128-bit i kluczami 128/192/256 bitów.
- RC4 – historyczny szyfr strumieniowy, dziś odradzany z powodu słabości.
- A5 – używany w sieciach GSM jako szyfr strumieniowy.
- Blowfish – szybki szyfr blokowy z 64-bitowym blokiem i zmienną długością klucza.
Szyfry strumieniowe
Szyfry strumieniowe to klasa algorytmów symetrycznych, które szyfrują dane bit po bicie, w przeciwieństwie do szyfrów blokowych operujących na całych blokach danych. Głównym elementem szyfru strumieniowego jest generator klucza, który produkuje pseudolosowy strumień bitów, będących kluczem szyfrującym, a szyfrowanie polega najczęściej na zastosowaniu operacji XOR na każdym bicie tekstu jawnego i odpowiadającym mu bicie klucza. Jak widzimy szyfrowanie i deszyfrowanie składa się wielu etapów, a to jest jeden z nich.
Główne cechy szyfrów strumieniowych:
- Mogą szyfrować dane dowolnej długości, nawet w czasie rzeczywistym. Dlatego często używane są w transmisjach o nieznanej długości, jak połączenia bezprzewodowe czy transmisje strumieniowe.
- Nie propagują błędów. Pojedynczy błąd transmisji nie wpływa na dalsze fragmenty danych. W rezultacie są preferowane tam, gdzie istnieje duże ryzyko błędów transmisji.
- Są wyjątkowo wydajne w systemach o ograniczonej mocy obliczeniowej lub pamięci. NA przykład w urządzeniach IoT, kartach RFID, urządzeniach mobilnych.
- Dzięki braku dopełnień, nie powodują narzutu komunikacyjnego, który występuje przy szyfrach blokowych.
Przykłady i zastosowania
- Popularne przykłady: RC4, E0 (Bluetooth), A5 (GSM). Współczesne wdrożenia obejmują również nowoczesne algorytmy dedykowane do systemów o ograniczonych zasobach.
- Szyfry blokowe w trybach takich jak CFB, OFB i CTR mogą pełnić rolę szyfrów strumieniowych, ponieważ generują strumień klucza i szyfrują dane symbolem po symbolu.
Szyfry blokowe
Szyfry blokowe to symetryczne algorytmy, które operują na stałych blokach danych i dla danego klucza K odwzorowują N bitów tekstu jawnego na N bitów szyfrogramu w sposób odwracalny tylko przy znajomości klucza. Ponieważ wiadomości zwykle przekraczają rozmiar bloku, wykorzystuje się tryby pracy łączące bloki, m.in. ECB, CBC, CFB, OFB, CTR, XTS, LRW, OCB i CCM. Typowe rozmiary bloków to 64 lub 128 bitów, a kluczy 128, 192 lub 256 bitów, przy czym długości kluczy poniżej 128 bitów nie są dziś uznawane za bezpieczne. Szyfr blokowy zachowuje długość danych na poziomie pojedynczego bloku, a bezpieczeństwo opiera się na właściwościach pseudolosowych permutacji wewnątrz bloku.
Przykładowe algorytmy
Do powszechnie stosowanych szyfrów blokowych należą AES, 3DES, Blowfish, Serpent i IDEA. W praktyce dobór algorytmu i trybu zależy od wymagań wydajnościowych, sprzętowych oraz konieczności zapewnienia integralności. Szyfrowanie i deszyfrowanie wyznaczane jest przez wiele algorytmów, które tylko częściowo wymienimy w tym artykule.
Szyfry asymetryczne
Szyfry asymetryczne to kryptografia klucza publicznego wykorzystująca parę kluczy: publiczny do szyfrowania lub weryfikacji oraz prywatny do deszyfrowania lub podpisywania. Zapewniają poufność bez wcześniejszej wymiany sekretu oraz umożliwiają uwierzytelnianie i podpisy cyfrowe z weryfikacją kluczem publicznym. Użytkownik generuje parę kluczy publiczny i prywatny. Dane zaszyfrowane może odszyfrować wyłącznie posiadacz klucza prywatnego. Podpis utworzony przy pomocy klucza prywatnego każdy zweryfikuje kluczem publicznym. Bezpieczeństwo opiera się na problemach jednokierunkowych z furtką. Między innymi takich jak faktoryzacja (RSA) czy logarytm dyskretny na krzywych eliptycznych (ECC). Modele te są podstawą protokołów, które nie wymagają współdzielonego klucza z góry.
Zastosowania
- TLS/SSL i certyfikaty X.509 do bezpiecznego ustanawiania kluczy sesyjnych i uwierzytelniania serwerów.
- PGP/Email do szyfrowania i podpisywania wiadomości end‑to‑end.
- Aktualizacje oprogramowania i podpisy pakietów oraz uwierzytelnianie w SSH i systemach tożsamości
Szyfry hybrydowe
Szyfry hybrydowe łączą kryptografię symetryczną i asymetryczną. Dane szyfrowane są szybkim algorytmem symetrycznym, a krótki klucz sesyjny do tych danych jest szyfrowany kluczem publicznym odbiorcy i dołączany do wiadomości. Ten schemat jest standardem w protokołach i narzędziach takich jak TLS/SSL i PGP, bo zapewnia jednocześnie wydajność, poufność i możliwość weryfikacji tożsamości. W praktyce szyfr asymetryczny służy do wymiany lub owinięcia klucza symetrycznego, a same dane szyfruje się szybkim algorytmem symetrycznym, co łączy wydajność z silnym uwierzytelnianiem. Taki schemat jest standardem w protokołach sieciowych oraz w systemach E2E, gdzie tożsamość wiąże się z kluczem publicznym. Pozwala to uniknąć przesyłania dużych porcji danych z użyciem kosztownych operacji asymetrycznych.
Zastosowania
- TLS/SSL używa asymetrii do uwierzytelnienia i uzgodnienia tajemnicy. Następnie przełącza się na szyfrowanie symetryczne z efemerycznym kluczem sesyjnym dla danych aplikacyjnych.
- PGP/GPG szyfruje wiadomość kluczem symetrycznym i dołącza ten klucz zaszyfrowany kluczem publicznym adresata. W rezultacie umożliwia to bezpieczną wymianę maili bez wcześniejszego współdzielenia sekretu.
- Hybrydowe podejście jest także typowe w szyfrowaniu plików i archiwów. Gdzie choćby każdy plik lub paczka ma swój klucz sesyjny „owinięty” kluczem publicznym odbiorcy lub certyfikatem.
Deszyfrowanie na czym polega?
Deszyfrowanie to proces odtworzenia tekstu jawnego z szyfrogramu przy użyciu właściwego klucza i algorytmu odwrotnego do zastosowanego podczas szyfrowania. Deszyfrowanie wymaga poprawnego algorytmu, właściwego trybu pracy, zgodnych parametrów oraz tego samego lub powiązanego klucza co przy szyfrowaniu. Jest to potrzebne, aby odtworzyć oryginalne dane. W praktyce szyfrowanie i deszyfrowanie, a przede wszystkim różne tryby pracy szyfrów blokowych determinują sposób, w jaki odwraca się transformację i jakich dodatkowych danych potrzeba.
Kryptoanaliza
Kryptoanaliza to dziedzina kryptologii zajmująca się analizą i przełamywaniem systemów kryptograficznych w celu odzyskania informacji lub kluczy bez uprawnionego dostępu. Obejmuje zarówno ataki na same algorytmy i tryby, jak i na implementacje oraz protokoły. Wszystkie działania są realizowane w celu, by podważyć poufność, integralność i uwierzytelnianie. Celem jest ocena odporności na różne modele ataku, identyfikacja słabości oraz praktyczne odzyskanie tekstu jawnego, klucza lub sfałszowanie podpisu cyfrowego. Zakres obejmuje ataki na szyfry, protokoły, podpisy i funkcje pomocnicze, w tym mechanizmy losowości i zarządzania parametrami.
Główne metody używane w kryptoanalizie:
- Brute force: wyczerpujące przeszukiwanie przestrzeni kluczy, możliwe tylko dla niewielkich przestrzeni kluczowych.
- Analiza częstości i inne metody statystyczne na szyfrach klasycznych (np. digramy/trigramy).
- Kryptoanaliza liniowa wykorzystująca przybliżenia liniowe relacji między bitami danych i klucza.
- Kryptoanaliza różnicowa badająca propagację różnic między parami wejść a wyjść.
- Ataki na implementacje i protokoły, obejmujące błędy integracji, walidacji, użycia IV/nonce czy orakli.
- Perspektywa kwantowa, która zmienia granice złożoności niektórych problemów i wymusza planowanie migracji.









