RC6 – szimmetrikus blokkos titkosítás: definíció, működés és AES-kapcsolat
Ismertető RC6-ról: szimmetrikus blokkos titkosítás, működés, AES-kapcsolat, paraméterek, teljesítmény és biztonság — részletes, technikai áttekintés.
A kriptográfiában a RC6 egy olyan szimmetrikus kulcsú blokkos titkosítás, amely az RC5-ből származik, és paraméterezhető felépítésével többféle alkalmazási feltételhez igazítható. Az RC6 tervezésénél a cél az volt, hogy erős biztonságot kínáljon hatékony szoftveres végrehajtás mellett, különösen 32 bites CPU-kon.
Történeti háttér és kapcsolat az AES-pályázathoz
1997-ben a NIST versenyt hirdetett a Data Encryption Standard (DES) utódjának kiválasztására; ez a folyamat végül az Advanced Encryption Standard (AES) szabvány kialakulásához vezetett. Az RC6-ot az RC5-ből fejlesztették tovább, hogy megfeleljen a verseny követelményeinek, és az RC6 bekerült az AES-pályázat öt döntőse közé. Végül azonban nem választották ki nyertesként; a szabvánnyá tett algoritmus a Rijndael lett.
Paraméterek és rugalmasság
Az RC6 paraméterezhető algoritmus: megadható a blokkméret, a fordulók száma és a kulcsméret. Gyakori megfogalmazásban RC6-w/r/b formát használatos, ahol w a szóhossz (bitben), r a fordulók száma, b pedig a kulcs bájtban. A tervezők különböző beállításokra gondoltak:
- blokkméretek: 32 bit (kísérleti célokra), 64 bit (DES helyettesítésére) és 128 bit (az AES-hez igazodva);
- a fordulók száma elméletben 0 és 255 között választható;
- a kulcsok mérete rugalmas: elméleti határként 0–2040 bit között szerepelhet, a gyakorlatban azonban tipikus kulcsméret a 128, 192 vagy 256 bit.
Felépítés és működés — miért különbözik az RC5-től?
Az RC6 felépítése erősen hasonlít az RC5-re, de több fontos eltérést tartalmaz:
- Az RC6 egyesíti gyakorlatilag két párhuzamos RC5-szerű folyamatot, de négy munkaregisztert (A, B, C, D) használ, szemben az RC5 két regiszterével. Ennek eredményeként egy RC6-blokk logikailag négy w-bit szó (összesen 4·w bit) hosszú.
- Beépít egy extra egész szám szerinti szorzási műveletet minden fordulóban: ez a művelet növeli a körönként elért diffúzió-t, így rövidebb körszám mellett is gyors és jól keverő algoritmust tesz lehetővé.
- A tervezés kifejezetten a 32 bites CPU-kon való optimalizálást célozta: a négy munkaregiszter és a szóalapú műveletek (összeadás, XOR, körbeforgatás, szorzás) arra szolgálnak, hogy hatékony implementáció érhető legyen 32 bites utasításkészletű processzorokon.
Általános működési elv (összefoglaló)
Részletes specifikáció nélkül is megérthető az RC6 alapvető működése: a bemeneti blokkot négy szóvá bontja, egy kulcskibővítési (key schedule) lépés során a titkos kulcs alapján előállít több, a fordulók során használt kulcsszót, majd minden fordulóban kölcsönhatásba lépteti a négy munkaregisztert. A körönkénti lépések jellemző műveletei:
- összeadás és kivonás (word-mértékű moduláris összeadás);
- bitwise XOR (logikai kizáró vagy);
- kulcs-függő körbeforgatások (rotate): a forgatás mértéke gyakran függ egy másik regiszter aktuális értékétől;
- egész szám szerinti szorzás, amely növeli a nemlinearitást és a diffúziót.
A kulcskibővítés egy külön adatstruktúrát (S tömböt) állít elő, amely 2r+4 szónyi kulcsszót tárol, és ezek adják a fordulókon belüli konstans szerű beavatkozásokat. A részletes képletek és paraméterek megtalálhatók az RC6 specifikációjában a pontos megvalósításhoz vagy kriptoelemzéshez.
Biztonság és kriptoanalízis
Az RC6 kialakítása több beépített mechanizmussal igyekszik elérni a kívánt biztonsági szintet (pl. kulcsfüggő forgatások, szorzások). Az AES-verseny során az RC6-ról általánosságban elmondták, hogy jó kriptográfiai ellenálló képességet mutat a standard elemzési módszerekkel szemben. Ugyanakkor a szakirodalomban találhatók olyan kutatások, amelyek redukált fordulós változatokra hatékonyabb differenciális vagy lineáris eljárásokat mutattak ki — ezek azonban nem vezettek gyakorlati, teljes fordulós töréshez a javasolt paraméterek mellett.
Szabadalmi kérdések és licenc
Az RC6 nem volt szabadon felhasználható öröklött nyílt algoritmus: az algoritmust szabadalmaztatták, és az RSA Security-hez kapcsolódó amerikai szabadalmak számai a U.S. Patent 5,724,428 és U. S. Patent 5,835,600. Emiatt az RC6 használata kereskedelmi termékekben licenc- és jogdíjfizetési kötelezettséggel járhatott, ami hozzájárult ahhoz, hogy a szabványosítás terén végül a Rijndael (AES) került előnybe, mivel az egyszerű és — a versenyfeltételek szerint — szabadabban használható megoldást kínált.
Összehasonlítás az AES-szel és az RC5-tel
- Az RC6 és az RC5 közti fő különbség a regiszterszám és az alkalmazott műveletek (RC6-nál a szorzás szerepe) — RC6 gyakorlatilag négy szóos blokkmodellre terjeszti ki az RC5 elveit.
- Az RC6 több blokkméretet támogat, míg az AES specifikusan 128 bites blokkot használ. Az AES végül a szabvány lett, mivel erős biztonsági tulajdonságai mellett jó teljesítményt és egyszerű implementálhatóságot kínált, továbbá a pályázat feltételeihez illeszkedő jogi garanciák voltak rá.
Implementáció és alkalmazások
Bár az RC6 jó szoftveres teljesítményt mutatott, különösen 32 bites processzorokon, elterjedtségét és ipari alkalmazását a szabadalmi kérdések és az AES kiválasztása korlátozta. Az RC6-ot továbbra is tanulmányozták a kriptográfiai kutatásokban, és több kutatási implementáció, referenciakód és elemzés jelent meg róla. A NESSIE és a CRYPTREC projektekhez is benyújtották az algoritmust, ami jelzi a szakmai érdeklődést az RC6 iránt.
Összefoglalás
Az RC6 egy paraméterezhető, szóalapú blokkos titkosítási konstrukció, amely az RC5 elveire épít, de további műveleteket (például szorzást) alkalmaz az erősebb diffúzió és hatékonyabb keverés érdekében. Bár az RC6 bejutott az AES-pályázat döntősei közé, végül nem lett szabványosított, részben jogi (szabadalmi) korlátok és a versenytársak előnyei miatt. A mai kriptográfiai gyakorlatban az AES-szabvány dominál, de az RC6 fontos szerepet játszott az algoritmusok tervezésének és értékelésének történetében.
Kérdések és válaszok
K: Mi az RC6?
V: Az RC6 egy szimmetrikus kulcsú blokkos titkosító, amely az RC5-ből származik. Ez egy paraméterezhető algoritmus, amelynek blokkmérete, kulcsmérete és fordulóinak száma változtatható.
K: Ki tervezte az RC6-ot?
V: Az RC6-ot Ron Rivest, Matt Robshaw, Ray Sidney és Yiqun Lisa Yin tervezte.
K: Mi az RC5 és az AES alapértelmezett blokkmérete?
V: Az RC5 alapértelmezett blokkmérete 64 bit, míg az AES alapértelmezett blokkmérete 128 bit.
K: Hogyan viszonyul az RC6 szerkezete az RC5-éhez?
V: Az RC6 felépítése nagyon hasonlít az RC5-éhoz, de ez utóbbiban nem szereplő extra szorzási műveletet használ, valamint két b/2 bites regiszter helyett négy b/4 bites munkaregisztert.
K: Miért használnak négy munkaregisztert kettő helyett, hogy az AES architektúrát csak 32 bites műveletekkel lehessen felépíteni?
V: Az egész számok szorzását a körönként elért diffúzió növelésére használják, így kevesebb körre van szükség, és növelhető a sebesség. Négy munkaregiszterre azért van szükség, mert a 64 bites blokkok kezelése esetén 32 bites, a 128 bites blokkok kezelése esetén pedig 64 bites műveleteket használunk.
K: Szükség van-e valamilyen licenc- vagy jogdíjfizetésre az algoritmust használó termékek esetében?
V: Igen, mivel ez egy szabadalmaztatott és szabadalmaztatott algoritmus (az RSA Security U.S. Patent 5,724,428 és U.S. Patent 5,835,600 ), licenc- és jogdíjfizetésre lehet szükség az algoritmust használó termékek esetében.
Keres