S-boks (eller substitutionsblok , eng. s-box fra substitution-box ) - en funktion i programkoden eller et hardwaresystem, der tager n bit ved indgangen , konverterer dem i henhold til en bestemt algoritme og returnerer m bit ved den output . n og m er ikke nødvendigvis ens [1] .
S-bokse bruges i blokcifre .
I elektronik kan du direkte anvende kredsløbet vist på figuren . I programmering oprettes substitutionstabeller ( substitutionstabeller , substitutionstabeller). Begge disse tilgange er ækvivalente, dvs. data krypteret på en computer kan dekrypteres på en elektronisk enhed og omvendt.
En S-boks kaldes perfekt ( perfekt s-boks ) [2], hvis værdierne af outputbittene beregnes af den bøjede funktion baseret på værdierne af inputbittene, og enhver lineær kombination af outputbits er en bøjet funktion af input bits.
Softwareimplementeringen af s-blokken fungerer som følger:
Den anvendte tabel kaldes "erstatningstabellen" eller "erstatningstabellen". Bordet kan:
For eksempel bruges en fast tabel til DES -chifferen (algoritmen) , mens for Blowfish- og Twofish -chifferne oprettes tabellen baseret på nøglen.
Eksempel [3] . Overvej at arbejde med tabellen i den femte s-blok ( ) i DES -chifferet . Den femte s-boks tager 6 bit ( ) som input og returnerer 4 bit ( ) som output . Vi nummererer inputbittene fra venstre mod højre fra 1 til 6. Substitutionstabellen har følgende form:
S5 _ | Værdier af 2., 3., 4. og 5. bit ved input | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 | ||
Værdier af 1. og 6. bit ved indgangen | 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 | |
ti | 0100 | 0010 | 0001 | 1011 | 1010 | 1101 | 0111 | 1000 | 1111 | 1001 | 1100 | 0101 | 0110 | 0011 | 0000 | 1110 | |
elleve | 1011 | 1000 | 1100 | 0111 | 0001 | 1110 | 0010 | 1101 | 0110 | 1111 | 0000 | 1001 | 1010 | 0100 | 0101 | 0011 |
Lad input bits " 0 1101 1 ". Lad os finde output bits .
Hardwareimplementeringen af s-blokken (se fig. ) består af følgende enheder:
En dekoder er en enhed, der konverterer et n - bit binært signal til et en-bit basissignal .
For eksempel, for s-boksen vist i figuren , konverterer dekoderen et tre-bit signal ( ) til et otte-bit et ( ).
Skift systeminterne forbindelser, der udfører bitbytning . Hvis m=n , er antallet af forbindelser . Hver inputbit er knyttet til en outputbit placeret i den samme bit eller en anden bit . Hvis antallet af indgange n og udgange m ikke er ens, kan hver dekoderudgang have nul, en, to eller flere forbindelser. Det samme gælder for encoder-indgangene.
For s-blokken vist på figuren er antallet af forbindelser .
En encoder er en enhed, der konverterer et signal fra en enkelt-bit-ær til en n -bit binær.
For s-blokken vist i figuren kan følgende substitutionstabel (substitutionstabel) kompileres.
0 | en | 2 | 3 | fire | 5 | 6 | 7 | |
---|---|---|---|---|---|---|---|---|
Indgangsværdi for dekoder | 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 |
Nummeret på dekoderudgangen (ifølge figuren ), hvor værdien er sat til 1 (på andre udgange er værdien sat til 0) | 0 | en | 2 | 3 | fire | 5 | 6 | 7 |
Nummeret på encoder-indgangen (ifølge figuren ), hvor værdien er sat til 1 (på andre indgange er værdien sat til 0) | 3 | 0 | en | fire | 6 | 7 | 2 | 5 |
Værdien ved udgangen af encoderen | 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 |
Eksempel . Lad tallet 110 2 føres til indgangene på encoderen vist på figuren (se figur ). Da decimalrepræsentationen af det binære tal 110 2 er 6 10 , vil den 6. udgang af indkoderen have værdien 1, og de andre udgange vil have værdien 0 (se figur ). Ved hjælp af et system af switches vil værdien 1 blive overført til 2. indgang på dekoderen (bit swap). Da den binære repræsentation af decimaltallet 2 10 er 010 2 , vil udgangene fra dekoderen være tallet 010 2 ( se figur ).
S-bokse bruges i blokcifre , når der udføres symmetrisk kryptering for at skjule det statistiske forhold mellem almindelig tekst og chiffertekst .
Analyse af en n -bit s-blok for stor n er ekstremt vanskelig, men det er meget vanskeligt at implementere en sådan blok i praksis, da antallet af mulige forbindelser er stort ( ). I praksis bruges "substitutionsblokken" som et element i mere komplekse systemer.
S-bokse bruges i følgende cifre:
Når man designer en s-box, skal man være særlig opmærksom på udarbejdelsen af en "substitutionstabel". I mange år har forskere ledt efter bogmærker (sårbarheder, der kun er kendt af skaberne) i substitutionstabellerne i de otte s-blokke i DES -chifferet . Forfatterne af DES fortalte [4] om, hvad de blev styret af, når de kompilerede substitutionstabeller. Resultaterne af differentiel kryptoanalyse af DES-chifferet viste, at tallene i substitutionstabellerne var nøje udvalgt for at øge DES's modstand mod visse typer angreb. Biham og Shamir fandt ud af, at selv små ændringer i tabeller kan svække DES markant [5] .