RSA একটি পাবলিক-কী ক্রিপ্টোসিস্টেম যা বড় সংখ্যার উৎপাদকে বিশ্লেষণের গণনামূলক জটিলতার ভিত্তিতে এনক্রিপশন এবং ডিজিটাল স্বাক্ষর প্রদান করে। NIST Special Publication 800-56B Rev. 2 (2023) অনুসারে, 2048 বিট কী দৈর্ঘ্য সহ RSA সরকারি এবং বাণিজ্যিক সিস্টেমের জন্য নিরাপত্তা মান হিসাবে রয়ে গেছে। অ্যালগরিদমটি TLS প্রোটোকল, ডিজিটাল স্বাক্ষর এবং মোবাইল অ্যাপ্লিকেশনে ডেটা এনক্রিপশনে ব্যাপকভাবে ব্যবহৃত হয়।
মূল বিষয়
RSA একটি পাবলিক-কী ক্রিপ্টোগ্রাফিক অ্যালগরিদম যা ১৯৭৭ সালে রন রিভেস্ট, আদি শামির এবং লিওনার্ড অ্যাডলম্যান দ্বারা তৈরি করা হয়েছিল। নামটি লেখকদের উপাধির প্রথম অক্ষর থেকে গঠিত। অ্যালগরিদমটি প্রথম ব্যবহারিকভাবে প্রযোজ্য অ্যাসিমেট্রিক ক্রিপ্টোসিস্টেমে পরিণত হয়েছিল যেখানে এনক্রিপশন এবং ডিক্রিপশন কী ভিন্ন হয়।
RSA অ্যালগরিদমটি ১৯৭৭ সালে Scientific American ম্যাগাজিনে প্রকাশিত হয়েছিল এবং এটি হোয়াইটফিল্ড ডিফি এবং মার্টিন হেলম্যানের পাবলিক-কী ক্রিপ্টোগ্রাফির উপর পূর্ববর্তী কাজের ভিত্তিতে তৈরি। ম্যাসাচুসেটস ইনস্টিটিউট অফ টেকনোলজি ১৯৮৩ সালে RSA-এর জন্য একটি পেটেন্ট পেয়েছিল, যা ২০০০ সাল পর্যন্ত স্থায়ী ছিল। 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 শোরের অ্যালগরিদম ব্যবহার করে বহুপদী সময়ে ভাঙা যেতে পারে। এই অ্যালগরিদম, যা পিটার শোর ১৯৯৪ সালে প্রস্তাব করেছিলেন, 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 অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন