S-box (vagy helyettesítési blokk , angol s-box a helyettesítő dobozból ) - a programkódban vagy hardverrendszerben lévő függvény , amely n bitet vesz fel a bemeneten , átalakítja azokat egy bizonyos algoritmus szerint és m bitet ad vissza kimenet . n és m nem feltétlenül egyenlő [1] .
Az S-boxokat a blokk titkosításokban használják .
Az elektronikában közvetlenül alkalmazhatja az ábrán látható áramkört . A programozás során helyettesítési táblák jönnek létre (helyettesítési táblák , helyettesítési táblák). Mindkét megközelítés egyenértékű, azaz a számítógépen titkosított adatok visszafejthetők egy elektronikus eszközön, és fordítva.
Egy S-boxot tökéletesnek ( tökéletes s-box ) [2] nevezünk , ha a kimeneti bitek értékeit a hajlított függvény számítja ki a bemeneti bitek értékei alapján, és a kimeneti bitek bármely lineáris kombinációja egy a bemeneti bitek hajlított funkciója .
Az s-blokk szoftveres megvalósítása a következőképpen működik:
A használt táblázatot "helyettesítő táblázatnak" vagy "helyettesítő táblázatnak" nevezik. A táblázat képes:
Például a DES titkosításhoz (algoritmushoz) rögzített táblázatot használnak , míg a Blowfish és Twofish rejtjelekhez a tábla a kulcs alapján jön létre.
Példa [3] . Fontolja meg a DES titkosítás ötödik s-blokkjának ( ) táblázatával való munkát . Az ötödik s-box 6 bitet ( ) vesz bemenetként és 4 bitet ( ) ad vissza kimenetként . A bemeneti biteket balról jobbra számozzuk 1-től 6-ig. A helyettesítési táblázat a következő formájú:
S5_ _ | A 2., 3., 4. és 5. bit értékei a bemeneten | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 | ||
Az 1. és 6. bit értékei a bemeneten | 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 | |
tíz | 0100 | 0010 | 0001 | 1011 | 1010 | 1101 | 0111 | 1000 | 1111 | 1001 | 1100 | 0101 | 0110 | 0011 | 0000 | 1110 | |
tizenegy | 1011 | 1000 | 1100 | 0111 | 0001 | 1110 | 0010 | 1101 | 0110 | 1111 | 0000 | 1001 | 1010 | 0100 | 0101 | 0011 |
Legyen a bemeneti bitek " 0 1101 1 ". Keressük meg a kimeneti biteket .
Az s-blokk hardveres megvalósítása (lásd ábra ) a következő eszközökből áll:
A dekóder egy olyan eszköz, amely egyn bites bináris jelet egybites alapjellé alakít át.
Például az ábrán látható s-box esetében a dekóder egy hárombites jelet ( ) alakít át nyolcbitessé ( ).
Kapcsolórendszer – belső kapcsolatok, amelyek bitcserét hajtanak végre . Ha m=n , akkor a kapcsolatok száma . Minden bemeneti bit leképez egy kimeneti bitre, amely ugyanabban a bitben vagy egy másik bitben található . Ha az n bemenetek és m kimenetek száma nem egyenlő, minden dekódoló kimenetnek lehet nulla, egy, kettő vagy több kapcsolata. Ugyanez igaz a kódoló bemeneteire is.
A , ábrán látható s-blokk esetében a kapcsolatok száma .
A kódoló olyan eszköz, amely a jelet egybites-ary-ről n bites binárisra alakítja.
Az ábrán látható s-blokkhoz a következő helyettesítési táblázat (helyettesítési táblázat) állítható össze.
0 | egy | 2 | 3 | négy | 5 | 6 | 7 | |
---|---|---|---|---|---|---|---|---|
Dekóder bemeneti értéke | 000 2 = 0 10 | 001 2 = 1 10 | 010 2 = 2 10 | 011 2 = 3 10 | 100 2 = 4 10 | 101 2 = 5 10 | 110 2 = 6 10 | 111 2 = 7 10 |
Annak a dekóder kimenetnek a száma (az ábra szerint ), amelyen az érték 1-re van állítva (más kimeneteken az érték 0) | 0 | egy | 2 | 3 | négy | 5 | 6 | 7 |
Annak a kódoló bemenetnek a száma (az ábra szerint ), amelyen az érték 1-re van állítva (más bemeneteken az érték 0) | 3 | 0 | egy | négy | 6 | 7 | 2 | 5 |
Az érték a kódoló kimenetén | 011 2 = 3 10 | 000 2 = 0 10 | 001 2 = 1 10 | 100 2 = 4 10 | 110 2 = 6 10 | 111 2 = 7 10 | 010 2 = 2 10 | 101 2 = 5 10 |
Példa . Az ábrán látható jeladó bemeneteire a 110 2 szám kerüljön (lásd ábra ). Mivel a 110 2 bináris szám decimális ábrázolása 6 10 , a kódoló 6. kimenete 1, a többi kimenet pedig 0 lesz (lásd az ábrát ). Egy kapcsolórendszer segítségével az 1-es érték átkerül a dekóder 2. bemenetére (bitcsere). Mivel a 2 10 decimális szám bináris megjelenítése 010 2 , a dekódoló kimenetei a 010 2 számok lesznek (lásd az ábrát ).
Az S-boxokat a blokk-rejtjelekben használják szimmetrikus titkosítás végrehajtása során , hogy elrejtse az egyszerű szöveg és a rejtjelezett szöveg közötti statisztikai kapcsolatot .
Egy n bites s-blokk elemzése nagy n esetén rendkívül nehéz, de nagyon nehéz egy ilyen blokkot a gyakorlatban megvalósítani, mivel a lehetséges kapcsolatok száma nagy ( ). A gyakorlatban a „helyettesítő blokkot” bonyolultabb rendszerek elemeként használják.
Az S-boxokat a következő titkosításokban használják:
Az s-box tervezésénél különös figyelmet kell fordítani a „helyettesítő táblázat” összeállítására. A kutatók évek óta keresnek könyvjelzőket (csak az alkotók által ismert sebezhetőségeket) a DES titkosítás nyolc s-blokkjának helyettesítési táblázataiban . A DES szerzői elmondták [4] -nek, hogy mi vezérelték őket a helyettesítési táblák összeállításakor. A DES titkosítás differenciális kriptoanalízisének eredményei azt mutatták, hogy a helyettesítési táblázatokban szereplő számokat gondosan választották meg, hogy növeljék a DES bizonyos típusú támadásokkal szembeni ellenállását. Biham és Shamir azt találta, hogy a táblázatok kis változtatásai is jelentősen gyengíthetik a DES-t [5] .