AES (titkosítási szabvány)

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. március 7-én felülvizsgált verziótól ; az ellenőrzések 20 szerkesztést igényelnek .
AES, Rijndael-AES, Rijndael
Teremtő Vincent Rayman
Yoan Dymen
Létrehozva 1998_ _
Kulcsméret 128/192/256 bit
Blokkméret 128 bites
A körök száma 10/12/14 (a kulcs méretétől függ)
Típusú Helyettesítő-permutációs hálózat
 Médiafájlok a Wikimedia Commons oldalon

Az AES ( Advanced Encryption Standard ; még Rijndael , [rɛindaːl] -   reindal ) egy szimmetrikus blokk-rejtjel -algoritmus (blokkméret 128 bit, kulcs 128/192/256 bit), amelyet az Egyesült Államok kormánya titkosítási szabványként fogadott el a AES verseny . Ezt az algoritmust jól elemezték, és mára széles körben használják, akárcsak elődje, a DES . Az Egyesült Államok Nemzeti Szabványügyi és Technológiai Intézete (NIST) 2001. november 26-án tette közzé az AES specifikációt.   ötéves időszak után, amely alatt 15 jelölést hoztak létre és értékeltek. 2002. május 26-án bejelentették, hogy az AES titkosítási szabvány. 2009 -től az AES az egyik legszélesebb körben használt szimmetrikus titkosítási algoritmus [1] [2] . Az AES-gyorsítás támogatását az Intel vezette be az x86 processzorcsaládba, az Arrandale -től kezdve 2010-ben, majd később a Sandy Bridge processzorokon ; Az AMD 2011 óta dolgozik a Bulldozernél .

Az AES története

1997. január 2- án a NIST bejelentette [3] azon szándékát, hogy kiválasztja az 1977 óta amerikai szabványnak számító DES utódját . 2000. október 2- án bejelentették, hogy a verseny győztese a Rijndael algoritmus [4] , és megkezdődött a szabványosítási eljárás. 2001. február 28-án megjelent a tervezet , 2001. november 26-án pedig az AES-t FIPS 197 -ként fogadták el . A verseny történeti visszatekintése a NIST honlapján [5] található .

Az AES leírása

Definíciók és segítő eljárások

Definíciók
Blokk a bemenetet, a kimenetet, az állapotot és a kerek kulcsot alkotó bitek sorozata. A blokk felfogható bájtok sorozataként is
Rejtjelkulcs titkos kriptográfiai kulcs, amelyet a Kulcsbővítési eljárás használ kerek kulcsok készletének előállításához; négy sorból és Nk oszlopból álló téglalap alakú bájttömbként ábrázolható
Rejtjelezett szöveg titkosítási algoritmus kimenete
kulcs bővítése eljárás kerek kulcsok titkosítási kulcsból generálására
Kerek kulcs A kerek kulcsokat a Cipher Key-től szerezzük be a kulcskiterjesztési eljárással. Ezeket az államra alkalmazzák a titkosítás és a visszafejtés során
Állapot közbenső titkosítási eredmény, amely egy téglalap alakú bájttömbként ábrázolható, 4 sorral és Nb oszlopokkal
S doboz Nemlineáris helyettesítési táblázat, amelyet számos bájthelyettesítési transzformációban és a Key Expansion eljárásban használnak egy bájtérték egy az egyhez helyettesítésére. Az előre kalkulált S-box alább látható
Nb az államot alkotó oszlopok (32 bites szavak) száma . AES esetén Nb = 4
Nk a titkosítási kulcsot alkotó 32 bites szavak száma. AES esetén Nk = 4, 6 vagy 8
Nem. a körök száma, ami Nk és Nb függvénye . AES Nr = 10, 12, 14 esetén
Rcon[] egy tömb, amely egy 32 bites szó bitjeiből áll, és egy adott körben állandó. Az előre kiszámított Rcon[] lent látható

S doboz

sbox = tömb{ 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 };

Fordított S-box az InvSubBytes eljáráshoz

