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.
|
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: C−1T ⊕ C−1K = C−1(CS ⊕ K) ⊕ C−1K = C−1CS ⊕ C−1K ⊕ C−1K = 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: |
ma'muriyatiga murojaat qiling