Algoritmul de Criptare BLOWFISH

12
Algoritmul de criptare BLOWFISH Cuvântul criptografie provine din grecescul “kryptos” care înseamnă “ascuns”, şi “graphein” care înseamnă “a scrie”). Criptografia este stiinţa care studiază codarea mesajelor şi descrie arta de a descifra mesajele criptate, facând mesajul lizibil. De asemenea are o latură matematică; aceasta combină criptografia şi criptoanaliza, rezultând criptologia. Un mesaj nesecurizat este privit că şi un text, pe când unul securizat este văzut că fiind un text criptat sau codat. Procesul de convertire a textelor nesecurizate în texte securizate, poartă numele de criptare. Procesul invers se numeşte decriptare. Datorită noii tehnologi, astăzi criptografia a evoluat într-un mod semnificativ, a devenit un proces foarte sigur şi des folosit, de aceea prezintă un interes pentru oamenii de afaceri, precum şi pentru programatori, care încearca zi de zi sa gasească noi algoritmi optimi şi eficienti de criptare şi decriptare. În momentul în care comunitatea criptografica avea nevoie sa furnizeze lumii noi standarde de criptare, este propus Blowfish, un nou bloc de cifru de 64 biţi cu cheie de lungime variabilă. Deşi există diferite metode de criptare disponibile pentru a păstra un transfer de date sigur, mulţi dintre aceşti algoritmi nu sunt disponibili pentru public. Unii sunt protejaţi de autorizaţii (Khufu [11,12], REDOC II [2,23,30], şi IDEA [7,8,9]), unii sunt păstrati secreti de guverne (Skipjack şi Capstone protejate de guvernul american) ) sau unii sunt disponibili doar pe părţi(RC2,RC4 şi GOST). Totodată, algoritmul de criptare DES [16] din ultimii 15 ani se apropie de sfarsitul lui în utilizare. Cheia lui de de 56 biţi lungime este vulnerabilă la un atac de forţă brută[22] şi noile avansări în criptanaliza diferenţială[1] şi criptanaliza liniară[10] arată că DES este vulnerabil şi pentru alte atacuri.

description

blowfish

Transcript of Algoritmul de Criptare BLOWFISH

