V kryptografii je RC6 bloková šifra so symetrickým kľúčom odvodená od RC5. RC6 je parametrizovaný algoritmus s premenlivou veľkosťou bloku, premenlivou veľkosťoukľúča a premenlivým počtom kôl. Skratka RC znamená "Rivestova šifra" alebo alternatívne "Ronova šifra".
V roku 1997 NIST vyhlásil súťaž na výber nástupcu štandardu DES (Data Encryption Standard), ktorý sa mal nazývať AES (Advanced Encryption Standard). RC6 bol odvodený z RC5, aby vyhovoval požiadavkám súťaže, a bol vybraný ako jeden z piatich finalistov súťaže Advanced Encryption Standard (AES), ale nebol vybraný ako štandard.
S cieľom poskytnúť rôzne úrovne bezpečnosti a účinnosti umožňuje RC6 výber veľkosti bloku: 32 bitov (len na experimentálne a hodnotiace účely), 64 bitov (na použitie ako náhrada za DES) a 128 bitov (určené pre AES). Počet kôl sa môže pohybovať od 0 do 255, zatiaľ čo veľkosť kľúča môže mať od 0 bitov do 2040 bitov.
RC6 je svojou štruktúrou veľmi podobný RC5 a možno ho považovať za prelínanie dvoch paralelných šifrovacích procesov RC5. RC6 však používa dodatočnú operáciu násobenia, ktorá sa v RC5 nevyskytuje, a použitie štyroch b/4-bitových pracovných registrov (pozri rozdelenie blokov otvoreného textu vo feistelovej šifre) namiesto dvoch b/2-bitových registrov ako v RC5 (b je veľkosť bloku). Celočíselné násobenie sa používa na zvýšenie difúzie dosiahnutej v jednom kole, takže je potrebných menej kôl a rýchlosť šifry sa môže zvýšiť.
Dôvodom použitia štyroch pracovných registrov namiesto dvoch je najmä optimalizácia na 32-bitových procesoroch. Predvolená veľkosť bloku RC5 bola 64 bitov, zatiaľ čo predvolená veľkosť bloku AES je 128 bitov. RC5 má len dva pracovné registre. Pri práci so 64-bitovými blokmi používa 32-bitové operácie a pri práci so 128-bitovými blokmi 64-bitové operácie, takže na vytvorenie architektúry AES s použitím iba 32-bitových operácií sú potrebné štyri pracovné registre.
RC6 je patentovaný algoritmus (RSA Security U. S. Patent 5,724,428 a U. S. Patent 5,835,600 ), ktorý si môže vyžadovať licenciu a licenčné poplatky za všetky produkty, ktoré používajú tento algoritmus. Navrhli ho Ron Rivest, Matt Robshaw, Ray Sidney a Yiqun Lisa Yin a bol predložený aj do projektov NESSIE a CRYPTREC.
Základné parametre a bežné varianty
- Typ: symetrická bloková šifra, parametrizovateľná (slovo/word-size, počet kôl, dĺžka kľúča).
- Štandardné nastavenie najčastejšie používané v literatúre: RC6-32/20/16 — 32-bitové slová (t. j. 128-bitový blok), 20 kôl, 16-bajtový kľúč (128 bitov).
- Veľkosti bloku: 64 a 128 bitov sú prakticky používané; 32-bitový blok je iba experimentálny.
- Počet kôl: konfigurovateľný 0–255; bežné hodnoty sú 16, 20, 24 atď. Odporúčaných 20 kôl pre RC6-32/20/16.
- Dĺžka kľúča: variabilná, až do 2040 bitov (prakticky sa najčastejšie používajú 128, 192 a 256 bitov).
Krátky popis interných operácií
RC6 pracuje so štyrmi registrami (A, B, C, D) reprezentujúcimi rozdelený blok. Hlavné operácie v každom kole sú:
- aritmetické sčítanie modulo 2^w (kde w je veľkosť slova, napr. 32 bitov),
- bitové XOR,
- rotačné posuny (rotácie) o počet bitov závislý od výrazu odvodeného z hodnoty registra,
- celočíselné násobenie (používa sa na urýchlenie difúzie — typicky operácia B*(2B+1)).
Výsledkom kombinácie násobenia a rotácií je rýchle rozptýlenie bitov vstupu do výstupu (difúzia), čo umožňuje dosiahnuť bezpečnosť pri relatívne menšom počte kôl v porovnaní s niektorými inými návrhmi bez násobenia.
Key schedule (rozšírenie kľúča)
Podobne ako RC5, RC6 tvorí zadaný kľúč pomocou rozšírenia do poľa okremných slov (S), ktoré sa následne používajú počas kôl. Tento proces zahŕňa inicializáciu premenných pomocou pevných konštánt a opakované miešanie s bajtmi kľúča, čo zabezpečuje silné rozptýlenie kľúčovej informácie do celého stavu.
Bezpečnosť a kryptanalýza
- RC6 bol intenzívne analyzovaný počas a po AES súťaži. Pre plný počet odporúčaných kôl (napr. 20 pre RC6-32/20/16) neexistujú praktické prelomenia, ktoré by ohrozovali bezpečnosť v reálnych podmienkach.
- Boli publikované útoky na znížený počet kôl (diferenciálna a lineárna kryptanalýza, špeciálne techniky ako boomerang, atď.), čo je typické pri silných moderných šifrách — analýzy ukazujú bezpečnostnú rezervu v počte odporúčaných kôl.
- Praktickú adopciu RC6 obmedzili otázky duševného vlastníctva (patenty) a konkurenčné návrhy (napr. Rijndael), ktoré poskytli podobnú alebo lepšiu výkonnosť bez známeho patentového zaťaženia.
- Pri implementácii treba dbať na ochranu proti bočným kanálom (timing, power analysis): operácie rotácií a násobenia musia byť implementované tak, aby neexistovali časové rozdiely závislé na tajnom kľúči.
Výkon a implementácia
- RC6 bol navrhnutý s ohľadom na dobrý výkon na 32-bitových procesoroch — použitie štyroch registrov umožňuje využiť 32-bitové inštrukcie pre 128-bitové bloky bez potreby 64-bitových operácií.
- Násobenie zvyšuje difúziu, čo znižuje počet kôl potrebných pre dosiahnutie určitej úrovne bezpečnosti — v mnohých softvérových implementáciách je preto RC6 konkurencieschopný z hľadiska rýchlosti.
- V hardvérovej implementácii môže násobenie zvýšiť zložitosť a plochu obvodu, zatiaľ čo niektoré návrhy bez násobenia môžu byť v špecifických prostrediach výhodnejšie.
- Pri implementácii treba dbať na správne ošetrenie konca bajtov, endianness a efektívne využitie registrov.
Licencovanie a právne aspekty
RC6 je patentovaný (U.S. Patents 5,724,428 a 5,835,600), ako je uvedené v pôvodnom texte. To znamená, že komerčné použitie mohlo byť zaťažené požiadavkami na licenciu. Z tohto dôvodu mnohé projekty a štandardy preferovali algoritmy bez takýchto obmedzení.
Kde sa RC6 používa a prečo nebol zvolený za AES
RC6 bol silným kandidátom v AES súťaži a svojim návrhom preukázal dobrú bezpečnosť a výkon. Napriek tomu nebol vybraný – za hlavnú príčinu možno považovať kombináciu právnych otázok (patenty/licencovanie), potrebu jednoduchosti, a preferenciu za návrh Rijndael (ktorý sa stal AES) kvôli jeho vynikajúcemu výkonu v rôznych prostrediach a jednoduchšiemu návrhu.
Odporúčania
- Pre nové projekty dnes odporúčame štandardné a nepatentované šifry (napr. AES/Rijndael) so známou podporou a rozsiahlymi implementáciami.
- Ak sa rozhodnete použiť RC6 (napr. z historických dôvodov alebo pre kompatibilitu), overte si otázky licencovania a venujte pozornosť implementačným detailom (konštantný čas, ochrana proti bočným kanálom, správna implementácia rotácií a násobenia).
Ak potrebujete, môžem pridať schému kôl RC6 v pseudokóde alebo porovnanie RC6 s ďalšími finalistami AES (Rijndael, Serpent, Twofish, MARS).