Kriptogrāfijā RC5 ir vienkāršs, bet elastīgs simetriskā atslēgas bloka šifrs, ko 1994. gadā izstrādāja Ronalds Rivests. RC5 ir raksturojams ar trim galvenajām mainīgajām dimensijām: bloka lielumu, atslēgas lielumu un raundu skaitu. "RC" apzīmē gan "Rivesta šifrs", gan nereti lietoto nosaukumu "Rona kods". Dizains izstrādāts tā, lai būtu viegli realizējams — šifrēšanas un atšifrēšanas procedūras parasti var uzrakstīt dažās koda rindās — vienlaikus piedāvājot pietiekamu kriptogrāfisku sarežģītību.

Parametri un nosaukšanas konvencija

RC5 atšķiras ar parametrizējamu struktūru, kas ļauj izvēlēties atbilstošu drošības un veiktspējas balansu:

  • Bloka lielums: tiek definēts kā divkāršs vārda (word) lielums; parastās izvēles ir 32, 64 vai 128 biti kopējā bloka garumā (t.i., attiecīgi 16, 32 vai 64 bitu vārdi). Bieži lietotais variants ir RC5-32 (vārda izmērs 32 biti, bloks 64 biti).
  • Atslēgas lielums: ir mainīgs — no 0 līdz 2040 bitiem teorētiski; izteikti praktiski piemēri izmanto, piemēram, 128 bitu atslēgu (16 baiti).
  • Raundu skaits: var būt no 0 līdz 255; sākotnēji ieteiktie parametri bija 64 bitu bloks (RC5-32), 128 bitu atslēga un 12 raundi (bieži apzīmēts kā RC5-32/12/16).

Darbības princips

RC5 galvenā iezīme ir datiem atkarīga rotācija, kas nozīmē, ka rotācijas daudzums katrā soļā tiek iegūts no citas šifrējamās vārda vērtības. Pamatoperācijas ir modulāra saskaitīšana, ekskluzīvais OR (Xor) un bitu rotācija. Algoritma vispārējā struktūra ir Feistelam līdzīgs tīkls, bet ar rotācijām, kas padara to atšķirīgu no klasiskām Feistel struktūrām.

Šifrēšanas soļi īsumā (divu vārdu bloka A un B gadījumā):

  • Veic sākotnējo «pre-whitening»: A = A + S[0], B = B + S[1].
  • Atkārto r raundu: katrā raundā A un B tiek apstrādāti izmantojot XOR, pēc tam bitu rotāciju pa kreisi par rotācijas daudzumu, kas ir otra vārda zemākie biti; rezultāts tiek papildināts ar atbilstošo atslēgas vārdu S[i].
  • Atšifrēšana tiek veikta apgrieztā secībā, izmantojot rotācijas pa labi un atņemšanu vietā, kur šifrēšanā tika skaitīts klāt.

Atslēgas grafiks (Key schedule)

Atslēgas grafika mērķis ir izvērst īso atslēgu (b baitu) uz lielāku atslēgu tabulu S ar garumu 2(r + 1) vārdiem. Galvenie soļi:

  • Atslēgas baitus sadala vārdu masīvā L[0..c−1] (atbilstoši izvēlētajam vārda izmēram).
  • S masīvs inicializēts, izmantojot divas konstantes (parasti sauktas Pw un Qw), kas ir uzstādītas no matemātisku konstantu — dabiskās eksponenciālās pamatvalodas e un zelta griezuma — daļām. Šīs konstantes tiek izvēlētas tā, lai būtu nepāra (odd) vārdi un būtu labi izkliedētas.
  • Sekmīgi S[i] tiek pievienots L un apmainīts vairāku iterāciju gaitā, izmantojot rotācijas un modulāras saskaitīšanas, parasti veicot aptuveni 3⋅max(c, 2r+2) jaukšanas soļu, lai nodrošinātu labu entropijas izkliedi.

Šis atslēgas paplašināšanas process ir svarīgs RC5 drošībai — tas nodrošina, ka katrs šifrēšanas raunds izmanto atšķirīgu, sarežģītu atslēgas vārdu kopu.

Raksturīgās īpašības

  • Vienkāršība īstenošanā: RC5 ir viegli realizējams gan programmatūrā, gan aparatūrā; burtiski dažas koda rindas ir pietiekamas, lai uzrakstītu šifrēšanu un atšifrēšanu.
  • Datu atkarīgā rotācija: rotācijas, kas balstītas uz datiem, palielina negaidāmību un sarežģītību pret daudziem analītiskiem paņēmieniem.
  • Parametrizējamība: iespēja mainīt vārda izmēru, raundu skaitu un atslēgas garumu ļauj pielāgot RC5 dažādiem drošības un ātruma prasību līmeņiem.

Drošība un kriptoanalīze

RC5 ir bijis intensīvu pētījumu objekts kopš tā izstrādes. Tā vienkāršība un datu atkarīgo rotāciju novitāte padarīja to pievilcīgu kriptoanalītiķiem. Ir izstrādātas vairākas uzbrukumu metodes pret samazināto raundu versijām (piem., diferenciālā analīze, atslēgas-saistītie uzbrukumi), taču pilna ieteiktā versija (piem., RC5-32/12/16) joprojām tiek uzskatīta par izturīgu pret praktiskiem ģenerālajiem uzbrukumiem, ja ir izvēlēti pietiekami lieli parametri.

Praktiski apsvērumi un ierobežojumi:

  • Daži kriptoanalītiskie rezultāti rāda, ka raundu skaits un atslēgas garums būtiski ietekmē drošību — drošības rezervi var palielināt, izvēloties vairāk raundu vai garāku atslēgu.
  • Datu atkarīgā rotācija prasa uzmanību ieviešanas laikā, jo dažas programmatūras vai aparatūras realizācijas var atklāt laika vai citas svešas informācijas kanālus (side‑channel attacks). Rotācijas parasti ir ar konstantu laiku procesoros ar iebūvētu rotate instrukciju, bet jāizvairās no savdabīgām optimizācijām, kas var ieviest laika atšķirības.

Lietojumi un atvasinājumi

RC5 ir ticis izmantots dažādās lietojumprogrammās un akadēmiskos pētījumos kā paraugs datu atkarīgajām rotācijām un kā pamats tālākiem dizainiem. No RC5 izrietēja arī RC6, kas ir rivesta izstrādāts algoritms un tika pieteikts kā viens no kriptogrāfijas kandidātiem AES konkursā — RC6 izmanto līdzīgas idejas, bet papildina tās ar citām operācijām.

Praktiski ieteikumi

  • Izvēlieties parametrus atbilstoši jūsu drošības prasībām: garāka atslēga un vairāk raundu palielina drošību, bet ietekmē veiktspēju.
  • Rūpīgi ieviesiet atslēgas grafiku un šifrēšanu, lai izvairītos no blīvuma kļūdām un side‑channel problēmām.
  • Ņemiet vērā, ka RC5 sākotnēji bija patentēts — pirms plašas izmantošanas ražošanā pārliecinieties par licences un patentu statusu jūsu jurisdikcijā.

Kopumā RC5 ir nozīmīgs vēsturisks un tehnisks paraugs kriptogrāfijā: tas apvieno vienkāršu un efektīvu implementāciju ar inovatīvu datu atkarīgo rotāciju ideju, kas veicināja gan praktiskas lietojumu izpēti, gan teorētisku analīzi.