HPC ( Hasty Pudding Cipher ) er en bloksymmetrisk kryptoalgoritme skabt af den berømte amerikanske kryptolog og matematiker Richard Schreppel fra Arizona State University i 1998 . De første to ord i navnet på kryptoalgoritmen kan oversættes til "melet vanillecreme " . HPC modtog et så mærkeligt navn, tilsyneladende, på grund af overfloden af "udspekulerede" numeriske transformationer, hvilket komplicerer analysen betydeligt .
HPC er baseret på Feistel-cellen og har en interessant funktion - størrelsen af både den krypterede blok og krypteringsnøglen er ikke begrænset af noget. Faktisk består HPC-algoritmen af fem forskellige (men relaterede) underalgoritmer, som hver er designet til at kryptere blokke af forskellig længde:
Navn | Blokstørrelse i bits |
---|---|
HPC Lille | 0 - 35 |
HPC kort | 36 - 64 |
HPC medium | 65 - 128 |
HPC lang | 129 - 512 |
HPC Extended | 513 og derover |
Kryptering udføres i 8 omgange. En krypteret 128 - bit blok skrives ind i to 64 - bit registre og , hvorefter et stort antal forskellige matematiske operationer udføres på dem:
Betegnelse | Operation |
---|---|
modulo 2 tilføjelse | |
modulo tilføjelse | |
modulo subtraktion | |
drej til venstre med n bit | |
drej til højre med n bit | |
nulstilling af den lave byte af en 64 - bit blok | |
bitvis logisk "og" |
Derudover deltager nogle konstanter også i runden :
Efter at have gennemført 8 transformationsrunder udføres yderligere 2 operationer:
Dekryptering udføres ved at udføre de omvendte operationer i omvendt rækkefølge.
Opgaven med nøgleudvidelsesproceduren er at generere en udvidet nøgle , som er en matrix af 256 64 - bit ord. Det er klart, at hver af subalgoritmerne skal have sin egen procedure. At kende et af de udvidede nøglearrays tillader ikke, at man kan beregne hverken de andre arrays eller selve krypteringsnøglen . Men med en fast størrelse af krypterede blokke er det nok at generere en udvidet nøgle én gang for denne subalgoritme.
De resterende 253 ord i nøglen initialiseres som følger:
Bitvis modulo 2 tilføjelse af krypteringsnøglen og det initialiserede udvidede nøglearray udføres, men ikke mere end 128 ord.
Funktionen udvidet nøgledatablanding udføres , som sikrer, at hver bit af nøglen påvirker hver bit af den udvidede nøgle :
Trin 1Registrene initialiseres :
For hvert ord i den udvidede tast udføres handlingen vist på figuren. For at forstærke effekten anbefaler forfatteren af algoritmen 3 blandingsrunder.
Hvis nøglestørrelsen overstiger 128 64 - bit ord, gentages trin 2 og 3 for hver blok på 128. Således er proceduren for at blande nøgler i kompleksitetsrækkefølge omtrent lig selve krypteringsproceduren .
Dens formål er at ændre krypteringsresultatet med de samme inputblokke og nøgler . Den ekstra nøgle kan være hemmelig, hvilket øger den faktiske mængde af nøgleinformation, men i en algoritme med en ubegrænset nøglelængde kan denne mulighed være unødvendig. I sådanne tilfælde kan du blot nulstille den ekstra nøgle .
David Wagner sårbarhed i - chifferet [7] og senere publicerede Carl D'Halluin, Gert Bijnens, Bart Presnel og Vincent Rayman et papir [8] der bekræftede dette. Det viste sig, at cirka hver 256. nøgle i algoritmen har 230 tilsvarende nøgler . Denne mangel blev dog prompte rettet af forfatteren, selv før resultaterne af konkurrencens første runde blev opsummeret.
Med denne type angreb kan en angriber, der har adgang til par af klartekst og chiffertekst, ved at manipulere rækken af den ekstra nøgle "Spice", se, hvordan klarteksten eller chifferteksten ændrer sig i efterfølgende krypteringer . Men ifølge forfatteren er angreb af denne type endnu ikke blevet observeret, og arbejde på dette område kræver en indsats fra det kryptoanalytiske samfund. [2]
Symmetriske kryptosystemer | |
---|---|
Stream-cifre | |
Feistel netværk | |
SP netværk | |
Andet |