В криптографията RC6 е блоков шифър със симетричен ключ, произлязъл от RC5. RC6 е параметризиран алгоритъм с променлив размер на блока, променлив размер на ключа и променлив брой рундове. "RC" е съкращение от „Шифър на Ривест“ или алтернативно „Шифър на Рон“.
През 1997 г. NIST обяви конкурс за избор на наследник на стандарта за шифроване на данни (DES), известен като Advanced Encryption Standard (AES). RC6 е разработен от RC5 специално, за да отговори на изискванията на конкурса, и беше избран за един от петте финалисти на конкурса за Advanced Encryption Standard, но в крайна сметка не беше приет за официален стандарт.
Дизайн и основни операции
RC6 запазва много от принципите на RC5, но въвежда няколко важни модификации. Структурата е близка до паралелно изпълнение на два RC5-подобни процеса, но има и специфични промени:
- използване на четири работни регистъра с по b/4 бита всеки (вместо два с b/2 бита в RC5), което позволява ефективна реализация на 128‑битови блокове на 32‑битови процесори;
- включване на операция за умножение върху цели числа, която не присъства в RC5 — тя увеличава дифузията за един рунд и така намалява нуждата от голям брой рундове;
- основни примитиви: побитово XOR, аритметични операции (сложение по модул 2^w), циклично завъртане (data-dependent rotations) и умножение;
- подобно на RC5, RC6 използва data-dependent rotations (ротации, чийто брой зависи от текущите данни), но ротациите тук са подпомогнати от умножение, което усилва дифузията.
Параметри и варианти
RC6 е гъвкав по отношение на параметрите. Типичните параметри се обозначават като RC6-w/r/b, където:
- w = размер на думата (в бита); стойности за размера на блока могат да бъдат 32 бита (само за експериментиране), 64 бита (за съвместимост със заместване на DES) и 128 бита (предназначен за AES‑подобни приложения);
- r = брой рундове (възможно е от 0 до 255);
- b = дължина на ключа в байтове (ключовете могат да варират от 0 до 2040 бита, т.е. до 255 байта).
В подадената кандидатура за AES авторите препоръчаха конкретна инстанция RC6-32/20/16 (w=32, r=20, b=16 — т.е. 128‑битов блок, 20 рунда и 128‑битов ключ). Подобни параметри са подходящи и за ключове с дължина 128/192/256 бита (b=16/24/32).
Ключово разпределение и структура на рундовете
Ключовото разпределение (key schedule) на RC6 разширява входящия ключ в масив S от 2r+4 думови стойности. Всяка рунда използва комбинация от добавяне, умножение, XOR и data-dependent ротации, при които стойностите за ротация сами зависят от резултатите на предходните операции. Това прави алгоритъма сравнително прост за реализиране в софтуер и позволява бърза обработка на 32‑битови платформи.
Производителност
- RC6 е оптимизиран за софтуерни реализации на 32‑битови процесори чрез използване на четири 32‑битови работни регистъра;
- умножението като примитив повишава дифузията, което често позволява да се постигне желаното ниво на сигурност с по-малко рундове и съответно с по-добра скорост;
- реалните показатели зависят от платформата, компилатора и оптимизациите — в някои среди RC6 е много бърз, в други AES (с хардуерна подкрепа) може да превъзхожда.
Сигурност и криптоанализ
RC6 е проектиран да устои на стандартните апарати за криптоанализ (диференциален и линеен анализ и техните разновидности). За алгоритъма са публикувани множество изследвания и атаки върху намален брой рундове; някои свързани‑ключови и релативни атаки също са изследвани при модифицирани/съкратени варианти. За класическите препоръчителни параметри (напр. RC6-32/20/16) към момента няма широко признати практически атаки, които да компрометират целия алгоритъм в реални условия.
Все пак, както при всеки криптографски алгоритъм, препоръчва се използване на добре анализирани параметри и следене на съвременните изследвания — атаките върху намалени варианти показват потенциални слабости при по-малък брой рундове или в специфични модели на атака (например свързани ключове).
Лицензиране и патенти
RC6 е бил патентован (патенти на RSA Security: US 5,724,428 и US 5,835,600). Поради това внедряването и използването на RC6 може да е изисквало лицензиране и плащане на лицензионни такси в миналото. Статутът на патентите и лицензирането може да се е променил през времето; преди употреба в комерсиални продукти е препоръчително да се провери текущото правно положение.
История и стандартизация
Алгоритъмът е разработен от Рон Ривест, Мат Робшоу, Рей Сидни и Икун Лиза Ин. Освен участието в конкурса за AES, RC6 бе представен и в проекти като NESSIE и CRYPTREC за оценка на криптографски примитиви. Заради наличието на други кандидати и последващи оценки, RC6 не беше избран за AES, но остава интересен пример за дизайн с data‑dependent ротации и умножение в блокови шифри.
Кога да изберете RC6
- ако търсите гъвкав алгоритъм с възможност за различни комбинации на блок/ключ/рундове и добра софтуерна производителност на 32‑битови платформи, RC6 е вариант за разглеждане;
- за нови системи и особено при изискване за дългосрочна поддръжка и широко приет стандарт, AES (избран в конкурса) остава предпочитаният избор поради по-широкото стандартизиране, хардуерна подкрепа и обширен анализ;
- преди интеграция в продукт е важно да проверите лицензионния статус и наличието на актуални криптографски оценки.