S-box (tai substituutiolohko , eng. s-box from substitution-box ) - ohjelmakoodin tai laitteistojärjestelmän funktio , joka ottaa n bittiä sisääntulossa , muuntaa ne tietyn algoritmin mukaan ja palauttaa m bittiä lähtö . n ja m eivät välttämättä ole yhtä suuria [1] .
S-laatikoita käytetään lohkosalauksissa .
Elektroniikassa voit käyttää suoraan kuvassa näkyvää piiriä . Ohjelmoinnissa luodaan korvaustaulukoita ( korvaustaulukot , korvaustaulukot). Molemmat lähestymistavat ovat samanarvoisia, eli tietokoneella salatun tiedon salaus voidaan purkaa elektronisella laitteella ja päinvastoin.
S-laatikkoa kutsutaan täydelliseksi ( täydellinen s-laatikko ) [2] , jos lähtöbittien arvot lasketaan taivutetulla funktiolla tulobittien arvojen perusteella ja mikä tahansa lähtöbittien lineaarinen yhdistelmä on syöttöbittien taipunut toiminto .
S-lohkon ohjelmistototeutus toimii seuraavasti:
Käytettyä taulukkoa kutsutaan "korvaustaulukoksi" tai "korvaustaulukoksi". Taulukko voi:
Esimerkiksi DES - salaukselle (algoritmille) käytetään kiinteää taulukkoa , kun taas Blowfish- ja Twofish -salauksille taulukko luodaan avaimen perusteella.
Esimerkki [3] . Harkitse työskentelyä DES - salauksen viidennen s-lohkon ( ) taulukon kanssa . Viides s-laatikko ottaa 6 bittiä ( ) tulona ja palauttaa 4 bittiä ( ) ulostulona . Numeroimme syöttöbitit vasemmalta oikealle 1:stä 6:een. Korvaustaulukko on seuraavanlainen:
S5_ _ | 2., 3., 4. ja 5. bitin arvot tulossa | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 | ||
1. ja 6. bitin arvot tulossa | 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 | |
kymmenen | 0100 | 0010 | 0001 | 1011 | 1010 | 1101 | 0111 | 1000 | 1111 | 1001 | 1100 | 0101 | 0110 | 0011 | 0000 | 1110 | |
yksitoista | 1011 | 1000 | 1100 | 0111 | 0001 | 1110 | 0010 | 1101 | 0110 | 1111 | 0000 | 1001 | 1010 | 0100 | 0101 | 0011 |
Olkoon tulobitit " 0 1101 1 " . Etsitään ulostulobitit .
S-lohkon laitteistototeutus (katso kuva ) koostuu seuraavista laitteista:
Dekooderi on laite, joka muuntaa n - bittisen binaarisignaalin yksibittiseksi perussignaaliksi .
Esimerkiksi kuvassa esitetylle s-boxille dekooderi muuntaa kolmibittisen signaalin ( ) kahdeksanbittiseksi ( ).
Kytkinjärjestelmä - sisäiset liitännät, jotka suorittavat bittien vaihdon . Jos m=n , yhteyksien määrä on . Jokainen tulobitti kartoitetaan lähtöbittiin, joka sijaitsee samassa bitissä tai eri bitissä . Jos tulojen n ja lähtöjen m määrä ei ole sama, jokaisessa dekooderin lähdössä voi olla nolla, yksi, kaksi tai useampia yhteyksiä. Sama pätee kooderin tuloihin.
Kuvassa esitetylle s-lohkolle yhteyksien määrä on .
Enkooderi on laite, joka muuntaa signaalin yksibittisestä-arisesta n -bittiseksi binääriksi.
Kuvassa esitetylle s-lohkolle voidaan laatia seuraava korvaustaulukko (korvaustaulukko).
0 | yksi | 2 | 3 | neljä | 5 | 6 | 7 | |
---|---|---|---|---|---|---|---|---|
Dekooderin tuloarvo | 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 |
Sen dekooderin lähdön numero ( kuvan mukaan ), jonka arvoksi on asetettu 1 (muissa lähdöissä arvoksi on asetettu 0) | 0 | yksi | 2 | 3 | neljä | 5 | 6 | 7 |
Sen kooderin tulon numero ( kuvan mukaan ), jonka arvoksi on asetettu 1 (muissa tuloissa arvoksi on asetettu 0) | 3 | 0 | yksi | neljä | 6 | 7 | 2 | 5 |
Arvo kooderin lähdössä | 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 |
Esimerkki . Syötetään numero 110 2 kuvan mukaisen kooderin tuloihin (katso kuva ). Koska binääriluvun 110 2 desimaaliesitys on 6 10 , kooderin kuudennen lähdön arvo on 1 ja muiden lähtöjen arvo 0 (katso kuva ) . Kytkinjärjestelmän avulla arvo 1 siirretään dekooderin 2. tuloon (bitinvaihto). Koska desimaaliluvun 2 10 binääriesitys on 010 2 , dekooderin ulostulot ovat numero 010 2 (katso kuva ).
S-laatikoita käytetään lohkosalauksissa , kun suoritetaan symmetristä salausta piilotekstin ja salatekstin välisen tilastollisen suhteen piilottamiseksi .
N -bittisen s-lohkon analysointi suurelle n :lle on erittäin vaikeaa, mutta sellaisen lohkon toteuttaminen käytännössä on erittäin vaikeaa, koska mahdollisten yhteyksien määrä on suuri ( ). Käytännössä "korvauslohkoa" käytetään monimutkaisempien järjestelmien elementtinä.
S-laatikoita käytetään seuraavissa salakirjoissa:
S-laatikkoa suunniteltaessa tulee kiinnittää erityistä huomiota "korvaustaulukon" laatimiseen. Monien vuosien ajan tutkijat ovat etsineet kirjanmerkkejä (vain luojien tuntemia haavoittuvuuksia) DES - salauksen kahdeksan s-lohkon korvaustaulukoista . DES:n kirjoittajat kertoivat [4] , mitä he ovat ohjanneet substituutiotaulukoita laatiessaan. DES-salauksen differentiaalisen krypta -analyysin tulokset osoittivat, että korvaustaulukoiden numerot valittiin huolellisesti DES:n vastustuskyvyn lisäämiseksi tietyntyyppisiä hyökkäyksiä vastaan. Biham ja Shamir havaitsivat, että pienetkin muutokset taulukoihin voivat heikentää merkittävästi DES:ää [5] .