CAST-128

CAST-128
CAST5
Rodzaj algorytmu

Szyfr blokowy

Data stworzenia

1996

Autorzy

Carlisle Adams, Stafford Tavares

Wielkość bloku wejściowego

64 bity

Wielkość bloku wyjściowego

64 bity

Długość klucza

40–128 [bit]

Liczba rund

12 lub 16

CAST-128 (również CAST5) – symetryczny szyfr blokowy opracowany w 1996 roku przez Carlisle’a Adamsa i Stafforda Tavaresa. Algorytm wykorzystuje 64-bitowe bloki danych oraz klucze o długości od 40 do 128 bitów. Jego konstrukcja opiera się na sieci Feistela. Szczegółową specyfikację opublikowano w maju 1997 roku w dokumencie RFC 2144.

CAST-128 był wykorzystywany między innymi w programach PGP i GnuPG. Na jego podstawie opracowano później algorytm CAST-256, wykorzystujący 128-bitowe bloki danych.

Konstrukcja

CAST-128 jest szyfrem o strukturze Feistela, w której 64-bitowy blok wejściowy dzielony jest na dwie 32-bitowe połowy. W kolejnych rundach jedna z połówek poddawana jest przekształceniu za pomocą funkcji rundowej, a wynik łączony jest z drugą połową przy użyciu operacji XOR.

Algorytm dopuszcza klucze o długości od 40 do 128 bitów, zwiększanej w krokach po 8 bitów. Liczba rund zależy od długości klucza:

Klucze krótsze niż 128 bitów są podczas generowania podkluczy uzupełniane zerowymi bajtami do długości 128 bitów.

Funkcje rundowe

CAST-128 wykorzystuje trzy odmiany funkcji rundowej, stosowane naprzemiennie. Każda z nich łączy operacje XOR, dodawanie i odejmowanie modulo 232 oraz cykliczne przesunięcia bitowe w lewo. Odmiany różnią się kolejnością i rodzajem wykonywanych operacji.

W algorytmie występuje osiem tablic podstawień (S-boxów), oznaczonych od S1 do S8. Każda zawiera 256 wartości 32-bitowych. Tablice S1–S4 są używane przez funkcje rundowe, natomiast S5–S8 służą do generowania podkluczy.

W każdej rundzie wykorzystywane są dwa podklucze:

  • 32-bitowy podklucz maskujący, uczestniczący w operacjach arytmetycznych lub XOR;
  • 5-bitowy podklucz określający liczbę pozycji cyklicznego przesunięcia bitowego.

Odszyfrowywanie przebiega z wykorzystaniem tej samej struktury co szyfrowanie, lecz podklucze rundowe stosowane są w odwrotnej kolejności.

Zastosowania

CAST-128 znalazł zastosowanie w oprogramowaniu kryptograficznym, w tym w programach PGP i GnuPG. W standardzie OpenPGP algorytm występuje pod nazwą CAST5 i ma przypisany identyfikator 3, oznaczający szyfrowanie z użyciem klucza 128-bitowego. W specyfikacji RFC 4880 z 2007 roku implementacja CAST5 była zalecana, lecz nieobowiązkowa. Obowiązkowym algorytmem szyfrowania symetrycznego był wówczas TripleDES.

CAST-128 został również uwzględniony w RFC 2451 z listopada 1998 roku, opisującym wykorzystanie szyfrów blokowych w trybie CBC w mechanizmie ESP protokołu IPsec.

Bezpieczeństwo

CAST-128 zaprojektowano z myślą o odporności na kryptoanalizę różnicową, liniową oraz ataki wykorzystujące powiązane klucze. Jego bezpieczeństwo było przedmiotem badań kryptograficznych, obejmujących między innymi wersje algorytmu o zmniejszonej liczbie rund.

W pracy opublikowanej w 2026 roku w czasopiśmie „Journal of Cryptology” przedstawiono udoskonalony atak typu meet-in-the-middle na ośmiorundową wersję CAST-128. Badacze zmniejszyli zapotrzebowanie na pamięć z 2111 do 264 słów, bez zwiększania złożoności czasowej ataku. Wynik ten dotyczył wariantu o zmniejszonej liczbie rund, a nie pełnej, 16-rundowej wersji algorytmu.

Ograniczeniem CAST-128 jest jego 64-bitowy rozmiar bloku, zwiększający ryzyko kolizji przy szyfrowaniu dużych ilości danych. W specyfikacji OpenPGP RFC 9580 z 2024 roku zabroniono stosowania CAST5 do szyfrowania nowych wiadomości. Dopuszczono natomiast odszyfrowywanie starszych wiadomości w celu zachowania zgodności z wcześniejszymi implementacjami, zalecając jednocześnie ostrzeganie użytkownika o przestarzałym algorytmie.

Zobacz też

Przypisy

  1. 1 2 3 4 5 6 Carlisle Adams: RFC 2144: The CAST-128 Encryption Algorithm. RFC Editor, 5 1997. [dostęp 2026-10-25]. (ang.).
  2. 1 2 GnuPG Frequently Asked Questions. GnuPG. [dostęp 2026-10-25]. (ang.).
  3. ↑ Carlisle Adams, Joseph Gilchrist: RFC 2612: The CAST-256 Encryption Algorithm. RFC Editor, 6 1999. [dostęp 2026-10-25]. (ang.).
  4. 1 2 Paul Wouters i in.: RFC 9580: OpenPGP. RFC Editor, 7 2024. [dostęp 2026-10-25]. (ang.).
  5. ↑ Jon Callas i in.: RFC 4880: OpenPGP Message Format. RFC Editor, 11 2007. [dostęp 2026-10-25]. (ang.).
  6. ↑ Roy Pereira, Rob Adams: RFC 2451: The ESP CBC-Mode Cipher Algorithms. RFC Editor, 11 1998. [dostęp 2026-10-25]. (ang.).
  7. ↑ Itai Dinur i in.: New Attacks on Feistel Structures with Improved Memory Complexities. [w:] Journal of Cryptology [on-line]. Springer Nature, 2026-03-03. [dostęp 2026-10-25]. (ang.).

Linki zewnętrzne