InvSbox = tömb{ 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 = tömb{ tömb{0x00, 0x00, 0x00, 0x00}, tömb{0x01, 0x00, 0x00, 0x00}, tömb{0x02, 0x00, 0x00, 0x00}, tömb{0x04, 0x00, 0x00, 0x00}, tömb{0x08, 0x00, 0x00, 0x00}, tömb{0x10, 0x00, 0x00, 0x00}, tömb{0x20, 0x00, 0x00, 0x00}, tömb{0x40, 0x00, 0x00, 0x00}, tömb{0x80, 0x00, 0x00, 0x00}, tömb{0x1b, 0x00, 0x00, 0x00}, tömb{0x36, 0x00, 0x00, 0x00} }; Kiegészítő eljárások
AddRoundKey() transzformáció a titkosítás és a fordított titkosítás során, amelyben a Round Key XOR c State. A RoundKey hossza megegyezik az állapot méretével (vagyis ha Nb = 4, akkor a RoundKey hossza 128 bit vagy 16 bájt)
InvMixColumns() transzformáció dekódoláskor, ami a MixColumns() fordítottja
InvShiftRows() transzformáció a visszafejtéskor, ami a ShiftRows() fordítottja
InvSubBytes() transzformáció dekódoláskor, ami a SubBytes() inverze
MixColumns() titkosítási átalakítás, amely átveszi az összes állapotoszlopot, és összekeveri az adataikat (egymástól függetlenül), hogy új oszlopokat kapjon
RotWord() a Key Expansion eljárásban használt függvény, amely egy 4 bájtos szót vesz fel, és végigfut rajta
ShiftRows() titkosítási átalakítások, amelyek feldolgozzák az államot, ciklikusan eltolva az állam utolsó három sorát különböző értékekkel
Subbytes() titkosítási átalakítások, amelyek az állapotot egy nemlineáris bájthelyettesítő tábla (S-box) segítségével dolgozzák fel, függetlenül alkalmazva azt az állapot minden egyes bájtjára
Alszó() a Key Expansion eljárásban használt függvény, amely egy négybájtos szót vesz be bemenetként, és egy S-boxot alkalmaz mind a négy bájtra, egy kimeneti szót állít elő.

Titkosítás

Az AES egy Rijndael algoritmuson alapuló szabvány. Az AES esetében a bemenet (bemeneti adatblokk) és az állapot (állapot) hossza állandó és egyenlő 128 bittel, a K rejtjelkulcs hossza pedig 128, 192 vagy 256 bit. Ugyanakkor az eredeti Rijndael algoritmus 128-256 bites kulcshosszt és blokkméretet tesz lehetővé 32 bites lépéssel. A bemenet, állapot és titkosítási kulcs kiválasztott hosszának 32 bites szavakban történő jelölésére az Nb = 4 bemenetre és állapotra, a titkosítási kulcsra pedig Nk = 4, 6, 8 jelölést használunk a különböző kulcshosszúságokra.

A titkosítás kezdetén a bemenetet a rendszer az állapottömbbe másolja a , for és szabállyal . Ezt követően az Állapotra az AddRoundKey() eljárást alkalmazzuk, majd az Állapot 10, 12 vagy 14 alkalommal (a kulcshossztól függően) átmegy a transzformációs eljáráson (kör), figyelembe véve, hogy az utolsó kör kissé eltér az előzőektől. Ennek eredményeként az utolsó átalakítási kör befejezése után az Állapot a kimenetre másolódik a , for és szabály szerint .

A SubBytes(), ShiftRows(), MixColumns() és AddRoundKey() külön transzformációk kezelik az állapotot. A w[] tömb tartalmazza a kulcs ütemezését.

Titkosító(bájt be[4*Nb], bájt ki[4*Nb], w[Nb*(Nr+1)]) kezdődik bájt állapota[4,Nb] állapot = be AddRoundKey(állapot, w[0, Nb-1]) fordulóhoz = 1 1. lépés a Nr-1-hez SubBájtok (állapot) ShiftRows (állapot) MixColumns (állapot) AddRoundKey(állapot, w[kerek*Nb, (kerek+1)*Nb-1]) véget ért SubBájtok (állapot) ShiftRows (állapot) AddRoundKey(állapot, w[Nr*Nb, (Nr+1)*Nb-1]) ki = állapot vége

1. ábra. Pszeudokód a titkosításhoz

SubBytes()

A SubBytes() eljárás minden állapotbájtot feldolgoz, egymástól függetlenül nemlineáris bájthelyettesítést hajt végre egy helyettesítési táblázat (S-box) segítségével. Ez a művelet biztosítja a titkosítási algoritmus nemlinearitását. Az S-box felépítése két lépésből áll. Először a Galois-mező reciprokát veszik fel . Ebben a mezőben minden művelethez egy irreducibilis polinom kerül felhasználásra . Másodszor, minden egyes b bájthoz, amely az S-dobozt alkotja, a következő műveletet alkalmazzuk:

ahol , és hol a b  i-edik bitje, és a konstans i-edik bitje . Ez egyszerű algebrai tulajdonságokon alapuló védelmet nyújt a támadások ellen.

ShiftRows()

ShiftRowsState stringekkel működik. Ezzel a transzformációval az állapotsorok ciklikusan vízszintesen r bájttal eltolódnak a sorszámtól függően. A nulla sornál r = 0, az első sornál r = 1 B, és így tovább. Így az eljárás alkalmazása után a kimeneti állapot ShiftRowsminden oszlopa a kezdeti állapot minden oszlopából származó bájtokból áll. A Rijndael-algoritmus esetében a 128 és 192 bites karakterláncok eltolási mintája megegyezik. Egy 256 bites blokknál azonban abban különbözik az előzőektől, hogy a 2., 3. és 4. sor 1, 3, illetve 4 bájttal van eltolva. Ez a megjegyzés nem vonatkozik az AES-re, mivel csak a Rijndael algoritmust használja 128 bites blokkokkal, függetlenül a kulcs méretétől.

MixColumns()

Az eljárás MixColumnsreverzibilis lineáris transzformációval keveri az egyes állapotoszlopok négy bájtját. MixColumnsAz állapotokat oszloponként dolgozza fel, mindegyiket harmadfokú polinomként kezelve. Ezeket a polinomokat [6] modulo -ban megszorozzuk egy rögzített polinommal . Együtt bevezeti a diffúziót a titkosításba. ShiftRows MixColumns

AddRoundKey()

Minden körben AddRoundKey RoundKeyegyesül az Állammal . Minden körre Roundkey a CipherKeyc-ből adható meg a következő eljárással KeyExpansion; minden RoundKey azonos méretű az állam méretével. Az eljárás bitenkénti XOR -t hajt végre minden bájtnál Stateminden bájtnál RoundKey.

Kulcsfeldolgozó algoritmus

A kulcsfeldolgozó algoritmus két eljárásból áll:

  • Kerek kulcsgenerálási algoritmus (kulcsbővítési algoritmus)
  • Algoritmus kerek kulcs kiválasztásához (iterációs kulcs)

Algoritmus kerek kulcsok generálásához

Az AES algoritmus a KeyExpansion() eljárást használva, és ennek betáplálását Cipher Key, K, megkapja a kulcsokat minden körhöz. Összesen Nb*(Nr + 1) szó van: kezdetben az algoritmusnak egy Nb szókészletre van szüksége, és minden Nr körhöz Nb kulcsadatkészletre van szükség. A körökhöz tartozó kulcsok így kapott tömbje , . A KeyExpansion() algoritmus az alábbi pszeudokódban látható.

A SubWord() függvény egy négybájtos bemeneti szót vesz fel, és mind a négy bájthoz S-boxot alkalmaz. Ami történt, az a kimenetre kerül. A RotWord() bemenetként egy szót vesz fel , amelyen végigfut, és visszaadja a . Az ebben a körben konstans szavak tömbje tartalmazza az értékeit , ahol x = {02}, és a ( 1-től kezdődő hatványa ).

Az ábrán látható, hogy a kiterjesztett kulcs első szavai Cipher Key-vel vannak kitöltve. Minden következő szóban az XOR művelet során kapott érték kerül , valamint az előző és Nk pozíció XOR-ja a szavak elé. Azoknál a szavaknál, amelyek pozíciója Nk többszöröse, egy transzformációt alkalmazunk w[i-1]-re az XOR előtt, majd egy XOR-t az Rcon[i] kerek konstanssal. A fenti transzformáció egy szó bájtjainak körkörös eltolásából áll (RotWord()), majd egy SubWord() eljárásból áll - ugyanúgy, mint a SubBytes(), csak a bemeneti és kimeneti adatok lesznek szóméretek.

Fontos megjegyezni, hogy a 256 bites rejtjelkulcs KeyExpansion() eljárása némileg eltér a 128 bites és 192 bites rejtjelkulcsokétól. Ha az és többszöröse , akkor a SubWord() az XOR'a előtt kerül alkalmazásra.

KeyExpansion(byte key[4 * Nk], word w[Nb * (Nr+1)], Nk) kezdődik szó hőm i = 0; while(i < Nk) w[i] = szó(kulcs[4*i], kulcs[4*i+1], kulcs[4*i+2], kulcs[4*i+3]) i = i + 1 vége közben i = Nk while(i < Nb * (Nr+1)) hőmérséklet = w[i - 1] ha (i mod Nk = 0) hőmérséklet = SubWord(RotWord(temp)) xor Rcon[i / Nk] különben ha (Nk > 6 és i mod Nk = 4) hőmérséklet = Alszó(hőmérséklet) vége ha w[i] = w[i - Nk] xor hőm i = i + 1 vége közben vége

Pszeudokód a kulcskiterjesztéshez

Dekódolás

InvCipher(byte in[4 * Nb], byte out[4 * Nb], word w[Nb * (Nr+1)]) kezdődik bájt állapota[4, Nb] állapot = be AddRoundKey(állapot, w[Nr * Nb, Nb * (Nr+1) - 1]) fordulóhoz = Nr - 1 lépés -1-től 1-ig InvShiftRows(állapot) InvSubBytes (állapot) AddRoundKey(állapot, w[Nb * kerek, Nb * (kör+1) - 1]) InvMixColumns (állapot) véget ért InvShiftRows(állapot) InvSubBytes (állapot) AddRoundKey(állapot, w[0, Nb - 1]) ki = állapot vége

Pszeudokód az Inverse Cipher számára

Kerek kulcskiválasztási algoritmus

Minden iterációnál kiválasztásra kerül a tömbből az AddRoundKey művelet kerek kulcsa, elemtől kezdve -ig .

Az algoritmus változatai

Az AES alapjául szolgáló Rijndael algoritmus alapján alternatív kriptoalgoritmusokat valósítanak meg. A leghíresebbek közé tartoznak a Nessie : Anubis involúciós verseny résztvevői, amelynek szerzője Vincent Rayman és a titkosítás továbbfejlesztett változata - Grand Cru , Johan Borsttól.

Biztonság

2003 júniusában az Egyesült Államok Nemzetbiztonsági Ügynöksége megállapította, hogy az AES elég erős a minősített információk védelmére .  A SECRET szintig 128 bites kulcsok használhatók, a SZIGORÚAN TITKOS szinthez 192 és 256 bites kulcsok kellettek [7] .

XSL támadás

A legtöbb más rejtjellel ellentétben az AES-nek egyszerű matematikai leírása van. Ez többek között Niels Fergusont is aggasztotta , aki munkájában megjegyezte, hogy a rejtjel biztonsága egy új, nem tesztelt feltételezésen alapul bizonyos típusú egyenletek megoldásának bonyolultságára vonatkozóan ( angolul  „The security of Rijndael riippuu új és untested keménységfeltevés : számításilag nem kivitelezhető az ilyen típusú egyenletek megoldása" ) [8] [9] , valamint Bruce Schneier, aki Nilsszel közös könyvében azt írta:

Egyetlen kritikánk van az AES-sel szemben: nem igazán bízunk a biztonságában. Ami a legjobban aggaszt minket az AES-sel kapcsolatban, az az egyszerű algebrai felépítés… Nincs más blokkrejtjel, amely ilyen egyszerű algebrai ábrázolással rendelkezik. Fogalmunk sincs, hogy ez támadáshoz vezet-e vagy sem, de ennek nem ismerete elég ok arra, hogy szkeptikusak legyünk az AES használatával kapcsolatban.

Eredeti szöveg  (angol)[ showelrejt] Egyetlen kritikánk van az AES-sel kapcsolatban: nem bízunk egészen a biztonságban… Ami minket a legjobban aggaszt az AES-sel kapcsolatban, az az egyszerű algebrai felépítés… Egyetlen másik blokkrejtjel sem rendelkezik ilyen egyszerű algebrai ábrázolással. Fogalmunk sincs, hogy ez támadáshoz vezet-e vagy sem, de a nem tudás elég ok arra, hogy szkeptikusak legyünk az AES használatával kapcsolatban. - Niels Ferguson , Bruce Schneier gyakorlati kriptográfia - 2003 - pp. 56-57

Nicolas Courtois és Josef  Pieprzyk 2002-ben publikáltegy cikket , amelyben egy elméleti támadást írtak le, amelyet XSL - támadásnak ( eXtended Sparse Linearization ), amely lehetővé teheti az AES titkosítások és a Serpent feltörését [10] [11] . A munka eredményét azonban nem mindenki fogadta optimistán:   

Úgy gondolom, hogy Courtois-Pepshik munkájában hiba van. Túlbecsülték a lineárisan független egyenletek számát. Ennek eredményeként nincs elegendő lineáris egyenletük a rendszer megoldásához, és a [meghatározott] módszer nem tudja feltörni Rijndaelt. Van némi érdeme, és érdemes felfedezni, de nem hackeli meg Rijndaelt jelenlegi formájában.

Eredeti szöveg  (angol)[ showelrejt] Úgy gondolom, hogy Courtois-Pieprzyk munkája hibás. Túlszámolják a lineárisan független egyenletek számát. Az eredmény az, hogy valójában nincs elegendő lineáris egyenletük a rendszer megoldásához, és a módszer nem töri meg Rijndaelt… A módszernek van némi érdeme, érdemes megvizsgálni, de nem töri meg Rijndaelt a jelenlegi állapotában. - Don Coppersmith , megjegyzés Bruce Schneier blogbejegyzéséhez

A NESSIE verseny vitájának szentelt oldalon 2002 végén a titkosítás egyik szerzője, Vincent Rayman kijelentette, hogy az XSL-támadás csak álom ( angol  The XSL attack is not an attack. It is a dream ) (ezt az álláspontot később 2004-ben a 4. AES bonni konferencián is megismételték ). Courtois erre azt válaszolta, hogy ez az álom rémálommá válhat az AES szerzője számára ( angolul  It may also be a very bad dream and turn to a nightmare ) [ 12] (játék a szavakkal: az álom álomnak és egy A Nightmare fordítása rémálom, rémálom ) .

2003-ban Sean Murphy és Matt Robshaw publikált egy  tanulmányt, amelyben ( feltéve, hogy Courtois és Pepshik eredményei helyesek) igazolták az AES algoritmus megtámadásának lehetőségét, 2128 -ról 2100 -ra csökkentve a feltöréshez szükséges műveletek számát . A 4. AES konferencián azonban Ilia Toli és Alberto Zanoni kimutatta, hogy Murphy és Robshaw munkája helytelen [ 13] . Később, 2007-ben Chu-Wee Lim és Khoongming Khoo is megmutatta, hogy ez a támadás nem működhet a leírtak szerint [14 ] .    

Oldalsó csatorna támadás

Az oldalcsatornás támadások nem kapcsolódnak a rejtjel matematikai jellemzőihez, hanem az ezeket a rejtjeleket használó rendszerek bizonyos megvalósítási jellemzőit használják fel, hogy felfedjék a részben vagy teljesen titkos adatokat, beleértve a kulcsot is. Számos hasonló támadás éri az AES algoritmust használó rendszereket.

2005 áprilisában Daniel J. Bernstein  publikált egy tanulmányt, amelyben leír egy támadást, amely az egyes titkosítási műveletek végrehajtási idejére vonatkozó információkat használja fel a feltöréshez [15] . Ehhez a támadáshoz több mint 200 millió kiválasztott rejtjelezett szövegre volt szükség a kulcs megtalálásához [16] .

2005 októberében Doug Arne Osvik, Adi Shamir és Eran Trumer bemutatott egy tanulmányt, amelyben több olyan támadást is leírnak, amelyekhez idő szükséges a kulcs megtalálásához. Az egyik bemutatott támadás 800 titkosítási művelet után szerezte meg a kulcsot. A támadás megkövetelte, hogy a kriptoanalizátor ugyanazon a rendszeren futtasson programokat, ahol a titkosítást végrehajtották [17] .

2009 decemberében publikáltak egy cikket, amelyben a 8. titkosítási körnél az állapotmátrixban mesterségesen létrehozott differenciális hibaelemzés ( eng.  Differential Fault Analysis ) alkalmazása lehetővé tette a kulcs visszaállítását 2 32 műveletben [18] ] .

Lásd még

Jegyzetek

  1. Csekanov laboratóriuma. Intel Core i5 (Clarkdale): Az AES titkosítási hardveres gyorsítás elemzése . THG (2010. január 19.). - "a szimmetrikus titkosítás legnépszerűbb szabványa az IT-világban." Letöltve: 2010. november 14. Az eredetiből archiválva : 2012. február 26..
  2. Birjukov, Alex és Hovratovics, Dmitrij. Related-key Cryptanalysis of the Full AES-192 and AES-256  (angol nyelven)  // Advances in Cryptology - ASIACRYPT 2009. - Springer Berlin / Heidelberg, 2009. - Vol. 5912 . - P. 1-18 . - doi : 10.1007/978-3-642-10366-7_1 . Az eredetiből archiválva : 2010. december 18.
  3. Archivált másolat (a hivatkozás nem elérhető) . Letöltve: 2006. december 7. Az eredetiből archiválva : 2006. november 6.. 
  4. NIST hibaoldal archiválva : 2010. szeptember 28.
  5. Vissza az index.html oldalra Archiválva : 2014. július 17.
  6. http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf Archiválva : 2015. április 7. a Wayback Machine -nál "5.1.3 MixColumns() Transformation .. Az oszlopok polinomoknak számítanak a GF(" felett 2^8) és megszorozva a modulo x^4 + 1-et egy rögzített a(x) polinommal, az a(x) = {03}x³ + {01}x² + {01}x + {02}."
  7. ↑ Nemzeti politika a fejlett titkosítási szabvány (AES) használatáról a nemzetbiztonsági rendszerek és a nemzetbiztonsági információk védelmére  . Nemzetbiztonsági Rendszerek Bizottsága (2003. június). Hozzáférés dátuma: 2010. október 27. Az eredetiből archiválva : 2012. február 19.
  8. James McLaughlin. Az XSL-ellentmondás // A blokk-titkos kriptográfiai elemzési technikák áttekintése . — nyomtatni. - York: University of York, 2009.  (elérhetetlen link)
  9. Niels Ferguson, Richard Schroeppel és Doug Whiting. Rijndael egyszerű algebrai ábrázolása  //  Selected Areas in Cryptography, Proc. SAC 2001, Lecture Notes in Computer Science #2259. - Springer Verlag, 2001. - P. 103-111 . Az eredetiből archiválva : 2016. január 16.
  10. Bruce Schneier. Crypto-Gram  hírlevél . Schneier a biztonságról (2002. szeptember 15.). Hozzáférés dátuma: 2010. október 27. Az eredetiből archiválva : 2012. február 19.
  11. Nicolas Courtois, Josef Pieprzyk. Túldefiniált egyenletrendszerű blokkrejtjelek kriptanalízise  //  Advances in Cryptology - ASIACRYPT 2002 8th International Conference on the Theory Application of Cryptology and Information Security Queenstown, Új-Zéland, 2002. december 1-5. Proceedings. Előadásjegyzetek számítástechnikából (2501). - Springer, 2002. - P. 267-287 . - doi : 10.1007/3-540-36178-2 . Archiválva : 2020. október 26.
  12. NESSIE vitafórum
  13. Ilia Toli, Alberto Zanoni. Az AES-128 algebrai értelmezése   // Proc . az AES konferencián. - 2005. - 20. évf. 2005 . - 84-97 . o . - doi : 10.1007/11506447_8 .  (nem elérhető link)
  14. Chu-wee Lim, Khoongming Khoo. A BES-re alkalmazott XSL elemzése  //  Gyors szoftveres titkosítás. - Heidelberg: Springer Berlin / Heidelberg, 2007. - Vol. 4593 . - P. 242-253 . - doi : 10.1007/978-3-540-74619-5_16 .  (nem elérhető link)
  15. Daniel J. Bernstein. Gyorsítótár-időzítési támadások  AES ellen . - 2004. Archiválva : 2008. szeptember 17.
  16. Bruce Schneier. AES Timing  Attack . Schneier a biztonságról (2005. május 17.). Hozzáférés dátuma: 2010. október 27. Az eredetiből archiválva : 2012. február 19.
  17. Dag Arne Osvik; Adi Shamir és Eran Tromer. Gyorsítótár támadások és ellenintézkedések: az AES esete  // Kriptológiai témák - CT-RSA 2006, The Cryptographers' Track at the RSA Conference. - Springer-Verlag, 2005. - P. 1-20. Archiválva : 2020. november 25.
  18. Dhiman Saha, Debdeep Mukhopadhyay, Dipanwita Roy Chowdhury. Átlós hibatámadás a fejlett titkosítási szabvány ellen   // Cryptology ePrint Archívum . - 2009. Archiválva : 2020. augusztus 6.

Irodalom

Linkek