Model bezpieczeństwa leżący u podstaw współczesnej kryptografii opiera się na kilku dobrze ugruntowanych zasadach, z których najważniejsza jest zasada Kerckhoffsa. Zasada ta stwierdza, że bezpieczeństwo protokołu kryptograficznego powinno polegać wyłącznie na tajności klucza, a nie na tajności algorytmów używanych do szyfrowania lub deszyfrowania.
Zatem odpowiadając na pytanie: Nie, same funkcje szyfrowania i deszyfrowania nie muszą być utrzymywane w tajemnicy, aby protokół kryptograficzny pozostał bezpieczny.
Podstawą teoretyczną
Zasada Kerckhoffsa, sformułowana w XIX wieku, głosi: „Kryptosystem powinien być bezpieczny, nawet jeśli wszystko o systemie, z wyjątkiem klucza, jest publicznie znane”. Ta koncepcja stanowi podstawowe wytyczne dla współczesnej praktyki kryptograficznej. Rozumowanie jest takie, że jeśli bezpieczeństwo protokołu zależy od niejasności algorytmów, to system staje się podatny na ataki, gdy algorytmy te zostaną odkryte, przeanalizowane lub poddane inżynierii wstecznej. Natomiast jeśli tylko klucz musi być utrzymywany w tajemnicy, to system pozostaje bezpieczny, nawet jeśli przeciwnik zna każdy szczegół algorytmu.
Praktyczne implikacje
Nowoczesne protokoły kryptograficzne, takie jak te używane w Advanced Encryption Standard (AES), Rivest–Shamir–Adleman (RSA) i Elliptic Curve Cryptography (ECC), są projektowane z publicznymi algorytmami. Algorytmy te są szeroko publikowane, badane przez społeczność akademicką i zawodową oraz poddawane rygorystycznej analizie w celu zapewnienia, że nie istnieje żaden wykonalny atak, pod warunkiem, że klucz pozostaje tajny i wystarczająco silny.
Otwarta publikacja algorytmów kryptograficznych służy kilku celom:
1. Recenzja i walidacja ekspercka: Publiczne algorytmy korzystają z szeroko zakrojonej recenzji eksperckiej, która pomaga identyfikować i usuwać potencjalne luki w zabezpieczeniach przed ich powszechnym przyjęciem.
2. Interoperacyjność: Gdy algorytmy staną się publicznie dostępne, różni dostawcy będą mogli wdrożyć kompatybilne systemy, ułatwiając tym samym powszechną i bezpieczną komunikację.
3. Solidność: Otwarte algorytmy pozwalają użytkownikom na niezależną ocenę poziomu zabezpieczeń, co zmniejsza ryzyko ukrytych luk lub celowych ataków typu backdoor.
Kontekst historyczny
Historycznie rzecz biorąc, niektóre systemy kryptograficzne opierały się na tajności algorytmu w celu zapewnienia bezpieczeństwa (tzw. „bezpieczeństwo przez niejasność”). Dobrze znanym przykładem jest maszyna Enigma używana przez Niemcy podczas II wojny światowej. Jej bezpieczeństwo zależało nie tylko od klucza (codziennych ustawień wirnika), ale także od tajności wewnętrznych mechanizmów maszyny. Gdy kryptoanalitycy alianccy zrekonstruowali mechanizm Enigmy, bezpieczeństwo systemu zostało drastycznie osłabione.
W dzisiejszych czasach zdecydowanie odradza się poleganie na tajnych algorytmach. Algorytmy zastrzeżone lub nieudokumentowane częściej zawierają nieodkryte luki i nie mogą korzystać ze zbiorowej wiedzy społeczności kryptograficznej.
Kryptografia symetryczna i asymetryczna
Zarówno symetryczne (np. AES, DES), jak i asymetryczne (np. RSA, ECC) systemy kryptograficzne przestrzegają zasady, że algorytm może być znany publicznie bez narażania bezpieczeństwa. W kryptografii symetrycznej ten sam klucz jest używany zarówno do szyfrowania, jak i deszyfrowania. W kryptografii asymetrycznej klucz publiczny szyfruje dane, a klucz prywatny je deszyfruje. Bezpieczeństwo w obu przypadkach opiera się na niewykonalności wyprowadzenia klucza (lub klucza prywatnego w przypadku asymetrycznym) na podstawie algorytmu i tekstu zaszyfrowanego.
Na przykład specyfikacja AES jest publikowana jako FIPS 197 przez NIST. Każdy może pobrać standard i zaimplementować algorytm. Bezpieczeństwo wiadomości zaszyfrowanej AES zależy całkowicie od tajności i nieprzewidywalności klucza, a nie od tajności algorytmu.
Poufność algorytmu: ryzyko i ograniczenia
Utrzymywanie w tajemnicy funkcji szyfrowania i deszyfrowania wiąże się z kilkoma ryzykami:
- Brak przejrzystości: Zamkniętych algorytmów nie można niezależnie ocenić pod kątem bezpieczeństwa, co zwiększa ryzyko wystąpienia niewykrytych luk lub celowych słabości.
- Inżynieria wsteczna: Dysponując odpowiednim dostępem do zaszyfrowanych i odszyfrowanych danych, przeciwnik może często odtworzyć algorytm, pozbawiając się tym samym wszelkich korzyści uzyskanych dzięki zachowaniu tajemnicy.
- Złożoność zarządzania kluczami: Jeśli zarówno algorytm, jak i klucz muszą pozostać tajne, logistyka bezpiecznej dystrybucji i przechowywania staje się znacznie trudniejsza.
- Przestarzałość i nieelastyczność: Jeśli tajny algorytm zostanie naruszony, może zaistnieć konieczność wymiany całego systemu. Natomiast w przypadku naruszenia klucza w publicznym systemie algorytmów można temu zaradzić, wydając nowe klucze.
Przykłady
1. AES (zaawansowany standard szyfrowania): Algorytm jest publiczny, recenzowany i szeroko wdrażany. Bezpieczeństwo leży całkowicie w tajemnicy klucza.
2. Republika Południowej Afryki (Rivest – Shamir – Adleman): Algorytm szyfrowania i deszyfrowania jest publiczny. Klucz prywatny musi pozostać tajny; klucz publiczny i algorytm są otwarte.
3. Szyfr Cezara: Jeden z najprostszych klasycznych szyfrów, w którym funkcja (przesuwanie liter) jest łatwa do odkrycia. Bezpieczeństwo opierało się na wielkości przesunięcia, ale w praktyce takie szyfry są trywialnie łamane, gdy funkcja jest znana ze względu na ich słabą konstrukcję.
4. Algorytmy zastrzeżone (np. system kodowania zawartości DVD – CSS): CSS próbował utrzymać algorytm w tajemnicy, ale został on poddany inżynierii wstecznej. Gdy algorytm był już znany, jego słabości bezpieczeństwa zostały szybko wykorzystane.
Wartość dydaktyczna
Nauczanie zasady, że bezpieczeństwo kryptograficzne powinno zależeć wyłącznie od klucza, a nie od tajności algorytmu, przynosi szereg korzyści edukacyjnych:
- Promuje solidną konstrukcję: Studenci i praktycy opracowują systemy odporne na ekspozycję, zmniejszając zależność od niejasności.
- Zachęca do otwartości: Wspiera proces naukowy, w którym otwarta dyskusja i analiza wzmacniają twierdzenia o bezpieczeństwie.
- Rozwija myślenie antagonistyczne: Uczniowie zdają sobie sprawę, że przeciwnicy często dysponują znacznymi zasobami i mogą uzyskać szczegóły algorytmów, dlatego systemy muszą być odpowiednio konstruowane.
- Najważniejsze informacje na temat znaczenia zarządzania kluczami: Skuteczne szkolenie w zakresie bezpieczeństwa skupia się na prawidłowym generowaniu, dystrybucji i przechowywaniu kluczy, które stanowią słabe punkty wielu rzeczywistych systemów.
Kontrprzykłady i wyjaśnienia
Istnieją sytuacje, w których używane są zastrzeżone lub tajne algorytmy, często w aplikacjach, w których kryptografia jest osadzona w sprzęcie lub w ograniczonych środowiskach, w których obowiązują kwestie licencyjne lub regulacyjne. Jednak takie systemy są ogólnie uważane za mniej bezpieczne niż te, w których używane są dobrze sprawdzone algorytmy publiczne. Bezpieczeństwo poprzez niejasność może zapewnić tymczasową przewagę, ale nie może zastąpić solidnego projektu kryptograficznego.
W niektórych kontekstach wojskowych lub wywiadowczych zastrzeżone algorytmy mogą być wykorzystywane w celu opóźniania przeciwników, ale zazwyczaj jest to dodatkowa warstwa, a nie podstawa bezpieczeństwa.
Rola tajności algorytmu w bezpieczeństwie
Podczas gdy domyślną i zalecaną praktyką jest założenie, że algorytmy staną się znane, mogą istnieć operacyjne powody, aby zachować pewne szczegóły w tajemnicy przez ograniczony czas (np. nowe konstrukcje kryptograficzne, które nie zostały jeszcze ustandaryzowane). Jednak poleganie na długoterminowej tajności algorytmów jest sprzeczne z najlepszymi praktykami w kryptografii.
Podczas nauczania lub projektowania systemów kryptograficznych najlepiej jest założyć, że przeciwnicy mają pełną wiedzę na temat procesów szyfrowania i deszyfrowania. Takie podejście zapewnia, że tylko tajność klucza stoi między bezpiecznym systemem a kompromitacją, co jest zgodne z zasadą Kerckhoffsa i nowoczesnymi pojęciami bezpieczeństwa.
Bezpieczeństwo kryptograficzne nie powinno i w praktyce nie zależy od tajności funkcji szyfrowania i deszyfrowania. Siłę protokołu kryptograficznego mierzy się jego zdolnością do wytrzymania ataków, nawet gdy algorytmy są w pełni ujawnione i dostępne do analizy dla każdego. Przestrzegając tej zasady, systemy kryptograficzne osiągają wyższy poziom bezpieczeństwa, zaufania i solidności.
Inne niedawne pytania i odpowiedzi dotyczące Podstawy klasycznej kryptografii EITC/IS/CCF:
- Czy kryptografia klucza publicznego została wprowadzona do użytku w szyfrowaniu?
- Czy zbiór wszystkich możliwych kluczy danego protokołu kryptograficznego jest w kryptografii nazywany przestrzenią kluczy?
- Czy w szyfrze przesunięciowym litery na końcu alfabetu są zastępowane literami z początku alfabetu zgodnie z arytmetyką modularną?
- Co według Shannona powinien zawierać szyfr blokowy?
- Czy protokół DES wprowadzono w celu poprawy bezpieczeństwa kryptosystemów AES?
- Czy bezpieczeństwo szyfrów blokowych zależy od wielokrotnego łączenia operacji dezorientacji i dyfuzji?
- Czy kryptoanalizę można wykorzystać do bezpiecznej komunikacji przez niezabezpieczony kanał komunikacyjny?
- Czy Internet, GSM i sieci bezprzewodowe należą do niebezpiecznych kanałów komunikacyjnych?
- Czy wyczerpujące wyszukiwanie klucza jest skuteczne w przypadku szyfrów podstawieniowych?
- Czy podwarstwa AES MixColumn zawiera nieliniową transformację, którą można przedstawić za pomocą mnożenia macierzy 4×4?
Zobacz więcej pytań i odpowiedzi w artykule Podstawy klasycznej kryptografii EITC/IS/CCF

