S-box (eller substitution block , eng. s-box from substitution-box ) - en funktion i programkoden eller ett hårdvarusystem som tar n bitar vid ingången , konverterar dem enligt en viss algoritm och returnerar m bitar vid utgång . n och m är inte nödvändigtvis lika [1] .
S-boxar används i blockchiffer .
Inom elektronik kan du direkt tillämpa kretsen som visas i figuren . I programmering skapas substitutionstabeller ( substitutionstabeller , substitutionstabeller). Båda dessa tillvägagångssätt är likvärdiga, dvs data krypterad på en dator kan dekrypteras på en elektronisk anordning och vice versa.
En S-box kallas perfekt ( perfekt s-box ) [2] om värdena för utbitarna beräknas av den böjda funktionen baserat på värdena för ingångsbitarna och varje linjär kombination av utbitar är en böjd funktion hos inmatningsbitarna.
Mjukvaruimplementeringen av s-blocket fungerar enligt följande:
Tabellen som används kallas "ersättningstabellen" eller "ersättningstabellen". Bordet kan:
Till exempel används en fast tabell för DES- chifferet (algoritm) , medan för Blowfish- och Twofish -chifferna skapas tabellen baserat på nyckeln.
Exempel [3] . Överväg att arbeta med tabellen i det femte s-blocket ( ) i DES - chifferet . Den femte s-boxen tar 6 bitar ( ) som indata och returnerar 4 bitar ( ) som utdata . Vi numrerar inmatningsbitarna från vänster till höger från 1 till 6. Substitutionstabellen har följande form:
S5 _ | Värden för den 2:a, 3:e, 4:e och 5:e biten vid ingången | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 | ||
Värden för den 1:a och 6:e biten vid ingången | 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 | |
tio | 0100 | 0010 | 0001 | 1011 | 1010 | 1101 | 0111 | 1000 | 1111 | 1001 | 1100 | 0101 | 0110 | 0011 | 0000 | 1110 | |
elva | 1011 | 1000 | 1100 | 0111 | 0001 | 1110 | 0010 | 1101 | 0110 | 1111 | 0000 | 1001 | 1010 | 0100 | 0101 | 0011 |
Låt inmatningsbitarna " 0 1101 1 ". Låt oss hitta utgångsbitarna .
Hårdvaruimplementeringen av s-blocket (se fig. ) består av följande enheter:
En avkodare är en enhet som omvandlar en n - bits binär signal till en enbits bassignal .
Till exempel, för s-boxen som visas i figuren konverterar avkodaren en trebitarssignal ( ) till en åttabitarssignal ( ).
Switch system - interna anslutningar som utför bitbyte . Om m=n är antalet anslutningar . Varje ingångsbit mappas till en utgångsbit som finns i samma bit eller en annan bit . Om antalet ingångar n och utgångar m inte är lika, kan varje dekoderutgång ha noll, en, två eller flera anslutningar. Detsamma gäller för kodaringångarna.
För s-blocket som visas i figuren , , är antalet anslutningar .
En kodare är en enhet som omvandlar en signal från enenbit -är till en n -bit binär.
För s-blocket som visas i figuren kan följande substitutionstabell (substitutionstabell) sammanställas.
0 | ett | 2 | 3 | fyra | 5 | 6 | 7 | |
---|---|---|---|---|---|---|---|---|
Dekoderns ingångsvärde | 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 |
Numret på dekoderutgången (enligt figuren ) där värdet är satt till 1 (på andra utgångar är värdet satt till 0) | 0 | ett | 2 | 3 | fyra | 5 | 6 | 7 |
Numret på kodaringången (enligt figuren ) där värdet är satt till 1 (på andra ingångar är värdet satt till 0) | 3 | 0 | ett | fyra | 6 | 7 | 2 | 5 |
Värdet vid utgången av kodaren | 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 |
Exempel . Låt siffran 110 2 matas till ingångarna på givaren som visas i figuren (se figur ). Eftersom decimalrepresentationen av det binära talet 110 2 är 6 10 kommer kodarens 6 :e utgång att ha värdet 1, och de andra utgångarna kommer att ha värdet 0 (se figur ). Med hjälp av ett system av switchar kommer värdet 1 att överföras till dekoderns 2: a ingång (bitswap). Eftersom den binära representationen av decimaltalet 2 10 är 010 2 , kommer utsignalerna från dekodern att vara talet 010 2 ( se figur ).
S-boxar används i blockchiffer när man utför symmetrisk kryptering för att dölja det statistiska förhållandet mellan klartext och chiffertext .
Analys av ett n -bitars s-block för stort n är extremt svårt, men det är mycket svårt att implementera ett sådant block i praktiken, eftersom antalet möjliga anslutningar är stort ( ). I praktiken används "substitutionsblocket" som en del av mer komplexa system.
S-boxar används i följande chiffer:
Vid design av en s-box bör särskild uppmärksamhet ägnas åt sammanställningen av en "ersättningstabell". I många år har forskare letat efter bokmärken (sårbarheter som endast är kända för skaparna) i substitutionstabellerna för de åtta s-blocken i DES - chifferet . Författarna till DES berättade [4] om vad de vägleddes av vid sammanställningen av substitutionstabeller. Resultaten av differentiell kryptoanalys av DES-chifferet visade att siffrorna i substitutionstabellerna var noggrant utvalda för att öka motståndet hos DES mot vissa typer av attacker. Biham och Shamir fann att även små ändringar av tabeller kan försvaga DES avsevärt [5] .