Algoritmul de criptare BLOWFISHCuvntul criptografie provine din grecescul kryptos care nseamn ascuns, igraphein care nseamn a scrie). Criptografia este stiina care studiaz codareamesajelor i descrie arta de a descifra mesajele criptate, facnd mesajul lizibil. Deasemenea are o latur matematic; aceasta combin criptografia i criptoanaliza,rezultnd criptologia. Un mesaj nesecurizat este privit c i un text, pe cnd unulsecurizat este vzut c fiind un text criptat sau codat. Procesul de convertire a textelornesecurizate n texte securizate, poart numele de criptare. Procesul invers se numetedecriptare. Datorit noii tehnologi, astzi criptografia a evoluat ntr-un mod semnificativ,a devenit un proces foarte sigur i des folosit, de aceea prezint un interes pentru oameniide afaceri, precum i pentru programatori, care ncearca zi de zi sa gaseasc noi algoritmioptimi i eficienti de criptare i decriptare.n momentul n care comunitatea criptografica avea nevoie sa furnizeze lumii noistandarde de criptare, este propus Blowfish, un nou bloc de cifru de 64 bii cu cheie delungime variabil.Dei exist diferite metode de criptare disponibile pentru a pstra un transfer dedate sigur, muli dintre aceti algoritmi nu sunt disponibili pentru public. Unii suntprotejai de autorizaii (Khufu [11,12], REDOC II [2,23,30], i IDEA [7,8,9]), unii suntpstrati secreti de guverne (Skipjack i Capstone protejate de guvernul american) ) sauunii sunt disponibili doar pe pri(RC2,RC4 i GOST). Totodat, algoritmul de criptareDES [16] din ultimii 15 ani se apropie de sfarsitul lui n utilizare. Cheia lui de de 56 biilungime este vulnerabil la un atac de for brut[22] i noile avansri n criptanalizadiferenial[1] i criptanaliza liniar[10] arat c DES este vulnerabil i pentru alteatacuri.De aceea n multe situaii algoritmul Blowfish este soluia ideal. El are liciengratuit, este disponibil pentru toate cazurile de utilizare i dei a fost spart pe buci,ntreaga versiune este inpenetrabil.ISTORICBlowfish a fost creat n 1993 de Bruce Schneier c o alternativ la algoritmii decriptare deja existeni. Presedinte al companiei Counterpane Systems, firm deconsultare specializata n criptograpfie i securizarea calculatoarelor, a contribuit lascrierea multor documente criptografice, incluznd cartea Applied Cryptography (JohnWiley & Sons,1994&1996) considerat o lucrare influienabil n domeniulcriptografiei. Cea mai mare realizare a sa ramne totui algoritmul de criptare Blowfish,prezentat pentru prima dat n 1994 la Cambridge, Anglia ntr-un workshop despreprocedee de securizare.DOMENII DE APLICATIEUn algoritm standard de criptare trebuie s fie compatibil cu diferite aplicaii. El trebuies fie eficient pentru:- criptarea fiierelor de date sau al unui ir de date continuu- producerea de bii aleatori- criptarea pachetelor de date dimensionate (un pachet ATM are campul de date de 48octei)- convertirea sa ntr-o funcie de dispersie cu o singur orientare- aplicaiile unde pachete successive pot fi criptate i decriptate cu chei diferitePLATFORMEEste implementat pe o varietate de platforme diferite, fiecare cu cerinele eiproprii. Ele includ:- hard special. Este implementat eficient pe un hard VLSI obinuit- procesoare mari. n timp ce partea hard va fi folosit pentru aplicaii rapideimplementarea soft este mai comun. Algoritmul este eficient pe microprocesoare de 32bii cu program de 4 kilooctei i date ascunse- procesoare de mrime mijlocie. De genul 68HC11- procesoare de mrime mic. Cerinele pentru procesoare mici sunt cele mai dificile.Limitrile RAM i ROM sunt severe pentru aceste platforme. Totodat eficena este maiimportanta pe aceste maini mici. Staiile de lucru ii dubleaz capacitaile aproape anual.Sistemele mici sunt aceleai an dupa an i este nevoie de o capacitate mic de economisit.Daca este de ales, atunci estimarea suplimentar a sarcinii ar trebui s fie mai degrab peprocesoare mari decat pe procesoare mici.CERINE AUXILIAREAceste cerine auxiliare sunt percepute de stadardele de criptare.Algoritmul este robust i simplu de codat. Dupa experienta cu DES[19] programatorii facdes greseli de implementare din cauza c algoritmul este complicat.Spaiul cheilor ngduie oricrui ir de bii aleator de o lungime cerut s fie o posibilcheie. Nu ar trebui s fie chei slabe.Algoritmul faciliteaz orice administrare a cheiipentru implementrile soft. Administrarea implementrilor a DES-ului n generalfolosete chei de adiministrare a tehnicilor sarace. n particular parola pe care o tipreteutilizatorul devine cheia. Asta nseamn c dei DES are un spaiu al cheilor teoretic de256, spaiul actual este limitat la chei formate din 95 de caractere al publicabilului ASCII.Algoritmul este usor de modificat pentru nivele de securitate diferite atat pentru cerineminime ct i pentru cerine maxime.Toate operaiile manipuleaz date n blocuri cu dimensiune n octei. Pe ctposibil operaiile ar trebui sa manipuleze date n blocuri de 32 bii.DECIZII DE DESIGNPotrivit parametrilor de mai sus s-au luat urmatoarele decizii de design.Algoritmul:- manipuleaza date n blocuri mari, preferabil de mrime de 32 bii- are mrimea blocului fie de 64 bii fie de 128 bii- are o cheie cuprins ntr 32 de bii i 256 bii-operaii simple care sunt eficiente pe microprocesoare: sau exclusiv (XOR), adunare,nmulire modular. Nu ar trebui sa foloseasc mutri de lungime variabil, permutri debii sau salturi condiionale.- este implementabil pe un processor de 8biti cu RAM-ul de 24 octei i ROM-ul de 1kilooctet- const ntr-un numr de iteraii variabil. Pentru aplicaii cu o mrime a cheii mic,complexitatea atacului de for brut sau a atacului diferenial face un numr mare deiteraii de prisos. Se reduce numrul mare de iteraii fara nici o pierdere a securitii(dincolo de cea a cheii de lungime redus)- pe ct posibil sa nu aib chei slabe. Daca nu e posibil, proporia cheilor slabe ar trebuis fie destul de mic pentru a face puin probabil sa alegi una aleator. Totodat, oricecheie slab trebuie stiut n mod explicit pentru a putea fi nlaturat n timpul procesuluide generare a cheilor- nu are structuri liniare care reduc complexitatea cautrii- Folosete un design simplu de ineles. Aceasta faciliteaz analiza i mrete confidenaalgoritmului.Majoritatea deciziilor nu sunt noi. Aproape toate blocurile de cifruri folosesc dinaceste principii: FEAL [13,14,15] i Khufu[11] folosete un numr variabil de iteraii,Khufu[11] are un numr mare de subchei care sunt o funcie cu o singur orientare acheii, RC2[18] are o lungime a cheii variabil, GOST[6] folosete cuvinte de lungime de32 bii i mrimea blocului de 64 bii, MMB[2] folosete cuvinte de lungime de 32 bii imrimea blocului de 128 bii.CONSTRUIREA BLOCURILOR (n mai muli algoritmi de criptare)Exist un numr mare de blocuri care s-a demonstrat c produc cifruri puternice.Multe dintre acestea pot fi implementate cu uurin pe microprocesoare de 32 bii.Cutii-S mari sunt mai rezistente la criptanaliza difereniala. Un algoritm culungimea cuvantului de 32 bii poate folosi cutii-S de 32 bii. Khufu i REDOC IIIfolosesc o intrare de 256 i cutii-S [11,20] de 32 bii.n timp ce cutiile-S fixe trebuie modelate pentru a fi rezistente la criptanalizadiferenial i liniara, cutiile-S dependente de cheie sunt mai rezistente la aceste atacuri.Sunt folosite n algoritmul Khufu[11]. Cutii-S variabile care pot fi dependente de cheiesunt folosite un GOST[6]Se combin operaii din diferite grupuri algebrice. Cifrul IDEA a introdusconceptul de combinare a XOR(sau exclusiv) mod 2 16, adunare mod 2 16 i nmuliremod 2 16 +1. Cifrul MMB folosete cuvinte de 32 bii i combina XOR mod 232 cunmulire mod 2 32-1 [2]Permutrile fixate initiale i finale ale DES-ului au fost multa vreme consideratenefolositoare.BLOWFISHBlowfish este un bloc de cifru cu cheie de lungime variabil. Nu satisface toatecerinele pentru un nou standard criptografic discutate anterior: este potrivit doar pentruaplicaii unde cheia nu se Schimb des, ca i un link de comunicatii sau un criptor defiiere automat. Este clar mai rapid ca i DES cnd este implementat pe unmicroprocesoare de 32 bii cu multe date ascunse de exemplu Pentium i PowerPC.DESCRIEREA ALGORTMULUIBlowfish este un bloc de cifru de 64 bii cu cheie de lungime variabil. Algoritmulconst n 2 parti: o parte de expansiune a cheii i o parte de criptare a datelor. Expansiunecheii converteste o cheie de maxim 448 bii n mai multe tablouri de subchei totaliznd4168 octei.Criptarea datelor are loc prin o reea Feistel de 16 reprize. Toate operaiile suntXOR-uri i adunri pe cuvinte de 32 bii. Singurele operaii de adunare sunt 4 tablouri decutare a datelor pe repriz.Subchei :Blowfish folosete un numr mare de subchei:1. Tabloul P este format din 18 subchei de 32 bii: P1,P2,,P182. Exist 4 cutii-S de 32 bii cu 256 intrri fiecareS1,0, S1,1,, S1,255;S2,0, S2,1,, S2,255;S3,0, S3,1,, S3,255;S4,0, S4,1,, S4,255.Criptarea:Blowfish este o reea Feistel care const n 16 reprize (vezi figura 1). Intrarea este x,un element dat de 64 bii, n timp ce sirul P este notat cu Pi (unde i este iteratia).mparte x n doua jumti de 32 bii: xL, xRPentru i = 1 la 16:xL = xL XOR PixR = F(xL) XOR xRSchimb xL i xRSchimb xL i xR (Desface ultima Schimbre.)xR = xR XOR P17xL = xL XOR P18Recombina xL i xRFunctia f (vezi figura 2):mparte xL n 4 sferturi de 8 bii : a, b, c i dF(xL) = ((S1,a + S2,b mod 232) XOR S3,c) + S4,d mod 232Decriptarea este identic cu criptarea cu excepia c P1,P2,,P18 sunt folosite nordine invers. Implementarea Blowfish-ului care cere viteze maxime ar trebui s seasigure c toate subcheile sunt pstrate ascunse.Subcheile sunt calculate folosind algoritmul Blowfish. Metoda exact esteurmtoarea:1. Initializeaza intai tabloul P i cele 4 cutii-S,in ordine, cu un ir fixat. irul const ncifre hexazecimare ale numrului pi(mai puin primele 3). De exemplu:P1 = 0x243f6a88P2 = 0x85a308d3P3 = 0x13198a2eP4 = 0x037073442. XOR P1 cu primii 32 de bii ai cheii, XOR P2 cu urmtorii 32 de bii ai cheii icontinu pentru toi biii cheii (posibil pn la P14). Repet ciclul prin biii cheii pncnd la tot tabloul i s-a efectuat XOR cu biii cheii.(pentru orice cheie scurt exist celpuin o cheie echivalent mai lung, de exemplu daca A este o cheie de 64 bii atunciAA,AAA,etc sunt chei echivalente)3. Cripteaz tot irul zero cu algoritmul Blowfish folosind subcheile descrise n paii (1)i (2)4. Inlocuiete P1 i P2 cu ieirea pasului (3)5. Cripteaza ieirea pasului (3) folosind algoritmul blowfish pentru subcheile modificate6. Inlocuiete P3 i P4 cu ieirea pasului (5)7. Continua procesul nlocuind toate intrrile tabloului P i apoi toate 4 cutiile S n ordinecu iesirea algoritmului Blowfish continuu modificabiln total sunt necesare 521 de iteraii pentru a genera toate subcheile necesare. Aplicaiilepot stoca subcheile mai degrab dect s execute procesul de derivare de mai multe ori.MINI-BLOWFISHUrmatoarele versiuni mini ale Blowfish-ului sunt definite numai pentrucriptanaliza. Nu sunt sugerate pentru implementarea propriuzisa. Blowfish-32 are un blocde mrime de 32 bii i tablourile subcheilor de intrri de 16 bii (fiecare cutie S are 16intrri). Blowfish-16 are un bloc de mrime de 16 bii i tablourile subcheilor de intrri de8 bii (fiecare cutie S are 4 intrri).DECIZII CARE AU STAT LA BAZA CREARII ALGORITMULUI BLOWFISHLa baza filosofiei din spatele Blowfish-ului st simplicitatea beneficiilor de designcare este att uor de neles ct i usor de implementat.Un bloc de mrime de 64 biirealizeaz un cuvnt de mrime de 32 bii i menine compatibilitatea mrimii blocului cualgoritmii existeni. Criptanaliza variantelor de mini-Blowfish pot fi n mod semnificantmai uoare dect criptanaliza ntregii versiuni.Operaiile fundamentale au fost aleselundu-se n considerare viteza. XOR,ADD i MOV din o dat ascuns sunt eficiente attpe arhitecturile Intel i Motorola.Reeaua Feistel care formeaza corpul Blowfish este modelat s fie atat de simplu pe ctposibil n timp ce reine proprietile criptografice dorite ale structurii.S-a considerat o funcie reversibila mai complicat, una cu nmuliri modulare i rotaii.Aceste operaii mresc mult timpul de execuie al agoritmului. innd cont c functia Feste prima surs a securitii algoritmului s-a decis s se pastreze complicaiile deconsumare a timpului pentru aceasta funcie.Funcia ireversibil F ii ofera Blowfish-ului cel mai bun efect de avalan pentru o reeaFeistel: fiecare bit text din jumatatea stng a reprizei afecteaz fiecare bit text dinjumatatea dreapt. n plus, daca se ine cont c fiecare bit al subcheii este afectat defiecare bit al cheii funcia are un efect de avalan perfect ntre cheie i jumtatea dreapta textului dup fiecare repriz.Functia ireversibila este creata pentru puterem viteza i simplicitate. n mod ideal s-adorit o singur cutie-S cu 232 cuvinte de 32 bii dar aceasta nu a fost o decizie practica.Decizia de a avea 256 cutii-S de intrare a fost un compromis intre cele 3 scopuri deDesign. Numrul mic de bii i numrul mare de bii a a fost o slabiciune pentrucriptanaliza liniara dar aceasta slabiciune este ascunsa prin combinarea iesirii celor 4cutii-S i crearea lor independente de cheie.S-au folosit 4 cutii-S diferite n locul uneia singure pentru a evita simetriile cnd diferitibii de intrare sunt egali sau cnd intrarea de 32 bii a funciei F este o permutare a altor32 de bii de intrare. S-ar fi putut folosi o singur cutie-S i sa se creeze pentru fiecareiesire diferita o permutare netriviala a unei singure iesiri dar modelarea celor 4 cutii Seste mai rapida, mai usor de programat i pare mai sigura.Functia care combina cele 4 iesiri al cutiilor-S este pe ct se poate de rapida. O funciemai simpla ar fi fost sa se execute un XOR a celor 4 valori dar amestecarea adunarii mod232 i a XOR imbina 2 grupuri algebrice diferite fara instructii suplimentare. Alternareaadunarii cu XOR se termina cu o operatie de adunare pentru c XOR combina rezultatulfinal cu xR.Daca se iau valori alese din aceeasi cutie-S o mai complicata funcie de combinare estenecesara pentru eliminarea simetriilor.S-a luat n considerarea acestei functii complexe nBlowfish (folosind inmultiri modulare, rotiri, etc) dar sa ales sa nu fie folosit pentru caceasta complicare parea nenecesara.Cutiile-S dependente de cheie protejeaza impotriva criptanalizei liniara i difereniala.Tinand cond c structura cutiilor-S este complet ascunsa de criptanalist acestor atacuri leeste mai greu sa exploateze structura. n timp ce ar fi posibil sa se inlocuiasca acestecutii-S variabile cu 4 cutii cutii S fixe care au fost crearea s fie rezistente la acesteatacuri, cutiile-S cu de cheie dependente sunt mai usor de implementat i mai puinsensibile la argumente de proprietati ascunse, n plus, aceste cutii-S pot fi create la cererereducand necesitatea unei structuri de date mare pstrata cu algoritmul.Fiecare bit a xL este folosit doar c intrarea unei cutii-S. n DES muli bii sunt folositi cintrri pentru 2 cutii-S care slabeste n mod considerabil algoritmul impotriva atacurilordifereniale. Aceasta complicatie adaugata nu este necesara cu cutiile-S dependente decheie. n plus, cutii-S mai mari ar lua mult mai mult spaiu de memorie.Functia F nu depinde de iteratie. S-a adugat independenta dar nu s-a considerat c arevreun merit criptografic. Substituirea tablouluiP poate fi considerate c facand parte dinaceasta funcie, i aceasta este deja dependenta de iteraii.Numrul de reprise s-a fixat la 16 la inceput din dorinta de a fi conservator. Oricum, acestnumr afecteaza mrimea tabloului P i de aici procesul de generarea a subcheilor. 16iteraii permit chei de lungime pn la 448 bii. S-a asteptat sa poata fi posibila reducereaacestui numr i grabirea mare a algoritmului n proces n momentul n care seacumuleaza mai multa dat de criptanaliza.In modelarea algoritmului sunt 2 metode de baza care asigura c cheia este destul delunga pentru a asigura un nivel de sercuritate particular. Unul este de a modela cu atentiealgoritmul astfel incat intreaga entropie a cheii este pstrata astfel incat sa nu fie nici oalta metoda mai buna de criptanaliza decat for brut. Cealalta este de a modelaalgoritmul cu atat de muli bii ai chei astfel incat atacurile care reduc lungimea efectiva achei cu mai muli bii s fie irelevante. Din moment ce Blowfish este creat pentrumicroprocesoare mari cu un total de momorie mare s-a ales mai tarziu.Procesul de generare a subcheilor este creat pentru a conserva intreaga entropie a cheii ipentru a impartii entropia uniform prin subchei. Este deasemeanea creat pentru a distribuisetul de subchei premise aleator prim domeniul subcheilor posibile. S-a ales numerele luipi c i tebelul subcheii initiale din 2 motive: pentru c este o secventa aleatoareneasociata cu algoritmul i pentru c poate sau s fie pstrat sau c parte a algoritmuluisau derivat daca este necesar. Nu este nimic solemn la pi, orice ir de bii numerealeatori ai lui e, tabele RAND, iesirea unui generator de numere aleatoare sunt suficiente.Oricum daca sirul initial nu este aleator n orice fel(de exemplu un text ASCII cu bitulinalt al fiecarui octet egal cu 0), problema c este nealeator se va raspandi n intregalgoritmul.In procesul de generare al cheilor subcheile se Schimb puin cu fiecare pereche desubchei generata. Aceasta este n primul rand pentru a proteja impotriva oricarui atacasupra procesului de generare a subcheii care exploateaza subcheile fixate i cunoscute.Deasemea reduce cerinele de depozitare. Limita de 448 a marimii cheii asigura c oricebit a oricarei subchei depinde de orice bit a cheii. (De notat c fiecare bit a lui P15, P16,P17 i P18 nu afecteaza fiecare bit a ciphertextului i c oricare intrare a unei cutii-S areo probabilitate de .06 sa afecteze orice bloc ciphertext)Pentru biii cheilor se efectueaza n mod repetat XoR cu numerele lui pi n tabloulP initialpentru a preveni urmatorul potential atac: sa presupunem c biii cheilor nu se repeta darn schimb se umplu cu zeroruri pentru a se extinde catre lungimea tabloului P. Un atacatorar putea sa gaseasca doua chei care difera doar n valoarea de 64 de bii la care li s-auaplicat un XOR cu P1 i P2 i care, folosind subcheile cunoscute initial produce aceasivaloare criptata. Acesta este un atac tentant pentru un generator de chei malitios.Pentru a preveni acelasi tip de atac , s-a fixat valoarea plaintextului initial n procesul degenerarea a subcheilor. Nu este absolut nimic special la sirul cu zerouri dar este importantc aceasta valoare s fie fixata.Algoritmul de generare a subcheilor nu presupune c bii cheii sunt aleatori. pn i biiicheii puternic corelati, c i un string alfanumeric ASCII cu bitul fiecarui octet setat la 0va produce suchei aleatoare. Oricum pentru a produce subchei cu aceeasi entopie o cheiealfanumerica mai lunga este ceruta.Timpul consumat n procesul de generare a subcheilor adauga o complexitateconsiderabila pentru un atac de for brut. Subcheile sunt prea lungi pentru a fi stocatepe o banda masiva deci ar trebui s fie generate de o masina de spargere n for brutprecum se cere. Un total de 522 de iteraii al algoritmului de criptare este necesar pentru atesta o singur cheie , adaugand efectiv 29 de pasi la orice atac de for brut.PRODUSE CARE FOLOSESC BLOWFISHIn momentul de fata exist peste 150 de produse care folosesc Blowfish.Unele dintre acestea sunt:- 96Crypt de fever.link. Un program de criptare/decriptare de fiiere i directoare- Acess Manager de Citi-Software Ltd. Un manager de parole pentru Windows.- Blowfish.NET de Markus Hahn. Aduce algoritmul Blowfish pe platformaMicrosoft.NET- Coolfish. Un editor de texte criptat pentru Windows- Cryptix. Un set criptografic de extensii pentru Java gratuit, incluzand atat Blowfish cti TwoFish.CONCLUZIIBlowfish este un algoritm de criptare creat cu scopul de a oferi lumii un nou standardcriptografic. Este un bloc de cifru de 64 bii cu 18 subchei derivate dntr-o singur cheieinitiala, simetric (folosete aceeasi cheie secreta atat pentru criptare ct i pentrudecriptare), rapid, compact, simplu, variabil sigur i pn n momentul actual impentrabil.Poate fi folosit c un inlocuitor pentru algoritmii DES sau IDEA.BIBILOGRAFIEhttp://www.finecrypt.net/blowfish.htmlhttp://www.ee.ualberta.ca/~elliott/ee552/studentAppNotes/1998f/blowfish_encryption/http://kremlinencrypt.com/concepts.htmhttp://www.schneier.com/paper-blowfish-oneyear.htmlhttp://www.us.Design-reuse.com/articles/article5922.html