Kriptogrāfijā RC2 ir simetriskās atslēgas bloka šifrs, ko 1987. gadā izstrādāja Ronalds Rivests. "RC" apzīmē "Rivesta šifrs" vai arī "Rona kods". RC2 darbojas ar 64 bitu blokiem un maināma lieluma atslēgām, izmantojot kopumā 18 raundus.
Struktūra un darbības princips
Bloks tiek sadalīts četrās 16 bitu daļās (parasti apzīmētas kā R0…R3). RC2 ir veidots kā avota smagais Feistel tipa tīkls ar divu veidu raundiem:
- 16 sajaukšanas raundi (mixing rounds), kuros tiek lietotas modulārā saskaitīšana, bitu operācijas (AND, NOT), XOR un cikliskas rotācijas;
- 2 mashing raundi, kuros vārdiem tiek pievienoti atslēgas paplašināšanas tabulas elementi, kuru izvēle ir atkarīga no datiem.
Raundu secība kopā veido 18 kārtas: vispirms 5 sajaukšanas raundi, tad 1 mashing, pēc tam 6 sajaukšanas, 1 mashing un visbeidzot 5 sajaukšanas raundi. Šī secība nodrošina virknes un datu atkarīgu atslēgas izmantošanu, kas palielina šifra difūziju un sajaukumu.
Atslēgas paplašināšana
RC2 izmanto atsevišķu atslēgas paplašināšanas algoritmu, kurš no ievades atslēgas (varas mainīga garuma) izveido paplašinātu atslēgas tabulu, kas sastāv no 64 16 bitu vārdiem (kopā 128 baitu). Šī paplašinātā atslēga tiek izmantota raundu laikā — sajaukšanas raundos pievieno pa vienam no šiem 16 bitu vārdiem, bet mashing raundos atslēgas vārdi tiek indeksēti, izmantojot daļu no pašreizējiem datiem (skat. RFC 2268).
Eksporta ierobežojumu kontekstā RC2 atbalstīja arī parametru, kas nosaka efektīvo atslēgas garumu (piem., 40 bitu režīms), — tādējādi paplašināšanas algoritms varēja tikt konfigurēts, lai izveidotu drošības līmeni atbilstoši eksporta prasībām.
Drošība un kriptanalīze
RC2 nav drošākais mūsdienu standarts. Jau 1997. gadā Kelsey et al. parādīja, ka RC2 ir ievainojams pret saistīto atslēgu (related-key) uzbrukumiem — šiem uzbrukumiem nepieciešami aptuveni 2^34 izvēlētā teksta paraugi, lai atklātu atslēgas saistības un vājinātu šifra drošību. Tas nozīmē, ka RC2 nevar tikt uzskatīts par drošu pret mūsdienu kriptanalītiskajām metodēm un jaudīgām datorzinātnes kapacitātēm.
Tāpat RC2, tāpat kā daudzi citi agrīnie algoritmi, tika izmantots ar 40 bitu atslēgām, lai atbilstu ASV eksporta noteikumiem. Šāds atslēgas garums tagad tiek uzskatīts par pārāk īsu un ir pakļauts brutāla spēka uzbrukumiem, tāpēc to izmantošana nav ieteicama mūsdienu sistēmās.
Vēsture un eksportēšanas kontroles
RC2 izstrādi sponsorēja Lotus, kas pēc NSA novērtējuma meklēja pielāgotu šifru eksportam kā daļu no Lotus Notes. NSA ieteica dažas izmaiņas, kuras Ronalds Rivests iestrādāja, un pēc sarunām šifrēšanas metode tika apstiprināta eksportam 1989. gadā.
Kopā ar RC4, RC2 ar 40 bitu atslēgas lielumu tika apstrādāts saskaņā ar ASV eksporta noteikumiem kriptogrāfijas jomā. Šādu ierobežotu atslēgas garumu mūsdienu drošības prasībām uzskata par novecojušu un nedrošu.
Sākotnēji RC2 specifikācijas un detaļas tika turētas slepenībā un bija RSA Security īpašums. Tomēr 1996. gada 29. janvārī RC2 pirmkods tika anonīmi publicēts interneta Usenet forumā sci.crypt. Līdzīgas publikācijas agrāk bija notikušas arī ar RC4; nav pilnībā skaidrs, vai publicētā informācija tika iegūta no iekšējiem avotiem vai reversās inženierijas ceļā.
Praktiskā nozīme un noslēgums
RC2 bija nozīmīgs vēsturē kā viens no agrīnajiem komerciāli izmantotajiem bloka šifriem un kā piemērs tam, kā politikas (eksporta ierobežojumi) ietekmē kriptogrāfisko rīku dizainu. Taču mūsdienu praksē RC2 vairs netiek ieteikts sensitīvu datu aizsardzībai. Drošāka alternatīva ir, piemēram, NIST standarta AES, kas nodrošina lielākus atslēgas garumus un izturību pret zināmajām kriptanalītiskajām metodēm.
Par tehniskiem aprakstiem un konkrētām matemātiskām formulām skatīt RC2 specifikāciju (piem., RFC 2268) un publikācijas par kriptanalīzi, tostarp Kelsey et al. (1997).

