Algoritmul de criptare MARS

Algoritmul Mars este un cifru de criptare cu cheie publica, care lucreaza pe 128 biti si cu o cheie de marime variabila. Datele de intrare ale algoritmului sunt patru cuvinte pe 32 de biti A, B, C, D.luate dintr-un text cu format normal si rezultatele sunt tot 4 cuvinte pe 32 de biti A’,B’,C’,D’ criptate.Algoritmul este de tipul 3 Fiestel network impartit in trei etape:”cryptographic core”,16 circulare de transmisie, prinsa intre celelalte doua etape de 8 circulare “forword” si “backwords mixing” (Figura 1).  Circuitele partii centrale criptografice furnizeaza o rezistenta puternica la toate atacurile criptografice cunoscute, in timp ce circuitele celorlalte doua etape ofera o securitate foarte larga impotriva noilor si necunoscutelor atacuri.

Mars accepta o marime variabila a cheilor, de la 4 la 14 cuvinte (adica de la 128 la 448 biti). Se foloseste o procedura de marire a cheilor pentru a “marii” cheia oferita de user (care consta in n*32 de biti,unde n poate fi un numar intre 4 si 14) intr-o cheie de tip vector de 40 de cuvinte pentru operatia de criptare/decriptare.Mars foloseste o larga varietate de operatii pentru a oferii o combinatie de securitate, viteza, si flexibilitate la implementare. Acestea sunt:

  • adunari,scaderi si xor (sau exclusiv).Aceste operatii sunt folosite pentru a combina datele si valorile cheilor.Pentru ca “xor”-ul este folosit impreuna cu scaderea si adunarea, aceste operatii nu sunt comutative
  • un tabel(table look-up) de 512 32-cuvinte, numite S-box.O problema a acestui tabel este implementarea software mai inceata(ce putin 3 instructiuni per “look-up”).De acea look-upul pt S-box este folosit rar in Mars
  •  rotatii fixe
  • rotatii dependente de date – care pot duce la diferite slabiciuni.Aceasta problema poate fi rezolvata in Mars combinand aceste rotaii cu inmultirea.
  •  inmultiri – sunt de forma modulo 232 care se potrivesc noilor arhitecturi de calculatoare.Acestea erau de obicei o problema in algoritmii de criptare pentru ca incetineau procesul.Astazi problema aceasta nu mai exista.

Operatia de cripatare a algoritmului este aratata in detaliu in Figura2. Operatia de decriptare a algoritmului este inversul operatiei de criptare.

Mars poate obtine mari performante in software de cand se poate folosi de puternicele operatii disponibile in computerele performante ale zilelelor noastre.Momentan o implementatie C merge cu 85 Mbit/sec la un PowerPC cu 200Mhz. La un IBM-compatibil PC cu un procesor de 200MHz Pentium-Pro, merge cu vitaza de 65 Mbit/sec. Algoritmul este cu mult mai rapid decat alte astfel de programe cum ar fi DES si Triple-DES. Mars poate fi implementat cu suscces si in hardware. El ocupa aproximativ 70,000 de celule.

Orientarea pe cuvinte ar trebui sa aduca o performanta pentru implementarile soft la majoritatea arhitecturilor de calculatoare disponibile momentan.O optimizare totala a implementarii se asteapta sa ruleze cu 100Mbit/sec.

WRAPPER LAYERS

Prima faza (forword mixing) incepe prin adaugarea a cuvintelor cheie la cuvintele data, urmata de 8 tururi ale S-box-ului. A doua faza (backword mixing) are 8 tururi ale circuitelor inversate, urmata de sustragerea cheilor.

In ambele faze un cuvant data(numit cuvantul sursa) este folosit pentru a modifica celelalte trei cuvinte(numite cuvinte tinta). Cei patru biti ai cuvantului sursa sunt vazuti ca si indici int doua S-boxes, fiecare consistand in cuvinte de 256*32-bit. In ambele faze cele patru cuvinte sunt rotate dupa fiecare etapa, astfel incat fiecare cuvant tinta care a fost primul devine urmatorul cuvant sursa, al doilea cuvant tinta devine urmatorul cuvant tinta,s.a.m.d.

Cateodata adaugam/sustragem unul dintre cuvintele tinta inapoi devenind cuvantul sursa curent. In special in etapa urmatoare adaugam al treilea cuvant tinta la cuvantul sursa, dupa primul si al cincealea circuit, si aduagam primul cuvant tinta inapoi la cuvantul sursa, dupa al doilea si al saselea circuit. In faza “backword” sustragem primul cuvant tinta din cuvantul sursa, inaite de al patrulea si al optulea circuit, si sustrag al treilea cuvant tinta din cuvantul sursa, inainte de al treile asi al saptelea circuit. Motivul pentru aceste operatii de extragere este pentru a elimina unele dintre atacurile diferentiale mai usoare impotriva celor doua faze.

CRIPTOGRAPHIC CORE

