Mavzu: Ochiq kalitli shifrlash algoritmlari dasturiy modulini ishlab chiqish
Ishdan maqsad: assimetrik shifrlash algoritmlarini amalda foydalanish xususida ko’nikmalarga ega bo’lish.
A ssimetrik shifrlash usullari ma’lumotlarni shifrlashda va deshifrlashda alohida-alohida kalitlardan foydalanadi. Shuning uchun ularda kalitlarni taqsimlash muammosi mavjud emas .
Assimetrik shirflash algoritmlaridan foydalanib ma’lumotlarni shirflash quyidagi jarayonlardan iborat:
Kalitlar generatsiyasi.
B foydalanuvchi kB maxfiy kalit asosida KB ochiq kalitni generatsiya qiladi. Ochiq kalit KB ochiq tarmoq orqali A foydalanuvchiga yoki tarmoqning boshqa foydalanuvchilariga uzatiladi.
Ma’lumotlarni shirflash.
A foydalanuvchi yoki tarmoqning boshqa foydalanuvchisi KB ochiq kalitdan foydalangan holda ochiq ma’lumotni shifrlaydi va uni ochiq tarmoq orqali yuboradi.
Shifr ma’lumotni deshifrlash.
B foydalanuvchi qabul qilingan shifrmatnni o’zining kB maxfiy kaliti bilan deshifrlaydi va ochiq matnga ega bo’ladi.
Assimetrik shifrlash usullarini yaratish mavjud bo’lgan biror matematik muammoga asoslanadi. Hozirda quyidagi muammolarga asoslangan asimmetrik shifrlash usullaridan foydalaniladi:
katta sonni ikkita tub ko’paytuvchi shaklida ajratish (RSA algoritmi);
diskret logarifmlash muammosi (El-Gamal algoritmi);
elliptik egri chiziq muammosi.
RSA shifrlash algoritmi. RSA shifrlash algoritmi. Diffi va Xelman kritografiya sohasida yangicha yondashishni targ‘ib qilib, ochiq kalitli kriptotizimlarning barcha talablariga javob beradigan kriptografik algoritm yaratish taklifi bilan chiqdi. Birinchilardan bo‘lib bunga javoban 1978 yil Ron Rayvets (Ron Rivest), Adi Shamir (Adi Shamir) va Len Adlmen (Len Adlmen)lar shu vaqtgacha tan olingan va amaliy keng qo‘llanib kelingan ochiq kalitli shifrlash algoritm sxemasini taklif qildi va bu algoritm ularning nomi sharafiga RSA algoritmi deb ataldi. RSA algoritmi faktorlash murakkabligiga asoslangan shifrlash algoritmi hisoblanadi[6].
Rayvest, Shamir va Adlmen tomonidan yaratilgan sxema daraja ko‘rsatkichiga asoslangan. Ochiq matn bloklarga ajratilib shifrlanadi, har bir blok ba’zi berilgan n sonidan kichik bo‘lgan ikkilik qiymatga ega bo‘ladi. Bundan kelib chiqadiki blok uzunligi log2 (n) dan kichik yoki teng bo‘lishi kerak. Umuman olganda amaliyotda blok uzunligi 2k ga teng deb olinadi, bu yerda 2k < n≤ 2k+1. Ochiq matn - M bloki va shifrlangan matn - С bloki uchun shifrlash va deshifrlash quyidagi formula bilan hisoblanishi mumkin.
M=Me mod(n), M=Cd mod(n)= (Me )dmod(n)=Med mod(n)
Jo‘natuvchi ham, qabul qiluvchi ham n ni qiymatini bilishi kerak. Jo‘natuvchi e ni qiymatini, qabul qiluvchi esa faqat d ni qiymatini bilishadi. Ushbu sxema ochiq kalitli shifrlash algoritmi hisoblanadi, KU={e,n}- ochiq kalit va KR={d,n}-maxfiy kalit hisoblanadi. Bu algoritm ochiq kalit yordamida shifrlanishi uchun, quyidagi talablar bajarilishi kerak[4,5,6,8].
Shunday e, d va n qiymatlar mavjud bo‘lish kerakki, barcha M uchun Med= M mod ( n) tenglik o‘rinli bo‘lishi kerak.
Barcha M < n uchun Me va Cd ni hisoblash oson bo‘lishi kerak.
Amaliy jihatdan e va n ni bilmasdan turib d ni qiymatini bilish mumkin bo‘lmasligi kerak.
Birinchi shartga binoan quyidagi munosabatni topish kerak
Med = M mod (n)
Eyler funksiyasiga asosan: har qanday ikkita p va q tub son va har qanday n va m butun sonlar uchun, n=pq va 0 <m < n, va ixtiyoriy k butun son uchun quyidagi munosabat bajariladi.
m k (n) +1= m k (p-1) (q-1) +1=m mod(n),
Bu yerda Eyler funksiyasi bo‘lib, n dan kichik va n bilan o‘zaro tub bo‘lgan musbat butun son. Eyler funksiyasi bilan o‘zaro tub bo’lgan e son tanlab olinadi va talab qilinayotgan munosabat quyidagi shart asosida bajariladi.
ed=k +1
Bu quyidagi munosabat bilan ekvivalent:
ed=1 mod
d=e-1 mod e va d, modul bo‘yicha o‘zaro teskari son, ya’ni
gcd( e) = 1.
Yuqorida keltirilgan parametrlar asosida RSA sxemasini quyidagicha tasniflash mumkin:
p va q - tub sonlar (maxfiy, tanlab olinadi);
n=pq (ochiq hisoblanadi);
shunday e, gcd( e) = 1, 1 < e, (ochiq, tanlab olinadi);
d=e-1 mod (maxfiy hisoblanadi).
Maxfiy kalit {d,n} dan, ochiq kalit esa {e,n} dan iborat bo‘ladi. Faraz qilaylik, A foydalanuvchi ochiq kalitini e’lon qildi va B foydalanuvchi unga M xabarni jo‘natishi kerak. B foydalanuvchi C=Me mod(n), hisoblab C ni jo‘natadi. Shifrlangan matnni qabul qilgan A foydalanuvchi M=Cd mod(n), yordamida deshifrlab dastlabki ochiq matnga ega bo‘ladi[8].
Quyida keltirilgan misolda RSA algoritmini amaliy qo‘llash ko‘rsatilgan.
Ikkita tub son tanlab olinadi, p=7 va q=17.
n=p*q=7*17 hisoblanadi.
Eyler funksiyasi hisoblanadi = (p - l)(q-1) = 96.
Eyler funksiyasi = 96 bilan o’zaro tub bo’lgan va undan kichkina bo’lgan e tanlab olinadi; bu misolda e=5.
de=1mod 96 va d<96 shartni qanoatlantiruvchi d soni topiladi. d=77, 77*5=385=4*96+1.
Natijada ochiq kalit KU={5,119} va yopiq kalit KR={77,119} hosil bo‘ladi. Bu misolda ochiq matn qiymati M=19 olingan. Shifrlash formulasiga ko‘ra ochiq matn qiymati ochiq kalit qiymati yordamida darajaga ko‘tarilib, n modul bo‘yicha qiymati olinadi, ya’ni 19 soni 5 darajaga ko’tariladi, natijada 2476099 hosil bo‘ladi. Natijani 119 ga bo’lsak, qoldiq 66 ga teng bo’ladi. 195 = 66 mod 119 va shuning uchun ham shifrlangan matn 66 ga teng bo’ladi. Deshifrlash uchun esa shifrlangan matn qiymati maxfiy kalit qiymati yordamida darajaga ko’tarilib, n modul bo’yicha qiymati olinadi, ya’ni 6677 = 19 mod 119 amalni hisoblaymiz va dastlabki ochiq matn qiymatiga ega bo‘lamiz, ya’ni 19 ga.
96>
Do'stlaringiz bilan baham: |