HPC ( Hasty Pudding Cipher ) este un algoritm cripto simetric bloc creat de celebrul criptolog și matematician american Richard Schreppel de la Universitatea de Stat din Arizona în 1998 . Primele două cuvinte ale numelui criptoalgoritmului pot fi traduse ca „crema făinoasă ” . HPC a primit un nume atât de ciudat, aparent, din cauza abundenței de transformări numerice „sprețuite”, ceea ce îi complică în mod semnificativ analiza .
HPC se bazează pe celula Feistel și are o caracteristică interesantă - dimensiunea atât a blocului criptat, cât și a cheii de criptare nu este limitată de nimic. De fapt, algoritmul HPC constă din cinci sub-algoritmi diferiți (dar înrudiți), fiecare dintre care este conceput pentru a cripta blocuri de lungimi diferite:
Nume | Dimensiunea blocului în biți |
---|---|
HPC Tiny | 0 - 35 |
HPC scurt | 36 - 64 |
Mediu HPC | 65 - 128 |
HPC Long | 129 - 512 |
HPC extins | 513 și peste |
Criptarea se realizează în 8 runde. Un bloc criptat de 128 de biți este scris în două registre de 64 de biți și , după care sunt efectuate un număr mare de operații matematice diferite asupra lor:
Desemnare | Operațiune |
---|---|
adiție modulo 2 | |
adiție modulo | |
scădere modulo | |
rotiți la stânga cu n biți | |
rotiți la dreapta cu n biți | |
punerea la zero a octetului inferior al unui bloc de 64 de biți | |
"și" logic pe biți |
În plus, la rundă participă și unele constante :
După finalizarea a 8 runde de transformare, se efectuează încă 2 operațiuni:
Decriptarea se realizează prin efectuarea operațiilor inverse în ordine inversă.
Sarcina procedurii de extindere a cheii este de a genera o cheie extinsă , care este o matrice de 256 de cuvinte pe 64 de biți . Este clar că fiecare dintre subalgoritmi trebuie să aibă propria sa procedură. Cunoașterea uneia dintre matricele de chei extinse nu permite niciunuia să calculeze nici celelalte matrice, nici cheia de criptare în sine . Cu toate acestea, cu o dimensiune fixă a blocurilor criptate, este suficient să generați o cheie extinsă o dată pentru acest subalgoritm.
Cele 253 de cuvinte rămase ale cheii sunt inițializate după cum urmează:
Se efectuează adăugarea pe biți modulo 2 a cheii de criptare și a matricei de chei extinse inițializate , dar nu mai mult de 128 de cuvinte.
Este efectuată funcția extinsă de amestecare a datelor tastei , care asigură că fiecare bit al tastei afectează fiecare bit al tastei extinse :
Pasul 1Registrele sunt inițializate :
Pentru fiecare cuvânt al tastei extinse se efectuează operația prezentată în figură. Pentru a spori efectul, autorul algoritmului recomandă 3 runde de amestecare.
Dacă dimensiunea cheii depășește 128 de cuvinte pe 64 de biți , atunci pașii 2 și 3 se repetă pentru fiecare bloc de cuvinte 128. Astfel, procedura de amestecare a cheilor în ordinea complexității este aproximativ similară cu procedura de criptare în sine .
Scopul său este de a modifica rezultatul criptării cu aceleași blocuri de intrare și chei . Cheia suplimentară poate fi secretă, ceea ce crește cantitatea reală de informații despre cheie, dar într- un algoritm cu o lungime nelimitată a cheii , această posibilitate poate fi inutilă. În astfel de cazuri, puteți pur și simplu să resetați cheia suplimentară .
David Wagner a descoperit vulnerabilitate în HPC [7] iar mai târziu Carl D'Halluin, Gert Bijnens, Bart Presnel și Vincent Rayman au publicat o lucrare [8] care confirmă acest lucru. Sa dovedit că aproximativ fiecare a 256- a cheie a algoritmului are 230 de chei echivalente . Cu toate acestea, acest neajuns a fost corectat cu promptitudine de către autor chiar înainte de a rezuma rezultatele primului tur al competiției.
Cu acest tip de atac , un atacator, având acces la perechi de text simplu și text cifrat, poate, manipulând matricea cheii suplimentare „Spice”, să urmărească cum se modifică textul simplu sau textul cifrat în criptările ulterioare . Cu toate acestea, potrivit autorului, atacurile de acest tip nu au fost încă observate, iar munca în acest domeniu necesită eforturile comunității criptoanalitice. [2]
Criptosisteme simetrice | |
---|---|
Cifruri în flux | |
Rețeaua Feistel | |
Rețeaua SP | |
Alte |