RC5 — szyfr blokowy Rivesta (algorytm 1994, parametry i rotacje)
RC5 – przegląd szyfru blokowego Rivesta (1994): parametry, zmienne rozmiary bloku i klucza, liczba rund oraz innowacyjne rotacje zależne od danych. Zrozum działanie i bezpieczeństwo.
W kryptografii RC5 jest prostym, ale elastycznym szyfrem z symetrycznym kluczem blokowym. Zaprojektował go Ronald Rivest w 1994 roku. RC5 to sparametryzowany algorytm: użytkownik może dobierać wielkość bloku, długość klucza oraz liczbę rund, co pozwala dopasować kompromis między bezpieczeństwem a wydajnością. Skrót „RC” pochodzi od „Rivest Cipher” (lub potocznie „Ron's Code”).
Parametry i notacja
RC5 jest zwykle notowany jako RC5-w/r/b, gdzie:
- w — rozmiar słowa w bitach (zwykle 16, 32 lub 64),
- r — liczba rund (0–255),
- b — długość klucza w bajtach (0–255; czyli do 2040 bitów).
Dzięki temu algorytm można dostosować np. jako RC5-32/12/16 (słowo 32-bitowe, 12 rund, klucz 16 bajtów = 128 bitów) — konfiguracja pierwotnie sugerowana przez autora dla typowych zastosowań.
Podstawowe operacje
RC5 opiera się na trzech prostych operacjach wykonywanych na słowach o długości w bitów:
- dodawanie modulo 2^w,
- operator XOR (eXclusive OR),
- cykliczne rotacje o zmiennym przesunięciu, przy czym ilość rotacji zależy od zawartości słowa — stąd nazwa „rotacje zależne od danych”.
Ogólna struktura algorytmu to sieć typu Feistel, a prostota tych operacji powoduje, że implementacja szyfrowania i deszyfrowania zajmuje tylko kilka linii kodu w większości języków programowania.
Szyfrowanie i deszyfrowanie — skrótowy opis
Blok danych dzielony jest na dwie zmienne A i B, każda długości w bitów. Tablica rundowa S ma 2(r+1) słów. Schemat szyfrowania (skrótowo):
- A = A + S[0]; B = B + S[1];
- dla i = 1 do r:
- A = ((A XOR B) <<< (B mod w)) + S[2*i];
- B = ((B XOR A) <<< (A mod w)) + S[2*i+1];
Deszyfrowanie wykonuje odwrotne operacje w odwrotnej kolejności (odejmowanie zamiast dodawania, rotacje w prawo zamiast w lewo oraz XOR jak poprzednio).
Schemat rozszerzania klucza (key schedule)
Rozszerzanie klucza w RC5 tworzy tablicę słów S, która jest używana podczas rund. Procedura w skrócie:
- Podziel bajty sekretnego klucza na słowa L[0..c-1] o długości w bitów (c = ceil(8*b/w)).
- Zainicjuj tablicę S długości t = 2*(r+1): S[0] = P_w; dla i=1..t-1: S[i] = S[i-1] + Q_w (wszystko modulo 2^w).
- Wymieszaj S i L wykonując 3 * max(t, c) iteracji, w każdej iteracji aktualizując S[i] i L[j] poprzez dodanie i rotację — to zapewnia rozproszenie (diffusion) klucza do tablicy rundowej.
Stałe P_w i Q_w są dziwnymi (nieparzystymi) wartościami pochodzącymi z ułamkowych części e i złotej proporcji; przykładowe wartości:
- dla w = 16: P_w = 0xB7E1, Q_w = 0x9E37,
- dla w = 32: P_w = 0xB7E15163, Q_w = 0x9E3779B9,
- dla w = 64: P_w = 0xB7E151628AED2A6B, Q_w = 0x9E3779B97F4A7C15.
Właściwości i zalety
- Elastyczność parametrów (w, r, b) umożliwia dopasowanie algorytmu do różnych środowisk sprzętowych i wymagań bezpieczeństwa.
- Prosta implementacja — tylko podstawowe operacje arytmetyczne i bitowe, dzięki czemu RC5 jest szybki na CPU i łatwy do implementacji w sprzęcie.
- Innowacyjne użycie rotacji zależnych od danych, co zwiększa złożoność analityczną i dało inspirację do dalszych badań w kryptografii (np. RC6).
Bezpieczeństwo i znane ataki
RC5 był intensywnie badany przez kryptografów. Kilka ważnych uwag:
- Pełna siła systemu zależy od dobranych parametrów — krótsze klucze i mała liczba rund ułatwiają ataki (w tym brute-force i analizy różnicowe).
- Na zredukowane liczby rund znaleziono skuteczne ataki kryptanalizy różnicowej i inne techniki; z tego powodu liczba rund r powinna być dobrana ostrożnie. Dla powszechnie używanych parametrów (np. RC5-32/12/16) nie ma publicznego, praktycznego złamania całego algorytmu, ale analiza teoretyczna pokazuje słabości dla mniejszych r.
- Rotacje zależne od danych wprowadziły nowe techniki ataków (np. analizy wykorzystujące częściowe właściwości rotacji), co z kolei spowodowało dalsze badania i powstanie wariantów algorytmów blokowych.
W praktyce bezpieczeństwo RC5 należy oceniać w kontekście wybranych parametrów i wymagań systemu; dla krytycznych zastosowań zaleca się stosowanie sprawdzonych, aktualnych standardów kryptograficznych oraz dłuższych kluczy i większej liczby rund.
Zastosowania, patent i rozwinięcia
RC5 był używany w różnych bibliotekach kryptograficznych oraz protokołach. Algorytm był opatentowany przez firmę RSA Security, co przez pewien czas ograniczało jego swobodne wykorzystywanie w niektórych projektach; przed użyciem w nowych rozwiązaniach warto sprawdzić aktualny status licencji i patentów.
Na bazie RC5 powstał m.in. RC6 — rozszerzenie i modyfikacja zgłoszona w kontekście konkursu na standard AES, które dodało m.in. mnożenie słów i dodatkowe rejestry, jednocześnie zachowując ideę rotacji zależnych od danych.
Podsumowanie
RC5 to prosty i elastyczny szyfr blokowy zaprojektowany do eksperymentów i badań nad konstrukcją szyfrów. Jego największą cechą rozpoznawczą są rotacje zależne od danych oraz konfigurowalność parametrów (w, r, b). Dzięki temu RC5 dostarczył cennych obserwacji dla społeczności kryptograficznej i wpłynął na projekt kolejnych algorytmów, chociaż intensywna analiza wykazała, że bezpieczeństwo zależy wyraźnie od doboru parametrów.
Kryptoanaliza
12-rundowy RC5 (z 64-bitowymi blokami) jest podatny na atak różnicowy przy użyciu 244 wybranych plaintextów. Jako wystarczającą ochronę proponuje się 18-20 rund.
Firma RSA Security, która posiada patent na ten algorytm, zaoferowała serię nagród w wysokości 10 000 USD za złamanie szyfru zaszyfrowanego RC5, ale od maja 2007 r. konkursy te zostały przerwane. Niektóre z tych problemów zostały rozwiązane za pomocą obliczeń rozproszonych, organizowanych przez Distributed.net. Distributed.net ma brutalnie wymuszone wiadomości RC5 szyfrowane kluczami 56- i 64-bitowymi, a obecnie pracuje nad złamaniem klucza 72-bitowego. Przy obecnym tempie (z 12 listopada 2008 r.) testowanie każdego możliwego klucza zajmie około 1000 lat, aby zakończyć projekt.
Pytania i odpowiedzi
P: Co to jest RC5?
A: RC5 to prosty szyfr blokowy z kluczem symetrycznym, zaprojektowany przez Ronalda Rivesta w 1994 roku.
P: Co oznacza skrót "RC"?
A: "RC" to skrót od "Rivest Cipher" lub inaczej "Ron's Code".
P: Jakie są parametry RC5?
O: Parametry RC5 obejmują zmienną wielkość bloku (32, 64 lub 128 bitów), zmienną wielkość klucza (0 do 2040 bitów) i zmienną liczbę rund (0 do 255). Pierwotnie proponowano blok o wielkości 64 bitów, klucz 128-bitowy i 12 rund.
P: Jaka jest ogólna struktura algorytmu?
O: Ogólna struktura algorytmu to sieć Feistela.
P: Jak bardzo złożony jest harmonogram klucza?
O: Harmonogram klucza jest bardziej skomplikowany, rozszerzając klucz za pomocą funkcji zasadniczo jednokierunkowej z binarnymi rozszerzeniami jako źródłami liczb.
P: Dlaczego RC5 jest atrakcyjny dla kryptoanalityków?
O: Prostota algorytmu w połączeniu z nowością, jaką jest rotacja zależna od danych, uczyniła RC5 atrakcyjnym przedmiotem badań kryptoanalityków.
Przeszukaj encyklopedię