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.

Autor: Leandro Alegsa

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).
Najczęściej rozważanym wariantem jako kandydat AES był RC6-32/20/16 (słowa 32-bitowe → blok 128-bitów, 20 rund, klucz 128 bitów). Algorytm dopuszcza jednak szerokie spektrum parametrów: bloki 32, 64 lub 128 bitów, klucze do 2040 bitów i do 255 rund.

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.
W każdej rundzie dwie zmienne służą do określania ilości rotacji pozostałych rejestrów (są obliczane przy pomocy mnożenia i dodawania), co powoduje zależne od danych przesunięcia. Takie zależne od danych rotacje zwiększają złożoność kryptograficzną i dyfuzję danych.

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.
Operacje deszyfrowania są operacjami odwrotnymi: odejmowanie podkluczy, odwrócone rotacje i zastosowanie odwrotności funkcji rundowej w odwrotnej kolejności.

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.
Z tego powodu, jeśli ktoś rozważa użycie RC6 dziś, warto opierać się na zalecanych parametrach i śledzić literaturę kryptograficzną dotyczącą najnowszych wyników analizy.

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ę
AlegsaOnline.com - 2020 / 2025 - License CC3