AES (salausstandardi)

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 7. maaliskuuta 2021 tarkistetusta versiosta . tarkastukset vaativat 20 muokkausta .
AES, Rijndael-AES, Rijndael
Luoja Vincent Rayman
Yoan Dymen
Luotu 1998_ _
Avaimen koko 128/192/256 bittiä
Lohkon koko 128 bittinen
Kierrosten lukumäärä 12.10.14 (riippuu avaimen koosta)
Tyyppi Korvaus-permutaatioverkko
 Mediatiedostot Wikimedia Commonsissa

AES ( Advanced Encryption Standard ; myös Rijndael , [rɛindaːl] -   reindal ) on symmetrinen lohkosalausalgoritmi (lohkokoko 128 bittiä, avain 128/192/256 bittiä), jonka Yhdysvaltain hallitus on hyväksynyt salausstandardiksi AES kilpailu . Tämä algoritmi on analysoitu hyvin, ja sitä käytetään nyt laajalti, kuten sen edeltäjän DES :n tapauksessa . Yhdysvaltain kansallinen standardointi- ja teknologiainstituutti (NIST) julkaisi AES-spesifikaation 26. marraskuuta 2001 viiden vuoden jakson jälkeen, jonka aikana luotiin ja arvioitiin 15 ehdokasta. 26. toukokuuta 2002 AES julkistettiin salausstandardiksi. Vuodesta 2009 lähtien AES on yksi yleisimmin käytetyistä symmetrisistä salausalgoritmeista [1] [2] . Intel esitteli AES-kiihdytyksen tuen x86 - prosessoriperheelle alkaen Arrandalesta vuonna 2010 ja myöhemmin Sandy Bridge -prosessoreista ; AMD on ollut Bulldozerin palveluksessa vuodesta 2011.  

AES:n historia

2. tammikuuta 1997 NIST ilmoittaa [3] aikovansa valita seuraaja DES :lle , joka on ollut amerikkalainen standardi vuodesta 1977 lähtien . 2. lokakuuta 2000 ilmoitettiin, että kilpailun voittaja oli Rijndael-algoritmi [4] , ja standardointiprosessi alkoi. Luonnos julkaistiin 28. helmikuuta 2001 ja 26. marraskuuta 2001 AES hyväksyttiin FIPS 197:ksi. Kilpailun historiallinen retrospektiivi löytyy NIST :n verkkosivuilta [5] .

AES:n kuvaus

Määritelmät ja apumenetelmät

Määritelmät
lohko bittisarja, joka muodostaa tulon, lähdön, tilan ja pyöreän avaimen. Lohko voidaan ymmärtää myös tavujen sarjana
Salausavain salainen kryptografinen avain, jota avaimen laajennusproseduuri käyttää pyöreän avaimen joukon tuottamiseksi; voidaan esittää suorakaiteen muotoisena tavutaulukkona, jossa on neljä riviä ja Nk saraketta
Salateksti salausalgoritmin lähtö
avaimen laajennus menettely pyöreiden avainten luomiseksi salausavaimesta
Pyöreä avain Pyöreät avaimet saadaan salausavaimelta Key Expansion -menettelyä käyttäen. Niitä sovelletaan valtioon salauksen ja salauksen purkamisen yhteydessä
Osavaltio välisalauksen tulos, joka voidaan esittää suorakaiteen muotoisena tavutaulukkona, jossa on 4 riviä ja Nb sarakkeita
S laatikko epälineaarinen korvaustaulukko, jota käytetään useissa tavukorvausmuunnoksissa ja Key Expansion -menettelyssä tavuarvon yksi-yhteen korvaamiseen. Valmiiksi laskettu S-laatikko näkyy alla
Huom sarakkeiden määrä (32-bittiset sanat), jotka muodostavat valtion . AES: lle Nb = 4
Nk salausavaimen muodostavien 32-bittisten sanojen määrä. AES: lle Nk = 4, 6 tai 8
Ei. kierrosten lukumäärä, joka on Nk :n ja Nb :n funktio . AES nro = 10, 12, 14
Rcon[] matriisi, joka koostuu 32-bittisen sanan biteistä ja on vakio tietyllä kierroksella. Esilaskettu Rcon[] näkyy alla

