Phelix je vysokorychlostní streamová šifra , která používá jednorázový ověřovací kód zprávy . Šifra byla přihlášena do soutěže eSTREAM v roce 2004. Autory jsou Bruce Schneier , Doug Whiting , Stefan Lux a Frederick Müller . Algoritmus obsahuje operace sčítání modulo 2 32 , sčítání modulo 2 a cyklický posun; Phelix používá 256bitový klíč a 128bitové časové razítko . Někteří kryptografové vyjádřili obavy z možnosti získat tajný klíč při nesprávném použití šifry.
Předchůdcem Phelixu byla šifra Helix, postavená na nejjednodušších operacích, ale ukázalo se, že byla prolomena. Vylepšený Helix dostal jméno Phelix, ale byl také odmítnut v soutěži eCrypt. Důvod odmítnutí byl kontroverzní – útoky byly založeny na výběru časového razítka, což bylo slabé místo u jiných šifer, ale vývojáři uvedli, že jejich šifra je vůči tomuto druhu útoku odolná. Ukázalo se, že šifra je prolomena lineární diferenciální kryptoanalýzou, i když to za jiných podmínek neohrožuje sílu šifry. Výsledkem bylo, že Phelix nebyl pro určitou aroganci a nepřesnost autorů připuštěn do třetího kola soutěže. K tomu všemu se objevila řada teoretických prací, ve kterých se tvrdilo, že míchání operací add-xor-shift nedává potřebnou nelinearitu, ale v praxi k žádným hackům nedošlo. Design Phelix je nyní navržen autory pro použití v Skein a Threefish .
Složitost algoritmu je 128 bitů, což znamená, že pro prolomení šifry je nutné vypočítat alespoň blokové funkce, které tvoří výstupní sekvenci klíče. Phelix používá klíč libovolné délky (od 128 do 256 bitů), doplněný na 256 bitů a 128bitové časové razítko. Klíč je považován za tajný, výchozí časové razítko se považuje za známé všem. Šifra je optimalizována pro 32bitové platformy, protože všechny operace se provádějí na 32bitových slovech. Můžeme říci, že Phelix je „vícekolová jednoduchá šifra“, protože proces vytváření šifrového textu používá poměrně jednoduché sčítání modulo , XOR a permutaci bitů.
Počáteční stav je 9 slov , každé 32 bitů. Slova jsou rozdělena do dvou skupin: 5 „aktivních“, která se účastní operací funkčního bloku, a stará („stará“), která se podílejí pouze na vytváření klíčového výstupního proudu a jsou uložena v vyrovnávací paměť blokové funkce. Šifrovací kolo je znázorněno na obrázku 1. Celkem blok obsahuje 20 kol (obrázek 2).
Díky velké podobnosti bloku s pěti spirálami dostala šifra svůj název (penta-helix anglicky five spirals). V každém bloku nastanou následující události: vygeneruje se jedno výstupní slovo toku (gama), přidají se dvě slova klíčového materiálu a jedno slovo prostého textu . Výstupní stav aktuálního bloku je použit jako vstup do dalšího bloku.
V souladu s tím jsou výpočty zobrazené na obrázku 2 dostatečné pro zpracování 4 bajtů zprávy. Stejně jako u jiných proudových šifer je šifrový text v Phelix součtem modulo 2 prostého textu a klíčového proudu. Na začátku šifrování je počáteční stav určen klíčem a časovým razítkem. Klíčová slova závisí na hodnotě a délce klíče, časovém razítku a čísle bloku. Útoky založené na hádání vnitřního stavu jsou ztíženy přidáním klíčového materiálu ve fázi extrakce klíčového proudu. Na konci zprávy je provedeno další zpracování, během kterého je vygenerován 128bitový tag, který je zodpovědný za autentizaci zprávy.
Funkce šifrování používá jako vstup klíč U proměnné délky (až 256 bitů), 128bitové časové razítko a prostý text. Funkce dešifrování je klíč, časové razítko a značka a v případě selhání autentizace vytváří buď prostý text, nebo chybu. Dovolit být délka posloupnosti bajtů . Pak <32. Pracovní klíč K, sestávající z osmi 32bitových slov, je generován funkcí keymixing. Časové razítko má velikost 16 bajtů. Pokud je jeho délka menší, musí být štítek doplněn nulami na požadovanou délku. Šifrovaný text a otevřený text mají stejnou délku s limitem . Poslední slovo otevřeného textu je ve výchozím nastavení doplněno nulami na délku 32 bitů, pokud délka slova není násobkem 32 bitů. Funkce šifrování může vzít prázdnou zprávu jako vstup, v takovém případě bude jejím výstupem pouze autentizační kód zprávy (MAC).
Phelix se skládá z posloupnosti bloků, z nichž každý má přiděleno své vlastní jedinečné číslo, podle pořadí. Na vstupu každého bloku je pět „aktivních“ slov. Výstup bloku také obsahuje pět slov , , , , , která budou představovat vstup dalšího bloku , , , , . th blok také používá jako vstup dvě klíčová slova a , jedno slovo prostého textu a předchozí slovo vnitřního stavu .
Obrázek 2 je kompletní ilustrace funkce bloku. Všechny hodnoty jsou 32bitová slova; Podle tradice má exkluzivní OR zápis , permutace - <<< , modulo sčítání - . Bloková funkce může být reprezentována jako sekvence dvou "polobloků" H definovaných následovně.
Pro slova zapojená do blokových operací tedy platí následující rovnice. Každý blok vytváří jedno klíčové slovo . Šifrovaný text je jako obvykle definován následovně: .
Rozšířená klíčová slova jsou definována pracovním klíčem K, časovým razítkem N, délkou vstupního klíče U a číslem bloku. Nejprve se časové razítko rozšíří na osm slov podle pravidla: . Dále se klíčová slova pro blok i vypočítají následovně:
kde se všechny operace provádějí modulo
Šifrování začíná nastavením vnitřního stavu:
Poté se provede 8 bloků, v důsledku čehož se vytvoří slova výstupního toku klíče (gama), která jsou nakonec vyřazena a neúčastní se šifrování a teprve poté začíná pracovní cyklus.
Po inicializaci začíná proces šifrování otevřeného textu. Nechť K je počet bajtových slov otevřeného textu, pak počet bloků bude také roven K. Každý blok vytváří jedno slovo výstupního klíčového proudu, které se používá k zašifrování jednoho slova otevřeného textu.
V závislosti na , poslední slovo výstupního toku klíčů používá 1 až 4 bajty.
Po zašifrování posledního bajtu prostého textu je čas vygenerovat MAC. Operace XOR se provede pro a 0x912d94f1. Dále je aktualizovaný vnitřní stav zpracován postupně po osmi blocích. Zde se používají slova prostého textu a vygenerovaný výstupní klíčový proud se nijak nepoužívá. Po následném zpracování vnitřního stavu se pomocí stejného .
Funkce generování klíče pevné délky mapuje klíč libovolné délky na klíč dlouhý 256 bitů. Nejprve se vezme funkce R definovaná takto:
Poté je klíč U doplněn nulami na délku 256 bitů a 32bitovým slovům klíče jsou přiřazeny hodnoty . Pracovní klíč se zadává následovně pro k=7,…,0:
Dešifrování je téměř identické s šifrováním, pouze se liší:
Phelix je optimalizován pro 32bitové platformy. Autoři tvrdí, že na moderních 86bitových procesorech může dosáhnout až osmi cyklů na bajt .
Následují metriky výkonu pro hardware FPGA:
Čip Xilinx | Fragmenty | FPGA Mbps | GE skóre | Popis implementace |
---|---|---|---|---|
XC2S100-5 | 1198 | 960,0 | 20404 | (A) Plně kulatý 160bitový model |
XC2S100-5 | 1077 | 750,0 | 18080 | (B) Půlkulatý 160bitový model |
XC2S30-5 | 264 | 3.2 | 12314 | (C) 32bitové datové spojení |
Phelix je mírně upravená forma rané šifry Helix, kterou v roce 2003 publikovali Niels Ferguson , Doug Whiting , Bruce Schneier , John Kelsey , Stefan Lax a Tadayoshi Kono ; Phelix přidá 128 bitů pro vnitřní stav.
V roce 2004 Muller zveřejnil dva útoky na Helix. První má složitost 2 88 a vyžaduje 2 12 adaptivně vybraných slov v otevřeném textu , ale pro opětovné použití vyžaduje náhodná čísla. Souradiuty Paul a Bart Presnel později ukázali, že počet adaptivně přizpůsobených Müllerových útočných slov s otevřeným textem lze v nejhorším případě snížit o faktor 3 pomocí jejich optimálních algoritmů pro řešení adičních diferenciálních rovnic. V následném vývoji Souradiuti Paul a Bart Prenel ukázali, že výše uvedený útok by mohl být implementován s vybranými holými texty (CP) spíše než adaptivně přizpůsobenými holými texty (ACP) s datovou složitostí 2 35,64 CP. Mullerův druhý útok na Helix je výrazný útok, který vyžaduje 2 114 slov zvoleného prostého textu.
Vývoj Phelix je z velké části motivován Mullerovým diferenciálním útokem.
Autoři radí, že Phelix by neměl být používán, dokud neprojde další kryptoanalýzou.
Hongjun Wu a Bart Prenel, autoři diferenciálního útoku, vyjadřují obavy, že každé slovo otevřeného textu ovlivňuje klíčový proud a obchází dostatečné vrstvy zmatku a šíření. Tvrdí, že se jedná o neodmyslitelnou chybu ve struktuře Helix a Phelix. Autoři dospěli k závěru, že Phelix není bezpečný.
Phelix lze implementovat mnoha různými způsoby. Obrázek níže ukazuje jednu možnou implementaci na ASIC (Application Specific Integrated Circuit ).
Chcete-li zvýšit rychlost algoritmu, můžete změnit funkci H přidáním nových sčítaček a XOR, které by mohly fungovat paralelně, ale toto zvýšení počtu prvků v obvodu by také znamenalo znatelný nárůst v obvodu samotném, protože sčítačka je největší prvek obvodu.
Symetrické kryptosystémy | |
---|---|
Streamové šifry | |
Síť Feistel | |
Síť SP | |
jiný |