RC5 algoritmus: Rivest paraméterezhető szimmetrikus blokktitkosítás
RC5 algoritmus — Rivest által tervezett paraméterezhető szimmetrikus blokktitkosítás: rugalmas blokkméret, kulcs és körszám, adatfüggő forgatások, egyszerű implementáció a kriptográfiában.
A kriptográfiában az RC5 egy egyszerű szimmetrikus kulcsú blokkos titkosítás. Az 1994-ben Ronald Rivest által tervezett RC5 egy paraméterezett algoritmus, amely változó blokkmérettel, változó kulcsmérettel és változó számú körrel rendelkezik. Az "RC" a "Rivest Cipher", vagy más néven "Ron kódja" rövidítése.
A különböző biztonsági és hatékonysági szintek biztosítása érdekében az RC5 változó blokkmérettel (32, 64 vagy 128 bit), változó kulcsmérettel (0-2040 bit) és változó körök számával (0-255) rendelkezik. Az eredetileg javasolt paraméterek 64 bites blokkméret, 128 bites kulcs és 12 forduló volt.
Általános felépítés és működés
Az RC5 egyik fő jellemzője az adatfüggő forgatások használata; az RC5 egyik célja a blokkos kódolás műveleteinek mint kriptográfiai primitívnek a tanulmányozása és értékelése volt. Az RC5 számos moduláris összeadásból és eXclusive OR (Xor)-ból is áll. Az algoritmus általános szerkezete egy Feistel-szerű hálózat. A titkosítási és visszafejtési rutinok néhány sornyi kódban megadhatók. A kulcs ütemezése azonban bonyolultabb, a kulcsot egy lényegében egyirányú függvény segítségével bővíti, az e és az aranymetszés bináris kiterjesztését is felhasználva, mint a "semmit a kabátujjamban számok" forrásait. Az algoritmus egyszerűsége az adatfüggő forgatások újdonságával együtt vonzóvá tette az RC5-öt a kriptoanalitikusok számára.
Paraméterek és hatásuk
- Szóbőség (w): az RC5 belső szavának mérete (például 16, 32 vagy 64 bit). A blokkméret kétszerese a szóbőségnek: 2w (például 32, 64 vagy 128 bit).
- Körök száma (r): a titkosítás iterációinak száma; javasolt érték az eredeti specifikációban r = 12 (w = 32) volt, de ez növelhető a biztonság érdekében.
- Kulcshossz (b): a felhasználó által választott titkos kulcs hossza bájtokban, elméletileg 0-tól akár több száz bitig (a gyakorlatban korlátozott). Hosszabb kulcs nagyobb ellenállást ad a feltöréssel szemben.
Titkosítási és visszafejtési lépések (összefoglalás)
Egyszerűsítve a titkosítás menete (w bites szóokra bontva, A és B a blokk két fele):
- Inicializálás: A = A + S0; B = B + S1 (S tömb a kulcsütemezés eredménye)
- Minden kör i = 1..r: A = ((A xor B) <<< B) + S[2*i]; B = ((B xor A) <<< A) + S[2*i+1].
A visszafejtés a fenti lépések fordított sorrendben, fordított műveletekkel történik: először kivonás S-ből, majd jobbra való elforgatás és xor az ellenkező sorrendben.
Kulcsütemezés (Key schedule)
Az RC5 kulcsütemezése a titkosító kulcsból bővíti ki a S nevű segédtömböt, amely 2(r+1) w-bites szót tartalmaz. Az ütemezés fő lépései:
- A felhasználói kulcs bájtjai átrendeződnek és L tömbbé (w-bites szavak) alakítódnak.
- Az S tömb inicializálása két konstanssal, általában P és Q, amelyek az e és az aranymetszés irracionális számok bináris kiterjesztéséből származó konstansok (a konkrét bitfüggő konstansok a w-től függnek).
- Ezután S és L keverése következik több iteráción keresztül (a specifikációban javasolt 3 * max(t, c) lépés, ahol t = 2(r+1), c = kulcstömb hossza), amely során moduláris összeadások és adatfüggő elforgatások történnek. Ennek az a célja, hogy a kulcs minden bitje szétszóródjon az S tömbbe.
Előnyök és hátrányok
- Előnyök:
- Paraméterezhetőség: rugalmasan választhatók w, r és b értékei a teljesítmény/biztonság kompromisszumának megfelelően.
- Egyszerű szerkezet és rövid implementációs kód lehetséges.
- Adatfüggő forgatások miatt a klasszikus lineáris/differenciális kriptoanalízis nehezebb lehet.
- Gyors futás a processzoroknál, ahol natív forgató (rotate) utasítással rendelkezünk.
- Hátrányok:
- Néhány paraméterkombinációnál (különösen kevesebb kör esetén) léteznek hatékony kriptoanalitikus módszerek, ezért fontos megfelelő paraméterek használata.
- Az adatfüggő műveletek óvatos implementációt igényelnek oldalsáv-kiszivárgások (side-channel) elkerülésére, különösen beágyazott rendszerekben.
- Korábbi időszakban az RC5 az RSA Data Security által kezelt jogi és szabadalmi kérdésekhez kötődött, ami bizonyos felhasználási korlátokkal járt (a szabadalmi helyzet idővel változott).
Biztonság és alkalmazások
Az RC5 biztonsága nagymértékben függ a kiválasztott paraméterektől. Általános irányelv, hogy növelve a körök számát és a kulcshosszt jelentősen nő a rezisztencia a nyerserővel (brute-force) és egyéb kriptoanalitikus támadásokkal szemben. Több kutatás foglalkozott az RC5 különböző, csökkentett körszámú változataival, és kimutatták, hogy egyes redukált változatok sebezhetők speciális támadásokkal szemben; ugyanakkor a megadott ajánlott paraméterek mellett az RC5 általánosan biztonságosnak tekinthető a széles körű alkalmazásokban.
Az RC5 inspirálta a későbbi algoritmusokat is (például az RC6, amelyet ugyanaz a tervezőcsapat javasolt és amely AES-jelölt volt). RC5 és leszármazottai főként szoftveres környezetben, illetve bizonyos protokollok belső blokkjaként kerültek alkalmazásra.
Gyakorlati megfontolások
Implementáláskor figyelembe veendő dolgok:
- Válasszunk elegendő számú kört és megfelelő kulcshosszt az elvárt biztonsági szinthez.
- Kerüljük a gyenge, rövid kulcsokat vagy alacsony körszámot produkáló konfigurációkat.
- Ügyeljünk arra, hogy az elforgatások és memóriahozzáférések oldalsáv-információt (időzítés, energiafogyasztás) ne szivárogtassanak.
- Ha hosszú távú kompatibilitás és széles körben elfogadott szabvány a cél, érdemes mérlegelni modernebb, szélesebb körben auditált algoritmusokat is.
Összefoglalva: az RC5 egy rugalmas, jól dokumentált és egyszerűen implementálható blokk-cipher, amely az adatfüggő forgatások alkalmazásával és parametrizálhatóságával fontos szerepet játszott a modern kriptográfia fejlődésében. Megfelelő paraméterek és gondos implementáció mellett máig használható megoldást kínál, bár a konkrét felhasználási cél és a mai biztonsági követelmények határozzák meg, hogy ez a legjobb választás-e egy adott alkalmazásban.
Cryptanalysis
A 12 körös RC5 (64 bites blokkokkal) érzékeny a 244 kiválasztott egyszerű szövegekből álló differenciális támadásra. A 18-20 forduló elegendő védelmet jelent.
Az RSA Security, amely szabadalommal rendelkezik az algoritmusra, egy sor 10 000 dolláros díjat ajánlott fel az RC5-tel titkosított titkosított szövegek feltörésére, de ezek a versenyek 2007 májusától megszűntek. Számos ilyen kihívást a Distributed.net által szervezett elosztott számítástechnika segítségével oldottak meg. A Distributed.net feltörte az 56 és 64 bites kulcsokkal titkosított RC5-ös üzeneteket, és most egy 72 bites kulcs feltörésén dolgozik. A jelenlegi ütemben (2008. november 12-én) körülbelül 1000 évbe fog telni, amíg minden lehetséges kulcsot kipróbálnak a projekt befejezéséhez.
Kérdések és válaszok
K: Mi az RC5?
V: Az RC5 egy egyszerű szimmetrikus kulcsú blokkos titkosítás, amelyet Ronald Rivest tervezett 1994-ben.
K: Mit jelent az "RC" szó?
V: Az "RC" a "Rivest Cipher", vagy más néven "Ron kódja" rövidítése.
K: Mik az RC5 paraméterei?
V: Az RC5 paraméterei közé tartozik a változó blokkméret (32, 64 vagy 128 bit), a változó kulcsméret (0-2040 bit) és a változó körök száma (0-255). Az eredeti javasolt választás 64 bites blokkméret, 128 bites kulcs és 12 forduló volt.
K: Mi az algoritmus általános felépítése?
V: Az algoritmus általános felépítése egy Feistel-szerű hálózat.
K: Mennyire összetett a kulcs ütemezése?
V: A kulcs ütemezése összetettebb, a kulcsot egy lényegében egyirányú függvény segítségével bővíti, bináris bővítésekkel, mint számforrásokkal.
K: Miért volt az RC5 vonzó a kriptoanalitikusok számára?
V: Az algoritmus egyszerűsége az adatfüggő forgatások újdonságával együtt vonzóvá tette az RC5-öt a kriptoanalitikusok számára.
Keres