Este de tipul “type-3 Feistel network”figura 6, dar aici algoritmul foloseste o cheie “E-function” spre deosebire de etapa “forward mixing”.Datele de iesire ale “E-function”-ului sunt de asemenea adunate sau li se aplica un sau exclusiv cu celelalte cuvinte. Contine in total 16 pasi(8 “forward” si 8 “backward”). “E-function”-ul  este o combinatie de diferite operatii care combina doua cuvinte cheie cu cuvantul de intrare.Aceasta este de asemenea etapa in care apare inmultirea. De asemenea contine un S-box lookup.”E-function” este unul dintre cele mai parti de design din algoritmul Mars,diferitele functii fiind combinate intr-un mod care maximizeaza avantajele fiecaruia.

  • cand multiplici partea mai putin semnificativa a bitilor datelor de intrare, efectul este mai mare decat in cazul multiplicarii partii mai demnificative.Bitii care nu incap in S-box sunt cei mai putin semnificativi din inmultire.
  • multimea de rotatii (13 biti) a fost setata sa maximizeze rezistenta la diferite atacuri
  •  cea mai semnificativa parte din inmultirea datelor de iesire este afectata de mai multi biti ale datelor de intrare decat partea cea mai putin semnificativa.De acea bitii ce mai semnificativi sunt folositi pentru a determina multimea rotatiilor dependente de date.
  • cele trei linii din functie sunt atat de independente una de alta, pe cat e posibil pentru a evita anularea si pentru a ingreuna obtinerea unei aproximari liniare.
  • cat timp M e cea mai slaba data de intrare a functiei, ea este pusa in mijlocul datelor de iesire, astfel incat nu este folosit niciodata pentru a modifica cuvantul sursa folosit pentru modificarea din urmatorul pas.

KEY EXPANSION

Algoritmul Mars are o lungime de chei variabila.Intervalul lungimii acestora este sau intre 128-448 biti sau inte 128-1248 biti(cu animite restrictii). Din punct de vedere intern algoritmul lucreaza cu 40 de cuvinte cheie, ceea ce este egal cu 1280 de biti.Dar 32 dintre acestia au valoarea constanta 1 (ultimii cei mai putin semnificativi 2 biti ai cuvintelor cheie 5,7,9,…,35) ,rezulta ca lungimea cheilor interne este de 1248 de biti.Exista cateva restrictii pentru chei.Acelasi cuvant cheie care contine cei doi bitii cu valoare constanta 1 nu ar trebui sa contina 10 valori consecutive de 0 sau 1.Motivul acestui criteriu este ca aceste cuvinte cheie sunt folosite pentru inmultiri in “E-function” si cuvintele cheie fara aceste proprietati vor duce la slabirea cheilor la diferite atacuri. Rutina de expansiune a cheilor foloseste aceleasi operatii (xor,shift,table look-up) ca si criptarea/decriptarea.Pseudocodul pentru rutina key expansion(care foloseste intre 4 si 14 cuvinte cheie si produce o cheie valida Mars pe 1284 de biti) poate fi vazuta in Key-expansion. Procedura de expansiune a cheilor consta in trei etape dupa cum vedeti si in figura de mai sus.

  • primul pas este “expansiunea liniara” care extinde, cheia originala oferita de user, la 40 32biti folosindese de o transformare liniara simpla.
  • al doilea pas este “S-box” care starneste cheia extinsa folosindu-se de sapte circuite de tipul-1 Feistel network pentru a distruge relatiile liniare din cheie.
  • ultimul pas este “cuvant cheie care modifica prin inmultire” examinand cuvintele cheie care sunt folosite in operatia de criptare/decriptare a algoritmului Mars pentru a le multiplica si modifica in caz ca este nevoie.

SECURITATE

Nivelul de securitate al algoritmului cu chei de n-biti,pentru chei de lungime pana la cel putin 256 de biti,este de 2 la puterea n. Nivelul securitatii nu va creste mai repede sau asa de repede pentru mai mult de 2 la puterra 256. Folosirea cheilor mai mari de 256 de biti se face nu pentru siguranta ci din comoditate.

Se estimeaza ca orice atac liniar sau diferential impotriva algoritmului, trebuie sa aiba o complexitate a datelor mai mare decat 2 la puterea 128, cea ce inseamna ca pentru blocurile de lungime de 128 biti, aceste atacuri sunt imposibile. Pentru atacurile liniare, nici o aproximatie liniara a transformailor de chei nu are o inclinare mai mare de 2 la puterea 69, cea ce ar fi implicat o complexitate a datelor mai mare de 2 la puterea 128. Pentru atacurile diferentiale unul dintre argumente ar fi cel care explica de ce este putin probabil ca cineva sa construiasca o transformare a cheilor cu probabil mai mare decat 2 la puterea -240.

CONCLUZII

Sistemul criptografic hibrid propus permite crearea unor canale de comunicatii criptografiate pe reteaua Internet si implementeaza o infrastructura locala de certificate digitale. Acest tip de solutie se poate de creat efectiv pe platforme de programare ca Java in SDK si Microsoft .Net Framework.

Mars este un cifru de blocare a cheilor rapid si sigur. Ofera securitate/performanta mai mare in comparatie cu celelalte cifruri existente, profitand de avantajele oferite de calculatoarele mai performante din ziua de azi. Ambele implementari, si cea software si cea hardware, ale algoritmului sunt remarcabil de compacte. Combinatia de securitate inalta, viteza mare, si flexibilitate face ca algoritmul Mars sa fie o alegere excelenta pentru nevoile de criptare.

Sursa: wikipedia