В криптографията RC5 е прост блоков шифър със симетричен ключ, разработен от Роналд Ривест през 1994 г., като експериментален и параметризиран алгоритъм. RC5 има променлив размер на блока, променлив размер на ключа и променлив брой рундове; "RC" означава "Шифър на Ривест" (или алтернативно "Шифър на Рон").
Параметри и означения
RC5 е проектиран да бъде гъвкав: основните параметри са
- w — размер на думата в бита (обикновено 16, 32 или 64). Блокът е от 2*w бита (две думи).
- r — брой рундове (0–255).
- b — дължина на ключа в байтове (0–255 байта, което съответства на 0–2040 бита).
Често се използва нотация RC5-w/r/b, например RC5-32/12/16 (w=32, r=12, b=16 байта = 128 бита ключ). В предложението на Ривест типичните препоръчани параметри бяха блок от 64 бита (w=32), 128‑битов ключ и 12 рунда.
Основни операции и структура
RC5 използва още няколко прости, но мощни операции:
- Сумиране по модул 2^w (модулни добавки).
- XOR (изключващо ИЛИ).
- Ротации (циркулярни завъртания) с броя битове, задаван от стойността на друга дума — т.нар. data-dependent rotations).
Комбинацията от тези операции дава добра дифузия и нелинейност, а изчислителната простота прави RC5 бърз за софтуерна реализация. Структурно алгоритъмът напомня мрежа на Фейстел, но използва двойка думи (A и B) и операции, зависещи от данните в тези думи.
Кратко описание на криптирането
След разширяване на ключа се извършва следното (условно представяне за w-битови думи):
- Входният блок се разделя на две думи A и B.
- Преди рундовете: A = A + S[0]; B = B + S[1] (суми по модул 2^w).
- За i = 1..r: A = ((A XOR B) <<< B) + S[2*i]; B = ((B XOR A) <<< A) + S[2*i+1]; (където <<< означава лява ротация с количество битове, равно на стойността на другата дума, и всички сборове са модул 2^w)
- Декриптиране се извършва чрез обратните операции (ротации надясно и изваждания), използвайки същия масив S в обратен ред.
Схема за разширяване на ключа
Графикът на ключа (key schedule) е по-сложен от криптирането: първо входният ключ (b байта) се преобразува в масив от w-битови думи; след това се инициализира масив S с 2*r+2 думи, използвайки начални константи Pw и Qw, извлечени от двоичните разширения на e и златното сечение (използвани като "нищо в ръкава ми" числа). Тези начални стойности се смесват с думите на ключа чрез многократно сумиране и ротации, за да се получи финалният масив S, използван при криптиране.
Сигурност и криптоанализ
RC5 привлече вниманието на криптоаналитиците основно заради нетривиалните си операции с ротации, зависещи от данните. Против това бяха разработени различни техники на анализ, включително диференциален криптоанализ и подходи, които използват свойствата на ротациите. Някои от тези атаки са ефективни срещу варианти с намален брой рундове, но при препоръчваните параметри (напр. RC5-32/12/16) не са известни практически, широко приложими атаки, които да компрометират пълната ключова дължина.
Важно е да се отбележи, че какъвто и да е избор на параметри, сигурността зависи от:
- броя рундове;
- дължината на ключа;
- възможните известни резултати от криптоаналитични изследвания за конкретната конфигурация.
Производителност и приложимост
RC5 е лесен за имплементация и често много бърз на платформи с ефективни инструкции за ротация (особено 32-битови и 64-битови процесори). Плюсове и минуси:
- Плюсове: простота на основните операции, гъвкавост на параметрите, добри резултати при софтуерни реализации.
- Минуси: сложност в разширяването на ключа (в сравнение с някои други алгоритми), както и спецификата на ротациите, които налагат специално внимание при криптоанализ и при някои хардуерни реализации.
Употреба и наследство
RC5 има историческо значение като пример за дизайн, в който целта бе експериментално да се изследват ефектите на data-dependent ротациите и параметризацията на шифъра. От него произлязоха и други идеи и алгоритми (напр. RC6, предложен като кандидат за AES). RC5 не придоби същото ниво на стандартизация и разпространение като някои модерни алгоритми (напр. AES), но остава важна стъпка в развитието на блоковите шифри.
Кратко резюме
- Автор: Роналд Ривест, 1994 г.
- Тип: блоков шифър със симетричен ключ, параметризиран.
- Параметри: w (дума), r (рундове), b (дължина на ключа).
- Основни операции: модулни добавки, XOR, data-dependent ротации.
- Ключова характеристика: използване на ротации, зависещи от данните, и "нищо в ръкава ми" константи от разширенията на e и златното сечение.