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.
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] .
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} };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 |
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 loppuKuva 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.
Avainten käsittelyalgoritmi koostuu kahdesta menettelystä:
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 loppuPseudokoodi avaimen laajennusta varten
Pseudokoodi käänteiselle salaukselle
Jokaisessa iteraatiossa pyöreä avain AddRoundKey- operaatiolle valitaan taulukosta alkaen elementistä .
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.
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] .
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-57Nicolas 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ä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 ] .
Sanakirjat ja tietosanakirjat |
---|
Symmetriset salausjärjestelmät | |
---|---|
Suoratoista salauksia | |
Feistelin verkko | |
SP verkko | |
muu |