RSA: bu nima, algoritm va shifrlashning qo'llanilishi

Muallif: IT Sectr Nashr etilgan: 2026-04-02 O'qish vaqti: 9 daq

RSA — katta sonlarni faktorizatsiya qilishning hisoblash murakkabligiga asoslangan, shifrlash va raqamli imzoni ta'minlaydigan ochiq kalitli kriptotizimdir. NIST Special Publication 800-56B Rev. 2 (2023) ma'lumotlariga ko'ra, 2048 bit kalit uzunligidagi RSA davlat va tijorat tizimlari uchun xavfsizlik standarti bo'lib qolmoqda. Algoritm TLS protokollarida, raqamli imzolarda va mobil ilovalarda ma'lumotlarni shifrlashda keng qo'llaniladi.

Asosiy fikrlar

  • RSA — ochiq va yopiq kalit juftligidan foydalanadigan asimmetrik shifrlash algoritmi.
  • Xavfsizlik algoritm asosi katta sonni tub ko'paytuvchilarga ajratishning matematik murakkabligiga asoslanadi.
  • Kalit o'lchami 2048 bit NIST standartiga ko'ra 2023-yildan boshlab minimal ishonchli hisoblanadi.
  • RSA TLS sertifikatlarida, raqamli imzolarda va autentifikatsiya protokollarida qo'llaniladi.
  • Mobil ishlanma RSA-ni Android Keystore va iOS Security Framework ichki kripto kutubxonalari orqali ishlatadi.

RSA nima?

RSA — 1977-yilda Ronald Rivest, Adi Shamir va Leonard Adleman tomonidan ishlab chiqilgan ochiq kalitli kriptografik algoritm. Nom mualliflarning familiyalarining birinchi harflaridan tuzilgan. Algoritm shifrlash va deshifrlash kalitlari farqlanadigan birinchi amaliy qo'llaniladigan asimmetrik kriptotizim bo'ldi.

Yaratilish tarixi

RSA algoritmi 1977-yilda Scientific American jurnalida nashr etilgan va Whitfield Diffi va Martin Hellmanning ochiq kalitli kriptografiya bo'yicha oldingi ishlariga asoslangan. Massachusetts Texnologiya Instituti 1983-yilda RSA-ga patent oldi va u 2000-yilgacha amal qildi. RSA Laboratories (2023) hisobotiga ko'ra, algoritm dunyodagi eng keng tarqalgan kriptografik standartlardan biri bo'lib qolmoqda — u har kuni milliardlab qurilmalarda qo'llaniladi.

Asimmetriklik printsipi

Bir xil kalit shifrlash va deshifrlash uchun ishlatiladigan simmetrik shifrlardan farqli o'laroq, RSA matematik bog'langan kalit juftligi bilan ishlaydi. Ochiq kalit tizimni xavf ostiga qo'ymasdan hamma uchun e'lon qilinishi mumkin. Yopiq kalit faqat egasiga ma'lum va hech qachon tarmoq orqali uzatilmaydi. IBM Security X-Force Threat Intelligence Index (2024) tadqiqotiga ko'ra, asimmetrik shifrlash zamonaviy xavfsiz ma'lumot uzatish protokollarining 96 foizida qo'llaniladi.

Matematik asoslar

RSA xavfsizligi faktorizatsiya masalasiga — ikkita katta tub son ko'paytmasini ko'paytuvchilarga ajratishga asoslanadi. Agar har biri 1024 bit uzunligidagi p va q tub sonlari tanlansa, ularning ko'paytmasi n 2048 bitni tashkil qiladi. Faqat n ni bilgan holda p va q ni zamonaviy usullar bilan hisoblash amalda imkonsiz: CNRS (2024) ekspert baholashiga ko'ra, RSA-2048-ni buzish klassik kompyuterda 300 milliard yildan ortiq hisoblashni talab qiladi.

RSA algoritmi qanday ishlaydi

RSA ning kalitlar yaratilishidan xabarni shifrlash va deshifrlashgacha bo'lgan to'liq ish siklini ko'rib chiqamiz. Ushbu bosqichlarni tushunish algoritmni mobil ilovalarda to'g'ri tatbiq qilish uchun zarur.

Kalitlar yaratilishi

