HPC ( Hasty Pudding Cipher ) je blokově symetrický kryptoalgoritmus vytvořený slavným americkým kryptologem a matematikem Richardem Schreppelem z Arizona State University v roce 1998 . První dvě slova názvu kryptoalgoritmu lze přeložit jako "moučný pudink " . HPC získalo takové zvláštní jméno, zjevně kvůli množství „mazaných“ numerických transformací, což výrazně komplikuje jeho analýzu .
HPC je založeno na Feistelově buňce a má zajímavou vlastnost – velikost jak šifrovaného bloku, tak šifrovacího klíče není ničím omezena. Ve skutečnosti se algoritmus HPC skládá z pěti různých (ale souvisejících) dílčích algoritmů, z nichž každý je navržen pro šifrování bloků různých délek:
název | Velikost bloku v bitech |
---|---|
HPC Tiny | 0-35 |
HPC Short | 36-64 |
HPC střední | 65-128 |
HPC Long | 129-512 |
Rozšířené HPC | 513 a více |
Šifrování probíhá v 8 kolech. Zašifrovaný 128bitový blok je zapsán do dvou 64bitových registrů a , načež se na nich provádí velké množství různých matematických operací:
Označení | Úkon |
---|---|
modulo 2 přidání | |
modulo přidání | |
modulo odečítání | |
otočit doleva o n bitů | |
otočit doprava o n bitů | |
vynulování dolního bajtu 64bitového bloku | |
bitově logické "a" |
Kromě toho se kola účastní i některé konstanty :
Po dokončení 8 kol transformace se provedou další 2 operace:
Dešifrování se provádí provedením inverzních operací v opačném pořadí.
Úkolem procedury rozšíření klíče je vygenerovat rozšířený klíč , což je pole 256 64bitových slov. Je jasné, že každý z podalgoritmů musí mít svůj vlastní postup. Znalost jednoho z polí rozšířených klíčů neumožňuje vypočítat další pole ani samotný šifrovací klíč . Při pevné velikosti zašifrovaných bloků však stačí pro tento podalgoritmus vygenerovat rozšířený klíč jednou.
Zbývajících 253 slov klíče je inicializováno následovně:
Provede se bitové modulo 2 přidání šifrovacího klíče a inicializovaného pole rozšířených klíčů , ale ne více než 128 slov.
Provede se funkce promíchání dat rozšířeného klíče , která zajistí, že každý bit klíče ovlivní každý bit rozšířeného klíče :
Krok 1Registry se inicializují :
Pro každé slovo rozšířeného klíče se provede operace znázorněná na obrázku. Pro posílení efektu autor algoritmu doporučuje 3 kola míchání.
Pokud velikost klíče přesáhne 128 64bitových slov, pak se pro každý blok 128 slov opakují kroky 2 a 3. Postup pro míchání klíčů v pořadí podle složitosti je tedy přibližně podobný samotnému šifrování .
Jeho účelem je upravit výsledek šifrování se stejnými vstupními bloky a klíči . Dodatečný klíč může být tajný, což zvyšuje skutečné množství klíčových informací, ale v algoritmu s neomezenou délkou klíče může být tato možnost zbytečná. V takových případech můžete jednoduše resetovat přídavný klíč .
David Wagner zranitelnost v šifře [ 7] později Carl D'Halluin, Gert Bijnens, Bart Presnel a Vincent Rayman publikovali článek [8] , který to potvrdil. Ukázalo se, že přibližně každý 256. klíč algoritmu má 230 ekvivalentních klíčů . Tento nedostatek však autor ještě před sečtením výsledků prvního kola soutěže promptně napravil.
S tímto typem útoku může útočník, který má přístup k párům holého textu a šifrovaného textu, pomocí manipulace s polem dodatečného klíče „Spice“ sledovat, jak se holý text nebo šifrovaný text mění v následujících šifrováních . Útoky tohoto typu však podle autora dosud nebyly pozorovány a práce v této oblasti vyžaduje úsilí kryptoanalytické komunity. [2]
Symetrické kryptosystémy | |
---|---|
Streamové šifry | |
Síť Feistel | |
Síť SP | |
jiný |