Kriptografijoje RC5 yra paprastas simetrinio rakto blokinis šifras. 1994 m. Ronaldo Rivesto sukurtas RC5 yra parametrizuotas algoritmas su kintamu bloko dydžiu, kintamu rakto dydžiu ir kintamu raundų skaičiumi. "RC" reiškia "Rivesto šifras" arba "Rono kodas".

Kad būtų užtikrintas įvairus saugumo ir efektyvumo lygis, RC5 turi kintamą bloko dydį (32, 64 arba 128 bitų), kintamą rakto dydį (nuo 0 iki 2040 bitų) ir kintamą raundų skaičių (nuo 0 iki 255). Iš pradžių buvo siūloma pasirinkti tokius parametrus: 64 bitų dydžio blokas, 128 bitų raktas ir 12 raundų.

Pagrindinis RC5 bruožas yra nuo duomenų priklausančių rotacijų naudojimas; vienas iš RC5 tikslų buvo ištirti ir įvertinti blokinių šifrų operacijas kaip kriptografinį primityvą. RC5 taip pat susideda iš kelių modulinių papildinių ir išskirtinių OR (Xor). Bendroji algoritmo struktūra yra į Feistelio tinklą panašus tinklas. Šifravimo ir dešifravimo procedūras galima nurodyti keliomis kodo eilutėmis. Tačiau rakto tvarkaraštis yra sudėtingesnis, raktas išplečiamas naudojant iš esmės vienakryptę funkciją, kurios šaltiniai yra dvejetainiai e ir aukso pjūvio išsiplėtimai, kaip "nieko rankovėje neturintys skaičiai". Dėl algoritmo paprastumo ir nuo duomenų priklausančių rotacijų naujumo RC5 tapo patraukliu objektu kriptoanalitikams tyrinėti.

Pagrindinės savybės ir parametrai

RC5 yra parametrizuotas taip, kad galima laisvai pasirinkti tris pagrindinius parametrus:

  • w — žodžio (word) ilgis bitais (dažniausiai 16, 32 arba 64 bitai). Bloko dydis yra 2·w bitai;
  • r — raundų (rounds) skaičius (rekomenduojama vertė priklauso nuo w — populiari konfigūracija yra r = 12, w = 32);
  • b — rakto dydis baitais (naudotojo rakto ilgis, dažnai 16 baitų = 128 bitų).
Tokiu būdu RC5 gali būti pritaikomas įvairiems našumo ir saugumo poreikiams: mažesni w ir r leidžia spartesnį veikimą įterptuose įrenginiuose, didesni — stipresnį atsparumą kriptoanalizei.

Algoritmo struktūra ir operacijos

RC5 pagrįstas paprastomis, efektyviomis operacijomis, kurios gerai atitinka modernių procesorių instrukcijų rinkinį:

  • modulinė sudėtis (addition modulo 2^w);
  • bitinės XOR operacijos;
  • dinaminės, nuo duomenų priklausančios rotacijos (rotations) — rotacijos pasukamos pagal kito žodžio reikšmę, o ne pastovų skaičių.
Šios operacijos kartu su klavišų plėtiniu sukuria Feistelio tipo struktūrą, kur per raundus kinta du bloko puseliai ir atliekamos kombinacijos, užtikrinančios sklaidos ir sumaišymo (diffusion and confusion) savybes.

Rakto tvarkaraštis (key schedule)

Rakto išplečiama seką sudaro S masyvas, paruoštas iš dviejų specialių konstantų (gautų iš perskaičiuotų reikšmių, susijusių su dvejetainiu e ir aukso pjūviu) bei vartotojo rakto baitų paskirstymo į žodžius L. Po to vyksta sukeitimo (mixing) žiedas, kuriame S ir L elementai „sumaišomi“ per kelias iteracijas naudojant sudėtis, XOR ir rotacijas. Toks tvarkaraštis suteikia S masyvui struktūrą, kuri priklauso nuo įvesto rakto ir kurios atbulinės inžinerijos užduotis yra sudėtingesnė.

Saugumas ir žinomi atakai

RC5 buvo plačiai analizuojamas ir tapo standartiniu eksperimentinės kriptoanalizės objektu. Svarbiausi pastebėjimai:

  • Prieš RC5 buvo sėkmingai atlikta įvairių tipų atakų įrodymų ir eksperimentų, ypač sumodeliuotų arba sumažintų raundų atvejais — pvz., diferencialinė ar susijusių raktų (related-key) kriptoanalizė gali veikti esant mažesniam raundų skaičiui.
  • Vis dėlto, įprastose rekomenduojamose konfigūracijose (pvz., RC5-32/12/16) iki šiol nebuvo atskleista praktinė, efektyvi ataka, kuri leistų atakuoti pilną raktą greičiau nei grynąja jėga.
  • RC5 ypatybė — duomenų priklausomos rotacijos — suteikia papildomą sudėtingumą analizei, tačiau taip pat atvėrė naujas kriptoanalitines kryptis, todėl daug tyrimų orientuoti į šių rotacijų elgsenos modeliavimą.

Reikia pažymėti, kad saugumo padėtis keitėsi laikui bėgant: visada verta tikrinti naujausius mokslinius šaltinius ir atnaujinimus, jei planuojate naudoti RC5 saugumo tikslais.

Praktinis naudojimas ir rekomendacijos

RC5 buvo sukurtas kaip paprastas, greitas ir lengvai įgyvendinamas algoritmas — jis gerai veikia programinėje įrangoje, ypač procesoriams, turintiems greitas bitines rotacijų instrukcijas. Tačiau dėl intensyvios kriptoanalizės ir atsiradusių naujesnių algoritmų pasirinkimas praktinėje kriptografijoje dabar dažnai krypsta prie kitų standartizuotų konstrukcijų (pvz., AES).

Praktinės rekomendacijos, jei vis dėlto planuojama naudoti RC5:

  • Naudoti pakankamai ilgą raktą (pvz., ≥ 128 bitų), kad sumažintumėte grynosios jėgos atakų riziką;
  • Pasirinkti pakankamai daug raundų (r), atsižvelgiant į w, kad apsaugotumėte nuo žinomų teorinių atakų; dažna rekomendacija — r ≈ 12 kai w = 32;
  • Apsvarstyti modernesnius, plačiau įvertintus algoritmus ir pasirinkti sprendimą pagal saugumo reikalavimus bei standartus jūsų srityje.

Išvados

RC5 yra svarbi kriptografijos istorijos dalis: jis pasižymi elegantiška, parametrizuota konstrukcija, kurios pagrindinis novatoriškumas — nuo duomenų priklausančios rotacijos. Dėl šios savybės RC5 suteikė daug žinių apie tai, kaip įvairios pagrindinės bitinės operacijos prisideda prie šifro saugumo. Tačiau, planuojant naujas sistemas, rekomenduojama naudoti algoritmus, kurie turi platesnį praktinį priėmimą ir ilgalaikes saugumo garantijas.