MARS | |
---|---|
Teremtő | Carolyn Barwick, Don Coppersmith |
Létrehozva | 1998_ _ |
közzétett | 1998_ _ |
Kulcsméret | 128-448 bit |
Blokkméret | 128 bites |
A körök száma | 32 |
Típusú | Feistel hálózat |
A MARS egy AES jelölt titkosítás , amelyet az IBM fejlesztett ki , amely egy időben létrehozta a DES -t . Az IBM szerint a MARS algoritmus a cég 25 éves kriptoanalitikai szakértelmére támaszkodik, és magas kriptográfiai erőssége mellett a titkosítás lehetővé teszi a hatékony megvalósítást még az intelligens kártyák korlátai között is .
Don Coppersmith , a számos kriptológiával foglalkozó cikkéről ismert Lucifer -rejtjel ( DES ) egyik szerzője részt vett a rejtjel kifejlesztésében : az S-boxok szerkezetének javítása a differenciális kriptoanalízis ellen , a gyors mátrixszorzó módszer ( Coppersmith-Winograd algoritmus ), RSA kriptoanalízis . Rajta kívül Carolyn Barwick , Edward D'Evignon , Rosario Genaro , Shai Halevi , Charanjit Jutla , Steven M. Matyas Jr. vett részt az algoritmus kidolgozásában . , Luke O'Connor , Mohamed Perevyan , David Safford , Nevenko Zunich .
Az AES verseny szabályai szerint a résztvevők kisebb változtatásokat hajthatnak végre az algoritmusaikon. Ezt a szabályt kihasználva a MARSa szerzői megváltoztatták a kulcsbővítési eljárást, ami lehetővé tette a nem felejtő és a RAM követelményeinek csökkentését . Az alábbiakban az algoritmus módosított változatát közöljük.
Az AES verseny eredményei alapján a MARS bejutott a döntőbe, de kikapott Rijndaeltől . Az eredményhirdetés (2000. május 19.) után a fejlesztőcsapat saját véleményt alkotott az AES versenyről [1] , ahol véleményt nyilvánítottak ötletgazdájuknak az állításokról.
A MARS-t mostantól jogdíjmentes licenc alatt terjesztik világszerte .
A MARS egy blokkszimmetrikus titkosítás titkos kulccsal. A titkosítás blokkmérete 128 bit, a kulcs mérete 128 és 448 bit között változhat (32 bites többszörösek). Az alkotók arra törekedtek, hogy algoritmusukban ötvözzék a kódolás sebességét és a rejtjel erősségét. Az eredmény az egyik legerősebb algoritmus az AES versenyben .
Az algoritmus egyedülálló abban, hogy szinte az összes létező kriptoalgoritmusban használt technológiát felhasználta, nevezetesen:
A kettős keverés használata nehézséget okoz a kriptográfiai elemzésben , amit egyesek az algoritmus hátrányainak tulajdonítanak. Ugyanakkor jelenleg nincs hatékony támadás az algoritmus ellen, bár egyes kulcsok gyenge alkulcsokat generálhatnak.
A rejtjel szerzői a következő feltevésekből indultak ki:
A MARS-rejtjel a következő titkosítási módszereket használta:
A MARS algoritmus felépítése a következőképpen írható le:
Az első fázisban minden adatszót átfednek egy kulcsszóval, majd nyolc keverési kör következik a harmadik típusú Feistel hálózat szerint, némi további keveréssel együtt. Minden körben egy adatszót (úgynevezett forrásszó) használunk három másik szó módosítására (ezeket célszavaknak nevezzük). Az eredeti szó négy bájtját indexként kezeljük két S-boxba, S 0 -ba és S 1 -be , amelyek mindegyike 256 32 bites szóból áll, majd XOR vagy hozzáfűzzük a megfelelő S-box adatot három másik szóhoz.
Ha az eredeti szó négy bájtja b 0 , b 1 , b 2 , b 3 (ahol b 0 az első bájt és b 3 a magas bájt), akkor b 0 , b 2 -t használunk indexként az S blokkba. 0 és b 1 , b 3 bájtok , mint indexek az S 1 S-boxban . Először XOR S 0 az első célszóhoz, majd adjunk hozzá S 1 -et ugyanahhoz a szóhoz. Ezenkívül hozzáadjuk az S 0 -t a második célszóhoz, és blokkoljuk az XOR-S 1 - et a harmadik célszóhoz. Végül az eredeti szót 24 bittel jobbra forgatjuk.
A következő körben megforgatjuk a rendelkezésünkre álló négy szót: így az aktuális első célszó lesz a következő forrásszó, az aktuális második célszó az új első célszó, a harmadik célszó a következő második célszó, és a az aktuális forrásszó lesz a harmadik célszó.
Sőt, mind a négy kör után egy-egy célszót visszaadunk az eredeti szóhoz. Konkrétan az első és az ötödik kör után a harmadik célszót adjuk vissza az eredeti szóhoz, majd a második és hatodik kör után az első célszót adjuk vissza az eredeti szóhoz. Ezeknek a további keverési műveleteknek az az oka, hogy a keverési fázisban ki kell küszöbölni néhány egyszerű differenciális kriptotámadást , hogy a keverési fázisban megtörjék a szimmetriát, és gyors áramlást érjenek el.
Pszeudokód 1. // Kulcs első átfedése az adatokon 2. 3. 4. // Ezután 8 kör előre keverés 5. // használja a D[0]-t a D[1] módosításához; D[2]; D[3] 6. // 4 S-box elérése 7.8.9.10 . _ _ 11. // és az eredeti szót jobbra forgatjuk 12. 13. // további keverési műveleteket is végezhet 14. 15. // D[3] hozzáadása az eredeti szóhoz 16. 17. // D[1] hozzáadása az eredeti szóhoz 18. // D tömb elforgatása[ ] 19.20 .A MARS kriptográfiai magja egy 3-as típusú Feistel hálózat , amely 16 lövést tartalmaz. Minden körben a billentyű E-függvényt használjuk, amely szorzások, forgatások és S-box hívások kombinációja. A függvény egy adatszót vesz be bemenetként, és három szót ad vissza, amelyekkel a további három adat szóhoz az összeadás vagy XOR művelet végrehajtásra kerül. Ezenkívül a forrásszó 13 bittel balra van elforgatva.
A kriptotámadásokkal szembeni komoly ellenállás érdekében az E-függvény három kimeneti értékét (O 1 , O 2 , O 3 ) az első nyolc, az utolsó nyolc körben pedig különböző sorrendben használjuk. Az első nyolc körben az első, illetve a második célszóhoz az O 1 -et és az O 2 -t, a harmadik célszóhoz pedig az XOR O 3 -at adjuk . Az utolsó nyolc körben a harmadik, illetve a második célszóhoz adjuk az O 1 -et és az O 2 -t, az első célszóhoz pedig az XOR O 3 -at.
Pszeudokód 1. // Végezzen 16 titkosítási kört a kulccsal 2. 3. 4. 5. 6. // előre váltás első 8 köre 7. 8. 9. // majd 8 forduló inverz transzformáció 10. 11. 12. 13. // D tömb elforgatása[ ] 14. 15. E-funkcióAz E-függvény egy szó adatot vesz fel bemenetként, és további két kulcsszót használ, így három szót ad ki kimenetként. Ebben a függvényben három ideiglenes változót használunk, melyeket L, M és R jelölünk (balra, középre és jobbra).
Kezdetben R-t állítottunk be az eredeti szó értékére, 13 bittel balra tolva, M-et pedig az eredeti szavak és az első kulcsszó összegére. Ezután M első kilenc bitjét használjuk az 512 S-box egyikének indexeként (amit S 0 és S 1 fáziskeveréssel kombinálva kapunk ), és L-ben tároljuk a megfelelő S-box értékét.
Ezután a második kulcsszót megszorozzuk R-vel, az értéket R-ben tárolva. Ezután R 5 pozíciót elforgatunk balra (így az 5 magas bit az elforgatás után R 5 alacsony bitjévé válik). Ezután XOR R-t L-be írjuk, és az R alsó öt bitjét is megnézzük, hogy meghatározzuk az eltolás mértékét (0-ról 31-re), és elforgatjuk M-et balra ennyivel. Ezután elforgatjuk az R-t további 5 pozícióval balra, és XOR L-t L-be. Végül ismét az R 5 legkisebb jelentőségű bitjét tekintjük az elforgatás mértékének, és forgatjuk el L-t ennyivel balra. Így az E-függvény eredménye 3 szó (sorrendben): L, M, R.
Pszeudokód 1. // használjunk 3 ideiglenes változót L; M; R 2. //adja hozzá az első kulcsszót 3. // szorozzuk meg a második kulcsszóval, amelynek párosnak kell lennie 4. 5. // vegye S-box 6. 7. // ezek a bitek a következő forgatás mértékét írják le 8. // első forgatás változóval 9. 10. 11. 12. // ezek a bitek a későbbi forgatás mértékét írják le 13. // második változó forgatás tizennégy.A vissza keverés szinte ugyanaz, mint az előre keverés, kivéve azt a tényt, hogy az adatok feldolgozása fordított sorrendben történik. Vagyis ha az előre és hátra keverést úgy kombináltuk, hogy a kimeneteik és bemeneteik fordított sorrendben kapcsolódjanak (D[0] előre és D[3] hátra, D[1] előre és D[2] hátra), akkor nem látná a keverés eredményét. A közvetlen keveréshez hasonlóan itt is egy forrásszót és három célszót használunk. Tekintsük az eredeti szó első négy bájtját: b 0 , b 1 , b 2 , b 3 . Az S-box indexeként b 0 , b 2 -t fogunk használni - S 1 és b 1 b 3 -t S 0 esetén . Az első célszóba XOR S 1 [b 0 ]-t, a második szóból vonjunk ki S 0 [b 3 ]-t, a harmadik célszóból vonjuk ki S 1 [b 2 ]-t, majd XOR S 0 [b 1 ]-t szintén a harmadik célszó . Végül az eredeti szót 24 hellyel balra forgatjuk. A következő körben a rendelkezésre álló szavakat úgy forgatjuk, hogy az aktuális első célszó legyen a következő forrásszó, az aktuális második célszó az első célszó, az aktuális harmadik célszó a második célszó, és az aktuális forrásszó. lesz a harmadik célszó. Ezenkívül a négy „speciális” kör valamelyike előtt kivonjuk az egyik célszót a forrásszóból: a negyedik és a nyolcadik kör előtt az első célszót, a harmadik és a hetedik kör előtt a harmadikat. célszó a forrásszóból.
Pszeudokód 1. // Végezzen 8 kör visszakeverést 2. 3. // további keverési műveletek 4. 5. // D[3] kivonása az eredeti szóból 6. 7. // D[1] kivonása az eredeti szóból 8. // az S-dobozok négy elemére hivatkozunk 9. 10. 11. 12. 13. // és az eredeti szót balra forgatjuk tizennégy. 15. // D tömb elforgatása[] 16. 17. 18. // Kulcsszó kivonása 19.20 .A dekódolási folyamat a kódolási folyamat fordítottja. A visszafejtő kód hasonló (de nem azonos) a titkosító kóddal.
Közvetlen keverés 1. // Kezdeti kulcsfedés 2. 3. 4. // Ezután végezzen 8 kör előrekeverést 5. 6. // D[] tömb elforgatása 7. 8. // és az eredeti szót jobbra forgatva 9. 10. // S-box 4 elemének elérése 11. 12. 13. 14. 15. // további keverés 16. 17. // D[3] hozzáadása az eredeti szóhoz 18. 29. // D[1] hozzáadása az eredeti szóhoz húsz. Kriptográfiai mag 1. // Futtasson 16 kört az overlay gomb használatával 2. 3. // D[] tömb elforgatása 4. 5. 6. 7. 8. // utolsó 8 kör közvetlen sorrendben 9. 10. 11. // első 8 kör fordított sorrendben 12. 13. 14. 15.
Az S-box S létrehozásakor az elemeit egy pszeudo-véletlen generátor generálta, majd különböző lineáris és differenciális tulajdonságokra teszteltük őket. Pszeudo-véletlen S-boxokat hoztak létre a következő paraméterekkel:
(hol van a j-edik szó az SHA-1 kimenetben ) Itt az i egy 32 bites előjel nélküli egész szám, és c1, c2, c3 néhány állandó. Az IBM megvalósításban: c1 = 0xb7e15162; c2 = 0x243f6a88 (amelyek a és a tört részének bináris jelölése ). A c3-at addig változtattuk, amíg megfelelő tulajdonságokkal rendelkező S-boxokat nem találtunk. Az SHA-1 adatfolyamokon működik, és kis endian-t használ.
S-box tulajdonságaiDifferenciáltulajdonságok .
XOR | Kivonás |
---|---|
Lineáris tulajdonságok
a kulcsbővítési eljárás a k[] kulcsok adott tömbjét, amely n darab 32 bites szóból áll (ahol n egy 4-től 14-ig terjedő egész szám), 40 elemű K[] tömbbé bővíti. Az eredeti kulcsnak nem kell semmilyen struktúrát követnie. Ezenkívül a kulcsbővítési eljárás garantálja az algoritmus kriptográfiai magjában a szorzáshoz használt kulcsszó alábbi tulajdonságait:
Leírjuk a kulcsbővítési algoritmust.
A rejtjel az AES jelöltje volt , a verseny első fordulójában a kulcsbővítési eljárás megváltoztatásával kapcsolatos kisebb változtatások után a MARS sikeresen bejutott a döntőbe.
A verseny döntőjében a MARS-nak számos hiányossága volt:
Mindezen hiányosságok mellett a szakértői bizottság kiemelte ennek az algoritmusnak az egyik fő előnyét - szimmetriáját. A feltárt hiányosságok alapján a MARS a várakozásoknak megfelelően nem lett az AES győztese.
Az AES verseny eredményhirdetése után a MARS csapata közzétette a teljes versenyről szóló beszámolóját. Megkérdőjelezte a verseny értékelésének szempontjait. Úgy vélték, hogy a titkosítás fő jellemzője éppen a megbízhatóság és az ellenállás (például a brute force támadásokkal szembeni) legyen, emellett az esküdtszék minden igényét megválaszolták az algoritmusuknak.
1. A MARS nem alkalmas hardveres implementációra A rejtjellel kapcsolatos panaszok között szerepelt a nehéz hardveres implementáció, ami az Internet megterheléséhez vezethet, valamint nagy méretű sémák bevezetése.
A fejlesztők azt állítják, hogy implementációjuk 1,28 Gbps sebességgel képes működni, ami az internet számára is elfogadható, és a chipjeik költsége is magas lehet (13 dollár egy 12 Gbps-os chip vagy 1 dollár egy 1 Gbps-os chip), de az ár a jövőben jelentősen csökkenni fog.2. A MARS nem alkalmas kevés memóriával rendelkező eszközökön való megvalósításra A SMART kártyákon való megvalósításhoz az algoritmusok csak 128 bájt memóriával rendelkeznek. A kulcsbővítési eljáráshoz a MARS 512 bájtot igényel.
A fejlesztők úgy vélik, hogy nincs ok az AES bevezetésére egy ilyen sérülékeny, alacsony memóriájú erőforráson, mint az intelligens kártyák, mivel ezek az erőforrások egyszerűen és gyorsan konvertálhatók nyilvános kulcsú rendszerekké.3. A MARS nem alkalmas FPGA -n való megvalósításra A MARS nem alkalmas olyan platformokon való megvalósításra, ahol a forgatás nem megengedett (külső tényezőktől függően).
A fejlesztők megjegyzik, hogy ez a probléma nem végzetes, de egy kis időbe telik, amíg az algoritmust hozzáigazítják ehhez a platformhoz.4. A MARS kulcs kiterjesztése nagyon nehéz művelet
A fejlesztők azt állítják, hogy ez nevetséges kijelentés. Azt állítják, hogy megvan az "ideális" arány a kulcsonkénti többletmemória és az átviteli sebesség között (25 bájt kulcsonként).Végezetül, a fejlesztők az AES résztvevőinek algoritmusairól adnak elemzést, melynek eredménye szerint a MARS és a Serpent volt a legjobb jelölt az AES címre. [egy]
Jelenleg nincs hatékony támadás ez ellen az algoritmus ellen. Bár számos gyenge pontja van [1] :
Szimmetrikus titkosítási rendszerek | |
---|---|
Rejtjelfolyam adatfolyam | |
Feistel hálózat | |
SP hálózat | |
Egyéb |