RC6
Author
Albert FloresRC6 (Rivest cipher 6) je symetrická bloková šifra odvozená od RC5. Šifru vytvořili v roce 1998 Ron Rivest, Matt Robshaw, Ray Sidney a Yigun Lisa Yin.
RC6 byla jedním z kandidátů do soutěže od Národního institutu standardů a technologie (NIST) na Advanced Encryption Standard (AES). Do soutěže ji přihlásila společnost RSA. +more Šifra se dostala do posledních pěti, vítěznou šifrou se ale stala šifra Rijndael. Mimo AES byla šifra poslána do projektů NESSIE a CRYPTREC.
Autor zdůrazňoval jednoduchost algoritmu, jeho rychlost a bezpečnost.
Zjištění AES
Dle zjištění NISTu se u šifry RC6 nevyskytly žádné významné bezpečnostní díry, ani méně významné všeobecné bezpečnostní hrozby.
Výhody
Jako výhoda šifry byla uvedena rychlost na 32 bitových platformách a velmi rychlá byla i na platformách poskytujících podporu pro 32 bitové rotace a multiplikace.
Další výhodou je uvedena jednoduchá struktura.
Jako další výhoda je uvedeno její odvození z šifry RC5, což umožnilo NISTu dřívější analýzu.
Poslední výhoda se týká nastavení klíče, konkrétněji to je podpora délky klíče (větší než 256 bitů, teoreticky až do 1248 bitů) a parametrizování délky klíče, délky bloku a počtu rund.
Nevýhody
První nevýhodou bylo uvedeno bezpečnostní rozpětí.
Další nevýhodou je slabý výkon na platformách neposkytující požadující podporu.
Jako poslední nevýhoda je uvedena chybějící podpora pravidla vytváření klíčů na low-end chytrých kartách.
Bezpečnostní díry s ohledem na implementaci na chytrých kartách
Dle zjištění je obtížná obrana proti útokům časovou analýzou a útokům odběrovou analýzou kvůli využívání umocňování a variabilních rotací.
Rozdíly oproti RC5
Na rozdíl od RC5 má RC6 dvojnásobnou šířku datového bloku - 128 bitů.
RC6 využívá datově závislé rotace z RC5, které ale dále doplňuje o další nelinearitu.
Oproti RC5 RC6 využívá 4 registrů místo 2.
Parametry
RC6 algoritmus má Feistelovu strukturu, symbolicky vyjádřenou jako RC6-w/r/b. Význam písmen w, r a b je znázorněn v tabulce:
w | reprezentuje 32 bitovou délku slova |
---|---|
r | Počet rund pro šifrování. +more |
b | 16, 24 a 32 bajtový klíč |
Schéma
V každý rundě druhé slovo aktualizuje první slovo, mezitím co paralelně čtvrté slovo aktualizuje třetí slovo. Potom jsou pozice slov přetočena. +more Aktualizace využívá kvadratické transformace, vyžadující 32 bitový modulární multiplikátor a k tomu XOR operaci, datově závislou rotaci a přidání klíče. Taktéž se zde vyskytuje přidání klíče před první a poslední rundou. Dešifrování je odvozené inverzí každého kroku šifrování.
Základní operace
Pro všechny varianty RC6 - w/r/b pracuje s jednotkami o čtyř w-bitových slovech pomocí následujících šesti operací:
* přidání modulo 2w * odečtení modulo 2w * exkluzivní disjunkce (XOR) w-bitových slov * násobení modulo 2w * cyklická rotace w-bitového slova doleva o určitý počet bitů r * cyklická rotace w-bitového slova doprava o určitý počet bitů r
Struktura algoritmu
RC6 algoritmus se skládá ze 3 procesů:
# Určení klíče # Šifrování # Dešifrování
Určení klíče
Stanovení klíče je podobné jako u RC5. Uživatel poskytne klíč o b bajtů. +more Z tohoto klíče jsou derivovány 2r + 4 slova (w bitů každý), které se uloží do pole S [0, 2r+3]. Toto pole je používáno jak v šifrování, tak dešifrování.
Algoritmus určení klíče je rozdělený do 3 částí:
* Konvertování * Inicializace * Vmíchání
Konvertování
Uživatelův tajný klíč je kopírován do pole L.
Inicializace
Pole S je inicializováno specifickým fixním pseudonáhodným vzorem založeným na modulo 2w používající dvě konstanty Pw a Qw.
Míchání
V této fázi se míchá uživatelův tajný klíč do S a L polí. Konkrétněji, protože pole S a pole L nemají stejné velikosti, větší pole je zpracováno jednou, a druhé pole třikrát.
Šifrování
RC6 se skládá ze čtyř w-bitových registrů (A, B, C ,D), které slouží k uložení původního textu. Finální text je taktéž uložen ve stejném registru.
První bajt původního nebo šifrovaného textu je uložen v nejméně signifikantním bajtu z A. Poslední bajt původního nebo šifrovaného textu je uložen v nejvíce signifikantním bajtu z D.
Pseudokód pro šifrování je následující: Vstup: Text uložený ve 4 w-bitových vstupních registrech A, B, C, D r je počet opakování (rund) w-bitový klíče S [0, ..., 2r+3]
Výstup: Šifrovaný text uložený v A, B, C, D
Proces: B = B + S[0]; D = D + S[1]; for i = 1 to r do { t = (B(2B+1))
Dešifrování
Dešifrování funguje podobně jako šifrování. Největší rozdíl je, že šifrovaný text je dán jako vstup a výstupem je původní text.
Pseudokód pro dešifrování je následující: C = C - S[2r+3]; A = A - S[2r+2]; for i = r down to 1 do { (A,B,C,D) = (D,A,B,C); u = (D (2D+1)) >> t)⊕u; A = ((A - S[2i]) >>> u)⊕t; } D = D - S[1]; B = B - S[0];
Bezpečnost
RC6 je přiměřeně odolná známým útokům. Není znám žádný útok na 20 rundovou variantu. +more Pomocí lineární a diferenciální kryptoanalýzy je možné prolomit 12 rundovou verzi, statistické útoky založené na vybraných dvojicích OT-ŠT (otevřený-šifrovaný text) prokázaly zranitelnost do 13 rund.