V kriptografiji je RC2 blokovna šifra s simetričnim ključem, ki jo je zasnoval Ronald Rivest leta 1987. Kratica "RC" običajno pomeni "Rivest Cipher" oziroma v slovenščini pogosto "Rivestova šifra" ali preprosto "Ronova šifra".
Osnovne značilnosti
RC2 deluje na blokih velikosti 64 bitov in uporablja spremenljivo velikost ključa (vhodni ključ je lahko dolg od 1 do 128 bajtov, torej do 1024 bitov). V praktičnih, izvoznih različicah je bila pogosto omejena na učinkovito dolžino 40 bitov. Algoritem je standardiziran v RFC 2268 in izvaja skupaj 18 krogov (rounds).
Struktura in delovanje
RC2 je zgrajena kot Feistelova struktura (Feistelova mreža) z nekaj posebnostmi; v literaturi se opisuje tudi kot source‑heavy Feistelova struktura. Izvedba krogov je razdeljena na dve osnovni vrsti:
- mixing rounds (mešalni krogi) — v teh krogih se izvaja več zaporednih transformacij tipa mix‑up, pri katerih se kombinirajo delni zamenjave, rotacije in aritmetične operacije; vsak obhod koristi besedo razširjenega ključa (16‑bitno vrednost) kot dodatek;
- mashing rounds (mash‑krogi) — v teh krogih se dodatno vmešajo vrednosti iz razširjenega ključa v stanje šifre, kar poveča zapletenost odvisnosti šifriranega besedila od ključa.
Celotnih 18 krogov se izvede v naslednjem zaporedju:
- izvedite 5 mixing rounds (mešalnih krogov);
- izvedite 1 mashing round (mash‑krog);
- izvedite 6 mixing rounds;
- izvedite 1 mashing round;
- izvedite 5 mixing rounds.
Razširitev ključa (key schedule)
RC2 uporablja algoritem za razširitev vhodnega ključa v razširjen ključ, sestavljen iz 64 16‑bitnih besed (K[0] … K[63]). Vhodni ključ (niz bajtov) se najprej razširi in permutira z uporabo fiksne tabele, nato pa je po potrebi skrajšan ali prilagojen glede na zahtevano učinkovito dolžino ključa (parameter, ki se je uporabljal za izvozno omejevanje moči šifre). Ta razširjeni ključ se med mešalnimi in mash krogi uporablja po besedah, kot jih določajo transformacije (RFC 2268).
Varnost in napadi
RC2 ni bil zasnovan z današnjimi zahtevami za odpornost; zlasti različice z omejeno učinkovito dolžino ključa (npr. 40 bitov) so ranljive za napade z grobo silo. Dodatno, Kelsey in sodelavci (1997) sta pokazala sorodno‑ključni (related‑key) napad, ki zahteva približno 2^34 izbranih tekstov (chosen plaintexts), kar pomembno zmanjša varnost pri določenih scenarijih uporabe.
Zaradi teh in drugih naprednih tehnik analize šifriranja je RC2 danes v večini varnostnih priporočil ocenjen kot zastarela izbira; za nove projekte se priporoča uporaba modernejših, standardiziranih algoritmov, kot je AES.
Zgodovina in uporaba
Razvoj RC2 je sponzoriral Lotus z namenom, da bi lahko v izdelkih (npr. Lotus Notes) uporabljali šifriranje, primerno za izvoz. Pri pripravi različic za izvoz je NSA predlagala spremembe v algoritmu, ki jih je Ronald Rivest vključil; po nadaljnjih pogajanjih je bila šifra leta 1989 odobrena za izvoz. Poleg RC4 je bila tudi RC2 pogosto uporabljena z 40‑bitnim ključem v okviru ameriških predpisov o izvozu kriptografije.
Podrobnosti izvorne specifikacije RC2 so bile sprva last podjetja RSA Security in niso bile javno objavljene; 29. januarja 1996 pa je bila izvorna koda algoritma RC2 anonimno objavljena na forumu Usenet (skupina sci.crypt). Podobno se je zgodilo tudi pri RC4. Ni popolnoma jasno, ali je bil objavitelj vire prej pridobil odlastno ali pa je bila koda vmes rekonstruirana.
Priporočila
V sodobnih implementacijah in protokolih se uporaba RC2 ne priporoča. Če prenašate ali posodabljate stare sisteme, ki še uporabljajo RC2 (ali druge stare šifre z malimi ključnimi dolžinami), je priporočljivo preiti na sodobne, preizkušene algoritme in protokole (npr. AES v ustreznih načinih delovanja) ter zagotoviti ustrezno upravljanje ključev in parametrov.

