RSA ایک عوامی کلید خفیہ نظام ہے جو بڑی تعدادوں کے اجزائے ضربی کی کمپیوٹیشنل پیچیدگی کی بنیاد پر خفیہ نگاری اور ڈیجیٹل دستخط فراہم کرتا ہے۔ NIST Special Publication 800-56B Rev. 2 (2023) کے مطابق، 2048 بٹ کلید کی لمبائی والا RSA سرکاری اور تجارتی نظاموں کے لیے سیکیورٹی کا معیار بنا ہوا ہے۔ الگورتھم TLS پروٹوکولز، ڈیجیٹل دستخطوں اور موبائل ایپلیکیشنز میں ڈیٹا خفیہ نگاری میں وسیع پیمانے پر استعمال ہوتا ہے۔
اہم نکات
RSA ایک عوامی کلید خفیہ نگاری الگورتھم ہے جسے 1977 میں رون ریویسٹ، آدی شامیر اور لیونارڈ ایڈل مین نے تیار کیا تھا۔ نام مصنفین کے کنیتوں کے پہلے حروف سے بنا ہے۔ الگورتھم پہلا عملی طور پر قابل اطلاق غیر متناسب خفیہ نظام بن گیا جہاں خفیہ نگاری اور خفیہ کشائی کی کلیدیں مختلف ہوتی ہیں۔
RSA الگورتھم 1977 میں Scientific American میگزین میں شائع ہوا تھا اور یہ وائٹ فیلڈ ڈفی اور مارٹن ہیلمین کے عوامی کلید خفیہ نگاری پر پہلے کے کام پر مبنی ہے۔ میساچوسٹس انسٹی ٹیوٹ آف ٹیکنالوجی نے 1983 میں RSA کا پیٹنٹ حاصل کیا، جو 2000 تک جاری رہا۔ RSA Laboratories رپورٹ (2023) کے مطابق، الگورتھم دنیا میں سب سے زیادہ پھیلے ہوئے خفیہ نگاری معیارات میں سے ایک ہے — یہ روزانہ اربوں آلات میں استعمال ہوتا ہے۔
متناسب خفیہ نگاری کے برعکس جہاں خفیہ نگاری اور خفیہ کشائی دونوں کے لیے ایک ہی کلید استعمال ہوتی ہے، RSA ریاضیاتی طور پر منسلک کلیدوں کے ایک جوڑے کے ساتھ کام کرتا ہے۔ عوامی کلید کو نظام سے سمجھوتہ کرنے کے خطرے کے بغیر کسی کے لیے بھی شائع کیا جا سکتا ہے۔ نجی کلید صرف مالک کو معلوم ہوتی ہے اور کبھی نیٹ ورک پر منتقل نہیں کی جاتی۔ IBM Security X-Force Threat Intelligence Index (2024) مطالعہ کے مطابق، جدید محفوظ ڈیٹا منتقلی پروٹوکولز کے 96% میں غیر متناسب خفیہ نگاری استعمال ہوتی ہے۔
RSA کی سیکیورٹی اجزائے ضربی کے مسئلے پر مبنی ہے — دو بڑے مفرد اعداد کی پیداوار کو اجزائے ضربی میں تحلیل کرنا۔ اگر آپ ہر ایک 1024 بٹ کے مفرد اعداد p اور q منتخب کرتے ہیں، تو ان کی پیداوار n 2048 بٹ ہوگی۔ جدید طریقوں سے صرف n جان کر p اور q کا حساب لگانا عملی طور پر ناممکن ہے: CNRS ماہر تشخیص (2024) کے مطابق، RSA-2048 کو توڑنے کے لیے ایک کلاسیکی کمپیوٹر پر 300 ارب سال سے زیادہ کی حساب کتاب درکار ہوگی۔
آئیے کلید کی تخلیق سے لے کر پیغام کی خفیہ نگاری اور خفیہ کشائی تک RSA کے مکمل کام کے چکر پر غور کریں۔ ان مراحل کو سمجھنا موبائل ایپلیکیشنز میں الگورتھم کے درست نفاذ کے لیے ضروری ہے۔
عمل دو بڑے مفرد اعداد p اور q کے انتخاب سے شروع ہوتا ہے۔ ماڈیولس n = p x q کا حساب لگایا جاتا ہے، جو کلید کی لمبائی کا تعین کرتا ہے۔ پھر اولر کے ٹوٹینٹ فنکشن phi(n) = (p-1)(q-1) کا حساب لگایا جاتا ہے۔ ایک عوامی ایکسپوننٹ e منتخب کیا جاتا ہے جو phi(n) سے ہم اول ہو۔ نجی ایکسپوننٹ d کا حساب e کے ماڈیولر ضربی معکوس کے طور پر لگایا جاتا ہے۔ NIST SP 800-56B Rev. 2 کے مطابق، مناسب تحفظ کو یقینی بنانے کے لیے n کی کم از کم لمبائی 2048 بٹ ہونی چاہیے۔
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();
}
}
پیغام m کو خفیہ کرنے کے لیے، بھیجنے والا اسے n سے چھوٹے ایک عدد میں تبدیل کرتا ہے اور خفیہ متن c = m^e mod n کا حساب لگاتا ہے۔ وصول کنندہ اصلی پیغام کو بحال کرنے کے لیے نجی کلید d استعمال کرتا ہے: m = c^d mod n۔ یہ نوٹ کرنا ضروری ہے کہ RSA کم کارکردگی کی وجہ سے ڈیٹا کی بڑی مقدار کو خفیہ کرنے کے لیے نہیں ہے — زیادہ سے زیادہ پیغام کا سائز کلید کی لمبائی منفی اوور ہیڈ بائٹس کے برابر ہے (OAEP کے ساتھ RSA-2048 کے لیے تقریباً 190 بائٹ)۔
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 ڈیجیٹل دستخط بنانے کے لیے بھی استعمال ہوتا ہے — ڈیٹا کی صداقت اور سالمیت کی تصدیق کا ایک طریقہ کار۔ مالک اپنی نجی کلید سے پیغام کے ہیش پر دستخط کرتا ہے، اور کوئی بھی عوامی کلید استعمال کرکے دستخط کی تصدیق کرسکتا ہے۔ Sectigo Certificate Transparency رپورٹ (2025) کے مطابق، انٹرنیٹ پر 85% سے زیادہ TLS سرٹیفکیٹ ڈیجیٹل دستخطوں کے لیے RSA استعمال کرتے ہیں، جو الگورتھم کو ویب مواصلات کے لیے اعتماد کی بنیاد بناتا ہے۔
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)
}
کلید کی لمبائی براہ راست RSA کی خفیہ نگاری کی طاقت کو متاثر کرتی ہے۔ جیسے جیسے کمپیوٹیشنل طاقت بڑھتی ہے، کم سے کم قابل قبول کلید کے سائز کا بین الاقوامی معیاری تنظیموں کے ذریعہ باقاعدگی سے جائزہ لیا جاتا ہے۔ آئیے NIST اور دیگر ریگولیٹرز کی موجودہ سفارشات کا جائزہ لیں۔
| کلید کی لمبائی | متناسب مساوی | حیثیت |
|---|---|---|
| 1024 بٹ | 80 بٹ | 2023 سے ممنوع |
| 2048 بٹ | 112 بٹ | کم سے کم معیار |
| 3072 بٹ | 128 بٹ | نئے نظاموں کے لیے سفارش کردہ |
| 4096 بٹ | 256 بٹ | خفیہ ڈیٹا کے لیے |
RSA کلید کی لمبائی بڑھانے سے آپریشنز کے عملدرآمد کے وقت پر نمایاں اثر پڑتا ہے۔ 4096 بٹ کی کلید بنانے میں 2048 بٹ کی کلید کے مقابلے میں تقریباً 10 گنا زیادہ وقت لگتا ہے۔ لمبی کلید کے ساتھ خفیہ نگاری اور خفیہ کشائی کے آپریشنز کو زیادہ کمپیوٹیشنل وسائل درکار ہوتے ہیں، جو محدود بجلی کی کھپت والے موبائل آلات کے لیے اہم ہے۔
کوانٹم کمپیوٹنگ کی ترقی کے ساتھ، RSA شور کے الگورتھم کا استعمال کرتے ہوئے کثیر رقمی وقت میں توڑا جا سکتا ہے۔ یہ الگورتھم، جسے پیٹر شور نے 1994 میں تجویز کیا تھا، O((log n)^3) آپریشنز میں بڑی تعدادوں کے اجزائے ضربی نکال سکتا ہے۔ IBM Quantum Roadmap (2025) کے مطابق، RSA-2048 کے عملی توڑنے کی توقع 2035 سے پہلے نہیں ہے، تاہم NIST پہلے ہی پوسٹ کوانٹم الگورتھم CRYSTALS-Kyber اور CRYSTALS-Dilithium میں بتدریج منتقلی کی سفارش کرتا ہے۔
RSA محفوظ ڈیٹا کی منتقلی، سرور کی تصدیق اور ڈیجیٹل لین دین کے تحفظ کو یقینی بنانے کے لیے موبائل ایپلیکیشنز میں فعال طور پر استعمال ہوتا ہے۔ انضمام دونوں بڑے پلیٹ فارمز کے معیاری خفیہ نگاری APIs کے ذریعے کیا جاتا ہے۔
Android پلیٹ فارم Android Keystore فراہم کرتا ہے — ایک نظامی خفیہ نگاری کلید ذخیرہ جو Trusted Execution Environment ہارڈویئر سطح سے محفوظ ہے۔ KeyStore میں بنائی گئی RSA کلیدیں ایپلیکیشن سے سمجھوتہ ہونے پر بھی ڈیوائس سے نکالی نہیں جا سکتیں۔ یہ روٹ رسائی والے مالویئر سمیت حملوں کی ایک وسیع رینج سے تحفظ فراہم کرتا ہے۔
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 میں، RSA کو A7 چپ اور نئے آلات پر Secure Enclave تک رسائی کے ساتھ Security Framework کے ذریعے ہینڈل کیا جاتا ہے۔ Secure Enclave ایک وقف شدہ کواکسیسر ہے جو مرکزی پروسیسر سے الگ تھلگ ہے، خفیہ نگاری کے آپریشنز انجام دیتا ہے اور کلیدوں کو ہارڈویئر والٹ میں محفوظ کرتا ہے۔ RSA کلیدیں Secure Enclave کے اندر اور سافٹ ویئر Keychain دونوں میں مختلف رسائی کی سطحوں کے ساتھ بنائی جا سکتی ہیں۔
حقیقی موبائل ایپلیکیشنز میں، RSA بڑے ڈیٹا کی براہ راست خفیہ نگاری کے لیے شاذ و نادر ہی استعمال ہوتا ہے۔ معیاری طریقہ کار ہائبرڈ اسکیم ہے: ایپلیکیشن ایک AES سیشن کلید بناتی ہے، اسے سرور کی RSA عوامی کلید سے خفیہ کرتی ہے اور سرور کو بھیجتی ہے۔ تمام بعد کا ٹریفک AES سے خفیہ کیا جاتا ہے، جو RSA کے ذریعے براہ راست ڈیٹا کی منتقلی سے 100-1000 گنا تیز ہے۔
کسی بھی خفیہ نگاری الگورتھم کی طرح، RSA میں طاقت اور کمزوریاں ہیں جنہیں محفوظ نظاموں کو ڈیزائن کرتے وقت مدنظر رکھنا چاہیے۔ ایک معروضی تشخیص کسی مخصوص کام کے لیے صحیح آلہ منتخب کرنے میں مدد کرتی ہے۔
RSA کا بنیادی فائدہ کلید کی تقسیم کے بنیادی مسئلے کو حل کرنا ہے — عوامی کلید کو پورے نظام سے سمجھوتہ کرنے کے خطرے کے بغیر آزادانہ طور پر شائع کیا جا سکتا ہے۔ الگورتھم کی استعداد ایک کلید کے جوڑے کے ساتھ خفیہ نگاری اور ڈیجیٹل دستخط دونوں کی حمایت میں ظاہر ہوتی ہے۔ مزید برآں، RSA کا ایک وسیع معاون ماحولیاتی نظام ہے: لائبریریاں تمام زبانوں اور پلیٹ فارمز کے لیے دستیاب ہیں۔
RSA کی بنیادی کمزوری متناسب الگورتھم کے مقابلے میں کم کارکردگی ہے۔ جدید موبائل پروسیسر پر RSA-2048 کو خفیہ کشائی کرنے میں تقریباً 5-15 ملی سیکنڈ لگتے ہیں، جبکہ AES-256 اسی وقت میں گیگا بائٹس ڈیٹا پراسیس کرتا ہے۔ نیز، RSA شور کے الگورتھم کے ذریعے کوانٹم حملوں کا شکار ہے، جو طویل مدتی ڈیٹا تحفظ کی ضرورت والے نظاموں میں اس کے استعمال کو محدود کرتا ہے۔
موبائل منصوبوں کے لیے، NIST ماہرین سفارش کرتے ہیں: RSA کو صرف کلید کی خفیہ نگاری اور ڈیجیٹل دستخطوں کے لیے استعمال کریں، نئے منصوبوں کے لیے کم از کم 3072 بٹ کی کلید کی لمبائی منتخب کریں، RSA کو AES کے ساتھ ہائبرڈ اسکیم میں یکجا کریں، اور طویل مدتی منصوبہ بند منتقلی کے لیے پوسٹ کوانٹم معیارات کی ترقی کی نگرانی کریں۔
اکثر پوچھے گئے سوالات
RSA ایک غیر متناسب الگورتھم ہے جس میں کلیدوں کا ایک جوڑا ہے جو ڈیٹا کی چھوٹی مقداروں اور ڈیجیٹل دستخطوں کو خفیہ کرنے کے لیے استعمال ہوتا ہے۔ AES ایک متناسب الگورتھم ہے جس میں ایک مشترکہ کلید ہے، جو RSA سے 100-1000 گنا تیز چلتا ہے۔ جدید نظاموں میں، انہیں یکجا کیا جاتا ہے: RSA AES سیشن کلید کی منتقلی کی حفاظت کرتا ہے، جبکہ AES مرکزی ٹریفک کو خفیہ کرتا ہے۔
2023 سے کم از کم محفوظ سائز NIST SP 800-131A Rev. 2 کے مطابق RSA-2048 ہے۔ 1024 بٹ کی کلیدیں امریکی سرکاری نظاموں کے لیے سرکاری طور پر ممنوع ہیں۔ نئے منصوبوں کے لیے 3072 بٹ کی سفارش کی جاتی ہے، جو سیکیورٹی مارجن اور 128 بٹ متناسب خفیہ نگاری کے برابر طاقت فراہم کرتا ہے۔
ہاں، RSA موبائل ایپلیکیشنز میں بڑے پیمانے پر استعمال ہوتا ہے۔ Android RSA کلیدوں کے ہارڈویئر تخلیق اور محفوظ ذخیرہ کے لیے Android KeyStore فراہم کرتا ہے۔ iOS Secure Enclave سپورٹ کے ساتھ Security Framework فراہم کرتا ہے۔ بڑے ڈیٹا کی خفیہ نگاری کے لیے، ہائبرڈ RSA + AES اسکیم کی سفارش کی جاتی ہے، جہاں RSA صرف سیشن کلید کو خفیہ کرتا ہے۔
کلاسیکی کمپیوٹرز پر، RSA-2048 کو توڑنا عملی طور پر ناممکن ہے — موجودہ اندازوں کے مطابق، اس کے لیے 300 ارب سال سے زیادہ مسلسل حساب کتاب درکار ہوگی۔ تاہم، کافی کیوبٹس والا کوانٹم کمپیوٹر شور کے الگورتھم کا استعمال کرتے ہوئے منٹوں میں RSA-2048 کو توڑ سکتا ہے۔ IBM کے اندازوں کے مطابق، ایسا کمپیوٹر 2035 سے پہلے ظاہر نہیں ہوگا۔
غیر متناسب الگورتھم میں، ECC (بیضوی منحنی خفیہ نگاری) مقبول ہے، جو چھوٹی کلید کی لمبائی کے ساتھ مساوی سیکیورٹی فراہم کرتا ہے — 256 بٹ ECC RSA-3072 کے برابر ہے۔ پوسٹ کوانٹم دور کے لیے، NIST نے 2024 میں خفیہ نگاری کے لیے CRYSTALS-Kyber اور ڈیجیٹل دستخطوں کے لیے CRYSTALS-Dilithium کا انتخاب کیا۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں