Tоshkеnt aхbоrоt tехnоlоgiyalari univеrsitеti «axborot xavfsizligi» kafеdrasi individual loyiha 2 mavzu


II BOB. BOUNCYCASTLE KUTUBXONASIDA TURLI XIL ALGORITMLARDAN FOYDALANIB KALIT HOSIL QILISH



Yüklə 0,6 Mb.
səhifə4/10
tarix27.09.2023
ölçüsü0,6 Mb.
#149792
1   2   3   4   5   6   7   8   9   10
Bouncy castle kutubhonasi

II BOB. BOUNCYCASTLE KUTUBXONASIDA TURLI XIL ALGORITMLARDAN FOYDALANIB KALIT HOSIL QILISH
2.1 RSA algoritmi yordamida kalit generatsiya qilish
RSA (Rivest–Shamir–Adleman) shifrlash algoritmi, 1978 yilda Ron Rivest, Adi Shamir va Leonard Adleman tomonidan yaratilgan, umumiy ishlatiladigan bir shifrlash algoritmidir. RSA algoritmi o'zining xavfsizlikligi, xavfsizlik protokollarining yaratilishida va elektron tijoratda keng qo'llaniladi.
RSA algoritmi, kalitli shifrlash algoritmiga masalan, AES algoritmi kabi, nisbatan yirik kalit yoki bloklar ishlatmaydi. Bu algoritm blok shifrlash emas, balki har qanday matn yoki ma'lumot turi uchun ishlatiladi. RSA, bitta xavfsizlik kaliti bo'lgan, odatda 1024 bitlik kalit yoki undan yuqori kalit uzunligi yordamida ishlatiladi.
RSA algoritmi, ikki xil kalitni yaratish va ulardan foydalanish asosida ishlaydi: o'zining jamlanmagan oddiy kaliti va maxfiy matnOddiy kalit yaratish uchun, ikki ganjlik sanoq sistemasi (p va q) yordamida sonlar yaratiladi, shu sonlar juda katta bo'lishi kerak bo'lgan uchta shartlarga javob berishi kerak: ular tub sonlar bo'lishi, ular o'zaro koprima bo'lishi kerak va ularni topish juda qiyin bo'lishi kerak. Sonlar topilgach, oddiy kalit n = p * q hisoblanadi.
Maxfiy matn (m) shifrlanishida, ular kalit yordamida shifrlanadi. Shifrlangan matn (c) quyidagi formula yordamida hisoblanadi: c = m^e mod n.
Shifrlangan matn (c) qayta ishlash jarayonida, boshqa bir kalit (d) yordamida o'zgartiriladi. O'zgartirilgan matn (m') quyidagi formula yordamida hisoblanadi: m' = c^d mod n.
RSA algoritmi, matn shifrlash va imzolash uchun ishlatiladi. Matn shifrlash uchun, algoritm o'z kalitlarini yaratish yordamida, kalitli shifrlash algoritmlari, masalan, AES, DES kabi algoritmlar bilan birga ishlatiladi. Shu sababli, matn shifrlangan holda, boshqa taraflar tomonidan faqatgina kalit bilan o'qilishi mumkin. Imzolash uchun esa, xabar (m) o'zining maxfiy kaliti bilan shifrlanadi. Shu sababli, xabar imzosiz ekanligini tasdiqlash uchun, o'ziga xos imzo yaratiladi, shu yordamda imzolangan xabar boshqa kimsalar tomonidan ham tekshirilishi mumkin.
RSA algoritmi yaxshi xavfsizlik darajasiga ega, ammo uchta xavfsizlik muammolari mavjud: kichik kalit uzunligi, yuqori ishlab chiqarish yoki ishlash yoki xavfsizlik xavfsizlik o'zgarishlariga qarshi noaniqligi. Shuningdek, matn shifrlash uchun RSA algoritmi yuqori hisoblanishi sababli, shifrlash jarayoni tez ishlamaydi va ko'p ishlab chiqarilgan kalitlar uchun kam ta'sirli bo'ladi. Bunday sabablar uchun, hozirgi kunda, katta tizimlar uchun ishlatiladigan boshqa algoritm turlari, masalan, Elliptic Curve Cryptography (ECC) va AES, RSA algoritmi o'rniga ishlatilmoqda.
Bouncy Castle kutubxonasida kalit hosil qilish uchun turli usullar mavjud, masalan, `KeyPairGenerator` sinfi orqali kalitlar yaratish mumkin. Bu sinf orqali, simmetrik va asymmetrik kalitlar yaratish mumkin.
Asymmetrik kalitlarni yaratish uchun, `KeyPairGenerator` sinfini ishlatish mumkin.
Quyidagi kodda, RSA algoritmi uchun kalit hosil qilinishi ko'rsatilgan:
import java.security.*;
import org.bouncycastle.jce.provider.BouncyCastleProvider;

public class KeyPairGeneratorExample {


public static void main(String[] args) throws Exception{
Security.addProvider(new BouncyCastleProvider());

// Kalit yaratish uchun KeyPairGenerator obyekti yutilizatsiya qilinadi


KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA", "BC");
keyPairGenerator.initialize(2048); // Kalit uzunligi 2048 bit

// Kalitlarni yaratish


KeyPair keyPair = keyPairGenerator.generateKeyPair();
PrivateKey privateKey = keyPair.getPrivate();
PublicKey publicKey = keyPair.getPublic();

System.out.println("Private key: " + privateKey.getEncoded());


System.out.println("Public key: " + publicKey.getEncoded());
}
}

Bu kodda, `KeyPairGenerator` sinfi orqali RSA algoritmi uchun 2048 bit uzunligidagi kalit yaratiladi. `generateKeyPair` metodida kalitlar yaratiladi va `getPrivate` va `getPublic` metodlari orqali, mos kalitlar olish uchun ishlatiladi. Kalitlar `byte` massivida saqlanadi.


Simmetrik kalitlarni yaratish uchun, `KeyGenerator` sinfi ishlatiladi.

Yüklə 0,6 Mb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8   9   10




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin