O’ZBEKISTON RESPUBLIKASI RAQAMLI TEXNOLOGIYALARI VAZIRLIGI
Muhammad al-Xorazmiy nomidagi Toshkent axborot texnologiyalari universiteti
Kiberxavfsizlik fakulteti III bosqich CRO001-1- guruh talabasi Tojaliyev Shahbozbekning
kriptografiya 2 fanidan
3-amaliy ishi
Mavzu: OpenSSL kutubxonasidan foydalangan holda maʼlumotlarni RSA algoritmi yordamida shifrlash
Bajardi:Tojaliyev Shahbozbek
Tekshirdi: Qurbonaliyeva Dilshoda
Toshkent 2024
-
amaliy ish
Mavzu: OpenSSL kutubxonasidan foydalangan holda maʼlumotlarni RSA algoritmi yordamida shifrlash.
RSA (Rivest-Shamir-Adleman) algoritmi, ochiq kalitli shifrlash tizimlaridan biridir. Bu algoritma, 1977 yilida Ron Rivest, Adi Shamir va Leonard Adleman tomonidan ishlab chiqilgan. RSA algoritmi, matematik asosida ishlaydi va ochiq va maxfiy kalitlarni ishlatadi.
RSA algoritmasining asosiy mohiyati, katta sonlar orasida bo'lgan tub sonlarning faktorlash qiyosiy murakkabligiga asoslangan. Algoritma quyidagi bosqichlar orqali ishlaydi:
1. Tub sonlarni tanlash: Algoritma uchun ikki ta turli tub son (p va q) tanlanadi. Ular juda katta sonlar bo'lishi kerak va bir-biridan farq qiladigan sonlar bo'lishi kerak.
2. Modul va Euler funktsiyasini hisoblash: n = p * q ni hisoblab olamiz. Euler funktsiyasi φ(n) = (p-1) * (q-1) ni hisoblaydi. Bu son, n soni bilan o'zaro tub bo'lmasligi kerak.
3. Ochiq kalitni tanlash: Ochiq kalit (e) tanlanadi. Bu son, 1 dan katta bo'lishi va φ(n) bilan tub bo'lishi kerak. Odatda 65537 kabi kichik bir tub son tanlanadi.
4. Maxfiy kalitni topish: Maxfiy kalit (d) ochiq kalitning φ(n) ga nisbatan teskari hisoblanadi. Ya'ni, e * d ≡ 1 (mod φ(n)) bo'lishi kerak.
5. Matnni shifrlash: Matn raqamlar ketma-ketligiga aylanadi (masalan, harflarning raqamga mos kelishi mumkin). Har bir raqamni shifrlash uchun c = m^e mod n formulidan foydalaniladi, bu yerda c shifrlangan matn, m ochiq matn (raqam) bo'ladi.
6. Shifrlangan matnni ochish: Shifrlangan matnni ochish uchun har bir raqamni m = c^d mod n formulidan foydalaniladi, bu yerda m ochilgan matn, c shifrlangan matn bo'ladi.
RSA algoritmasi shifrlash va yechish qismi orasida ochiq kalitni o'zida saqlab qoladi, shuning uchun xavfsizlikni ta'minlash uchun maxfiy kalitni yaxshi saqlash kerak. Maxfiy kalitning maxsus va maxfiy turda bo'lishi muhimdir.
RSA algoritmasi katta sonlarni faktorlash murakkabligiga asoslanganligi uchun, shu vaqtda katta sonlar faktorlash algoritmalari yuqori sifatli tub sonlarni tez topish imkonini beradi. Ushbu xususiyatlar bilan RSA, xavfsizlik protokollari, elektronik imzo tizimlari, parolni tiklash tizimlari va boshqa bir nechta muhim tizimlarda ishlatiladi.
Endi python dasturlash tilida dasturini tuzamiz.
import math
def convert(ftext):
listf = []
for i in ftext:
listf.append(int(int(ord(i))-64))
return listf
def converttext(flist):
textf = ''
for i in flist:
textf = textf+chr(i+64)
return textf
def chooseE(fn):
e = 2
while math.gcd(fn,e)!=1:
e=e+1
return e
def chooseD(fn, en):
d = 2
while ((en*d)%fn)!=1:
d+=1
return d
def enc(flist, en, n):
list0 = []
for i in flist:
list0.append(((int(pow(i,en)))%n))
return list0
def decn(flist, dn, n):
list0 = []
for i in flist:
list0.append(((int(pow(i,dn)))%n))
return list0
p = int(input('P sonini kiriting : '))
q = int(input('Q sonini kiriting : '))
n = p*q
print('-----------------------')
print(f'n = p * q = {p} * {q} = {n}')
fn = (p-1)*(q-1)
print(f'fn = (p-1) * (q-1) = ({p} - 1) * ({q} - 1)')
en = chooseE(fn)
print(f'gcd(f(n),e)=1 => e = {en}')
print(f'e = {en} tanlab olindi.')
dn = chooseD(fn,en)
print(f'e*d = 1mod(f(n)) => maxfiy kalit d = {dn}')
print('------------------------')
print(f'Ochiq kalitlar : {en}, {n}')
print(f'Yopiq kalitlar : {dn}, {n}')
text = input('Matnni kiring (Alifbodan foydalaning!) : ')
list = convert(text)
enctext = enc(list,en,n)
dectext = decn(enctext,dn,n)
print(f'Shifrlangan matn : {converttext(enctext)}')
print(f'Deshifrlangan matn : {converttext(dectext)}')
Endi OpenSSL da ko`rib chiqamiz.
1-rasm. Cmd buyrug‘ini ishga tushiriladi
Cmd oynasidagi joriy papkasidan chiqish uchun cd.. buyrug‘idan
foydalaniladi:
2-rasm. cd.. buyrug‘idan foydalanish
3-rasm. Ochiq matn fayli.
4-rasm. Opensslni ishga tushirish.
-
rasm. Yopiq kalit hosil qilish.
-
rasm. Hosil qilingan yopiq kalit.
-
rasm. Maxfiy kalitdan foydalanib ochiq kalit hosil qilish.
8-rasm. ochiq kalit.
9-rasm.Ma’lumotni shifrlash.
10-rasm.Shifrlangan fayl.
11- rasm. Shifrlangan ma’lumot.
-
rasm. Shifrlangan malumotni deshifrlash jarayoni.
13 - rasm.deshifrlangan fayl .
14-rasm. Shifrmatnning dastlabki holatga qaytarilgan ko‘rinishi.
|