Keling, aes shifrlash va shifrlash uchun to'rt turdagi transformatsiyalardan qanday foydalanishini ko'rib chiqaylik. Standartda shifrlash algoritmi shifr, shifrni ochish algoritmi esa teskari shifr deb ataladi


Download 308.78 Kb.
bet1/2
Sana04.05.2023
Hajmi308.78 Kb.
#1426067
  1   2
Bog'liq
kripto tarjima2



SECTION 7.4 CIPHERS




7.4 shifrlar
Keling, AES shifrlash va shifrlash uchun to'rt turdagi transformatsiyalardan qanday foydalanishini ko'rib chiqaylik. Standartda shifrlash algoritmi shifr, shifrni ochish algoritmi esa teskari shifr deb ataladi.
Yuqorida aytib o'tganimizdek, AES Feistel bo'lmagan shifrdir, ya'ni har bir transformatsiya yoki o'zgarishlar guruhi inversiyali bo'lishi kerak. Bundan tashqari, shifr va teskari shifr bu amallarni bir-birini bekor qiladigan tarzda ishlatishi kerak. Dumaloq tugmalar ham teskari tartibda ishlatilishi kerak. Turli xil amalga oshirish uchun foydalanish uchun ikki xil dizayn berilgan. Biz AES-128 uchun ikkala dizaynni muhokama qilamiz; boshqa versiyalar uchun dizaynlar bir xil.
Original dizayn
Asl dizaynda har bir turda o'zgartirishlar tartibi shifr va teskari shifrda bir xil emas. 7.17-rasmda ushbu versiya ko'rsatilgan.

raqam 7.17 Shifr va teskari shifr ning original dizayni




Round 10

Round 1
Birinchidan, SubBytes va ShiftRows tartibi teskari shifrda o'zgartiriladi. Ikkinchidan, MixColumns va AddRoundKey tartibi teskari shifrda o'zgartiriladi. Bu tartibdagi farq har bir transformatsiyani amalga oshirish uchun kerak

teskari shifrda uning teskarisi bilan tekislangan shifr. Binobarin, shifrni ochish algoritmi umuman shifrlash algoritmiga teskari hisoblanadi. Biz bor-yo'g'i uchta tur ko'rsatdik, qolganlari esa shunday. E'tibor bering, dumaloq tugmalar teskari tartibda ishlatiladi. E'tibor bering, asl dizayndagi shifrlash va parolni hal qilish algoritmlari o'xshash emas.


Algoritm
Ushbu dizaynning AES-128 versiyasi uchun kod 7.6 algoritmida ko'rsatilgan. Teskari shifr uchun kod mashq sifatida qoldiriladi.




Cipher (InBlock [16], OutBlock[16], w[0 … 43])
{
BlockToState (InBlock, S)

S ← AddRoundKey (S, w[0…3]) for (round = 1 to 10)


{
S ← SubBytes (S)
S ← ShiftRows (S)
if (round ≠ 10) S ← MixColumns (S)
S ← AddRoundKey (S, w[4 × round, 4 × round + 3])
}

StateToBlock (S, OutBlock);


}
Algoritm 7.6 Asl dizayndagi shifr uchun psevdokod

Alternativ dizayn


Shifrlash va dekodlash uchun o'xshash algoritmlarni afzal ko'radigan ilovalar uchun boshqa teskari shifr ishlab chiqilgan. Ushbu versiyada teskari shifrdagi transformatsiyalar o'zgartirishlar tartibini shifr va teskari shifrda bir xil qilish uchun qayta tartibga solinadi. Ushbu dizaynda har bir transformatsiya uchun emas, balki bir juft transformatsiya uchun o'zgarmaslik ta'minlanadi.
Subbaytlar/ShiftRows juftliklari
SubBaytlar baytlarning holatidagi tartibini o'zgartirmasdan har bir bayt tarkibini o'zgartiradi; ShiftRows baytlar tarkibini o'zgartirmasdan holatda baytlar tartibini o'zgartiradi. Bu shuni anglatadiki, biz butun algoritmning o'zgarmasligiga ta'sir qilmasdan, teskari shifrda ushbu ikki o'zgartirish tartibini o'zgartirishimiz mumkin. 7.18-rasmda fikr ko'rsatilgan. E'tibor bering, shifr va teskari shifrdagi ikkita transformatsiyaning kombinatsiyasi bir-biriga teskari hisoblanadi.

raqam 7.18 o'zgarmaslik ning Subbaytlar va ShiftRows kombinatsiyalar


MixColumns/AddRoundKey juftligi
Bu erda ikkita o'zgarish har xil tabiatga ega. Biroq, agar kalit matritsani MixColumns transformatsiyasida ishlatiladigan doimiy matritsaning teskarisiga ko'paytirsak, juftliklar bir-biriga teskari bo'lishi mumkin. Biz yangi transformatsiyani InvAddRoundKey deb ataymiz. 7.19-rasmda yangi konfiguratsiya ko'rsatilgan.
raqam 7.19 o'zgarmaslik ning MixUstunlar va AddRoundKey kombinatsiyalar


dumaloq kalit

dumaloq kalit


Ikki kombinatsiya endi bir-biriga teskari ekanligini isbotlash mumkin. Shifrda biz S kombinatsiyaga kirish holatini va chiqish holatini T deb ataymiz. Teskari shifrda kombinatsiyaga kirish holati T. Quyida chiqish holati ham S ekanligini ko'rsatadi. MixColumns transformatsiyasi aslida ko'paytirish ekanligini unutmang. C matritsasining (davlat tomonidan doimiy matritsa).




Cipher: T = CS ⊕ K
Inverse Cipher: C1T ⊕ C1K = C1(CS ⊕ K) ⊕ C1K = C1CS ⊕ C1K ⊕ C1K = S

Endi biz muqobil dizayn uchun shifr va teskari shifrni ko'rsatishimiz mumkin. E'tibor bering, biz hali ham shifrni ochishda ikkita AddRoundKey transformatsiyasidan foydalanishimiz kerak. Boshqacha qilib aytganda, 7.20-rasmda ko'rsatilganidek, bizda to'qqizta InvAddRoundKey va ikkita AddRoundKey transformatsiyasi mavjud.


Kalitlarni kengaytirish algoritmini o'zgartirish


Teskari shifrda InvRoundKey transformatsiyasidan foydalanish o'rniga, kalitni kengaytirish algoritmini teskari shifr uchun boshqa yumaloq kalitlar to'plamini yaratish uchun o'zgartirish mumkin.
raqam 7.20 Shifr va teskari shifr ichida muqobil dizayn




Key Expansion

Round 1

Round 9

Round 10

Key Expansion
Shifr kalit
Oddiy matn
Oddiy matn
Shifrlash kaliti


Round 9






Round 10

Round 1
Biroq, raunddan oldingi operatsiya va oxirgi tur uchun dumaloq kalitni o'zgartirmaslik kerakligini unutmang. 1 dan 9 gacha bo'lgan davrlar uchun dumaloq kalitlarni doimiy matritsaga ko'paytirish kerak. Ushbu algoritm mashq sifatida qoldiriladi.

Download 308.78 Kb.

Do'stlaringiz bilan baham:
  1   2




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling