HPC ( Hasty Pudding Cipher ) är en blocksymmetrisk kryptoalgoritm skapad av den berömde amerikanske kryptologen och matematikern Richard Schreppel från Arizona State University 1998 . De två första orden i namnet på kryptoalgoritmen kan översättas som "mjölig vaniljsås " . HPC fick ett så konstigt namn, tydligen, på grund av överflöd av "slug" numeriska transformationer, vilket avsevärt komplicerar analysen .
HPC är baserat på Feistel-cellen och har en intressant funktion - storleken på både det krypterade blocket och krypteringsnyckeln begränsas inte av någonting. Faktum är att HPC-algoritmen består av fem olika (men relaterade) underalgoritmer, som var och en är designad för att kryptera block av olika längder:
namn | Blockstorlek i bitar |
---|---|
HPC Tiny | 0 - 35 |
HPC kort | 36 - 64 |
HPC-medium | 65 - 128 |
HPC lång | 129 - 512 |
HPC Extended | 513 och uppåt |
Kryptering utförs i 8 omgångar. Ett krypterat 128 -bitars block skrivs in i två 64 -bitars register och , varefter ett stort antal olika matematiska operationer utförs på dem:
Beteckning | Drift |
---|---|
modulo 2 tillägg | |
modulo tillägg | |
modulo subtraktion | |
rotera vänster med n bitar | |
rotera höger med n bitar | |
nollställer den låga byten för ett 64 -bitars block | |
bitvis logiskt "och" |
Dessutom deltar några konstanter i omgången :
Efter att ha slutfört 8 omgångar av transformation utförs ytterligare 2 operationer:
Dekryptering utförs genom att utföra de omvända operationerna i omvänd ordning.
Uppgiften med nyckelexpansionsproceduren är att generera en utökad nyckel , som är en uppsättning av 256 64- bitars ord. Det är tydligt att var och en av subalgoritmerna måste ha sin egen procedur. Att känna till en av de utökade nyckelmatriserna tillåter inte en att beräkna vare sig de andra matriserna eller själva krypteringsnyckeln . Men med en fast storlek på krypterade block räcker det att generera en utökad nyckel en gång för denna subalgoritm.
De återstående 253 orden i nyckeln initieras enligt följande:
Bitvis modulo 2-tillägg av krypteringsnyckeln och den initierade utökade nyckeluppsättningen utförs, men inte mer än 128 ord.
Funktionen för utökad nyckeldatablandning utförs , vilket säkerställer att varje bit av nyckeln påverkar varje bit av den utökade nyckeln :
Steg 1Registren initieras :
För varje ord i den utökade tangenten utförs operationen som visas i figuren. För att förstärka effekten rekommenderar författaren av algoritmen 3 omgångar av blandning.
Om nyckelstorleken överstiger 128 64 -bitars ord, upprepas steg 2 och 3 för varje block med 128 ord. Proceduren för att blanda nycklar i komplexitetsordning liknar således själva krypteringsproceduren .
Dess syfte är att modifiera krypteringsresultatet med samma inmatningsblock och nycklar . Tilläggsnyckeln kan vara hemlig, vilket ökar den faktiska mängden nyckelinformation, men i en algoritm med en obegränsad nyckellängd kan denna möjlighet vara onödig. I sådana fall kan du helt enkelt återställa tilläggsnyckeln .
David Wagner sårbarhet i - chifferet [7] Carl D'Halluin, Gert Bijnens, Bart Presnel och Vincent Rayman ett dokument [8] som bekräftade detta. Det visade sig att ungefär var 256 :e nyckel i algoritmen har 230 ekvivalenta nycklar . Denna brist rättades dock omedelbart av författaren redan innan man summerade resultaten av den första omgången av tävlingen.
Med denna typ av attack kan en angripare, som har tillgång till par av klartext och chiffertext, genom att manipulera arrayen med den extra nyckeln "Spice", se hur klartexten eller chiffertexten ändras i efterföljande krypteringar . Men enligt författaren har attacker av denna typ ännu inte observerats, och arbete inom detta område kräver ansträngningar från det kryptoanalytiska samhället. [2]
Symmetriska kryptosystem | |
---|---|
Streama chiffer | |
Feistel nätverk | |
SP nätverk | |
Övrig |