| Rodzaj algorytmu | |
|---|---|
| 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.
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.
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:
Odszyfrowywanie przebiega z wykorzystaniem tej samej struktury co szyfrowanie, lecz podklucze rundowe stosowane są w odwrotnej kolejności.
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.
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.