S laatikko

sbox = array{ 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 };

Käänteinen S-laatikko menettelylle InvSubBytes

InvSbox = array{ 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d };

Rcon[]

Rcon = array{ taulukko{0x00, 0x00, 0x00, 0x00}, taulukko{0x01, 0x00, 0x00, 0x00}, taulukko{0x02, 0x00, 0x00, 0x00}, taulukko{0x04, 0x00, 0x00, 0x00}, taulukko{0x08, 0x00, 0x00, 0x00}, taulukko{0x10, 0x00, 0x00, 0x00}, taulukko{0x20, 0x00, 0x00, 0x00}, taulukko{0x40, 0x00, 0x00, 0x00}, taulukko{0x80, 0x00, 0x00, 0x00}, taulukko{0x1b, 0x00, 0x00, 0x00}, taulukko{0x36, 0x00, 0x00, 0x00} }; Apumenettelyt
AddRoundKey() muunnos salauksen ja käänteisen salauksen aikana, jossa Round Key XOR on c-tila. RoundKeyn pituus on yhtä suuri kuin tilan koko (eli jos Nb = 4, niin RoundKeyn pituus on 128 bittiä tai 16 tavua)
InvMixColumns() muunnos salauksen purkamisen yhteydessä, mikä on käänteinen MixColumns()
InvShiftRows() muunnos salauksen purkamisen yhteydessä, mikä on ShiftRows()-funktion käänteinen
InvSubBytes() muunnos salauksen purkamisen yhteydessä, joka on SubBytes()
MixColumns() salausmuunnos, joka ottaa kaikki tilasarakkeet ja sekoittaa niiden tiedot (toisistaan ​​riippumatta) saadakseen uusia sarakkeita
RotWord() toiminto, jota käytetään Key Expansion -menettelyssä, joka ottaa 4-tavuisen sanan ja selaa sen läpi
ShiftRows() salausmuunnokset, jotka käsittelevät tilaa, siirtäen syklisesti tilan kolmea viimeistä riviä eri arvoilla
Subtavut() salausmuunnokset, jotka käsittelevät tilan käyttämällä epälineaarista tavukorvaustaulukkoa (S-box) ja soveltavat sitä itsenäisesti tilan jokaiseen tavuun
Alasana() toiminto, jota käytetään Key Expansion -proseduurissa, joka ottaa nelitavuisen sanan syötteenä ja käyttää S-laatikkoa jokaiseen neljään tavuun, tuottaa tulossanan

Salaus

AES on Rijndael-algoritmiin perustuva standardi. AES:ssä syötteen (syöttödatan lohko) ja tilan (tila) pituus on vakio ja yhtä suuri kuin 128 bittiä, ja salausavaimen K pituus on 128, 192 tai 256 bittiä. Samaan aikaan alkuperäinen Rijndael-algoritmi sallii avaimen pituuden ja lohkokoon 128 - 256 bittiä 32 bitin askeleella. Valittujen syötteiden, tila- ja salausavaimen pituuksien merkitsemiseksi 32-bittisillä sanoilla, merkintää Nb = 4 syötteelle ja tilalle, Nk = 4, 6, 8 salausavaimelle, vastaavasti, käytetään eri avainten pituuksille.

Salauksen alussa syöte kopioidaan tila-taulukkoon säännöllä , for ja . Sen jälkeen osavaltioon sovelletaan AddRoundKey()-menettelyä, jonka jälkeen osavaltio käy läpi muunnosmenettelyn (kierros) 10, 12 tai 14 kertaa (avaimen pituudesta riippuen) ottaen huomioon, että viimeinen kierros on hieman erilainen kuin edelliset. Tämän seurauksena viimeisen muunnoskierroksen jälkeen tila kopioidaan ulostuloon säännön mukaisesti for ja .