Jarayon ikkita katta tub son p va q ni tanlash bilan boshlanadi. Kalit uzunligini belgilaydigan n = p x q moduli hisoblanadi. Keyin Eyler funksiyasi phi(n) = (p-1)(q-1) hisoblanadi. phi(n) bilan o'zaro tub bo'lgan ochiq eksponent e tanlanadi. Yopiq eksponent d, e ning phi(n) moduliga ko'ra multiplikativ teskarisi sifatida hisoblanadi. NIST SP 800-56B Rev. 2 ga ko'ra, munosib himoyani ta'minlash uchun n ning minimal uzunligi 2048 bit bo'lishi kerak.

java
import java.security.KeyPairGenerator;
import java.security.KeyPair;
import java.security.SecureRandom;

public class RSAKeyGenerator {
    public static KeyPair generateKeyPair() throws Exception {
        KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
        generator.initialize(2048, new SecureRandom());
        return generator.generateKeyPair();
    }
}

Shifrlash va deshifrlash

m xabarini shifrlash uchun jo'natuvchi uni n dan kichik butun songa aylantiradi va c = m^e mod n shifrmatnini hisoblaydi. Qabul qiluvchi asl xabarni tiklash uchun yopiq kalit d dan foydalanadi: m = c^d mod n. Shuni ta'kidlash kerakki, RSA past unumdorlik sababli katta hajmdagi ma'lumotlarni shifrlash uchun mo'ljallanmagan — maksimal xabar o'lchami kalit uzunligi minus xizmat baytlariga teng (OAEP bilan RSA-2048 uchun taxminan 190 bayt).

java
import javax.crypto.Cipher;
import java.security.PublicKey;
import java.util.Base64;

public class RSAEncryptor {
    public static String encrypt(String data, PublicKey publicKey) throws Exception {
        Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding");
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
        byte[] encrypted = cipher.doFinal(data.getBytes());
        return Base64.getEncoder().encodeToString(encrypted);
    }
}

RSA da raqamli imzo

RSA shuningdek raqamli imzolarni yaratish uchun ishlatiladi — ma'lumotlarning haqiqiyligi va yaxlitligini tekshirish mexanizmi. Ega xabarning hesheni o'z yopiq kaliti bilan imzolaydi va har kim ochiq kalit bilan imzoni tekshirishi mumkin. Sectigo Certificate Transparency (2025) hisobotiga ko'ra, internetdagi TLS sertifikatlarining 85 foizdan ortig'i raqamli imzo uchun RSA dan foydalanadi, bu algoritmni veb-kommunikatsiya ishonchining asosiga aylantiradi.

kotlin
import java.security.Signature

fun signData(data: ByteArray, privateKey: java.security.PrivateKey): ByteArray {
    val signature = Signature.getInstance("SHA256withRSA")
    signature.initSign(privateKey)
    signature.update(data)
    return signature.sign()
}

fun verifySignature(
    data: ByteArray, signedData: ByteArray, publicKey: java.security.PublicKey
): Boolean {
    val signature = Signature.getInstance("SHA256withRSA")
    signature.initVerify(publicKey)
    signature.update(data)
    return signature.verify(signedData)
}

Kalit o'lchamlari va xavfsizlik darajasi

Kalit uzunligi RSA ning kripto chidamliligiga bevosita ta'sir qiladi. Hisoblash quvvatlarining o'sishi bilan minimal ruxsat etilgan kalit o'lchami xalqaro standartlashtirish tashkilotlari tomonidan muntazam qayta ko'rib chiqiladi. NIST va boshqa tartibga soluvchilarning joriy tavsiyalarini ko'rib chiqamiz.

Kalit uzunligiSimmetrik ekvivalentHolat
1024 bit80 bit2023-yildan taqiqlangan
2048 bit112 bitMinimal standart
3072 bit128 bitYangi tizimlar uchun tavsiya etiladi
4096 bit256 bitMaxfiy ma'lumotlar uchun

Unumdorlikka ta'siri

RSA kalit uzunligining oshirilishi operatsiyalarning bajarilish vaqtiga sezilarli ta'sir qiladi. 4096 bit uzunlikdagi kalitni yaratish 2048 bitga qaraganda taxminan 10 marta ko'p vaqt oladi. Uzun kalit bilan shifrlash va deshifrlash operatsiyalari ko'proq hisoblash resurslarini talab qiladi, bu cheklangan energiya iste'moli bo'lgan mobil qurilmalar uchun muhimdir.

Kvant tahdidi

