MARS (kryptografie)

MARS
Tvůrce Carolyn Barwick, Don Coppersmith
Vytvořeno 1998 _
zveřejněno 1998 _
Velikost klíče 128-448 bitů
Velikost bloku 128 bit
Počet kol 32
Typ Síť Feistel

MARS je  kandidátská šifra AES vyvinutá společností IBM , která svého času vytvořila DES . IBM říká , že algoritmus MARS čerpá z 25 let zkušeností firmy v oblasti kryptoanalytiky a spolu s vysokou kryptografickou silou umožňuje šifra efektivní implementaci i v rámci omezení čipových karet .

Na vývoji šifry se podílel Don Coppersmith , jeden z autorů luciferské šifry ( DES ), známý řadou článků o kryptologii : zlepšení struktury S-boxů proti diferenciální kryptoanalýze , metoda rychlého násobení matic ( Coppersmith-Winogradův algoritmus ), kryptoanalýza RSA . Kromě něj se na vývoji algoritmu podíleli Carolyn Barwick , Edward D'Evignon , Rosario Genaro , Shai Halevi , Charanjit Jutla , Steven M. Matyas Jr. , Luke O'Connor , Mohamed Perevyan , David Safford , Nevenko Zunich .

Podle pravidel soutěže AES mohli účastníci provést drobné změny ve svých algoritmech. S využitím tohoto pravidla autoři MARSa změnili klíčový postup rozšiřování, což umožnilo snížit požadavky na energeticky nezávislou a RAM . Upravená verze algoritmu bude poskytnuta níže.

Na základě výsledků soutěže AES se MARS probojoval do finále, ale prohrál s Rijndaelem . Po vyhlášení výsledků (19. května 2000) si vývojový tým vytvořil vlastní názor na soutěž AES [1] , kde se vyjádřil k nárokům na jejich duchovní dítě.

MARS je nyní celosvětově distribuován pod bezplatnou licencí .

Stručný popis algoritmu

MARS je bloková symetrická šifra s tajným klíčem. Velikost bloku pro šifrování je 128 bitů, velikost klíče se může lišit od 128 do 448 bitů včetně (násobky 32 bitů). Tvůrci se ve svém algoritmu snažili spojit rychlost kódování a sílu šifry. Výsledkem je jeden z nejsilnějších algoritmů v soutěži AES .

Algoritmus je jedinečný v tom, že využívá téměř všechny existující technologie používané v kryptoalgoritmech, a to:

Použití dvojitého míchání představuje obtíž pro kryptoanalýzu , kterou někteří připisují nevýhodám algoritmu. Současně v tuto chvíli neexistují žádné účinné útoky na algoritmus, ačkoli některé klíče mohou generovat slabé podklíče.

Struktura algoritmu

Autoři šifry vycházeli z následujících předpokladů:

  1. Volba operací . MARS byl navržen pro použití na nejpokročilejších počítačích té doby. Aby bylo dosaženo co nejlepšího obranného výkonu, byly do něj zahrnuty nejvíce „silné operace“ v nich podporované. To umožnilo větší poměr securityper-instruction pro různé implementace šifry.
  2. Struktura šifry . Dvacet let zkušeností v oblasti kryptografie přivedlo tvůrce algoritmu k myšlence, že každé kolo šifrování hraje roli v zajištění bezpečnosti šifry. Zejména můžeme vidět, že první a poslední kolo se obvykle velmi liší od středních ("centrálních") kol algoritmu, pokud jde o ochranu před kryptanalytickými útoky. Při vytváření MARSa byla tedy použita smíšená struktura, kde se první a poslední kolo šifrování výrazně liší od těch středních.
  3. Analýza . S největší pravděpodobností bude algoritmus s heterogenní strukturou lépe odolávat kryptoanalytickým metodám budoucnosti než algoritmus se všemi identickými koly. Vývojáři algoritmu MARS mu dali vysoce heterogenní strukturu - kola algoritmu se od sebe velmi liší.

Šifra MARS používala následující metody šifrování:

  1. Práce s 32bitovými slovy . Všechny operace platí pro 32bitová slova. to znamená, že všechny původní informace jsou rozděleny do bloků po 32 bitech. (pokud se ukázalo, že blok je kratší, pak byl doplněn na 32 bitů)
  2. Síť Feistel . Tvůrci šifry věřili, že jde o nejlepší kombinaci rychlosti šifrování a šifrovací síly. MARS používá síť Feistel typu 3.
  3. Symetrie algoritmu . Pro odolnost šifry vůči různým útokům byla všechna její kola provedena zcela symetricky , to znamená, že druhá část kola je zrcadlovým opakováním její první části.

Strukturu algoritmu MARS lze popsat následovně:

  1. Předklíčování: 32bitové podbloky A, B, C, D jsou překryty 4 fragmenty rozšířeného klíče k 0 ...k 3 pomocí modulo 2 32 ;
  2. Provádí se 8 kol přímého míchání (bez účasti šifrovacího klíče);
  3. Je provedeno 8 kol přímé konverze kryptoměn;
  4. Je provedeno 8 kol reverzní krypto transformace; [2]
  5. Je provedeno 8 kol zpětného míchání, rovněž bez účasti šifrovacího klíče;
  6. Konečné překrytí fragmentů rozšířeného klíče k 36 ...k 39 operací odčítání modulo 2 32 .

Přímé míchání

V první fázi je každé datové slovo překryto klíčovým slovem a poté následuje osm kol míchání podle Feistelovy sítě třetího typu spolu s nějakým dalším mícháním. V každém kole používáme jedno datové slovo (nazývané zdrojové slovo) k úpravě tří dalších slov (nazývaných cílová slova). Zacházíme se čtyřmi bajty původního slova jako s indexy do dvou S-boxů, S 0 a S 1 , z nichž každý se skládá z 256 32-bitových slov, a pak XOR nebo připojujeme odpovídající data S-boxu do tří dalších slov.

Pokud jsou čtyři bajty původního slova b 0 , b 1 , b 2 , b 3 (kde b 0 je první bajt a b 3 je horní bajt), pak použijeme b 0 , b 2 jako indexy do bloku S 0 a bajty bi , b3 , jako indexy v S- boxu Si . Nejprve XOR S 0 k prvnímu cílovému slovu a poté přidejte S 1 ke stejnému slovu. Také přidáme S 0 ke druhému cílovému slovu a blokujeme XOR-S 1 ke třetímu cílovému slovu. Nakonec původní slovo otočíme o 24 bitů doprava.

V dalším kole střídáme čtyři slova, která máme: takže aktuální první cílové slovo se stane dalším zdrojovým slovem, aktuální druhé cílové slovo se stane novým prvním cílovým slovem, třetí cílové slovo se stane dalším druhým cílovým slovem a aktuální zdrojové slovo se stane třetím cílovým slovem.

Navíc po každém ze čtyř kol přidáme jedno z cílových slov zpět k původnímu slovu. Konkrétně po prvním a pátém kole přidáme třetí cílové slovo zpět k původnímu slovu a po druhém a šestém kole přidáme první cílové slovo zpět k původnímu slovu. Důvodem těchto dodatečných směšovacích operací je eliminace několika jednoduchých diferenciálních kryptografických útoků ve fázi směšování, aby se narušila symetrie ve fázi směšování a dosáhlo se rychlého toku.

Pseudokód 1. // První překrytí klíče na datech 2. 3. 4. // Poté 8 kol míchání dopředu 5. // použijte D[0] k úpravě D[1]; D[2]; D[3] 6. // přístup ke 4 S-boxům 7.8.9.10 _ _ _ 11. // a otočte původní slovo doprava 12. 13. // také provádět další operace míchání 14. 15. // přidejte D[3] k původnímu slovu 16. 17. // přidejte D[1] k původnímu slovu 18. // otočení pole D[ ] 19:20 .

Kryptografické jádro

