• Mavzu: OpenSSL kutubxonasidan foydalangan holda maʼlumotlarni RSA algoritmi yordamida shifrlash Bajardi:Tojaliyev Shahbozbek Tekshirdi: Qurbonaliyeva Dilshoda
  • Mavzu: OpenSSL kutubxonasidan foydalangan holda maʼlumotlarni RSA algoritmi yordamida shifrlash.
  • 1-rasm.
  • 3-amaliy ishi Mavzu: Openssl kutubxonasidan foydalangan holda maʼlumotlarni rsa algoritmi yordamida shifrlash Bajardi: Tojaliyev Shahbozbek Tekshirdi: Qurbonaliyeva Dilshoda Toshkent 2024




    Download 1,06 Mb.
    Sana17.05.2024
    Hajmi1,06 Mb.
    #240818


    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



    1. 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.


    1. rasm. Yopiq kalit hosil qilish.



    1. rasm. Hosil qilingan yopiq kalit.



    1. 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.


    1. rasm. Shifrlangan malumotni deshifrlash jarayoni.


    13 - rasm.deshifrlangan fayl .

    14-rasm. Shifrmatnning dastlabki holatga qaytarilgan ko‘rinishi.
    Download 1,06 Mb.




    Download 1,06 Mb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    3-amaliy ishi Mavzu: Openssl kutubxonasidan foydalangan holda maʼlumotlarni rsa algoritmi yordamida shifrlash Bajardi: Tojaliyev Shahbozbek Tekshirdi: Qurbonaliyeva Dilshoda Toshkent 2024

    Download 1,06 Mb.