RSA هو نظام تشفير بالمفتاح العام يوفر التشفير والتوقيعات الرقمية بناءً على التعقيد الحسابي لتحليل الأعداد الكبيرة إلى عوامل. وفقًا للمنشور الخاص NIST 800-56B Rev. 2 (2023)، RSA بطول مفتاح 2048 بت يظل معيار الأمان للأنظمة الحكومية والتجارية. تُستخدم الخوارزمية على نطاق واسع في بروتوكولات TLS والتوقيعات الرقمية وتشفير البيانات في التطبيقات المحمولة.
الملامح الرئيسية
RSA هي خوارزمية تشفير بالمفتاح العام طورها رون ريفست وآدي شامير وليونارد أدليمان في عام 1977. الاسم مشتق من الأحرف الأولى من ألقاب المؤلفين. أصبحت الخوارزمية أول نظام تشفير غير متماثل قابل للتطبيق عمليًا حيث تختلف مفاتيح التشفير وفك التشفير.
نُشرت خوارزمية RSA في عام 1977 في مجلة Scientific American وهي مبنية على أعمال سابقة لويتفيلد ديفي ومارتن هيلمان في مجال التشفير بالمفتاح العام. حصل معهد ماساتشوستس للتكنولوجيا على براءة اختراع لـ RSA في عام 1983، والتي استمرت حتى عام 2000. وفقًا لتقرير RSA Laboratories (2023)، تظل الخوارزمية واحدة من أكثر معايير التشفير انتشارًا في العالم — فهي تُستخدم في مليارات الأجهزة يوميًا.
على عكس التشفير المتماثل حيث يُستخدم نفس المفتاح لكل من التشفير وفك التشفير، RSA تعمل بزوج من المفاتيح المرتبطة رياضيًا. يمكن نشر المفتاح العام لأي شخص دون خطر اختراق النظام. المفتاح الخاص معروف فقط للمالك ولا يُنقل أبدًا عبر الشبكة. وفقًا لدراسة IBM Security X-Force Threat Intelligence Index (2024)، يُستخدم التشفير غير المتماثل في 96% من بروتوكولات نقل البيانات الآمنة الحديثة.
يعتمد أمان RSA على مشكلة التحليل إلى العوامل — تحليل ناتج ضرب عددين أوليين كبيرين إلى عوامل. إذا اخترت عددين أوليين p و q بطول 1024 بت لكل منهما، فإن ناتج ضربهما n سيكون 2048 بت. حساب p و q بمعرفة n فقط باستخدام الطرق الحديثة أمر مستحيل عمليًا: وفقًا لتقييم خبراء CNRS (2024)، فإن كسر RSA-2048 يتطلب أكثر من 300 مليار سنة من الحساب على حاسوب تقليدي.
لننظر في دورة العمل الكاملة لـ RSA من توليد المفاتيح إلى تشفير وفك تشفير الرسالة. فهم هذه المراحل ضروري للتنفيذ الصحيح للخوارزمية في التطبيقات المحمولة.
تبدأ العملية باختيار عددين أوليين كبيرين p و q. يُحسب المعامل n = p x q، الذي يحدد طول المفتاح. ثم تُحسب دالة أويلر phi(n) = (p-1)(q-1). يُختار الأس العام e الذي يكون أوليًا نسبيًا مع phi(n). يُحسب الأس الخاص d كمعكوس ضربي معياري لـ e بمعامل phi(n). وفقًا لـ 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 غير مصمم لتشفير كميات كبيرة من البيانات بسبب الأداء المنخفض — الحد الأقصى لحجم الرسالة يساوي طول المفتاح مطروحًا منه بايتات الحمل (حوالي 190 بايت لـ RSA-2048 مع OAEP).
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 بت يستغرق حوالي 10 أضعاف وقت مفتاح 2048 بت. تتطلب عمليات التشفير وفك التشفير بمفتاح أطول موارد حسابية أكثر، وهو أمر بالغ الأهمية لـ الأجهزة المحمولة ذات استهلاك الطاقة المحدود.
مع تطور الحوسبة الكمية، يمكن كسر RSA باستخدام خوارزمية شور في وقت متعدد الحدود. هذه الخوارزمية، التي اقترحها بيتر شور في عام 1994، يمكنها تحليل الأعداد الكبيرة إلى عوامل في O((log n)^3) عملية. وفقًا لخارطة طريق IBM Quantum (2025)، من المتوقع أن يحدث الكسر العملي لـ RSA-2048 في موعد لا يتجاوز 2035، ومع ذلك توصي NIST بالفعل بـ الانتقال التدريجي إلى خوارزميات ما بعد الكم CRYSTALS-Kyber و CRYSTALS-Dilithium.
RSA تُستخدم بنشاط في التطبيقات المحمولة لضمان نقل البيانات بشكل آمن والتحقق من صحة الخوادم وحماية المعاملات الرقمية. يتم التكامل من خلال واجهات برمجة التطبيقات التشفيرية القياسية لكلتا المنصتين الرئيسيتين.
توفر منصة Android Android Keystore — مخزن نظامي للمفاتيح التشفيرية محمي بمستوى الأجهزة Trusted Execution Environment. لا يمكن استخراج مفاتيح RSA المولدة في KeyStore من الجهاز حتى في حالة اختراق التطبيق. هذا يوفر حماية ضد مجموعة واسعة من الهجمات، بما في ذلك البرامج الضارة ذات الوصول الجذري.
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 من خلال Security Framework مع الوصول إلى Secure Enclave على الأجهزة المزودة بشريحة A7 والإصدارات الأحدث. Secure Enclave هو معالج مساعد مخصص معزول عن المعالج الرئيسي يقوم بعمليات التشفير ويخزن المفاتيح في قبو أجهزة. يمكن توليد مفاتيح RSA داخل Secure Enclave وفي Keychain البرمجي بمستويات وصول مختلفة.
في التطبيقات المحمولة الحقيقية، نادرًا ما يُستخدم RSA لتشفير البيانات الكبيرة مباشرة. الممارسة القياسية هي نظام هجين: يولد التطبيق مفتاح جلسة AES، ويشفره بالمفتاح العام RSA للخادم ويرسله إلى الخادم. يتم تشفير كل حركة المرور اللاحقة باستخدام AES، وهو أسرع 100-1000 مرة من نقل البيانات مباشرة عبر RSA.
مثل أي خوارزمية تشفير، RSA لها نقاط قوة وضعف يجب مراعاتها عند تصميم الأنظمة الآمنة. التقييم الموضوعي يساعد في اختيار الأداة المناسبة لمهمة محددة.
الميزة الرئيسية لـ RSA هي حل المشكلة الأساسية لتوزيع المفاتيح — يمكن نشر المفتاح العام بحرية دون خطر اختراق النظام بأكمله. تتجلى عالمية الخوارزمية في دعم كل من التشفير و التوقيعات الرقمية بزوج واحد من المفاتيح. بالإضافة إلى ذلك، لدى RSA نظام بيئي داعم واسع: المكتبات متاحة لجميع اللغات والمنصات.
العيب الرئيسي لـ RSA هو الأداء المنخفض مقارنة بالخوارزميات المتماثلة. فك تشفير RSA-2048 على معالج محمول حديث يستغرق حوالي 5-15 مللي ثانية، بينما يعالج AES-256 غيغابايتات من البيانات في نفس الوقت. أيضًا، RSA عرضة للهجمات الكمية عبر خوارزمية شور، مما يحد من استخدامه في الأنظمة التي تتطلب حماية طويلة الأجل للبيانات.
لمشاريع المحمول، يوصي خبراء NIST: استخدام RSA فقط لتشفير المفاتيح والتوقيعات الرقمية، اختيار طول مفتاح لا يقل عن 3072 بت للمشاريع الجديدة، دمج RSA مع AES في نظام هجين، ومتابعة تطور معايير ما بعد الكم للهجرة المخططة على المدى الطويل.
الأسئلة الشائعة
RSA هي خوارزمية غير متماثلة بزوج من المفاتيح تُستخدم لتشفير كميات صغيرة من البيانات والتوقيعات الرقمية. AES هي خوارزمية متماثلة بمفتاح مشترك واحد، تعمل أسرع 100-1000 مرة من RSA. في الأنظمة الحديثة يتم دمجهما: RSA تحمي نقل مفتاح جلسة AES، بينما AES تشفر حركة المرور الرئيسية.
الحد الأدنى الآمن للحجم منذ 2023 هو RSA-2048 وفقًا لـ NIST SP 800-131A Rev. 2. المفاتيح 1024 بت محظورة رسميًا للأنظمة الحكومية الأمريكية. للمشاريع الجديدة، يُوصى بـ 3072 بت، مما يوفر هامش أمان وقوة مكافئة لتشفير متماثل 128 بت.
نعم، RSA تُستخدم على نطاق واسع في التطبيقات المحمولة. توفر Android KeyStore لتوليد الأجهزة والتخزين الآمن لمفاتيح RSA. يوفر iOS Security Framework مع دعم Secure Enclave. لتشفير البيانات الكبيرة، يُوصى بنظام هجين RSA + AES، حيث يشفر RSA فقط مفتاح الجلسة.
على الحواسيب التقليدية، كسر RSA-2048 مستحيل عمليًا — وفقًا للتقديرات الحالية، سيتطلب أكثر من 300 مليار سنة من الحساب المستمر. ومع ذلك، يمكن للحاسوب الكمي بعدد كافٍ من الكيوبتات كسر RSA-2048 في دقائق باستخدام خوارزمية شور. وفقًا لتقديرات IBM، لن يظهر مثل هذا الحاسوب قبل 2035.
بين الخوارزميات غير المتماثلة، ECC (تشفير المنحنى الإهليلجي) شائع، يوفر أمانًا مكافئًا بطول مفتاح أقصر — ECC 256 بت يعادل RSA-3072. لعصر ما بعد الكم، اختارت NIST CRYSTALS-Kyber للتشفير و CRYSTALS-Dilithium لـ التوقيعات الرقمية في 2024.
الخلاصة
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.
اقرأ أيضًا