Kryptografickým jádrem MARS je síť Feistel typu 3 obsahující 16 nábojů. V každém kole používáme klíčovou E-funkci, což je kombinace násobení, rotace a volání S-boxu. Funkce vezme jedno slovo dat jako vstup a vrátí tři slova, se kterými se následně provede operace sčítání nebo XOR k dalším třem slovům dat. Zdrojové slovo je navíc otočeno o 13 bitů doleva.

Aby byla zajištěna vážná odolnost vůči kryptografickým útokům, jsou tři výstupní hodnoty E-funkce (O 1 , O 2 , O 3 ) použity v prvních osmi kolech a v posledních osmi kolech v různém pořadí. V prvních osmi kolech přidáme O 1 a O 2 k prvnímu a druhému cílovému slovu a XOR O 3 ke třetímu cílovému slovu. V posledních osmi kolech přidáme O 1 a O 2 ke třetímu a druhému cílovému slovu a XOR O 3 k prvnímu cílovému slovu.

Pseudokód 1. // Proveďte 16 kol šifrování pomocí klíče 2. 3. 4. 5. 6. // prvních 8 kol dopředné konverze 7. 8. 9. // pak 8 kol inverzní transformace 10. 11. 12. 13. // otočení pole D[] 14. 15. E-funkce

E-funkce bere jedno slovo dat jako vstup a používá další dvě klíčová slova, čímž vytváří tři slova jako výstup. V této funkci používáme tři dočasné proměnné, označené L, M a R (pro levou, střední a pravou).

Zpočátku nastavíme R na hodnotu původního slova posunutou o 13 bitů doleva a nastavíme M na součet původních slov a prvního klíčového slova. Potom použijeme prvních devět bitů M jako index k jednomu z 512 S-boxů (který se získá spojením S 0 a S 1 fázovým mícháním) a uložíme do L hodnotu odpovídajícího S-boxu.

Poté vynásobíme druhé klíčové slovo R, přičemž hodnotu uložíme do R. Poté R otočíme o 5 pozic doleva (takže z 5 vysokých bitů se po otočení stane 5 nízkých bitů R). Pak XOR R do L a také se podíváme na spodních pět bitů R, abychom určili velikost posunu (od 0 do 31), a otočíme M doleva o tuto hodnotu. Dále otočíme R o dalších 5 pozic doleva a XOR L do L. Nakonec se znovu podíváme na 5 nejméně významných bitů R jako velikost rotace a otočíme L o tuto hodnotu doleva. Výsledkem E-funkce jsou tedy 3 slova (v pořadí): L, M, R.

Pseudokód 1. // použijte 3 dočasné proměnné L; M; R 2. //přidejte první klíčové slovo 3. // vynásobte druhým klíčovým slovem, které musí být sudé 4. 5. // vezmi S-box 6. 7. // tyto bity popisují velikost následné rotace 8. // první otočení proměnnou 9. 10. 11. 12. // tyto bity popisují velikost následné rotace 13. // druhá proměnná rotace čtrnáct.

Reverzní míchání

Zpětné náhodné přehrávání je téměř stejné jako náhodné přehrávání dopředu, kromě skutečnosti, že data jsou zpracovávána v opačném pořadí. To znamená, že pokud bychom kombinovali míchání vpřed a vzad tak, že jejich výstupy a vstupy by byly zapojeny v obráceném pořadí (D[0] vpřed a D[3] vzad, D[1] vpřed a D[2] vzad), pak neuvidí výsledek míchání. Stejně jako u přímého míchání i zde používáme jedno zdrojové slovo a tři cílová slova. Uvažujme první čtyři bajty původního slova: b 0 , b 1 , b 2 , b 3 . Použijeme b 0 , b 2 jako index k S-boxu - S 1 a b 1 b 3 pro S 0 . Dejme XOR S 1 [b 0 ] do prvního cílového slova, odečteme S 0 [b 3 ] od druhého slova, odečteme S 1 [b 2 ] od třetího cílového slova a pak XOR S 0 [b 1 ] také na třetí cílové slovo. Nakonec původní slovo otočíme o 24 míst doleva. Pro další kolo střídáme dostupná slova tak, aby se aktuální první cílové slovo stalo dalším zdrojovým slovem, aktuální druhé cílové slovo se stalo prvním cílovým slovem, aktuální třetí cílové slovo se stalo druhým cílovým slovem a aktuální zdrojové slovo se stává třetím cílovým slovem. Před jedním ze čtyř „speciálních“ kol navíc odečteme jedno z cílových slov od zdrojového slova: před čtvrtým a osmým kolem odečteme první cílové slovo, před třetím a sedmým kolem odečteme třetí cílové slovo ze zdrojového slova.

