RC6: блоков симетричен шифър (AES‑финалист) — дефиниция и характеристики
RC6 — блоков симетричен шифър и AES‑финалист: гъвкав размер на блок/ключ, бързо шифроване чрез умножение и оптимизация за 32‑битови процесори за висока сигурност и дифузия.
В криптографията 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 (избран в конкурса) остава предпочитаният избор поради по-широкото стандартизиране, хардуерна подкрепа и обширен анализ;
- преди интеграция в продукт е важно да проверите лицензионния статус и наличието на актуални криптографски оценки.
Въпроси и отговори
В: Какво представлява RC6?
О: RC6 е блоков шифър със симетричен ключ, производен на RC5. Това е параметризиран алгоритъм с променлив размер на блока, размер на ключа и брой рундове.
В: Кой е създал RC6?
О: RC6 е проектиран от Рон Ривест, Мат Робшоу, Рей Сидни и Икун Лиза Ин.
В: Какви са размерите на блоковете по подразбиране за RC5 и AES?
О: Размерът на блока по подразбиране на RC5 е 64 бита, а размерът на блока по подразбиране на AES е 128 бита.
В: Каква е структурата на RC6 в сравнение с тази на RC5?
О: Структурата на RC6 е много подобна на тази на RC5, но използва допълнителна операция за умножение, която не присъства в последния, както и четири b/4-битови работни регистъра вместо два b/2-битови регистъра.
В: Защо се използват четири работни регистъра вместо два, за да се изгради архитектурата на AES, използваща само 32-битови операции?
О: Умножаването на цели числа се използва, за да се увеличи дифузията, постигната за един рунд, така че са необходими по-малко рундове и може да се увеличи скоростта. Четири работни регистъра са необходими, защото се използват 32-битови операции при работа с 64-битови блокове и 64-битови операции при работа със 128-битови блокове.
Въпрос: Изисква ли се лицензиране или плащане на авторски права за продукти, използващи алгоритъма?
О: Да, тъй като това е патентован алгоритъм (от RSA Security, патент на САЩ 5,724,428 и патент на САЩ 5,835,600 ), може да се изисква лицензиране и плащане на лицензионни такси за всички продукти, които използват алгоритъма.
обискирам