Kryptografia jako dziedzina wiedzy sięga starożytności, jednak jej współczesna postać opiera się na ścisłych podstawach matematycznych i informatycznych. W kontekście triady CIA (poufność, integralność, dostępność) kryptografia stanowi główne narzędzie realizacji pierwszego z tych filarów, choć pośrednio wspiera także dwa pozostałe. Bez niej niemożliwe byłoby bezpieczne przeprowadzanie transakcji online, szyfrowanie poczty elektronicznej czy ochrona danych przechowywanych w chmurze obliczeniowej.
Współczesna kryptografia wykorzystuje zarówno techniki symetryczne, jak i asymetryczne, a także funkcje skrótu, które razem tworzą kompleksowy system zabezpieczeń. Należy pamiętać, że sama kryptografia nie rozwiązuje wszystkich problemów bezpieczeństwa - równie istotne są poprawne procedury zarządzania kluczami, aktualizacje oprogramowania oraz świadomość użytkowników końcowych. Inżynier bezpieczeństwa musi rozumieć ograniczenia poszczególnych algorytmów i umieć dobrać odpowiednią metodę szyfrowania do konkretnego zastosowania.
Zrozumienie podstawowych pojęć kryptograficznych jest niezbędne dla każdego specjalisty ds. bezpieczeństwa IT. Tekst jawny oznacza dane w ich oryginalnej, czytelnej postaci, które następnie poddawane są procesowi szyfrowania z wykorzystaniem określonego algorytmu i klucza. W wyniku tego przekształcenia powstaje szyfrogram, który dla osoby nieposiadającej odpowiedniego klucza jest całkowicie nieczytelny.
W praktyce inżynierskiej kluczowym elementem jest nie tyle sam algorytm, co długość i losowość użytego klucza. Klucz o długości 128 bitów oferuje 2^128 możliwych kombinacji, co przy obecnej mocy obliczeniowej czyni atak brute-force praktycznie niemożliwym. Należy jednak pamiętać, że samo szyfrowanie nie chroni przed innymi zagrożeniami, takimi jak kradzież klucza, ataki socjotechniczne czy błędy implementacyjne w oprogramowaniu wykorzystującym kryptografię.
Zasada Kerckhoffsa, sformułowana w XIX wieku przez holenderskiego kryptografa Augusta Kerckhoffsa, pozostaje jednym z najważniejszych aksjomatów współczesnej kryptografii. Głosi ona, że system kryptograficzny powinien pozostać bezpieczny nawet wtedy, gdy przeciwnik zna wszystkie szczegóły jego działania, z wyjątkiem tajnego klucza. Jest to fundamentalne założenie, które odróżnia profesjonalną kryptografię od amatorskich rozwiązań opartych na ukrywaniu mechanizmu działania.
Podejście security through obscurity, polegające na utrzymywaniu algorytmu w tajemnicy, jest w środowisku ekspertów powszechnie krytykowane, ponieważ prędzej czy później szczegóły implementacji wyciekają lub zostają odkryte poprzez inżynierię wsteczną. Publicznie dostępne algorytmy, takie jak AES czy ChaCha20, przeszły wieloletnie audyty i analizy kryptograficzne, co daje znacznie wyższy poziom zaufania niż jakikolwiek zamknięty system. W praktyce inżynierskiej oznacza to, że należy korzystać wyłącznie ze sprawdzonych, otwartych standardów kryptograficznych.
Szyfrowanie symetryczne, zwane również symetrycznym szyfrowaniem klucza, jest najstarszą i najbardziej wydajną metodą ochrony danych. Jego działanie opiera się na założeniu, że zarówno nadawca, jak i odbiorca dysponują identycznym kluczem, który służy zarówno do szyfrowania, jak i deszyfrowania informacji. Algorytmy symetryczne, takie jak AES, Blowfish czy ChaCha20, są zoptymalizowane sprzętowo i potrafią szyfrować dane z szybkością sięgającą kilkunastu gigabitów na sekundę.
Ze względu na swoją wydajność kryptografia symetryczna jest wykorzystywana wszędzie tam, gdzie przetwarzane są duże ilości danych. Przykłady obejmują szyfrowanie dysków twardych (BitLocker, FileVault), ochronę transmisji wideo w aplikacjach takich jak Skype czy Zoom oraz zabezpieczanie baz danych w chmurze. Wadą pozostaje konieczność bezpiecznego uzgodnienia klucza między stronami przed rozpoczęciem komunikacji, co w sieciach otwartych stanowi poważne wyzwanie logistyczne.
Problem dystrybucji klucza stanowił przez dekady główną przeszkodę w rozwoju bezpiecznej komunikacji na odległość. W przypadku kryptografii symetrycznej obie strony muszą dysponować tym samym kluczem, ale przekazanie go przez niezabezpieczony kanał komunikacyjny grozi przechwyceniem przez osobę trzecią. W erze przedinternetowej klucze dostarczano fizycznie za pośrednictwem kurierów, co było kosztowne, czasochłonne i podatne na przechwycenie.
Skalowalność tego problemu jest szczególnie widoczna w sieciach o wielu uczestnikach. Dla n stron komunikujących się parami potrzebnych jest n(n-1)/2 unikalnych kluczy symetrycznych, co przy tysiącach użytkowników staje się administracyjnie niewykonalne. Rozwiązaniem okazała się kryptografia asymetryczna oraz protokoły uzgadniania kluczy, takie jak Diffie-Hellman, które umożliwiły bezpieczne ustalanie wspólnych sekretów bez ich jawnego przesyłania.
AES jest obecnie najszerzej stosowanym algorytmem szyfrowania symetrycznego na świecie, wykorzystywanym zarówno w aplikacjach konsumenckich, jak i w systemach rządowych. Algorytm ten operuje na blokach danych o wielkości 128 bitów, a długość klucza może wynosić 128, 192 lub 256 bitów. Proces szyfrowania składa się z kilkunastu rund przekształceń, obejmujących substytucję bajtów, przesunięcia wierszy, mieszanie kolumn oraz dodawanie klucza rundy.
Sprzętowe wsparcie dla AES jest dziś standardem w niemal każdym procesorze i karcie sieciowej dzięki rozkazom AES-NI (Advanced Encryption Standard New Instructions). Przyspiesza to operacje szyfrowania nawet kilkudziesięciokrotnie w porównaniu z implementacją czysto programową. W praktyce oznacza to, że szyfrowanie dysku systemowego czy ruchu sieciowego VPN nie powoduje zauważalnego spadku wydajności, co czyni AES doskonałym wyborem dla większości zastosowań wymagających ochrony danych.
Protokół Diffiego-Hellmana, opublikowany w 1976 roku, był pierwszym praktycznym rozwiązaniem umożliwiającym bezpieczne uzgodnienie klucza kryptograficznego przez publiczny kanał komunikacyjny. Jego działanie opiera się na właściwościach arytmetyki modularnej, a konkretnie na trudności obliczeniowej problemu logarytmu dyskretnego. Dwie strony mogą niezależnie wygenerować ten sam wspólny sekret, wymieniając się jedynie wartościami pośrednimi, które nie ujawniają samego klucza.
Współczesne implementacje protokołu DH wykorzystują krzywe eliptyczne (ECDH - Elliptic Curve Diffie-Hellman), które oferują porównywalny poziom bezpieczeństwa przy znacznie krótszych kluczach niż klasyczna wersja modularna. Na przykład klucz ECDH o długości 256 bitów zapewnia bezpieczeństwo równoważne klasycznemu DH z kluczem 3072-bitowym. DH jest podstawą bezpieczeństwa TLS, IPsec, SSH oraz wielu innych protokołów używanych w dzisiejszym internecie.
Kryptografia asymetryczna, zwana również kryptografią klucza publicznego, zrewolucjonizowała bezpieczeństwo cyfrowe, wprowadzając koncepcję pary kluczy zamiast pojedynczego sekretu. Klucz publiczny może być swobodnie rozpowszechniany i służy do szyfrowania danych, podczas gdy klucz prywatny pozostaje w wyłącznym posiadaniu właściciela i umożliwia deszyfrowanie. Ta asymetria funkcjonalna eliminuje problem dystrybucji klucza charakterystyczny dla kryptografii symetrycznej.
W praktyce inżynierskiej klucz prywatny przechowywany jest w bezpiecznym miejscu, często w sprzętowych modułach bezpieczeństwa (HSM) lub w zabezpieczonych enklawach sprzętowych, takich jak Trusted Platform Module (TPM). Ujawnienie klucza prywatnego oznacza całkowitą kompromitację bezpieczeństwa, dlatego stosuje się wielowarstwowe mechanizmy ochrony, w tym szyfrowanie samego pliku klucza hasłem oraz dostęp dwuskładnikowy.
Praktyczne zastosowanie kryptografii asymetrycznej najlepiej ilustruje przykład bezpiecznej komunikacji z serwerem bankowym. Użytkownik pobiera jawnie dostępny klucz publiczny banku, szyfruje nim swoje dane logowania i przesyła je przez internet. Nawet jeśli atakujący przechwyci transmisję, zobaczy jedynie bezsensowny szyfrogram, ponieważ tylko bank posiada pasujący klucz prywatny zdolny do deszyfrowania tej wiadomości.
Należy jednak pamiętać, że sama obecność klucza publicznego nie gwarantuje autentyczności odbiorcy - atakujący mógł podstawić własny klucz publiczny zamiast prawdziwego klucza banku. Dlatego w praktyce klucze publiczne są dystrybuowane w formie certyfikatów cyfrowych podpisanych przez zaufane urzędy certyfikacji. Mechanizm ten stanowi podstawę bezpieczeństwa protokołu HTTPS, który chroni większość dzisiejszego ruchu internetowego.
Algorytm RSA, nazwany od nazwisk jego twórców Ronalda Rivesta, Adiego Shamira i Leonarda Adlemana, został opublikowany w 1977 roku i pozostaje najpopularniejszym algorytmem kryptografii asymetrycznej. Jego bezpieczeństwo opiera się na trudności faktoryzacji iloczynu dwóch dużych liczb pierwszych, co przy kluczach o długości 2048 lub 4096 bitów stanowi obliczeniowo niewykonalne zadanie dla współczesnych komputerów. Proces generowania kluczy RSA wymaga znalezienia dwóch dużych liczb pierwszych i wykonania na nich serii operacji arytmetycznych.
Głównym ograniczeniem RSA jest jego niska wydajność w porównaniu z algorytmami symetrycznymi. Operacje RSA są od kilkuset do kilku tysięcy razy wolniejsze od AES, szczególnie przy deszyfrowaniu i podpisywaniu cyfrowym. Z tego powodu w praktyce RSA nigdy nie jest używany do bezpośredniego szyfrowania dużych strumieni danych, a jedynie do szyfrowania kluczy symetrycznych (w kryptografii hybrydowej) oraz do podpisów cyfrowych. W nowszych implementacjach RSA jest często zastępowany przez kryptografię krzywych eliptycznych (ECDSA, Ed25519), która oferuje lepszą wydajność przy krótszych kluczach.
Kryptografia hybrydowa łączy w sobie zalety obu światów: bezpieczeństwo uzgadniania kluczy z kryptografii asymetrycznej oraz wydajność szyfrowania danych z kryptografii symetrycznej. W typowej sesji TLS klient i serwer najpierw używają protokołu Diffie-Hellman (lub RSA) do uzgodnienia tymczasowego klucza symetrycznego, zwanego kluczem sesji. Ten klucz jest używany tylko podczas danej sesji, a następnie jest bezpiecznie usuwany, co zapewnia dodatkową ochronę poprzez doskonałą poufność (forward secrecy).
Klucz sesji jest generowany losowo dla każdego nowego połączenia, co oznacza, że nawet jeśli atakujący przechwyci klucz jednej sesji, nie będzie mógł odszyfrować danych z poprzednich ani kolejnych sesji. Mechanizm ten, znany jako perfect forward secrecy (PFS), jest standardem we współczesnych implementacjach TLS 1.3. Kryptografia hybrydowa jest również wykorzystywana w protokołach szyfrowania poczty (PGP, S/MIME), VPN (IPsec, WireGuard) oraz w systemach szyfrowania plików i komunikatorach internetowych.
Funkcje skrótu (hash functions) są fundamentalnym narzędziem kryptograficznym służącym do zapewnienia integralności danych. W odróżnieniu od szyfrowania, które chroni poufność, funkcje skrótu tworzą unikalny, stałej długości identyfikator (skrót) dla dowolnie dużego zbioru danych wejściowych. Każda zmiana w danych wejściowych, nawet modyfikacja pojedynczego bitu, prowadzi do całkowicie innego skrótu wyjściowego, co pozwala na łatwe wykrycie manipulacji.
Współcześnie za bezpieczne uznaje się funkcje skrótu z rodziny SHA-2 (SHA-256, SHA-512) oraz nowszy standard SHA-3. Starsze funkcje, takie jak MD5 i SHA-1, zostały zdyskredytowane przez ataki kolizyjne umożliwiające znalezienie dwóch różnych wiadomości o tym samym skrócie. W praktyce inżynierskiej funkcje skrótu stosuje się do weryfikacji integralności pobieranych plików, przechowywania haseł (w połączeniu z soleniem), w podpisach cyfrowych oraz w blockchainie do łączenia bloków transakcji.
Efekt lawiny (avalanche effect) jest kluczową właściwością bezpiecznych funkcji skrótu, która sprawia, że nawet minimalna zmiana danych wejściowych powoduje radykalną zmianę całego skrótu wyjściowego. W praktyce oznacza to, że zmiana jednego bitu w pliku o rozmiarze kilku gigabajtów wygeneruje skrót całkowicie różniący się od oryginalnego, co umożliwia natychmiastowe wykrycie nawet najmniejszej modyfikacji. Jest to szczególnie ważne przy pobieraniu obrazów systemów operacyjnych, gdzie producent publikuje sumę kontrolną SHA-256 do weryfikacji.
W codziennej pracy inżyniera bezpieczeństwa funkcje skrótu są wykorzystywane na wielu płaszczyznach. Systemy kontroli wersji, takie jak Git, używają skrótów SHA-1 (z opcjonalnym wsparciem SHA-256) do identyfikacji commitów i wykrywania konfliktów. Narzędzia do monitorowania integralności plików, jak Tripwire czy AIDE, przechowują bazę skrótów krytycznych plików systemowych i alarmują o każdej niezgodności, co pozwala na szybkie wykrycie włamania lub nieautoryzowanej modyfikacji.
Dostępność, trzeci filar triady CIA, jest często pomijana w dyskusjach o kryptografii, ale ma równie krytyczne znaczenie dla bezpieczeństwa systemów IT. Nawet najsilniejsze szyfrowanie nie pomoże, gdy serwer jest niedostępny z powodu ataku DDoS, awarii zasilania lub błędu konfiguracji. Zapewnienie dostępności wymaga kompleksowego podejścia obejmującego redundancję sprzętową, zapasowe źródła zasilania (UPS, generatory) oraz wielokrotne łącza sieciowe od różnych dostawców.
Kluczowym elementem strategii dostępności są regularnie testowane kopie zapasowe (backupy), przechowywane zgodnie z regułą 3-2-1 (trzy kopie, dwa różne nośniki, jedna poza lokalizacją). W kontekście kryptografii należy pamiętać, że szyfrowanie kopii zapasowych chroni je przed nieuprawnionym dostępem, ale jednocześnie utrudnia odzyskiwanie danych w sytuacji awaryjnej. Dlatego klucze deszyfrujące do backupów muszą być przechowywane w sposób bezpieczny, ale jednocześnie dostępny dla uprawnionego personelu w razie potrzeby.
Podpis cyfrowy jest kryptograficznym odpowiednikiem fizycznego podpisu odręcznego, oferującym jednak znacznie wyższy poziom bezpieczeństwa i odporności na fałszerstwa. Proces tworzenia podpisu cyfrowego polega na wygenerowaniu skrótu wiadomości, a następnie zaszyfrowaniu go kluczem prywatnym nadawcy. Odbiorca, używając klucza publicznego nadawcy, może zweryfikować zarówno autentyczność źródła, jak i integralność wiadomości - czyli upewnić się, że pochodzi ona od właściwej osoby i nie została zmodyfikowana.
Podpisy cyfrowe są powszechnie stosowane w podpisywaniu kodu oprogramowania (code signing), gdzie gwarantują, że aplikacja pochodzi od zaufanego wydawcy i nie zawiera złośliwego kodu. W systemach ERP i bankowości elektronicznej podpisy cyfrowe umożliwiają autoryzację transakcji o wysokiej wartości. W Unii Europejskiej podpisy cyfrowe zgodne z rozporządzeniem eIDAS mają moc prawną równoważną podpisowi własnoręcznemu, co otwiera drogę do w pełni cyfrowego obiegu dokumentów.
Atak typu man-in-the-middle (MITM) stanowi jedno z najpoważniejszych zagrożeń dla kryptografii asymetrycznej, ponieważ atakujący może przechwycić pierwszą wymianę kluczy i podstawić własny klucz publiczny. Ofiara, myśląc że komunikuje się z bankiem, w rzeczywistości szyfruje dane dla atakującego, który następnie odszyfrowuje je swoim kluczem prywatnym, a po ewentualnej modyfikacji szyfruje ponownie prawdziwym kluczem banku. Żadna ze stron nie zdaje sobie sprawy z obecności intruza.
Rozwiązaniem tego problemu jest infrastruktura klucza publicznego (PKI), która wprowadza zaufane strony trzecie - urzędy certyfikacji (CA) - poświadczające autentyczność kluczy publicznych. Zanim bank otrzyma certyfikat, musi przejść rygorystyczną weryfikację tożsamości przeprowadzaną przez urząd certyfikacji. Przeglądarki internetowe mają preinstalowane listy zaufanych urzędów CA i automatycznie odrzucają certyfikaty od nieznanych źródeł, wyświetlając ostrzeżenie o potencjalnym zagrożeniu.
Infrastruktura klucza publicznego (PKI) to kompleksowy system obejmujący sprzęt, oprogramowanie, procedury i ludzi, służący do zarządzania certyfikatami cyfrowymi w skali globalnej. PKI opiera się na hierarchicznym modelu zaufania, w którym korzeń zaufania stanowią główne urzędy certyfikacji (root CA), których certyfikaty są fabrycznie instalowane w systemach operacyjnych i przeglądarkach. Pod nimi znajdują się pośrednie urzędy certyfikacji (intermediate CA), które faktycznie wystawiają certyfikaty dla klientów końcowych.
W praktyce korporacyjnej PKI często przybiera formę prywatnej infrastruktury, w której firma uruchamia własny urząd certyfikacji (np. Microsoft Active Directory Certificate Services) do wystawiania certyfikatów dla pracowników i urządzeń w sieci wewnętrznej. Certyfikaty te są wykorzystywane do logowania do sieci Wi-Fi (EAP-TLS), podpisywania dokumentów wewnętrznych, szyfrowania poczty elektronicznej (S/MIME) oraz autoryzacji urządzeń w sieci korporacyjnej. Zarządzanie cyklem życia certyfikatów (wystawianie, odnawianie, unieważnianie) wymaga dedykowanych narzędzi i procedur.
Urząd certyfikacji (CA) pełni rolę cyfrowego notariusza, poświadczającego związek między kluczem publicznym a tożsamością jego właściciela. Proces wydania certyfikatu obejmuje weryfikację tożsamości wnioskodawcy zgodnie z określonym poziomem walidacji: walidacja domeny (DV) sprawdza tylko kontrolę nad domeną, walidacja organizacji (OV) weryfikuje dane firmy, a najwyższy poziom - Extended Validation (EV) - wymaga szczegółowej weryfikacji prawnej i fizycznej obecności organizacji.
Certyfikat cyfrowy zgodny ze standardem X.509 zawiera m.in. wersję, numer seryjny, algorytm podpisu, nazwę wystawcy, okres ważności, dane podmiotu oraz klucz publiczny. Przeglądarki wyświetlają ostrzeżenia, gdy certyfikat utracił ważność, pochodzi od nieznanego wystawcy lub nie pasuje do odwiedzanej domeny. W dzisiejszych czasach darmowe urzędy certyfikacji, takie jak Let's Encrypt, umożliwiły automatyzację procesu wystawiania i odnawiania certyfikatów, co znacząco podniosło poziom szyfrowania w internecie.
Unieważnianie certyfikatów jest krytycznym mechanizmem bezpieczeństwa, który pozwala na wycofanie zaufania do certyfikatu przed upływem jego ustalonego terminu ważności. Sytuacje wymagające unieważnienia obejmują kradzież klucza prywatnego, wykrycie podatności w algorytmie, zmianę nazwy domeny lub zamknięcie działalności firmy. Listy CRL (Certificate Revocation List) to publikowane przez urzędy CA pliki zawierające numery seryjne unieważnionych certyfikatów, które klienci pobierają i sprawdzają okresowo.
Protokół OCSP (Online Certificate Status Protocol) stanowi bardziej wydajną alternatywę dla CRL, umożliwiając sprawdzenie statusu pojedynczego certyfikatu w czasie rzeczywistym bez konieczności pobierania całej listy. Jednak OCSP ma swoje ograniczenia - żądanie do serwera OCSP ujawnia, jakie strony odwiedza użytkownik, a blokada odpowiedzi OCSP (OCSP stapling) lub atak na serwer może uniemożliwić weryfikację. Rozwiązaniem jest OCSP stapling, gdzie serwer WWW sam pobiera i dołącza potwierdzenie OCSP do odpowiedzi TLS, odciążając klienta.
Współczesna kryptografia oferuje inżynierom bezpieczeństwa kompletny zestaw narzędzi do ochrony wszystkich aspektów triady CIA. Szyfrowanie symetryczne chroni poufność danych przy wysokiej wydajności, kryptografia asymetryczna umożliwia bezpieczną wymianę kluczy i podpisy cyfrowe, funkcje skrótu gwarantują integralność, a infrastruktura PKI zapewnia zaufanie do tożsamości stron komunikacji. Dopiero równoczesne zastosowanie wszystkich tych mechanizmów daje pełną ochronę.
Projektując bezpieczny system, inżynier musi świadomie dobierać algorytmy i parametry do konkretnego zastosowania, uwzględniając takie czynniki jak wymagana długość klucza (zależna od horyzontu czasowego ochrony), wydajność obliczeniowa na docelowej platformie oraz zgodność z regulacjami prawnymi. Należy również pamiętać, że kryptografia jest tylko jednym z elementów bezpieczeństwa - równie ważne są procedury zarządzania kluczami, bezpieczeństwo fizyczne, szkolenia personelu oraz regularne audyty i testy penetracyjne całego systemu.