Pseudokód 1. // Proveďte 8 kol zpětného míchání 2. 3. // další operace míchání 4. 5. //odečteme D[3] od původního slova 6. 7. // odečtěte D[1] od původního slova 8. // odkazují na čtyři prvky S-boxů 9. 10. 11. 12. 13. // a otočte původní slovo doleva čtrnáct. 15. // otočení pole D[] 16. 17. 18. // Odečtěte klíčové slovo 19:20 .

Dešifrování

Proces dekódování je opakem procesu kódování. Dešifrovací kód je podobný (ale ne totožný) s šifrovacím kódem.

Přímé míchání 1. // Počáteční překrytí klíče 2. 3. 4. // Poté proveďte 8 kol míchání dopředu 5. 6. // otočení pole D[] 7. 8. // a otočte původní slovo doprava 9. 10. // přístup ke 4 prvkům S-boxů 11. 12. 13. 14. 15. // dodatečné míchání 16. 17. // přidat D[3] k původnímu slovu 18. 29. // přidat D[1] k původnímu slovu dvacet. Kryptografické jádro 1. // Spusťte 16 kol pomocí překryvného klíče 2. 3. // otočení pole D[] 4. 5. 6. 7. 8. // posledních 8 kol v přímém pořadí 9. 10. 11. // prvních 8 kol v opačném pořadí 12. 13. 14. 15.


Reverzní míchání 1. // Proveďte 8 kol zpětného míchání 2. 3. // Otočení pole D[] čtyři. 5. // další operace míchání 6. 7. // odečtěte D[3] od původního slova 8. 9. // odečtěte D[1] od původního slova 10. // Otočte původní slovo doleva jedenáct. 12. // odkazují na čtyři prvky S-boxů 13. 14. 15. 16. 17. 18. // odečtěte podklíč od dat 19:20 .

Vlastnosti algoritmu

S-bloky

Při vytváření S-boxu S byly jeho prvky generovány pseudonáhodným generátorem, poté byly testovány na různé lineární a diferenciální vlastnosti. Pseudonáhodné S-boxy byly generovány s následujícími parametry:

(kde  je j-té slovo ve výstupu SHA-1 ) Zde i je považováno za 32bitové celé číslo bez znaménka a c1, c2, c3 jsou nějaké konstanty. V implementaci IBM: c1 = 0xb7e15162; c2 = 0x243f6a88 (což je binární zápis zlomkové části resp .). c3 byl měněn, dokud nebyly nalezeny S-boxy s vhodnými vlastnostmi. SHA-1 funguje na datových tocích a používá little endian.

Vlastnosti S-boxu

Diferenciální vlastnosti .

  1. S-box nesmí obsahovat slova sestávající ze všech 0 nebo 1
  2. Každé dva S-boxy S 0 , S 1 se od sebe musí lišit alespoň ve 3 ze 4 bajtů. (Protože tato podmínka je u pseudonáhodných S-boxů extrémně nepravděpodobná, je jeden ze dvou S-boxů upraven)
  3. S-box neobsahuje dva prvky jako nebo
  4. S-box neobsahuje dvě dvojice prvků, jejichž xor-diference jsou stejné, a dvě dvojice prvků, jejichž uspořádaný rozdíl je roven
  5. Každé dva prvky S-boxu se musí lišit minimálně o 4 bity
Požadavek č. 4 nebyl splněn v implementaci IBM pro AES, ale byl opraven ihned po dokončení. Bylo pozorováno, že v rozporu s tímto požadavkem jsou v S-boxech přítomny následující prvky [3] :
XOR Odčítání

Lineární vlastnosti

  1. Poměr offsetu: . Je nutné, aby tento výraz byl větší než alespoň
  2. One-bit offset: Tento výraz musí být větší než alespoň
  3. Dvoubitový offset: . Je nutné, aby tento výraz byl větší než alespoň
  4. Jedna bitová korelace : . Tento výraz je nutné minimalizovat mezi všemi možnými S-boxy, které splňují předchozí body

Rozšíření klíče

procedura rozšíření klíče rozšíří dané pole klíčů k[], skládající se z n 32bitových slov (kde n je celé číslo od 4 do 14) na pole K[] o 40 prvcích. Původní klíč nemusí mít žádnou strukturu. Procedura rozšíření klíče navíc zaručuje následující vlastnosti klíčového slova použitého při násobení v kryptografickém jádru algoritmu:

  1. dva nejméně významné bity klíčového slova budou vždy jedničky
  2. žádné z klíčových slov nebude obsahovat deset po sobě jdoucích 0 nebo 1

Popišme klíčový expanzní algoritmus.

  1. Nejprve je pole kompletně přepsáno do mezilehlého pole sestávajícího z 15 prvků.
  2. Tento proces se pak opakuje 4x. Při každé iteraci se vygeneruje 10 rozšířených klíčových slov. proměnná zobrazující aktuální číslo iterace. (0 pro první iteraci, 1 pro druhou atd.)
    1. Pole T[] se převede podle následujícího pravidla:
    2. Dále pole zamícháme pomocí 4 kol sítě Feistel typu 1. Následující operaci opakujeme čtyřikrát:
    3. Dále vezmeme deset slov z pole T[] a vložíme je jako dalších deset slov do pole K[] a znovu je zamícháme:
  3. Nakonec projdeme šestnáct slov používaných pro násobení (K[5],K[7]…K[35]) a upravíme je tak, aby odpovídala dvěma výše popsaným vlastnostem.
    1. Zapíšeme dva nejméně významné bity K[i] podle vzorce a místo těchto dvou bitů zapíšeme jeden, .
    2. Sbíráme masku M pro bity w , které patří sekvencím deseti nebo více nul nebo jedniček. Například tehdy a jen tehdy, pokud patří do sekvence 10 nebo více stejných prvků. Poté resetujeme (nastavíme je na 0) hodnoty těch jedniček M, které jsou na koncích nula nebo jedničky, a také těch, které jsou ve vysokých a nízkých bitech. Nechť naše slovo vypadá například takto: (výraz nebo znamená, že 0 nebo 1 se bude ve slově i krát opakovat). Pak bude maska ​​M vypadat takto: . Takže resetujeme bity ve 4, 15, 16, 28 pozicích, tzn
    3. Dále pro opravu použijeme tabulku čtyř slov B[]. Všechny prvky tabulky B jsou vybrány tak, aby pro ně a pro všechny jejich cyklické posuny byla splněna vlastnost, že nemají sedm po sobě jdoucích 0 nebo 1. V implementaci IBM byla použita tabulka . Dále se dva zapsané bity j použijí k výběru slova z tabulky B a nejméně významných pět bitů slova K[i-1] se použije k otočení jeho prvků,
    4. Nakonec se vzor p převede XOR na původní slovo, přičemž se vezme v úvahu maska ​​M: . Stojí za zmínku, že 2 nejméně významné bity z M jsou 0, pak dva nejméně významné bity konečného slova budou jedničky a použití tabulky B umožňuje zaručit, že v poli nebude 10 po sobě jdoucích 0 nebo 1. slovo

Výhody a nevýhody algoritmu

Šifra byla kandidátem na AES , po drobných změnách v prvním kole soutěže, souvisejících se změnou postupu rozšíření klíče, MARS úspěšně prošel do finále.

