Documente Academic
Documente Profesional
Documente Cultură
Algoritmul Blowfish
Blowfish este un cod bloc simetric dezvoltat de Bruce
Schneier. Algoritmul a fost proiectat (1993) să satisfacă
următoarele proprietăţi:
• Rapid: Blowfish criptează date pe microprocesoare de
32 biţi la o viteză de 18 cicluri de ceas pe byte.
• Compact: Blowfish poate rula în mai puţin de 5K
memorie.
• Simplu: Blowfish are o structură simplu de implementat
şi uşor de analizat
• Securitate variabilă: Lungimea cheii este variabilă şi
poate ajunge până la 448 biţi. Acest lucru permite o
alegere între viteză mare şi securitate puternică.
• Funcţia F se defineşte:
F [a, b,c,d] =
((S1.a + S2.b) XOR (S3.c)) + S4.d
caracteristici
• algoritmul Blowfish, toate cutiile S şi subcheile sunt produse ale
unor procese de aplicare repetată a însuşi algoritmului Blowfish.
Aceasta modifică foarte mult biţii şi de aceea criptanaliza lui este
grea.
• Cea mai importanta caracteristică a acestei metode este viteza de
criptare
• Un atac cu forţă brută (exhaustiv) este foarte dificil, deoarece
procesul de generare a subcheilor ia foarte mult timp. Un total de
522 execuţii a algoritmului de criptare sunt necesare pentru a
testa o singură cheie.
• Funcţia F dă algoritmului Blowfish cel mai bun efect de avalanşă
pentru o reţea Feistel.
• Fiecare bit de intrare al funcţiei F este folosit ca intrare pentru o
singură cutie S, în contrast cu DES unde mai mulţi biţi sunt folosiţi
ca intrare în două cutii S, ceea ce defavorizează DES în cazul
unui atac criptanalitic diferenţial.
• Spre deosebire de alţi algoritmi funcţia F din Blowfish nu este
dependentă de tură.
• Blowfish este practic invulnerabil în faţa unui atac exhaustiv
datorită lungimii variabile a cheii care poate fi până la 448 biţi.
Algoritmul Twofish
• Algoritmul Twofish, dezvoltat de Bruce Schneier,
John Kelsey, Doug Whiting, David Wagner,
Chris Hall şi Niels Ferguson, a fost publicat în
iunie 1998.
• Structura algoritmului Twofish este foarte
asemănătoare cu cea a algoritmului DES,
folosind 16 ture din reţeaua Feistel. Singurele
excepţii faţă de reţeaua clasică Feistel sunt cele
două deplasări circulare cu un bit efectuate,
împreună cu operaţiile XOR, la ieşirea funcţiei F.
Algoritmul utilizează chei cu o lungime maximă
de 256 biţi şi codifică blocuri de date de 128 biţi.
Etapele de implementare ale acestui
algoritm sunt:
unde, K[j] este primul cuvânt subcheie care încă nu a fost folosit.
Această amestecare poate fi descrisă în cuvinte în următorul fel:
următoarea subcheie K[j] este adunată cu R[i]. După aceasta R[i-1]
(indexul este calculat în modulo 3), ~R[i-1], R[i-2], R[i-3] sunt folosite
pentru a crea două cuvinte ‘mixte’ care vor fi adunate cu R[i].
b) Acest tip de amestecare este simplu: