RSA algoritmi. RSA nomi algoritmni yaratuvchilari familiyalarining birinchi harflaridan olingan (Rivest, Shamir va Adleman). RSA algoritmi modul arifmetikasining darajaga ko‘tarish amalidan foydalanishga asoslangan.
RSA algoritmida ochiq va shaxsiy kalitlar juftini generatsiyalash uchun ikkita katta uzunlikdagi 𝑝 va 𝑞 sonlari tanlanadi va ularning ko‘paytmasi hisoblanadi: 𝑁 = 𝑝 ∗ 𝑞. Shundan so‘ng 𝜑(𝑁) = (𝑝 − 1) ∗ (𝑞 − 1) bilan o‘zaro tub bo‘lgan, 𝑒 soni tanlanadi (𝜑(𝑁) funksiya ma’nosi quyida keltirilgan). Shundan so‘ng 𝜑(𝑁) modulda 𝑒 sonining teskarisi hisoblanadi va u 𝑑 ga teng bo‘ladi. Shundan so‘ng, ikkita tub sonning (𝑝 𝑣𝑎 𝑞) ko‘paytmasi 𝑁 va 𝑒𝑑 = 1 𝑚𝑜𝑑 𝜑(𝑁) shartni qanoatlantiruvchi 𝑒 va 𝑑 sonlari mavjud. Shundan so‘ng, 𝑝 𝑣𝑎 𝑞 lar esdan chiqariladi (o‘chirib tashlanadi).
Bu yerda, 𝑁 modul hisoblanib, (𝑁, 𝑒) ochiq kalit juftini va 𝑑 maxfiy kalitni tashkil etadi. RSA algoritmida shifrlash va rasshifrovkalash modul bo‘yicha darajaga oshirish asosida bajariladi. RSA algoritmida shifrlash uchun 𝑀 xabarni son ko‘rinishida ifodalash talab etiladi va 𝑁 modul bo‘yicha 𝑒 darajaga ko‘tariladi, ya’ni
𝐶 = 𝑀𝑒 𝑚𝑜𝑑 𝑁.
𝐶 ni rasshifrovkalash uchun uni 𝑁 modul bo‘yicha shaxsiy kalit 𝑑
darajaga ko‘tarish talab etiladi:
𝑀 = 𝐶𝑑 𝑚𝑜𝑑 𝑁.
Boshqacha aytganda, RSA algoritmida xabar ochiq kalit bilan shifrlansa va shaxsiy kalit bilan rasshifrovkalansa, 𝑀 = 𝐶𝑑 𝑚𝑜𝑑 𝑁 =
𝑀𝑒𝑑 𝑚𝑜𝑑 𝑁 tenglikning to‘g‘riligini isbotlash zarur.
Aytaylik, RSA algoritmida ma’lumotni shifrlash va rasshifrovkalash amallarini tanlab olingan (𝑝 = 11 𝑣𝑎 𝑞 = 3) “katta” sonlar ustida amalga oshirish talab qilinsin. Mazkur holda modul
𝑁 = 𝑝 ∗ 𝑞 = 33 ga teng bo‘ladi va 𝜑(𝑁) = (𝑝 − 1)(𝑞 − 1) = 20 ga
teng bo‘ladi. U holda shifrlash uchun zarur bo‘lgan daraja e ni (3) ga teng deb olish mumkin. Sababi, 3 soni 𝜑(𝑁) = 20 bilan o‘zaro tubdir. Shundan so‘ng, Evklidning kengaytirilgan algoritmi asosida rasshifrovkalash kaliti 𝑑 = 7 aniqlanadi. Ya’ni, 𝑒𝑑 = 3 ∗ 7 = 1 𝑚𝑜𝑑 20. U holda A tomonning ochiq kalit jufti 𝑁, 𝑒 = 33, 3 va shaxsiy kaliti 𝑑 esa 7 ga teng bo‘ladi.
Shundan so‘ng, A tomon o‘zining ochiq kalitini barchaga uzatadi.
Biroq, shaxsiy kalitini maxfiy saqlaydi.
Faraz qilaylik, B tomon A tomonga 𝑀 = 15 ma’lumotni shifrlab yubormoqchi. Buning uchun B tomon A tomonning ochiq kaliti juftini
𝑁, 𝑒 = 33,3 oladi va shifrmatnni quyidagicha hisoblaydi:
𝐶 = 𝑀𝑒 𝑚𝑜𝑑 𝑁 = 153 = 3375 = 9 𝑚𝑜𝑑 33
va uni A tomonga yuboradi.
A tomon 𝐶 = 9 shifrmatnni rasshifrovkalash uchun shaxsiy kalit
𝑑 = 7 dan foydalanadi:
𝑀 = 𝐶𝑑 𝑚𝑜𝑑 𝑁 = 97 = 4782969 = 144938 ∗ 33 + 15 = 15 𝑚𝑜𝑑 33
Agar RSA algoritmida kichik tub sonlardan (𝑝 𝑣𝑎 𝑞 𝑢𝑐ℎ𝑢𝑛) foydalanilgan taqdirda, hujumchi ochik bo‘lgan 𝑁 ni osonlik bilan ikkita tub sonning ko‘paytmasi ko‘rinishida yozishi mumkin. Shundan so‘ng, ochiq kalitning ikkinchi qism 𝑒 dan foydalangan holda, shaxsiy kalit 𝑑 ni hisoblay oladi. Shuning uchun RSA algoritmidan amalda foydalanish uchun tanlanuvchi tub sonlar uzunligi kamida 2048 bit bo‘lishi talab etiladi. Bundan tashqari, RSA algoritmini buzish faqat faktorlash muammosiga bog‘liqligi isbotlanmagan.
|