Kvant hisoblashlarining rivojlanishi bilan RSA Shor algoritmi yordamida ko'p hadli vaqtda buzilishi mumkin. 1994-yilda Peter Shor tomonidan taklif qilingan ushbu algoritm katta sonlarni O((log n)^3) operatsiya vaqtida faktorizatsiya qilish imkonini beradi. IBM Quantum Roadmap (2025) ma'lumotlariga ko'ra, RSA-2048 ning amaliy buzilishi 2035-yildan oldin kutilmaydi, ammo NIST allaqachon CRYSTALS-Kyber va CRYSTALS-Dilithium postkvant algoritmlariga bosqichma-bosqich o'tishni tavsiya qiladi.

RSA-ni mobil ishlanmada qo'llash

RSA mobil ilovalarda xavfsiz ma'lumot uzatishni ta'minlash, serverlarning haqiqiyligini tekshirish va raqamli tranzaksiyalarni himoya qilish uchun faol qo'llaniladi. Integratsiya ikkala asosiy platformaning standart kriptografik API lari orqali amalga oshiriladi.

Android Keystore

Android platformasi Android Keystore — Trusted Execution Environment darajasida himoyalangan tizim kriptografik kalitlar omborini taqdim etadi. KeyStore da yaratilgan RSA kalitlari ilova xavf ostiga qo'yilgan taqdirda ham qurilmadan chiqarib bo'lmaydi. Bu root kirishiga ega malware ni o'z ichiga olgan keng hujum sinfidan himoyani ta'minlaydi.

kotlin
import android.security.keystore.KeyGenParameterSpec
import android.security.keystore.KeyProperties
import java.security.KeyPairGenerator

fun generateKeyInAndroidKeystore() {
    val generator = KeyPairGenerator.getInstance(
        KeyProperties.KEY_ALGORITHM_RSA,
        "AndroidKeyStore"
    )
    val spec = KeyGenParameterSpec.Builder(
        "rsa_key_pair",
        KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT
    )
        .setKeySize(2048)
        .setBlockModes(KeyProperties.BLOCK_MODE_ECB)
        .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_OAEP)
        .build()
    generator.initialize(spec)
    val keyPair = generator.generateKeyPair()
}

iOS Security Framework

iOS da RSA bilan ishlash uchun A7 chipi va undan yangi qurilmalarda Secure Enclave ga chiqish imkoniyatiga ega Security Framework ishlatiladi. Secure Enclave — asosiy protsessordan ajratilgan maxsus koprotsessor bo'lib, kriptografik operatsiyalarni bajaradi va kalitlarni apparat konklavida saqlaydi. RSA kalitlari Secure Enclave ichida ham, turli kirish darajalari bilan dasturiy Keychain da ham yaratilishi mumkin.

Amalda gibrid shifrlash

Haqiqiy mobil ilovalarda RSA kamdan-kam hollarda katta ma'lumotlarni to'g'ridan-to'g'ri shifrlash uchun ishlatiladi. Standart amaliyot gibrid sxema: ilova AES sessiya kalitini yaratadi, uni serverning ochiq RSA kaliti bilan shifrlaydi va serverga yuboradi. Barcha keyingi trafik AES bilan shifrlanadi, bu RSA orqali to'g'ridan-to'g'ri ma'lumot uzatishdan 100–1000 marta tezdir.

RSA-ning afzalliklari va cheklovlari

Har qanday kriptografik algoritm kabi RSA ning ham xavfsiz tizimlarni loyihalashda hisobga olinishi kerak bo'lgan kuchli va zaif tomonlari bor. Ob'ektiv baholash muayyan vazifa uchun to'g'ri vositani tanlashga yordam beradi.

Asosiy afzalliklar

RSA ning asosiy afzalligi kalitlarni taqsimlashning fundamental muammosini hal qilishdir — ochiq kalit butun tizimni xavf ostiga qo'ymasdan erkin e'lon qilinishi mumkin. Algoritmning universalligi bir kalit juftligi bilan ham shifrlash, ham raqamli imzo ni qo'llab-quvvatlashda namoyon bo'ladi. Bundan tashqari, RSA keng qo'llab-quvvatlash ekotizimiga ega: kutubxonalar barcha tillar va platformalar uchun mavjud.

Asosiy cheklovlar

