From Wikipedia, the free encyclopedia
RC6 (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. [1] Š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. [2]
Autor zdůrazňoval jednoduchost algoritmu, jeho rychlost a bezpečnost.[3]
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.[4]
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. [4]
Další výhodou je uvedena jednoduchá struktura. [4]
Jako další výhoda je uvedeno její odvození z šifry RC5, což umožnilo NISTu dřívější analýzu. [4]
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. [4]
První nevýhodou bylo uvedeno bezpečnostní rozpětí. [4]
Další nevýhodou je slabý výkon na platformách neposkytující požadující podporu. [4]
Jako poslední nevýhoda je uvedena chybějící podpora pravidla vytváření klíčů na low-end chytrých kartách. [4]
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í. [4]
Na rozdíl od RC5 má RC6 dvojnásobnou šířku datového bloku - 128 bitů.[1]
RC6 využívá datově závislé rotace z RC5, které ale dále doplňuje o další nelinearitu.[1]
Oproti RC5 RC6 využívá 4 registrů místo 2. [5]
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:[6]
Parametr | Definice |
---|---|
w | reprezentuje 32 bitovou délku slova |
r | Počet rund pro šifrování. |
b | 16, 24 a 32 bajtový klíč |
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. 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í.[3]
Pro všechny varianty RC6 - w/r/b pracuje s jednotkami o čtyř w-bitových slovech pomocí následujících šesti operací: [6]
RC6 algoritmus se skládá ze 3 procesů:
Stanovení klíče je podobné jako u RC5. Uživatel poskytne klíč o b bajtů. 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í.[6]
Algoritmus určení klíče je rozdělený do 3 částí:[5]
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.[5]
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.[5]
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.[6]
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.[6]
Pseudokód pro šifrování je následující: [6]
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)) <<< log w;
u = (D(2D+1)) <<< log w;
A = ((A⊕t) <<< t) + S[2i];
C = ((C⊕u) <<< t) + S[2i+1];
(A,B,C,D)=(B,C,D,A);
}
A = A + S[2r+2];
C = C + S[2r+3];
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. [6]
Pseudokód pro dešifrování je následující: [6]
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)) <<< log w;
t = (B (2B+1)) <<< log w;
C = ((C - S[2i+1]) >>> t)⊕u;
A = ((A - S[2i]) >>> u)⊕t;
}
D = D - S[1];
B = B - S[0];
RC6 je přiměřeně odolná známým útokům. Není znám žádný útok na 20 rundovou variantu. 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.[7]
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.