Image
4.12.2019 0 Comments

Praktická kryptológia (29. časť)

Rivestove šifry

Šifry označované spoločnou skratkou RC (Rivest‘s Ciphers, resp. Ron‘s Code) boli vyvinuté Američanom Ronaldom L. Rivestom, ktorý je okrem iného autorom algoritmov MD a takisto spoluautor najznámejšieho šifrovacieho systému RSA (rsa.com), ktorý využíva pár verejného a súkromného kľúča. Šifry RC1 a RC3 neboli nikdy reálne použité, no ich varianty RC2, RC4, RC5 a RC6 si našli široké uplatnenie. Šifra RC4 bola až do jej definitívneho prelomenia (rok  2015 – RFC 7465) najrozšírenejšou prúdovou šifrou používanou v prostredí internetu.

RC2 (1987)

Symetrická šifra RC2 bola spočiatku proprietárnym algoritmom, ktorý podliehal exportným reguláciám americkej NSA (nsa.gov). Pravdepodobne s využitím reverzného inžinierstva sa však podarilo získať jej zdrojový kód, a tak ju R. Rivest v roku 1998 verejne opísal v rámci RFC 2268. Šifra RC2 pracovala so 64-bitovými blokmi a kľúčmi variabilnej dĺžky (1 až 128 bajtov). Údaje boli spracúvané v 18 rundách Feistelovej siete. Algoritmus bol optimalizovaný pre 16-bitové mikroprocesory a bol dvakrát rýchlejší ako vtedajší DES. Jeho súčasťou bola expanzia kľúča do poľa šesťdesiatich štyroch 16-bitových slov K[0,…,63] s využitím tzv. PITABLE (vychádza z čísla Pi) a samotné šifrovanie/dešifrovanie. To je rozdelené na dve časti, nazývané miešanie (mix) a vtlačenie (mash). Zraniteľnosť algoritmu RC2 typu „súvisiaci kľúč“ (related-key attack) bola potvrdená v roku 1997.

RC4 (1987)

Symetrická prúdová (stream) šifra RC4 generovala pseudonáhodný prúd šifrovaných údajov za použitia permutácií (výmen s aplikáciou kľúča) 256 bajtov a dvoch 8-bitových ukazovateľov. Dĺžka kľúča bola v rozsahu 40 až 2048 bitov. Začiatok generovaného prúdu bol výrazne predpovedateľný, a preto bol v mnohých implementáciách vynechávaný. Napriek tomu, že k prvému teoretickému prelomeniu šifry došlo už v roku 1994, šifra RC4 sa môže stále objaviť v niektorých starších aplikáciách. Problémy šifry vznikali najmä pri šifrovaní tých istých údajov rôznymi kľúčmi, resp. súvisiacimi kľúčmi. Šifru využívali viaceré sieťové protokoly, ako napr. WEP/WPA či SSL/TLS. Jej nepopierateľné výhody boli jednoduchosť a rýchlosť. V súčasnosti je nahradená šifrou AES-GCM, resp. ChaCha20-Poly1305, ktoré sú súčasťou TLS1.2 a TLS1.3.

RC5 (1994)

Symetrická parametrizovateľná bloková šifra RC5 používa až 255 možných rúnd pracujúcich na princípoch Feistelovej siete. Šifra je opísaná v RFC 2040, pričom jej maximálna dĺžka kľúča je 2040 bitov. Použité rotácie sú závislé od vstupných údajov, čo robí šifru výnimočnou a zložitou z pohľadu kryptoanalýzy. Rovnako ako RC4 je veľmi rýchla a dobre implementovateľná na hardvérovej aj softvérovej úrovni. Jej základnými vstupnými parametrami sú dĺžka pracovného bloku v bitoch w (16, 32, 64), počet rúnd r (0,...,255) a dĺžka kľúča v bytoch b (0,…,255).

Najčastejšie využívané módy sú RC5-32, teda RC5-32/12/7 = 12 rúnd s 32-bitovými slovami a kľúčom dĺžky 56 bitov a takisto RC5-64, teda RC5-64/16/7 = 16 rúnd s 64-bitovými slovami a kľúčom dĺžky 56 bitov.

Šifra RC5 na svoju činnosť využíva tri primitívne operácie:

1. sčítanie/odčítanie slov modulo 2w

2. exkluzívny logický súčet XOR

3. rotáciu doľava/doprava o počet bitov, ktorý sa rovná počtu log2(w) najnižších bitov registra B, resp. A

Komponenty algoritmus RC5 sú nasledujúce:

1. expanzia kľúča K:

- konverzia bajtov kľúča na slová

- inicializácia poľa, resp. tabuľky kľúčov S[0,…,t-1], pričom t = počet subkľúčov = 2(r+1)

- zakomponovanie kľúča do poľa S s využitím dvoch tzv. magických konštánt Pw a Qw

