RC6 — symetryczny szyfr blokowy w kryptografii: definicja i działanie
RC6 — przegląd symetrycznego szyfru blokowego: budowa, parametry (rozmiar bloku, klucz, rundy), mechanizm mnożenia, bezpieczeństwo i historia jako finalista AES.
W kryptografii RC6 jest symetrycznym szyfrem blokowym pochodzącym z RC5. RC6 jest sparametryzowanym algorytmem o zmiennej wielkości bloku, zmiennej wielkościklucza i zmiennej liczbie rund. RC oznacza "Rivest Cipher" lub alternatywnie "Ron's Code".
W 1997 roku NIST ogłosiła konkurs na następcę standardu szyfrowania danych (DES), znanego jako Advanced Encryption Standard (AES). RC6 pochodzi z RC5 i został wybrany jako jeden z pięciu finalistów konkursu na zaawansowany standard szyfrowania (Advanced Encryption Standard - AES), ale nie został wybrany jako standard.
W celu zapewnienia różnych poziomów bezpieczeństwa i wydajności, RC6 umożliwia wybór wielkości bloku: 32 bity (wyłącznie do celów eksperymentalnych i oceny), 64 bity (do stosowania jako zamiennik DES) i 128 bitów (przeznaczonych dla AES). Liczba rund może wynosić od 0 do 255, a wielkość klucza od 0 bitów do 2040 bitów.
RC6 jest bardzo podobny do RC5 w strukturze i może być postrzegany jako przeplatanie się dwóch równoległych procesów szyfrowania RC5. W RC6 zastosowano jednak dodatkową operację mnożenia, która nie występuje w RC5, oraz użycie czterech b/4-bitowych rejestrów roboczych (patrz podział bloków zwykłego tekstu w szyfrze feistel) zamiast dwóch b/2-bitowych rejestrów, jak w RC5 (b to rozmiar bloku). Do zwiększenia dyfuzji osiąganej na rundę stosuje się mnożenie całek, dzięki czemu potrzeba mniej rund i można zwiększyć szybkość działania szyfru.
Powodem stosowania czterech rejestrów roboczych zamiast dwóch jest głównie optymalizacja na 32-bitowych procesorach. Domyślny rozmiar bloku RC5 to 64 bity, natomiast domyślny rozmiar bloku AES to 128 bitów. RC5 posiada tylko dwa robocze rejestry. Wykorzystuje on operacje 32-bitowe podczas pracy z blokami 64-bitowymi oraz operacje 64-bitowe podczas pracy z blokami 128-bitowymi, dlatego do budowy architektury AES wymagane są cztery rejestry robocze wykorzystujące tylko operacje 32-bitowe.
RC6 jest zastrzeżonym i opatentowanym algorytmem (przez RSA Security U. S. Patent 5 724 428 i Patent USA 5 835 600 ) i może wymagać uiszczenia opłat licencyjnych i opłat licencyjnych za wszelkie produkty wykorzystujące ten algorytm. Został on zaprojektowany przez Rona Rivesta, Matta Robshaw, Raya Sidneya i Yiqun Lisa Yin, a także przedłożony do projektów NESSIE i CRYPTREC.
Krótka charakterystyka i typowe ustawienia
RC6 zwykle opisuje się notacją RC6-w/r/b, gdzie:
- w — rozmiar słowa w bitach (np. 32),
- r — liczba rund (np. 20),
- b — długość klucza w bajtach (np. 16 dla 128-bitowego klucza).
Jak działa RC6 (ogólny opis)
RC6 operuje na czterech słowach roboczych A, B, C, D wyprowadzonych z bloku wejściowego. Klucz jest rozszerzany do tablicy podkluczy, a sama struktura rund oparta jest na kombinacji operacji:
- dodawania modulo 2^w,
- operacji XOR,
- cyklicznych rotacji (rotacje zależne od wartości),
- mnożenia całkowitego (wprowadzającego silniejszą dyfuzję),
- oraz mieszania z kolejnymi podkluczami.
Schemat szyfrowania i rozszerzanie klucza (w skrócie)
Proces szyfrowania obejmuje:
- rozszerzenie klucza do tablicy podkluczy S (liczba podkluczy zależy od liczby rund: zwykle 2r+4),
- inicjalne dodanie kilku pierwszych podkluczy do słów A i C,
- wykonanie r rund, w których B i D są modyfikowane za pomocą funkcji zależnych od B i D (z użyciem mnożenia i rotacji) oraz addition/XOR z A i C i odpowiednimi podkluczami,
- końcowe dodanie ostatnich podkluczy i złożenie czterech słów w blok wyjściowy.
Bezpieczeństwo — co warto wiedzieć
RC6 został zaprojektowany z myślą o odporności na znane techniki analizy (np. różnicową i liniową). W praktyce:
- Na pełnych, zalecanych parametrach (np. RC6-32/20/16) nie znaleziono praktycznych, skutecznych łamań prowadzących do odzyskania klucza w rozsądnym czasie przy użyciu publicznie znanych ataków.
- Naukowcy analizowali RC6 i wykazywali różne ataki na zredukowane liczby rund lub analizowali szczególne klasy kluczy — takie rezultaty są typowe w badaniach kryptograficznych i niekoniecznie wskazują na złamanie pełnej instancji.
- Ocena bezpieczeństwa zależy od wybranych parametrów: im więcej rund i dłuższy klucz, tym większa odporność, ale kosztem wydajności.
Wydajność i zastosowania
RC6 jest zoptymalizowany pod kątem 32-bitowych procesorów — stąd cztery słowa robocze po 32 bity. Wprowadzenie operacji mnożenia zwiększa dyfuzję, co pozwala stosować mniejszą liczbę rund niż w pozostałych wariantach bez mnożenia, przy zachowaniu podobnego poziomu bezpieczeństwa. W praktyce:
- na procesorach ogólnego przeznaczenia (bez specjalnych instrukcji) RC6 jest konkurencyjny względem innych szyfrów blokowych,
- na sprzęcie z akceleracją (np. AES z AES-NI) nowoczesne implementacje AES często są znacznie szybsze,
- brak szerokiej standaryzacji RC6 oraz kwestie patentowe ograniczyły jego adopcję w porównaniu z AES.
Licencje i status patentowy
RC6 jest zastrzeżonym i opatentowanym algorytmem (U.S. Patent 5 724 428 i U.S. Patent 5 835 600). Oznacza to, że użycie RC6 w produktach komercyjnych mogło wiązać się z koniecznością uiszczenia opłat licencyjnych lub uzyskania zgody właściciela praw. Te ograniczenia były jednym z powodów, dla których RC6 nie zyskał szerokiego rozprzestrzenienia pomimo bycia finalistą konkursu AES.
Porównanie z RC5 i AES
- RC6 vs RC5: RC6 bazuje na RC5, ale wprowadza mnożenie i operuje na czterech słowach zamiast dwóch. Dzięki temu osiąga lepszą dyfuzję na rundę i jest zoptymalizowany pod kątem słów 32-bitowych.
- RC6 vs AES: AES (Rijndael) ma zupełnie inną strukturę (sieć zastępczo-permutacyjna) i obecnie jest szeroko wspierany sprzętowo (np. AES-NI), co daje mu przewagę wydajnościową na współczesnych CPU. AES stał się standardem i jest powszechnie rekomendowanym wyborem do nowych zastosowań.
Praktyczne zalecenia
Jeżeli rozważasz użycie RC6:
- stosuj sprawdzone, zalecane parametry (np. RC6-32/20/16 dla bloków 128-bitowych),
- uwzględnij ograniczenia patentowe i licencyjne — sprawdź aktualny status prawny przed komercyjnym wdrożeniem,
- rozważ alternatywy z szeroką standaryzacją i wsparciem sprzętowym (np. AES), zwłaszcza gdy priorytetem jest kompatybilność i wydajność.
RC6 pozostaje interesującym i historycznie ważnym projektem w rozwoju nowoczesnych szyfrów blokowych — dostarcza cennych pomysłów konstrukcyjnych (np. użycie mnożenia i zależnych od danych rotacji) oraz jest dobrym przykładem kompromisu między bezpieczeństwem a wydajnością.
Pytania i odpowiedzi
P: Co to jest RC6?
O: RC6 to szyfr blokowy z kluczem symetrycznym wywodzący się z RC5. Jest to parametryzowany algorytm o zmiennej wielkości bloku, wielkości klucza i liczbie rund.
P: Kto zaprojektował RC6?
O: RC6 został zaprojektowany przez Rona Rivesta, Matta Robshawa, Raya Sidneya i Yiqun Lisa Yina.
P: Jakie są domyślne wielkości bloków dla RC5 i AES?
O: Domyślny rozmiar bloku w RC5 to 64 bity, a domyślny rozmiar bloku w AES to 128 bitów.
P: Jak wygląda struktura RC6 w porównaniu z RC5?
O: Struktura RC6 jest bardzo podobna do RC5, ale wykorzystuje dodatkową operację mnożenia, której nie ma w RC5, a także cztery rejestry robocze b/4-bitowe zamiast dwóch b/2-bitowych.
P: Dlaczego stosuje się cztery rejestry robocze zamiast dwóch, aby zbudować architekturę AES wykorzystującą tylko operacje 32-bitowe?
O: Mnożenie liczb całkowitych służy do zwiększenia dyfuzji osiąganej w jednej rundzie, dzięki czemu potrzeba mniej rund i można zwiększyć szybkość. Potrzebne są cztery rejestry robocze, ponieważ w przypadku bloków 64-bitowych stosuje się operacje 32-bitowe, a w przypadku bloków 128-bitowych - 64-bitowe.
P: Czy w przypadku produktów wykorzystujących ten algorytm wymagane są jakieś opłaty licencyjne lub tantiemy?
O: Tak, ponieważ jest to algorytm zastrzeżony i opatentowany (przez RSA Security U.S. Patent 5,724,428 i U.S. Patent 5,835,600 ), w przypadku produktów wykorzystujących ten algorytm mogą być wymagane opłaty licencyjne i tantiemy.
Przeszukaj encyklopedię