Erilliset muunnokset SubBytes(), ShiftRows(), MixColumns() ja AddRoundKey() käsittelevät tilaa. Taulukko w[] - sisältää avainaikataulun.

Salaus(tavu sisään[4*Nb], tavu ulos[4*Nb], sana w[Nb*(Nr+1)]) alkaa tavun tila[4,Nb] tila = sisään AddRoundKey(tila, w[0, Nb-1]) kierrokselle = 1 vaihe 1 numeroon 1 Subtavut (tila) ShiftRows (tila) MixColumns (tila) AddRoundKey(tila, w[pyöreä*Nb, (kierros+1)*Nb-1]) loppu varten Subtavut (tila) ShiftRows (tila) AddRoundKey(tila, w[Nr*Nb, (Nr+1)*Nb-1]) ulos = tila loppu

Kuva 1. Salakoodin pseudokoodi

SubBytes()

SubBytes()-proseduuri käsittelee jokaisen tilatavun suorittaen itsenäisesti epälineaarisen tavukorvauksen käyttämällä korvaustaulukkoa (S-box). Tämä toiminto varmistaa salausalgoritmin epälineaarisuuden. S-boxin rakentaminen koostuu kahdesta vaiheesta. Ensin otetaan Galois-kentän käänteisluku . Kaikissa tämän kentän operaatioissa käytetään redusoitumatonta polynomia . Toiseksi jokaiselle tavulle b, joka muodostaa S-laatikon, sovelletaan seuraavaa toimintoa:

missä , ja missä on b:  n i:s bitti ja vakion i:s bitti . Tämä tarjoaa suojan hyökkäyksiä vastaan, jotka perustuvat yksinkertaisiin algebrallisiin ominaisuuksiin.

ShiftRows()

ShiftRowstoimii valtion merkkijonojen kanssa. Tällä muunnolla tilariviä siirretään syklisesti vaakasuunnassa r tavulla rivin numerosta riippuen. Nollarivillä r = 0, ensimmäisellä rivillä r = 1 B jne. Siten jokainen tulostilan sarake proseduurin soveltamisen jälkeen ShiftRowskoostuu tavuista jokaisesta alkutilan sarakkeesta. Rijndael-algoritmissa merkkijonojen siirtymäkuvio 128- ja 192-bittisille merkkijonoille on sama. 256-bittiselle lohkolle se eroaa kuitenkin edellisistä siinä, että 2., 3. ja 4. riviä on siirretty 1, 3 ja 4 tavulla, vastaavasti. Tämä huomautus ei koske AES:ää, koska se käyttää vain Rijndael-algoritmia 128-bittisten lohkojen kanssa avaimen koosta riippumatta.

MixColumns()

Proseduuri MixColumnssekoittaa kunkin tilasarakkeen neljä tavua käyttämällä palautuvaa lineaarimuunnosta. MixColumnskäsittelee tilat sarakkeittain ja käsittelee jokaista niistä kolmannen asteen polynomeina. Nämä polynomit kerrotaan [6] modulossa kiinteällä polynomilla . Yhdessä tuo diffuusion salaukseen. ShiftRows MixColumns

AddRoundKey()

AddRoundKey RoundKeyYhdistyy valtion kanssa jokaisessa kierrosmenettelyssä . Jokaiselle kierrokselle Roundkey saadaan CipherKeyc:stä menettelyä käyttäen KeyExpansion; jokainen RoundKey on samankokoinen kuin osavaltio. Proseduuri suorittaa kunkin tavun bittikohtaisen XOR :n jokaisen tavun Statekanssa RoundKey.

Avaimen käsittelyalgoritmi

Avainten käsittelyalgoritmi koostuu kahdesta menettelystä:

  • Round Key Generation Algorithm (Key Expansion Algorithm)
  • Algoritmi pyöreän avaimen valitsemiseksi (iterointiavain)

Algoritmi pyöreänäppäinten luomiseksi

AES-algoritmi käyttää KeyExpansion()-menettelyä ja syöttämällä sille salausavaimen, K, hankkii avaimet kaikille kierroksille. Sanoja on yhteensä Nb*(Nr + 1): aluksi algoritmi tarvitsee joukon Nb sanoja ja jokainen Nr kierros tarvitsee Nb avaintietojoukkoja. Tuloksena olevaa kierrosten näppäinjoukkoa merkitään , . KeyExpansion()-algoritmi näkyy alla olevassa pseudokoodissa.

SubWord()-funktio ottaa neljän tavun syöttösanan ja käyttää S-laatikkoa jokaiseen neljään tavuun. Mitä tapahtui, syötetään ulostuloon. RotWord() ottaa sanan syötteeksi , jonka se kiertää ja palauttaa . Sanajoukko, joka on vakio tälle kierrokselle, sisältää arvot , jossa x = {02}, ja on potenssi ( alkaa luvusta 1) .

Kuvasta näet, että laajennetun avaimen ensimmäiset sanat on täytetty salausavaimella. Jokaisessa myöhemmässä sanassa laitetaan XOR-operaation aikana saatu arvo ja , edellisen ja Nk-paikan XOR sanojen edelle. Sanoilla, joiden sijainti on Nk:n kerrannainen, käytetään muunnosa w[i-1]:een ennen XOR:ta, jota seuraa XOR pyöreällä vakiolla Rcon[i]. Yllä oleva muunnos koostuu sanan tavujen ympyräsiirrosta (RotWord()), jota seuraa SubWord()-proseduuri - sama kuin SubBytes(), vain tulo- ja lähtötiedot ovat sanan kokoisia.

On tärkeää huomata, että KeyExpansion()-menettely 256-bittiselle salausavaimelle eroaa hieman 128- ja 192-bittisten salausavainten toiminnoista. Jos ja on :n kerrannainen , SubWord() käytetään ennen XOR'a:ta.

KeyExpansion(tavuavain[4 * Nk], sana w[Nb * (Nr+1)], Nk) alkaa sana temp i = 0; while(i <Nk) w[i] = sana(avain[4*i], avain[4*i+1], avain[4*i+2], avain[4*i+3]) i = i + 1 lopettaa hetkeksi i = Nk while(i < Nb * (Nr+1)) lämpötila = w[i - 1] jos (i mod Nk = 0) lämpötila = SubWord(RotWord(temp)) xor Rcon[i / Nk] muuten jos (Nk > 6 ja i mod Nk = 4) lämpötila = alisana(lämpö) loppu Jos w[i] = w[i - Nk] xor temp i = i + 1 lopettaa hetkeksi loppu

Pseudokoodi avaimen laajennusta varten

Salauksen purku

InvCipher(tavu sisään[4 * Nb], tavu ulos[4 * Nb], sana w[Nb * (Nr+1)]) alkaa tavun tila[4, Nb] tila = sisään AddRoundKey(tila, w[Nr * Nb, Nb * (Nr+1) - 1]) kierrokselle = Nro - 1 askel -1 alas 1 InvShiftRows(tila) InvSubBytes (tila) AddRoundKey(tila, w[Nb * pyöreä, Nb * (kierros+1) - 1]) InvMixColumns (tila) loppu varten InvShiftRows(tila) InvSubBytes (tila) AddRoundKey(tila, w[0, Nb - 1]) ulos = tila loppu

Pseudokoodi käänteiselle salaukselle

Pyöreän näppäimen valintaalgoritmi

Jokaisessa iteraatiossa pyöreä avain AddRoundKey- operaatiolle valitaan taulukosta alkaen elementistä .

Algoritmin muunnelmia

AES:n taustalla olevan Rijndael-algoritmin perusteella toteutetaan vaihtoehtoisia kryptoalgoritmeja. Tunnetuimpia ovat osallistujat Nessie : Anubis -kilpailuun involuutioista, kirjoittaja Vincent Rayman ja paranneltu versio salauksesta - Grand Cru , Johan Borst.

Turvallisuus

Kesäkuussa 2003 Yhdysvaltain kansallinen turvallisuusvirasto totesi, että AES oli tarpeeksi vahva käytettäväksi turvaluokiteltujen tietojen suojaamiseen .  SECRET-tasolle asti oli sallittua käyttää 128-bittisiä avaimia, TOP SECRET-tasolle vaadittiin 192- ja 256-bittisiä avaimia [7] .

XSL-hyökkäys

Toisin kuin useimmissa muissa salakirjoissa, AES:llä on yksinkertainen matemaattinen kuvaus. Tämä huolestutti muun muassa Niels Fergusonia , joka totesi työssään, että salauksen turvallisuus perustuu uuteen testaamattomaan oletukseen tietyntyyppisten yhtälöiden ratkaisemisen monimutkaisuudesta ( englanniksi  “The security of Rijndael riippuu uudesta ja testaamattomasta kovuusoletuksesta : on laskennallisesti mahdotonta ratkaista tämän tyyppisiä yhtälöitä" ) [8] [9] , samoin kuin Bruce Schneier, joka kirjoitti yhteiseen kirjaan Nielsin kanssa:

Meillä on yksi kritiikki AES:lle: emme todella luota sen turvallisuuteen. AES:ssä eniten huolestuttaa sen yksinkertainen algebrallinen rakenne… Millään muulla lohkosalauksella ei ole näin yksinkertaista algebrallista esitystapaa. Meillä ei ole aavistustakaan, johtaako tämä hyökkäykseen vai ei, mutta tämän tietämättä jättäminen on riittävä syy olla skeptinen AES:n käytön suhteen.

Alkuperäinen teksti  (englanniksi)[ näytäpiilottaa] Meillä on yksi kritiikki AES:lle: emme aivan luota tietoturvaan… AES:ssä eniten huolestuttaa sen yksinkertainen algebrallinen rakenne… Millään muulla tiedossamme olevalla lohkosalauksella ei ole näin yksinkertaista algebrallista esitystapaa. Meillä ei ole aavistustakaan, johtaako tämä hyökkäykseen vai ei, mutta tietämättömyys on riittävä syy olla skeptinen AES:n käytön suhteen. - Niels Ferguson , Bruce Schneier Käytännön kryptografia - 2003 - s. 56-57

Nicolas Courtois ja Josef  Pieprzyk julkaisivatartikkelinvuonna 2002, jossa he kuvasivat teoreettista hyökkäystä, jota he kutsuivat XSL - hyökkäykseksi ( eXtended Sparse Linearization ), joka voisi mahdollistaa AES-salausten ja Serpentin rikkomisen [10] [11] . Kaikki eivät kuitenkaan hyväksyneet työn tuloksia optimistisesti:   

Uskon, että Courtois-Pepshikin työssä on virhe. He yliarvioivat lineaarisesti riippumattomien yhtälöiden määrän. Tämän seurauksena heillä ei ole tarpeeksi lineaarisia yhtälöitä järjestelmän ratkaisemiseksi, eikä [määritetty] menetelmä voi murtaa Rijndaelia. Siinä on joitain ansioita ja se on tutkimisen arvoinen, mutta se ei hakkeroi Rijndaelia nykyisessä muodossaan.

Alkuperäinen teksti  (englanniksi)[ näytäpiilottaa] Mielestäni Courtois-Pieprzykin teos on virheellinen. Ne ylilaskevat lineaarisesti riippumattomien yhtälöiden lukumäärän. Tuloksena on, että niillä ei itse asiassa ole tarpeeksi lineaarisia yhtälöitä järjestelmän ratkaisemiseksi, eikä menetelmä riko Rijndaelia… Menetelmässä on joitain ansioita, ja se on tutkimisen arvoinen, mutta se ei riko Rijndaelia sellaisenaan. - Don Coppersmith , kommentoi Bruce Schneierin blogitekstiä

NESSIE -kilpailun keskustelulle omistetulla sivulla vuoden 2002 lopulla yksi salauksen kirjoittajista, Vincent Rayman, totesi, että XSL-hyökkäys on vain unelma ( englanti  The XSL attack is not an attack. It is a dream ) (tämä näkemys toistettiin myöhemmin vuonna 2004 4. AES-konferenssissa Bonnissa ). Tähän Courtois vastasi, että tästä unesta voi tulla painajainen AES:n kirjoittajalle ( englanniksi  Se voi myös olla erittäin huono uni ja muuttua painajaiseksi ) [12] (sanojen leikkiä: unelma käännetään sekä uneksi että uneksi painajainen tarkoittaa painajaista , painajaista ) .

Vuonna 2003 Sean Murphy ja Matt Robshaw julkaisivat  artikkelin , jossa ( olettaen, että Courtois'n ja Pepshikin tulokset ovat oikeita) perustelivat mahdollisuutta hyökätä AES-algoritmia vastaan, mikä vähentää krakkausoperaatioiden määrää 2128 :sta 2100 :aan . Kuitenkin 4. AES-konferenssissa Ilia  Toli ja Alberto Zanoni osoittivat, että Murphyn ja Robshawin työ oli virheellinen [ 13] .  Myöhemmin, vuonna 2007, Chu-Wee Lim ja Khoongming Khoo osoittivat myös, että tämä hyökkäys ei voi toimia kuvatulla tavalla [14 ] .  

Sivukanavahyökkäys

Sivukanavahyökkäykset eivät liity salauksen matemaattisiin ominaisuuksiin, vaan ne käyttävät näitä salauksia käyttävien järjestelmien tiettyjä toteutusominaisuuksia paljastaakseen osittain tai kokonaan salaisia ​​tietoja, mukaan lukien avaimen. On olemassa useita samanlaisia ​​hyökkäyksiä AES-algoritmia käyttäviin järjestelmiin.

Huhtikuussa 2005 Daniel J. Bernstein  julkaisi artikkelin, jossa kuvataan hyökkäystä, joka käyttää tietoja kunkin salausoperaation suoritusajasta murtamiseen [15] . Tämä hyökkäys vaati yli 200 miljoonaa valittua salatekstiä avaimen löytämiseen [16] .

Lokakuussa 2005 Doug Arne Osvik, Adi Shamir ja Eran Trumer esittivät paperin, jossa kuvataan useita hyökkäyksiä, jotka käyttävät aikaa avaimen löytämiseen. Yksi esitetyistä hyökkäyksistä sai avaimen 800 salausoperaation jälkeen. Hyökkäys edellytti kryptanalyytikon suorittavan ohjelmia samassa järjestelmässä, jossa salaus suoritettiin [17] .

Joulukuussa 2009 julkaistiin artikkeli, jossa tilamatriisiin 8. salauskierroksella keinotekoisesti luodun differentiaalivirheanalyysin ( eng.  Differential Fault Analysis ) käyttö mahdollisti avaimen palauttamisen 2 32 operaatiossa [18 ] .

Katso myös

Muistiinpanot

  1. Chekanovin laboratorio. Intel Core i5 (Clarkdale): AES-salauksen laitteistokiihdytyksen analyysi . THG (19. tammikuuta 2010). - "suosituin standardi symmetriselle salaukselle IT-maailmassa." Haettu 14. marraskuuta 2010. Arkistoitu alkuperäisestä 26. helmikuuta 2012.
  2. Biryukov, Alex ja Khovratovich, Dmitry. Related-key Cryptanalysis of the AES-192 and AES-256  (englanniksi)  // Advances in Cryptology - ASIACRYPT 2009. - Springer Berlin / Heidelberg, 2009. - Vol. 5912 . - s. 1-18 . - doi : 10.1007/978-3-642-10366-7_1 . Arkistoitu alkuperäisestä 18. joulukuuta 2010.
  3. Arkistoitu kopio (linkki ei saatavilla) . Haettu 7. joulukuuta 2006. Arkistoitu alkuperäisestä 6. marraskuuta 2006. 
  4. NIST-virhesivu arkistoitu 28. syyskuuta 2010.
  5. Bounce to index.html Arkistoitu 17. heinäkuuta 2014.
  6. http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf Arkistoitu 7. huhtikuuta 2015 Wayback Machinessa "5.1.3 MixColumns() Transformation .. Sarakkeita pidetään polynomeina GF( 2^8) ja kerrottuna modulo x^4 + 1 kiinteällä polynomilla a(x), joka saadaan kaavalla a(x) = {03}x³ + {01}x² + {01}x + {02}."
  7. ↑ Kansallinen käytäntö edistyneen salausstandardin (AES) käytöstä kansallisten turvajärjestelmien ja kansallisten turvallisuustietojen  suojaamiseen . kansallisten turvallisuusjärjestelmien komitea (kesäkuu 2003). Käyttöpäivä: 27. lokakuuta 2010. Arkistoitu alkuperäisestä 19. helmikuuta 2012.
  8. James McLaughlin. XSL-kiista // Tutkimus lohkosalauksen kryptausanalyysitekniikoista . - Tulosta. - York: University of York, 2009.  (linkki ei ole käytettävissä)
  9. Niels Ferguson, Richard Schroeppel ja Doug Whiting. Yksinkertainen algebrallinen esitys Rijndaelista  //  Selected Areas in Cryptography, Proc. SAC 2001, Lecture Notes in Computer Science #2259. - Springer Verlag, 2001. - P. 103-111 . Arkistoitu alkuperäisestä 16. tammikuuta 2016.
  10. Bruce Schneier. Crypto-Gram  -uutiskirje . Schneier turvallisuudesta (15. syyskuuta 2002). Käyttöpäivä: 27. lokakuuta 2010. Arkistoitu alkuperäisestä 19. helmikuuta 2012.
  11. Nicolas Courtois, Josef Pieprzyk. Lohkosalausten kryptaanalyysi ylimääritellyillä yhtälöjärjestelmillä  //  Advances in Cryptology - ASIACRYPT 2002 8th International Conference on theory Application of Cryptology and Information Security Queenstown, Uusi-Seelanti, 1.-5. joulukuuta 2002 Proceedings. Tietojenkäsittelytieteen luentomuistiinpanot (2501). - Springer, 2002. - S. 267-287 . - doi : 10.1007/3-540-36178-2 . Arkistoitu 26. lokakuuta 2020.
  12. NESSIE-keskustelufoorumi
  13. Ilia Toli, Alberto Zanoni. AES-128:n algebrallinen tulkinta   // Proc . AES-konferenssista. - 2005. - Voi. 2005 . - s. 84-97 . - doi : 10.1007/11506447_8 .  (linkki ei saatavilla)
  14. Chu-wee Lim, Khoongming Khoo. BES:ään sovelletun XSL:n analyysi  //  Fast Software Encryption. - Heidelberg: Springer Berlin / Heidelberg, 2007. - Voi. 4593 . - s. 242-253 . - doi : 10.1007/978-3-540-74619-5_16 .  (linkki ei saatavilla)
  15. Daniel J. Bernstein. Välimuistin ajoitushyökkäykset  AES :lle . - 2004. Arkistoitu 17. syyskuuta 2008.
  16. Bruce Schneier. AES  ajoitushyökkäys . Schneier turvallisuudesta (17. toukokuuta 2005). Käyttöpäivä: 27. lokakuuta 2010. Arkistoitu alkuperäisestä 19. helmikuuta 2012.
  17. Dag Arne Osvik; Adi Shamir ja Eran Tromer. Välimuistihyökkäykset ja vastatoimenpiteet: AES:n tapaus  // Kryptologian aiheita - CT-RSA 2006, kryptografien jäljitys RSA-konferenssissa. - Springer-Verlag, 2005. - P. 1-20. Arkistoitu 25. marraskuuta 2020.
  18. Dhiman Saha, Debdeep Mukhopadhyay, Dipanwita Roy Chowdhury. Diagonaalinen vikahyökkäys edistyneeseen salausstandardiin   // Cryptology ePrint -arkisto . - 2009. Arkistoitu 6. elokuuta 2020.

Kirjallisuus

Linkit