V kryptografii je RC5 jednoduchá bloková šifra se symetrickým klíčem. Šifru RC5 navrhl Ronald Rivest v roce 1994 a jedná se o parametrizovaný algoritmus s proměnnou velikostí bloku, proměnnou velikostí klíče a proměnným počtem kol. Zkratka "RC" znamená "Rivestova šifra", případně "Ronova šifra".
Parametry a zápis
Aby bylo možné zajistit různé úrovně bezpečnosti a efektivity, má RC5 proměnnou velikost bloku (32, 64 nebo 128 bitů), proměnnou velikost klíče (0 až 2040 bitů) a proměnný počet kol (0 až 255). Původní navrhovaná volba parametrů byla 64bitová velikost bloku, 128bitový klíč a 12 kol.
V praxi se často používá zápis RC5-w/r/b, kde
- w je velikost slova v bitech (např. 32),
- r je počet kol (např. 12),
- b je délka tajného klíče v bajtech (např. 16).
Princip operace
Klíčovým rysem RC5 je použití datově závislých rotací, tedy rotací o počet bitů určený hodnotou zpracovávaných dat. Jedním z cílů RC5 bylo studovat a vyhodnocovat operace blokových šifer jako kryptografického primitiva. Struktura algoritmu kombinuje opakované kroky jednoduchých operací:
- modulární sčítání (word addition),
- bitové XOR (eXclusive OR),
- cyklické rotace (data-dependent rotates).
Obecná struktura algoritmu připomíná Feistelovu síť, ale není klasickou Feistelovou strukturou; pracuje se dvěma slovy A a B a v každém kole se obě slova vzájemně mísí pomocí sčítání, XOR a rotací závislých na druhém slovu. Šifrovací a dešifrovací rutiny jsou relativně krátké a snadno implementovatelné v několika řádcích kódu.
Rozvrh klíče (key schedule)
Rozvrh klíče vytváří pole pomocných slov S[0..2r+1], které se používá při šifrování a dešifrování. Princip rozšíření klíče je navržen tak, aby byl jednoduchý, ale zajistil dostatečné „rozmíchání“ klíče do interních konstant. Rozšíření zahrnuje inicializaci S pomocí dvou konstant odvozených z matematických konstant (jako zdroje "nic v rukávu") — používané konstanty jsou odvozeny z přirozené exponenciály e a zlatého řezu — a následné iterované míchání polí S a L (pole získané z původního tajného klíče) pomocí sčítání a rotací.
Výstupem rozvrhu je pole S dostatečně dlouhé (2r+2 slov, každé o velikosti w bitů), které se pak používá v samotných kolech šifrování.
Příklad základního průběhu šifrování
Simplifikovaný popis jedné iterace (pro ilustraci, bez přesného zápisu):
- Inicializace: A = A + S[0]; B = B + S[1]
- Pro i = 1 až r:
- A = ((A xor B) <<< B) + S[2i]
- B = ((B xor A) <<< A) + S[2i+1]
Dešifrování provádí inverzní operace v opačném pořadí: používá se opačné sčítání/subtrakce, pravé rotace a XOR.
Bezpečnost a kryptoanalýza
Jednoduchost algoritmu spolu s novostí rotace závislé na datech učinily z RC5 atraktivní předmět studia pro kryptoanalytiky. Byla zkoumána řada útoků proti zjednodušeným (redukovanému počtu kol) verzím RC5 pomocí technik jako diferencová a lineární kryptoanalýza či útoky vázané na související klíče. Obecně platí:
- pro malé počty kol lze nalézt praktické útoky;
- pro doporučenou konfiguraci (např. RC5-32/12/16) nebyly publikovány praktické útoky lámající celý klíč v rozumném čase, nicméně bezpečnostní marže se zvyšovaly dalšími studiemi;
- pro vyšší bezpečnost je možné zvýšit počet kol (např. na 16 nebo 20) – RC5 je navržen tak, aby tuto parametrizaci podporoval.
V kryptografické komunitě se pro RC5 objevily přesné analýzy omezující bezpečnostní margin u různých parametrů, a proto se doporučuje volit parametry podle očekávaných hrozeb a životnosti šifrovaných dat.
Výkonnost a implementace
RC5 je navržena tak, aby byla rychlá v softwaru na běžných CPU: používá operace, které jsou nativní pro většinu procesorů (sčítání, XOR, rotace). Díky jednoduchosti operací je RC5 vhodná i pro omezené prostředky (embedded systémy). Implementace je krátká a přehledná, což usnadňuje audit a učení se kryptografii.
Varianty a následníci
Vliv RC5 byl významný: myšlenka datově závislých rotací a parametrizovatelné konstrukce vedly ke vzniku dalších návrhů. Nejznámějším následníkem je RC6, který navrhli autoři RC5 (včetně R. Rivesta) jako jednu z finalistických nominací v soutěži AES; RC6 rozšiřuje myšlenky RC5 o další operace (např. multiplikace), aby dosáhl lepší bezpečnostní marže.
Využití a historie
RC5 se používá zejména jako pedagogický příklad blokové šifry a byl také implementován v různých knihovnách a aplikacích. Díky své parametrizovatelnosti a jednoduchosti slouží i jako testovací objekt pro nové analytické metody v kryptografii.
Doporučení pro použití
- Používejte dostatečně dlouhý klíč a doporučený či vyšší počet kol – výběr parametrů závisí na požadované bezpečnosti a výkonu.
- Vyrábějte implementace pečlivě (správné rotace, práce s přetečením slov, bezpečné zpracování klíče v paměti).
- V aplikacích s dlouhou životností citlivých dat zvažte moderní standardy (např. AES) nebo pečlivě odhadněte požadavky a rizika při použití RC5.
RC5 je tedy zajímavý příklad flexibilní, snadno implementovatelné blokové šifry, která významně ovlivnila další vývoj symetrických algoritmů a kryptografickou analýzu.