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í .
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.
Autoři šifry vycházeli z následujících předpokladů:
Šifra MARS používala následující metody šifrování:
Strukturu algoritmu MARS lze popsat následovně:
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ý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-funkceE-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.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 .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.
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-boxuDiferenciální vlastnosti .
XOR | Odčítání |
---|---|
Lineární vlastnosti
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:
Popišme klíčový expanzní algoritmus.
Š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ů:
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.
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]
V současné době neexistují žádné účinné útoky na tento algoritmus. I když má několik slabin [1] :
Symetrické kryptosystémy | |
---|---|
Streamové šifry | |
Síť Feistel | |
Síť SP | |
jiný |