S-box (nebo substituční blok , angl. s-box z substitučního boxu ) - funkce v programovém kódu nebo hardwarovém systému, která na vstupu vezme n bitů , převede je podle určitého algoritmu a vrátí m bitů na výstup . n a m se nemusí nutně rovnat [1] .
S-boxy se používají v blokových šifrách .
V elektronice můžete přímo použít obvod znázorněný na obrázku . Při programování se vytvářejí substituční tabulky (substituční tabulky , substituční tabulky). Oba tyto přístupy jsou ekvivalentní, tj. data zašifrovaná na počítači lze dešifrovat na elektronickém zařízení a naopak.
S-box se nazývá dokonalý ( perfect s-box ) [2] , pokud jsou hodnoty výstupních bitů vypočítány funkcí ohnut na základě hodnot vstupních bitů a jakákoli lineární kombinace výstupních bitů je ohnutá funkce vstupních bitů.
Softwarová implementace s-bloku funguje následovně:
Použitá tabulka se nazývá "náhradní tabulka" nebo "substituční tabulka". Stůl může:
Například pro šifru DES (algoritmus) se používá pevná tabulka , zatímco pro šifry Blowfish a Twofish je tabulka vytvořena na základě klíče.
Příklad [3] . Zvažte práci s tabulkou pátého s-bloku ( ) šifry DES . Pátý s-box bere 6 bitů ( ) jako vstup a vrací 4 bity ( ) jako výstup . Vstupní bity očíslujeme zleva doprava od 1 do 6. Substituční tabulka má následující tvar:
S5 _ | Hodnoty 2., 3., 4. a 5. bitu na vstupu | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 | ||
Hodnoty 1. a 6. bitu na vstupu | 00 | 0010 | 1100 | 0100 | 0001 | 0111 | 1010 | 1011 | 0110 | 1000 | 0101 | 0011 | 1111 | 1101 | 0000 | 1110 | 1001 |
01 | 1110 | 1011 | 0010 | 1100 | 0100 | 0111 | 1101 | 0001 | 0101 | 0000 | 1111 | 1010 | 0011 | 1001 | 1000 | 0110 | |
deset | 0100 | 0010 | 0001 | 1011 | 1010 | 1101 | 0111 | 1000 | 1111 | 1001 | 1100 | 0101 | 0110 | 0011 | 0000 | 1110 | |
jedenáct | 1011 | 1000 | 1100 | 0111 | 0001 | 1110 | 0010 | 1101 | 0110 | 1111 | 0000 | 1001 | 1010 | 0100 | 0101 | 0011 |
Nechte vstupní bity " 0 1101 1 ". Pojďme najít výstupní bity .
Hardwarová implementace s-bloku (viz obr. ) se skládá z následujících zařízení:
Dekodér je zařízení, které převádí n - bitový binární signál na jednobitový základní signál .
Například pro s-box znázorněný na obrázku dekodér převádí tříbitový signál ( ) na osmibitový ( ).
Přepínací systém – interní připojení, která provádějí výměnu bitů . Pokud m=n , počet připojení je . Každý vstupní bit se mapuje na výstupní bit umístěný ve stejném bitu nebo v jiném bitu . Pokud počet vstupů n a výstupů m není stejný, každý výstup dekodéru může mít nula, jedno, dvě nebo více připojení. Totéž platí pro vstupy kodéru.
Pro s-blok zobrazený na obrázku , je počet připojení .
Kodér je zařízení, které převádí signál z jednobitovéhona n -bitový binární signál.
Pro s-blok zobrazený na obrázku lze sestavit následující substituční tabulku (substituční tabulku).
0 | jeden | 2 | 3 | čtyři | 5 | 6 | 7 | |
---|---|---|---|---|---|---|---|---|
Vstupní hodnota dekodéru | 000 2 = 0 10 | 001 2 = 1 10 | 010 2 = 2 10 | 011 2 = 3 10 | 1002 = 410 _ | 1012 = 510 _ | 1102 = 610 _ | 1112 = 710 _ |
Číslo výstupu dekodéru (podle obrázku ), na kterém je hodnota nastavena na 1 (na ostatních výstupech je hodnota nastavena na 0) | 0 | jeden | 2 | 3 | čtyři | 5 | 6 | 7 |
Číslo vstupu kodéru (podle obrázku ), na kterém je hodnota nastavena na 1 (na ostatních vstupech je hodnota nastavena na 0) | 3 | 0 | jeden | čtyři | 6 | 7 | 2 | 5 |
Hodnota na výstupu kodéru | 011 2 = 3 10 | 000 2 = 0 10 | 001 2 = 1 10 | 1002 = 410 _ | 1102 = 610 _ | 1112 = 710 _ | 010 2 = 2 10 | 1012 = 510 _ |
Příklad . Nechte číslo 110 2 přivést na vstupy kodéru znázorněného na obrázku (viz obrázek ). Protože dekadická reprezentace binárního čísla 110 2 je 6 10 , bude mít 6. výstup kodéru hodnotu 1 a ostatní výstupy budou mít hodnotu 0 (viz obrázek ). Pomocí soustavy přepínačů se hodnota 1 přenese na 2. vstup dekodéru (bit swap). Protože binární reprezentace dekadického čísla 2 10 je 010 2 , výstupy dekodéru budou číslo 010 2 (viz obrázek ).
S-boxy se používají v blokových šifrách při provádění symetrického šifrování ke skrytí statistického vztahu mezi otevřeným textem a šifrovaným textem .
Analýza n -bitového s-bloku pro velké n je extrémně obtížná, ale implementovat takový blok v praxi je velmi obtížné, protože počet možných spojení je velký ( ). V praxi se „substituční blok“ používá jako prvek složitějších systémů.
S-boxy se používají v následujících šifrách:
Při navrhování s-boxu je třeba věnovat zvláštní pozornost sestavení „tabulky náhrad“. Po mnoho let výzkumníci hledali záložky (zranitelnosti známé pouze tvůrcům) v substitučních tabulkách osmi s-bloků šifry DES . Autoři DES řekli [4] o tom, čím se řídili při sestavování substitučních tabulek. Výsledky diferenciální kryptoanalýzy šifry DES ukázaly, že čísla v substitučních tabulkách byla pečlivě vybrána, aby se zvýšila odolnost DES vůči určitým typům útoků. Biham a Shamir zjistili, že i malé změny v tabulkách mohou významně oslabit DES [5] .