Documente Academic
Documente Profesional
Documente Cultură
Catedra Telecomunicaii
Disciplina: Protectia Informatiei
REFERAT
Tema: Algoritmul de criptare simetrica Blowfish
A elaborat
st. gr. TLC - 101
Starciuc V.
A verificat
Conf. dr.
Ciobanu M.
Chiinu 2014
Cuprins
1. Introducere............................................................................................ 3
2. Scurt istoric .......................................................................................... 4
3. Aplicatiile criptarii Blowfish ................................................................ 4
4. Platforme ............................................................................................... 5
5. Cerinte Auxiliare ................................................................................... 5
6. Designul criptarii ................................................................................... 6
7. Construirea Blocurilor ........................................................................... 7
8. Descrierea Algoritmului ........................................................................ 8
9. Mini Blowfish .................................................................................... 11
10. Factorii de decizie ce au stat la baza crearii algoritmului Blowfish ... 11
11. Unde se foloseste Blowfish ................................................................ 15
12. Concluzie ............................................................................................ 16
13. Bibliografie ......................................................................................... 16
Introducere.
Cuvntul criptografie este compus din 2 cuvinte grecesti:
kryptos ce
rezultnd criptologia.
Mesajul nesecurizat este privit c i un text, pe cnd unul securizat este vzut c fiind
un text criptat sau codat. Procesul de convertire a textelor nesecurizate n texte
securizate, poart numele de criptare. Procesul invers se numete decriptare. Datorit
dezvoltarii continue si aparitiei noilor tehnologi, criptografia a evoluat ntr-un mod
semnificativ, a devenit un proces foarte sigur i folosit des, criptarea prezint un
interes pentru oamenii de afaceri, sfera militara, sfera comunicatiilor, precum i
pentru programatori, care ncearca zi de zi sa gaseasc noi algoritmi optimi i
eficienti de criptare i decriptare.
Din moment ce comunitatea criptografica avea nevoie sa furnizeze lumii noi
standarde de criptare, a fost propus Blowfish, un algoritm simetircde criptare in
blocuri cu cheie de lungme variabila cu un cifru de 64 bii.
Din multimea de metode de criptare disponibile pentru a pstra un transfer de
date sigur, muli algoritmi nu sunt disponibili pentru publicul larg. O parte sunt
protejai de drepturile de autor (Khufu, REDOC II i IDEA), altele sunt pstrate
secrete de guverne (Skipjack i Capstone protejate de guvernul american) ) sau unii
sunt disponibili doar pe pri (RC2, RC4 i GOST).
Algoritmul de criptare DES din ultimii 15 ani se apropie de sfarsitul lui n
utilizare. Cheia lui de de 56 bii lungime este vulnerabil la un atac de for brut i
noile avansri n criptanaliza diferenial i criptanaliza liniar arat c DES este
vulnerabil i pentru alte atacuri.
Pentru multe situaii algoritmul Blowfish este soluia ideal. El are licien
gratuit, este disponibil pentru toate cazurile de utilizare i dei a fost spart pe buci,
ntreaga versiune este inpenetrabil.
Scurt istoric
Blowfish a fost creat n 1993 de Bruce Schneier c o alternativ la algoritmii
de criptare deja existeni. Presedinte al companiei Counterpane Systems, firm de
consultare specializata n criptograpfie i securizarea calculatoarelor, a contribuit la
scrierea multor documente criptografice, incluznd cartea Applied Cryptography
(John Wiley&Sons,1994&1996)considerat o lucrare influienabil n domeniul
criptografiei. Cea mai mare realizare a sa ramne totui algoritmul de criptare
Blowfish, prezentat pentru prima dat n 1994 la Cambridge, Anglia ntr-un
workshop despre procedee de securizare.
Algoritmul a fost proiectat s satisfac urmtoarele proprieti:
Rapid: Blowfish cripteaz date pe microprocesoare de 32 bii la o vitez de
18 cicluri de ceas pe byte.
Compact: Blowfish poate rula n mai puin de 5K memorie.
Simplu: Blowfish are o structur simplu de implementat i uor de analizat
Securitate variabil: Lungimea cheii este variabil i poate ajunge pn la
448 bii. Acest lucru permite o alegere ntre vitez mare i securitate puternic.
Blowfish cripteaz blocuri de 64 bii avnd ca ieire tot blocuri de 64 bii.
Platforme
Este implementat pe o varietate de platforme diferite, fiecare cu cerinele ei proprii.
Ele includ:
- hardware special. Este implementat eficient pe un hard VLSI obinuit
- procesoare mari. n timp ce partea hard va fi folosit pentru aplicaii rapide
implementarea soft este mai comun. Algoritmul este eficient pe microprocesoare de
32 bii 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 mai importanta 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 pe procesoare mari decat pe procesoare mici.
Cerinte Auxiliare
Aceste cerine auxiliare sunt percepute de stadardele de criptare. Algoritmul
este robust i simplu de codat. Dupa experienta cu DES programatorii fac des greseli
de implementare din cauza c algoritmul este complicat. Spaiul cheilor ngduie
oricrui ir de bii aleator de o lungime cerut s fie o posibil cheie. Nu ar trebui s
fie chei slabe.Algoritmul faciliteaz orice administrare a cheii pentru implementrile
soft. Administrarea implementrilor a DES-ului n general
folosete chei de
Designul criptarii
Potrivit 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),
de 1 kilooctet
- 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 de iteraii de prisos. Se reduce numrul mare de iteraii fara nici o pierdere a
securitii (dincolo de cea a cheii de lungime redus)
-
trebui s fie destul de mic pentru a face puin probabil sa alegi una aleator. Totodat,
orice cheie slab trebuie stiut n mod explicit pentru a putea fi nlaturat n timpul
procesului de generare a cheilor
-
din aceste principii: FEAL i Khuf folosete un numr variabil de iteraii, Khufu are
un numr mare de subchei care sunt o funcie cu o singur orientare a cheii, RC2 are
o lungime a cheii variabil, GOST
Construirea Blocurilor
Facem in paralel o comparatie cu alte 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 cu lungimea
cuvantului de 32 bii poate folosi cutii-S de 32 bii. Khufu i REDOC III folosesc o
intrare de 256 i cutii-S de 32 bii.
n timp ce cutiile-S fixe trebuie modelate pentru a fi rezistente la criptanaliza
diferenial i liniara, cutiile-S dependente de cheie sunt mai rezistente la aceste
atacuri. Sunt folosite n algoritmul Khufu. Cutii-S variabile care pot fi dependente de
cheie sunt folosite un GOST.
Se combin operaii din diferite grupuri algebrice. Cifrul IDEA a introdus
conceptul de combinare a XOR(sau exclusiv) mod 2 16, adunare mod 2 16 i
nmulire mod 2 16 +1. Cifrul MMB folosete cuvinte de 32 bii i combina XOR
mod 232 cu nmulire mod 2 32-1.
Permutrile fixate initiale i finale ale DES-ului au fost multa vreme
considerate nefolositoare.
Blowfish este un bloc de cifru cu cheie de lungime variabil. Nu satisface toate
cerinele pentru un nou standard criptografic discutate anterior: este potrivit doar
pentru aplicaii unde cheia nu se Schimb des, ca i un link de comunicatii sau un
criptor de fiiere automat. Este clar mai rapid ca i DES cnd este implementat pe un
microprocesoare de 32 bii cu multe date ascunse de exemplu Pentium i PowerPC.
Descrierea Algoritmului
Inca odata revenim asupra structurii algoritmului Blowfish: este un bloc de
cifru de 64 bii cu cheie de lungime variabil.
Algoritmul const n 2 parti: o parte de expansiune a cheii i o parte de criptare
a datelor. Expansiune cheii converteste o cheie de maxim 448 bii n mai multe
tablouri de subchei totaliznd 4168 bytes. Cheile sunt stocate ntr-un ir notat K:
K1, K2, , Kj : unde 1 j 14
Criptarea datelor are loc prin o reea Feistel de 16 reprize. Toate operaiile sunt
XOR-uri i adunri pe cuvinte de 32 bii. Singurele operaii de adunare sunt 4 tablouri
de cutare a datelor pe repriz.
Subchei :
Blowfish folosete un numr mare de subchei:
Tabloul P este format din 18 subchei de 32 bii: P1,P2,,P18
Exist 4 cutii-S de 32 bii cu 256 intrri fiecare
S1,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 (figura 1).
Blowfish folosete dou operaii de baz:
Adunarea: adunarea cuvintelor notat cu + i este efectuat modulo 232
Sau exclusiv pe bii: notat XOR
Mesajul original este divizat n dou jumti de 32 bii notate LE0 i RE0 . Se vor
folosi variabilele LEi
Algoritmul de criptare:
For I=1 to 16 do
REi = (LEi -1)XOR(Pi)
LEi=(F[REi])XOR(REi-1)
End For
LE17= (RE16 )XOR(P18)
RE17 = (LE17 )XOR(P17)
Algoritmul de decriptare:
For I=1 to 16 do
RDi = (LDi -1)XOR(P19-i)
LDi=(F[RDi])XOR(RDi-1)
EndFor
LD17= (RD16 )XOR(P1)
RD17 = (LD16 )XOR(P2)
continu pentru toi biii cheii (posibil pn la P14). Repet ciclul prin biii cheii pn
cnd la tot tabloul i s-a efectuat XOR cu biii cheii.(pentru orice cheie scurt exist
cel puin o cheie echivalent mai lung, de exemplu daca A este o cheie de 64 bii
atunci AA,AAA,etc sunt chei echivalente)
Cripteaz tot irul zero cu algoritmul Blowfish folosind subcheile descrise n
paii (1) i (2)
Inlocuiete P1 i P2 cu ieirea pasului (3)
Cripteaza ieirea pasului (3) folosind algoritmul blowfish pentru subcheile modificate
Inlocuiete P3 i P4 cu ieirea pasului (5)
Continua procesul nlocuind toate intrrile tabloului P i apoi toate 4 cutiile S n
ordine cu iesirea algoritmului Blowfish continuu modificabil
n total sunt necesare 521 de iteraii pentru a genera toate subcheile necesare.
Aplicaiile pot stoca subcheile mai degrab dect s execute procesul de derivare de
mai multe ori.
Mini - Blowfish
Urmatoarele versiuni mini ale Blowfish-ului sunt definite numai pentru
criptanaliza. Nu sunt sugerate pentru implementarea propriuzisa. Blowfish-32 are un
bloc de mrime de 32 bii i tablourile subcheilor de intrri de 16 bii (fiecare cutie S
are 16 intrri). Blowfish-16 are un bloc de mrime de 16 bii i tablourile subcheilor
de intrri de 8 bii (fiecare cutie S are 4 intrri).
Reeaua Feistel care formeaza corpul Blowfish este modelat s fie atat de
simplu pe ct posibil 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 F este prima surs a securitii algoritmului s-a decis s se pastreze
complicaiile de consumare a timpului pentru aceasta funcie.
Funcia ireversibil F ii ofera Blowfish-ului cel mai bun efect de avalan
pentru o reea Feistel: fiecare bit text din jumatatea stng a reprizei afecteaz fiecare
bit text din jumatatea dreapt. n plus, daca se ine cont c fiecare bit al subcheii este
afectat de fiecare bit al cheii funcia are un efect de avalan perfect ntre cheie i
jumtatea dreapt a textului dup fiecare repriz.
Functia ireversibila este creata pentru puterem viteza i simplicitate. n mod
ideal s-a dorit 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 de Design. Numrul mic de bii i numrul mare de bii a a fost o
slabiciune pentru criptanaliza liniara dar aceasta slabiciune este ascunsa prin
combinarea iesirii celor 4 cutii-S i crearea lor independente de cheie.
S-au folosit 4 cutii-S diferite n locul uneia singure pentru a evita simetriile
cnd diferiti bii de intrare sunt egali sau cnd intrarea de 32 bii a funciei F este o
permutare a altor 32 de bii de intrare. S-ar fi putut folosi o singur cutie-S i sa se
creeze pentru fiecare iesire diferita o permutare netriviala a unei singure iesiri dar
modelarea celor 4 cutii S este 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 funcie mai simpla ar fi fost sa se execute un XOR a celor 4 valori dar
amestecarea adunarii mod 232 i a XOR imbina 2 grupuri algebrice diferite fara
instructii suplimentare. Alternarea adunarii cu XOR se termina cu o operatie de
adunare pentru c XOR combina rezultatul final cu xR.
Daca se iau valori alese din aceeasi cutie-S o mai complicata funcie de
combinare este necesara pentru eliminarea simetriilor.S-a luat n considerarea acestei
functii complexe n Blowfish (folosind inmultiri modulare, rotiri, etc) dar sa ales sa
nu fie folosit pentru c aceasta complicare parea nenecesara.
pentru a distribui setul de subchei premise aleator prim domeniul subcheilor posibile.
S-a ales numerele lui pi c i tebelul subcheii initiale din 2 motive: pentru c este o
secventa aleatoare neasociata cu algoritmul i pentru c poate sau s fie pstrat sau c
parte a algoritmului sau derivat daca este necesar. Nu este nimic solemn la Pi, orice
ir de bii numere aleatori 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 bitul inalt al fiecarui octet egal cu 0), problema c este
nealeator se va raspandi n intreg algoritmul.
In procesul de generare al cheilor subcheile se Schimb puin cu fiecare
pereche de subchei generata. Aceasta este n primul rand pentru a proteja impotriva
oricarui atac asupra procesului de generare a subcheii care exploateaza subcheile
fixate i cunoscute. Deasemea reduce cerinele de depozitare. Limita de 448 a
marimii cheii asigura c orice bit 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 are o probabilitate de .06 sa afecteze orice bloc
ciphertext)
Pentru biii cheilor se efectueaza n mod repetat XoR cu numerele lui pi n
tabloulP initial pentru a preveni urmatorul potential atac: sa presupunem c biii
cheilor nu se repeta dar n schimb se umplu cu zeroruri pentru a se extinde catre
lungimea tabloului P. Un atacator ar putea sa gaseasca doua chei care difera doar n
valoarea de 64 de bii la care li s-au aplicat un XOR cu P1 i P2 i care, folosind
subcheile cunoscute initial produce aceasi valoare 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 de generarea a subcheilor. Nu este absolut nimic special la sirul cu zerouri
dar este important c aceasta valoare s fie fixata.
Algoritmul de generare a subcheilor nu presupune c bii cheii sunt aleatori.
pn i biii cheii puternic corelati, c i un string alfanumeric ASCII cu bitul fiecarui
octet setat la 0 va produce suchei aleatoare. Oricum pentru a produce subchei cu
aceeasi entopie o cheie alfanumerica mai lunga este ceruta.
Timpul consumat n procesul de generare a subcheilor adauga o complexitate
considerabila pentru un atac de for brut. Subcheile sunt prea lungi pentru a fi
stocate pe o banda masiva deci ar trebui s fie generate de o masina de spargere n
for brut precum se cere. Un total de 522 de iteraii al algoritmului de criptare este
necesar pentru a testa o singur cheie , adaugand efectiv 29 de pasi la orice atac de
for brut.
Concluzie
In aceasta lucrare de referinta am analizat si desrcis detaliat un algoritm
modern de criptare - Blowfish. Este un algoritm de criptare creat cu scopul de a oferi
lumii un nou standard criptografic care poate fi folosit avantajos c un inlocuitor
pentru algoritmii DES sau IDEA . Fiind format un bloc de cifru de 64 bii cu 18
subchei derivate dntr-o singur cheie initiala este practic, simetric - folosete aceeasi
cheie secreta atat pentru criptare ct i pentru decriptare, este rapid, compact, simplu,
variabil sigur i pn n momentul actual impentrabil.
Bibliografie
1. http://www.cs.rit.edu/~ksf6458/cryptography/Final.pdf
2. http://www.finecrypt.net/blowfish.html
3. https://hermes.info.uvt.ro/home/iordan@info.uvt.ro/Curs_MASR/Curs_5.pdf -Algoritmi moderni de criptare
4. http://habrahabr.ru/post/140394/
5. https://ru.wikipedia.org/wiki/Blowfish