RSA ning asosiy kamchiligi simmetrik algoritmlarga nisbatan past unumdorlikdir. Zamonaviy mobil protsessorda RSA-2048 ni deshifrlash taxminan 5–15 millisekund davom etadi, holbuki AES-256 bir vaqtning o'zida gigabayt ma'lumotni qayta ishlaydi. Shuningdek, RSA Shor algoritmi orqali kvant hujumlariga zaifdir, bu uning uzoq muddatli ma'lumotni himoya qilish tizimlarida qo'llanilishini cheklaydi.

Foydalanish bo'yicha tavsiyalar

Mobil loyihalar uchun NIST ekspertlari tavsiya qiladi: RSA ni faqat kalitlarni shifrlash va raqamli imzolar uchun ishlating, yangi loyihalar uchun kamida 3072 bit kalit uzunligini tanlang, RSA ni AES bilan gibrid sxemada birlashtiring va uzoq muddatli istiqbolda rejali migratsiya uchun postkvant standartlari rivojlanishini kuzating.

Tez-tez so'raladigan savollar

RSA va AES o'rtasidagi farq nima?

RSA — kalit juftligi bilan asimmetrik algoritm, kichik hajmdagi ma'lumotlarni shifrlash va raqamli imzolar uchun ishlatiladi. AES — bitta umumiy kalit bilan simmetrik algoritm, RSA dan 100–1000 marta tez ishlaydi. Zamonaviy tizimlarda ular birlashtiriladi: RSA AES sessiya kalitini uzatishni himoya qiladi, AES esa asosiy trafikni shifrlaydi.

Qaysi RSA kalit o'lchami bugun xavfsiz hisoblanadi?

2023-yildan boshlab minimal xavfsiz o'lcham NIST SP 800-131A Rev. 2 ga ko'ra RSA-2048 dir. 1024 bit kalitlar AQSh davlat tizimlari uchun rasman taqiqlangan. Yangi loyihalar uchun 3072 bit tavsiya etiladi, bu xavfsizlik zaxirasini va 128-bitli simmetrik shifrlashga ekvivalent chidamlilikni ta'minlaydi.

RSA mobil ilovalarda ishlatilishi mumkinmi?

Ha, RSA mobil ilovalarda keng qo'llaniladi. Android RSA kalitlarini apparat yaratish va xavfsiz saqlash uchun Android KeyStore ni taqdim etadi. iOS — Secure Enclave qo'llab-quvvatlashi bilan Security Framework. Katta ma'lumotlarni shifrlash uchun RSA + AES gibrid sxemasi tavsiya etiladi, bunda RSA faqat sessiya kalitini shifrlaydi.

RSA-2048 ni buzish mumkinmi?

Klassik kompyuterlarda RSA-2048 ni buzish amalda imkonsiz — zamonaviy hisob-kitoblarga ko'ra buning uchun 300 milliard yildan ortiq uzluksiz hisoblash talab etiladi. Biroq, yetarli kubitga ega kvant kompyuteri Shor algoritmi yordamida RSA-2048 ni bir necha daqiqada buza oladi. IBM baholashiga ko'ra, bunday kompyuter 2035-yildan oldin paydo bo'lmaydi.

RSA ning qanday alternativlari bor?

Asimmetrik algoritmlar orasida ECC (Elliptic Curve Cryptography) mashhur bo'lib, kichikroq kalit uzunligida ekvivalent xavfsizlikni ta'minlaydi — 256-bitli ECC RSA-3072 ga ekvivalentdir. Postkvant davri uchun NIST 2024-yilda shifrlash uchun CRYSTALS-Kyber va raqamli imzolar uchun CRYSTALS-Dilithium ni tanladi.

Xulosa

  • RSA — katta sonlarni faktorizatsiya qilish murakkabligiga asoslangan asimmetrik shifrlash algoritmi.
  • Kalit juftligi — shifrlash uchun ochiq va deshifrlash uchun yopiq, kalitlarni taqsimlash muammosini hal qiladi.
  • 2048 bit o'lchami 2023-yildan boshlab minimal xavfsizlik standartidir.
  • Unumdorlik RSA simmetrik shifrlardan 2–3 daraja past, shuning uchun gibrid sxemalarda ishlatiladi.
  • Raqamli imzolar RSA da internet TLS sertifikatlarining 85 foizida qo'llaniladi.
  • Mobil platformalar Android va iOS RSA bilan ishlash uchun ichki API larni taqdim etadi.
  • Postkvant migratsiya — 2035-yilgacha RSA asosiy standart bo'lib qoladi, keyin yangi algoritmlarga o'tish boshlanadi.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing