RC6: Symetrická bloková šifra a AES-finalista — definícia a parametre
RC6 — symetrická bloková šifra a AES-finalista: definícia, parametre, variabilná veľkosť bloku/kľúča a kôl, bezpečnosť a optimalizovaná rýchlosť.
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).
Otázky a odpovede
Otázka: Čo je RC6?
Odpoveď: RC6 je bloková šifra so symetrickým kľúčom odvodená od RC5. Je to parametrizovaný algoritmus s premenlivou veľkosťou bloku, veľkosťou kľúča a počtom kôl.
Otázka: Kto navrhol RC6?
Odpoveď: RC6 navrhli Ron Rivest, Matt Robshaw, Ray Sidney a Yiqun Lisa Yin.
Otázka: Aké sú predvolené veľkosti blokov pre RC5 a AES?
Odpoveď: Predvolená veľkosť bloku RC5 je 64 bitov, zatiaľ čo predvolená veľkosť bloku AES je 128 bitov.
Otázka: Aká je štruktúra RC6 v porovnaní so štruktúrou RC5?
Odpoveď: Štruktúra RC6 je veľmi podobná štruktúre RC5, ale používa dodatočnú operáciu násobenia, ktorá sa v RC5 nevyskytuje, ako aj štyri b/4-bitové pracovné registre namiesto dvoch b/2-bitových registrov.
Otázka: Prečo sa používajú štyri pracovné registre namiesto dvoch, aby sa architektúra AES vytvorila s použitím iba 32-bitových operácií?
Odpoveď: Celočíselné násobenie sa používa na zvýšenie difúzie dosiahnutej na jedno kolo, takže je potrebných menej kôl a môže sa zvýšiť rýchlosť. Štyri pracovné registre sú potrebné, pretože pri práci so 64-bitovými blokmi sa používajú 32-bitové operácie a pri práci so 128-bitovými blokmi 64-bitové operácie.
Otázka: Vyžadujú sa nejaké licencie alebo licenčné poplatky za produkty, ktoré používajú tento algoritmus?
Odpoveď: Áno, keďže ide o patentovaný algoritmus (patentom RSA Security U.S. 5 724 428 a patentom U.S. 5 835 600 ), môžu sa vyžadovať licencie a licenčné poplatky za všetky produkty, ktoré používajú tento algoritmus.
Prehľadať