Ve finále soutěže měl MARS řadu nedostatků:

  1. Složitá struktura . Složitá heterogenní struktura algoritmu ztěžovala nejen jeho analýzu, ale i implementaci.
  2. Implementace . Problémy byly při implementaci šifry na platformách, které nepodporovaly 32bitové operace násobení a rotace o libovolný počet bitů.
  3. Omezené zdroje . Neschopnost implementovat algoritmus v hardwaru s malými zdroji operační nebo energeticky nezávislé paměti .
  4. Ochrana . Ukázalo se, že MARS je špatně chráněn před útoky za běhu a spotřeby energie .
  5. Rozšíření klíče . MARS byl horší než ostatní finalisté AES v podpoře klíčové expanze za chodu.
  6. Paralelizace . Je možné paralelizovat pouze malou část algoritmu.

Pro všechny tyto nedostatky odborná komise vyzdvihla jednu velkou výhodu tohoto algoritmu - jeho symetrii. Na základě zjištěných nedostatků se MARS podle očekávání nestal vítězem AES.

Odpověď pro analytiky AES

Po vyhlášení výsledků soutěže AES zveřejnil tým MARS svoji recenzi celé soutěže. Zpochybnila kritéria pro hodnocení soutěže. Domnívali se, že hlavní charakteristikou šifry by měla být právě spolehlivost a její odolnost (např. proti útokům hrubou silou ), navíc odpovídali na každé tvrzení poroty jejich algoritmu.

1. MARS není vhodný pro hardwarovou implementaci Mezi stížnostmi na šifru byla její obtížná hardwarová implementace, která by mohla vést k zátěži internetu, a také k zavádění rozsáhlých schémat.

Vývojáři tvrdí, že jejich implementace je schopna pracovat rychlostí 1,28 Gb/s, což je přijatelné pro internet, a náklady na jejich čipy mohou být vysoké (13 USD za čip 12 Gb/s nebo 1 USD za čip 1 Gb/s), ale v jejich cena v budoucnu výrazně klesne.

2. MARS není vhodný pro implementaci na zařízeních s nízkou pamětí Pro implementaci na SMART kartách mají algoritmy pouze 128 bajtů paměti. Pro proceduru rozšíření klíče vyžaduje MARS 512 bajtů.

Vývojáři se domnívají, že není důvod implementovat AES na tak zranitelný zdroj s nízkou pamětí, jako jsou čipové karty, protože všechny tyto zdroje lze snadno a rychle převést na systémy s veřejným klíčem.

3. MARS není vhodný pro implementaci na FPGA MARS není vhodný pro implementaci na platformách, kde není povolena rotace (v závislosti na vnějších faktorech).

Vývojáři poznamenávají, že tento problém není fatální, ale přizpůsobení algoritmu této platformě chvíli trvá.

4. Rozšíření klíče MARS je velmi náročná operace

Vývojáři tvrdí, že jde o směšné tvrzení. Tvrdí, že mají „ideální“ poměr mezi další pamětí na klíč a propustností (25 bajtů na klíč)

Na závěr vývojáři uvádějí svou analýzu algoritmů účastníků AES, podle jejíchž výsledků byl MARS spolu s Serpentem nejlepším kandidátem na titul AES. [jeden]

Analýza zabezpečení algoritmu

V současné době neexistují žádné účinné útoky na tento algoritmus. I když má několik slabin [1] :

  1. Podklíče s velkým počtem opakovaných nul nebo jedniček mohou vést k účinným útokům na MARS, protože na jejich základě budou generovány slabé podklíče.
  2. Dva nejméně významné bity použité při násobení jsou vždy 1. Vždy tedy existují dva vstupní bity, které se během procesu násobení klíče nemění, a také dva výstupní bity, které jsou nezávislé na klíči.

Literatura

  • Panasenko S. P. Šifrovací algoritmy. Speciální referenční kniha - Petrohrad. : BHV-SPb , 2009. - S. 65-68, 219-228. — 576 s. — ISBN 978-5-9775-0319-8

Poznámky

  1. 1 2 3 Výzkum kryptografie . Získáno 13. listopadu 2011. Archivováno z originálu 16. května 2006.
  2. Fáze 3 a 4 se nazývají „kryptografické jádro“ algoritmu MARS
  3. Výzkum kryptografie . Získáno 14. listopadu 2011. Archivováno z originálu dne 23. května 2009.

Odkazy