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 कम प्रदर्शन के कारण बड़ी मात्रा में डेटा को एन्क्रिप्ट करने के लिए नहीं है — अधिकतम संदेश आकार कुंजी लंबाई घटाकर ओवरहेड बाइट्स (RSA-2048 के लिए OAEP के साथ लगभग 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 का सक्रिय रूप से मोबाइल एप्लिकेशन में सुरक्षित डेटा ट्रांसमिशन, सर्वर प्रमाणीकरण और डिजिटल लेनदेन सुरक्षा सुनिश्चित करने के लिए उपयोग किया जाता है। एकीकरण दोनों प्रमुख प्लेटफार्मों के मानक क्रिप्टोग्राफ़िक API के माध्यम से किया जाता है।
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 एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें