W kryptografii słaby klucz to taki klucz, który użyty z określonym szyfrem powoduje, że szyfr zachowuje się w jakiś niepożądany sposób i ułatwia złamanie (złamanie) szyfrogramu.

Słabe klucze stanowią zazwyczaj bardzo mały ułamek całej przestrzeni kluczy, co oznacza, że jeśli ktoś wygeneruje losowy klucz do zaszyfrowania wiadomości, to rzadko się zdarza, aby słabe klucze powodowały problem z bezpieczeństwem. Jednakże, uważa się za dobry projekt szyfru, który nie ma słabych kluczy ("quality chiper"). Mówi się, że szyfr bez słabych kluczy ma płaską lub liniową przestrzeń kluczy.

Dlaczego powstają słabe klucze?

  • Błędy w algorytmie szyfrowania — pewne konstrukcje matematyczne mogą sprawiać, że niektóre klucze powodują symetrię lub deterministyczne zachowania szyfru, które upraszczają analizę kryptologiczną.
  • Ograniczenia parametrów — w systemach z wymuszonym wyborem parametrów (np. małe wykładniki w RSA, małe podgrupy w ECC) występuje większe ryzyko słabych kluczy.
  • Błędy implementacyjne — źle napisana funkcja losująca klucze, użycie przewidywalnych źródeł entropii lub błędy w generowaniu parametrów mogą prowadzić do kluczy łatwych do odgadnięcia.
  • Nieprawidłowe zarządzanie — ponowne używanie kluczy, kopiowanie tych samych parametrów między systemami lub zbyt krótkie klucze zwiększają prawdopodobieństwo wystąpienia słabych przypadków.

Przykłady słabych kluczy i sytuacji

  • DES — klasyczny przykład: DES ma ograniczoną przestrzeń kluczy i kilka tzw. "weak keys" oraz "semi-weak keys", które sprawiają, że szyfrowanie i deszyfrowanie mogą się wzajemnie znosić lub prowadzić do łatwiejszych ataków.
  • RSA — użycie zbyt małego wykładnika lub generowanie kluczy z współdzielonymi czynnikami (np. wspólny czynnik pierwszorzędowy) może doprowadzić do łatwego złamania; źle losowane liczby pierwsze także powodują słabe klucze.
  • ECC — wybór krzywej z niską odpornością, użycie punktów z małą rzędem lub brak ochrony przed atakami w małych podgrupach może skutkować kluczami, które nie zapewniają zakładanej siły bezpieczeństwa.
  • Szyfry strumieniowe i RNG — jeżeli generator liczb losowych (RNG) jest przewidywalny, wygenerowane klucze (lub inicjalne wektory) mogą być „słabe” — praktyczne przykłady to powtarzające się klucze w urządzeniach z powodu braku entropii.

Wpływ na bezpieczeństwo

Słaby klucz może drastycznie obniżyć poziom zabezpieczeń, bo umożliwia atakującemu:

  • przyspieszone odgadnięcie klucza (redukowanie złożoności ataku),
  • przeprowadzenie ataku deterministycznego zamiast prób i błędów,
  • odzyskanie danych lub podszycie się pod stronę/urządzenie, mimo że algorytm teoretycznie jest bezpieczny dla losowego klucza.

Jak wykrywać słabe klucze?

  • testy statystyczne generatorów kluczy i RNG (entropia, powtarzalność),
  • walidacja parametrów (np. sprawdzenie, czy liczby pierwsze w RSA są poprawne i niezbyt bliskie),
  • przeglądy i audyty kodu implementacji kryptograficznej,
  • monitoring zachowania systemu i analiza logów w celu wykrycia anomalii wskazujących na powtarzalne lub przewidywalne klucze.

Zapobieganie i najlepsze praktyki

  • Używaj sprawdzonych, standaryzowanych algorytmów i parametrów zatwierdzonych przez społeczność kryptologiczną.
  • Stosuj silne, certyfikowane źródła entropii (RNG/DRBG) i sprawdzaj ich poprawność.
  • Unikaj ręcznego dobierania parametrów; generuj klucze za pomocą bibliotek kryptograficznych o udokumentowanej jakości.
  • Zadbaj o odpowiednią długość kluczy zgodną z aktualnymi rekomendacjami (np. minimalne długości RSA, parametry ECC).
  • Wprowadzaj mechanizmy rotacji kluczy i ograniczaj ich czas użycia, aby zmniejszyć skutki ewentualnego wycieku lub wystąpienia słabości.
  • Regularnie aktualizuj oprogramowanie kryptograficzne i stosuj łaty eliminujące znane słabości implementacyjne.

Podsumowanie

Słaby klucz to rzadkie, lecz poważne ryzyko w kryptografii. Nawet jeśli zajmują one małą część przestrzeni kluczy, to złe projektowanie algorytmu, błędy implementacji lub słaba entropia mogą je wprowadzić do praktycznego użycia. Dlatego właściwy projekt, sprawdzone biblioteki, odpowiednie źródła losowości i dobre praktyki zarządzania kluczami są kluczowe dla utrzymania bezpieczeństwa systemów kryptograficznych.