2. šifrovanie:

A = A add S[0], B = B add S[1]

pre (i = 1 ... r) {

  A = ((A xor B) lrot B) add S[2i]

  B = ((B xor A) lrot A) add S[2i+1]

}

3. dešifrovanie:

pre (i = r ... 1) {

  B = ((B sub S[2i+1]) rrot A) xor A

  A = ((A sub S[2i]) rrot B) xor B 

}

B = B sub S[1], A = A sub S[0]

RC6 (1998)

Bloková úplne parametrizovateľná šifra RC6 je revolučné zlepšenie šifry RC5. Bola vyvinutá najmä z dôvodu dodržania štandardov definovaných v AES. Rovnako ako RC5 je založená na rotácii vstupných údajov, no namiesto dvoch 64-bitových registrov používa štyri 32-bitové registre A, B, C, D a navyše využíva násobenie 32-bitových celých (integer) čísel. To umožňuje vykonať menej rúnd (štandardne 20) a výrazne tak zvyšuje priepustnosť algoritmu. Multiplikáciou celých čísel sa navyše dosiahne efekt, pri ktorom je počet rotácií závislý od všetkých bitov registra, čím dochádza k efektívnej difúzii medziúdajov.

Šifra RC6, často označovaná aj ako RC6-w/r/b, pracuje so štyrmi w-bitovými slovami a kľúčmi dĺžky b, ktoré sú spracované v rámci r rúnd pomocou nasledujúcich šiestich operácií:

1. (a ADD b) mod 2w

2. (a SUB b) mod 2w

3. a XOR b

4. (a MUL b) mod 2w

5. a LROT (najmenej významné log2(w) bity b)

6. a RROT (najmenej významné log2(w) bity b)

 

Jednotlivé rundy sú podobné rundám algoritmu DES, to značí, že jedna polovica údajov aktualizuje druhú a následne sú obe polovice vymenené. Príprava kľúčov zahŕňa výpočet (2r+4) w-bitových kľúčov (uložia sa do poľa S[0,...,2r+3]) z kľúča zadaného používateľom (max. dĺžky 256 bitov).

 

Symbolický zápis šifrovania RC6 je nasledujúci:

B = B add S[0], D = D add S[1]

pre (i = 1 ... r) {

  t = (B mul (2B add 1)) lrot log2(w)

  u = (D mul (2D add 1)) lrot log2(w)

  A = ((A xor t) lrot u) add S[2i]

  C = ((C xor u) lrot t) add S[2i+1]

  (A,B,C,D) = (B,C,D,A)

}

A = A add S[2r+2], C = C add S[2r+3]

 

Symbolický zápis dešifrovania RC6 je nasledujúci:

C = C sub S[2r+3], A = A sub S[2r+2]

pre (i = r ... 1) {

  (A,B,C,D) = (D,A,B,C)

  u = (D mul (2D add 1)) lrot log2(w)

  t = (B mul (2B add 1)) lrot log2(w) 

  C = ((C sub S[2i+1]) rrot t) xor u

  A = ((A sub S[2i]) rrot u) xor t

}

D = D sub S[1], B = B sub S[0]

Je samozrejmé, že šifra RC6 je výkonovo lepšia ako pôvodná RC5. Pretože nepoužíva žiadne vyhľadávacie (lookup) tabuľky, celý jej kód možno umiestniť do malých cache pamätí. Svojou jednoduchosťou a flexibilitou umožňuje detailné naštudovanie a testovanie.

Zobrazit Galériu
Autor: Marek Sopko

Nechajte si posielať prehľad najdôležitejších správ emailom

Mohlo by Vás zaujímať

Ako na to

Výmena disku SSD za disk s väčšou kapacitou

12.02.2020 13:44

Dosiaľ sme vo viacerých článkoch riešili možnosť výmeny klasického mechanického pevného disku za polovodičový. Po takejto výmene sa počítač či notebook poznateľne zrýchlil, hlavne v aplikáciách, ktoré ...

Ako na to

Ako docieliť výraznejšie rozostrenie? Pomôže vám panoráma

10.02.2020 21:10

Ako vlastne funguje bokeh (rozostrenie) Bokeh vzniká v častiach fotky, ktoré sú mimo roviny ostrosti, a hlavne v miestach, kde sú zdroje svetla. Najčastejšie pri bodových svetlách vidíte charakter ...

Ako na to

Ako v prehliadači Firefox nastaviť viacriadkové ušká stránok?

10.02.2020 20:50

Prehliadač Firefox podobne ako všetka jeho konkurencia umožňuje otvárať webové stránky v samostatných záložkách, teda na špecifických uškách na paneli, medzi ktorými sa možno prepínať. Firefox tento s ...

Žiadne komentáre

Vyhľadávanie

itSMF 2020

Najnovšie videá