HPC (cifrare)

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 .

Structura generală

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

Structura rundei HPC-Medium [1] [2]

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ă.

Procedura de extindere a cheii

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.

Etapa 1: Inițializare

Cele 253 de cuvinte rămase ale cheii sunt inițializate după cum urmează:

Etapa 2: Adăugarea

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.

Etapa 3: Agitarea

Este efectuată funcția extinsă de amestecare a datelor tastei , care asigură că fiecare bit al tastei afectează fiecare bit al tastei extinse :

Pasul 1

Registrele sunt inițializate :

Pasul 2

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.

Etapa 4: Adăugarea

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 .

Tasta suplimentară

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ă .

Avantaje și dezavantaje

  1. O rundă de criptare a algoritmului HPC constă într-un număr foarte mare de operații elementare. În comparație, de exemplu, cu algoritmul intern GOST 28147-89 , care constă din doar 4 operațiuni elementare, HPC pare a fi extrem de complex și greoi. Cu toate acestea, datorită faptului că toate operațiunile sunt efectuate pe cuvinte de 64 de biți , HPC a arătat o viteză surprinzător de mare pe platformele pe 64 de biți . La competiția de standarde de criptare AES , în ceea ce privește viteza de criptare a blocurilor de 128 de biți , HPC a fost pe locul doi după algoritmul DFC , iar HPC a criptat blocurile de 512 și 1024 de biți de 2-3 ori mai rapid decât toți concurenții săi.
  2. Dezavantajele evidente ale algoritmului includ, pe lângă complexitate, imposibilitatea paralelizării proceselor de criptare și amestecare, precum și cerințele uriașe impuse de algoritm asupra memoriei nevolatile și cu acces aleatoriu, ceea ce o face destul de dificil de utilizat. este în carduri inteligente .
  3. Algoritmul nu a ajuns la a doua etapă a AES . În articolul său [4] , autorul s-a lovit de experții AES , crezând că prioritățile au fost stabilite greșit în competiție. Potrivit lui Richard Schreppel , este necesar să se aleagă algoritmi adaptați pentru platformele pe 64 de biți ca standard mondial, deoarece viitorul este al lor. În plus, autorul cărții HPC a susținut că este imposibil să se dezvolte un algoritm care să funcționeze la fel de bine atât pe servere puternice multi-core pe 64 de biți , cât și pe carduri inteligente de 8 biți slabe și ieftine . Totuși, această poziție nu a afectat rezultatele competiției.

Criptanaliză

  • Pentru a stimula interesul pentru criptoanaliza invenției sale, autorul s-a angajat să răsplătească fiecare criptoanalist cu o sticlă din celebra șampanie Dom Pérignon . Premiile vor avea loc până când codul este deschis sau până când cutia (10 sticle) este goală. [5]
  • Potrivit autorului cifrului, HPC are un nivel de securitate de 400 de biți , adică un atac de succes asupra cifrului va necesita testare. O astfel de declarație se bazează pe numărarea numărului de stări intermediare în procesul de criptare , precum și pe dimensiunea cheii extinse [6] .

Vulnerabilități

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.

Atacul „Chosen Spice”

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]

Note

  1. Panasenko S.P. Algoritmi de criptare. Carte de referință specială - Sankt Petersburg. : BHV-SPb , 2009. - 576 p. — ISBN 978-5-9775-0319-8
  2. 1 2 Richard Schroeppel, „Hasty Pudding Cipher Specification”, mai 1999 (link indisponibil) . Consultat la 31 octombrie 2010. Arhivat din original la 17 iulie 2011. 
  3. și au aceeași formă, dar, în general, acestea vor fi numere diferite, deoarece depind de valoarea curentă a lui .
  4. Rich Schroeppel, Puddingmeister, „The Hasty Pudding Cipher: One Year Later”, 12 iunie 1999 (link indisponibil) . Consultat la 31 octombrie 2010. Arhivat din original la 30 noiembrie 2021. 
  5. „SISTEME DE SECURITATE ALE COMUNICAȚIILOR ȘI TELECOMUNICAȚIILOR”, 1999 . Data accesului: 30 octombrie 2010. Arhivat din original la 3 iulie 2011.
  6. ^ Rich Schroeppel , Hilarie Orman, „An Overview of the Hasty Pudding Cipher”, iulie 1998 (link nu este disponibil) . Consultat la 31 octombrie 2010. Arhivat din original la 30 noiembrie 2021. 
  7. Richard Schroeppel, „Tweaking the Hasty Pudding Cipher” 14 mai 1999 (link nu este disponibil) . Consultat la 31 octombrie 2010. Arhivat din original la 30 noiembrie 2021. 
  8. „Cheile echivalente ale HPC”, 1999