تشفير / توقيع RSA
التشفيرتشفير RSA-OAEP وتوقيع RSASSA-PKCS1-v1_5 عبر Web Crypto. أنشئ زوج مفاتيح أو الصق مفتاح PEM.
في هذه الصفحة
ما هو RSA؟#
RSA تشفير غير متماثل: يعمل بزوج مفاتيح متطابق بدلًا من سرّ مشترك واحد. المفتاح العام يمكن توزيعه على أيّ شخص — وظيفته الوحيدة قفل البيانات وفحص التوقيعات. أمّا المفتاح الخاص فيبقى معك وهو الشيء الوحيد القادر على فتح بيانات شُفِّرت بالمفتاح العام، أو إنتاج توقيع يتحقّق منه الجميع. هذا الانفصال هو ما يمكّن طرفين لم يتبادلا سرًّا قطّ من تبادل رسائل سرّية وإثبات الصحّة.
تغطّي هذه الصفحة العمليّات الأربع التي يُستخدم RSA لها عادةً، كلّها عبر محرّك Web Crypto الأصلي للمتصفح:
- تشفير / فك التشفير تستخدم RSA-OAEP مع SHA-256 — مخطّط الحشو المُصادَق الحديث. رسالة قصيرة شُفِّرت بالمفتاح العام لا يمكن قراءتها إلا بالمفتاح الخاص.
- توقيع / تحقّق تستخدم RSASSA-PKCS1-v1_5 مع SHA-256 — مخطّط التوقيع الأكثر توافقًا، الذي لا تزال معظم ملفات JWT وسلاسل X.509 تستخدمه.
- توليد المفاتيح يُنتج زوجًا بطول 2048 أو 3072 أو 4096 بت مع أُسّ عام 65537، مُصدَّرًا بصيغة PEM المعيارية (SubjectPublicKeyInfo للمفتاح العام، وPKCS#8 للمفتاح الخاص).
RSA محدود عمدًا في الحمولات القصيرة. مع RSA-2048 وSHA-256، أكبر رسالة يمكنك تشفيرها نحو 190 بايت؛ ولأيّ حجم أكبر، استخدم أداة التشفير المتماثل واحمِ مفتاحها بـ RSA بدلًا من ذلك.
كيفية الاستخدام#
- أنشئ زوجًا. اختر حجم مفتاح (2048 / 3072 / 4096) وانقر إنشاء زوج المفاتيح. يُملأ صندوقان للقراءة فقط: المفتاح العام والمفتاح الخاص، كلاهما بصيغة PEM. انسخ كلًّا منهما إلى مكان آمن — المفتاح الخاص هو ما لا يجب أن تُشاركه أبدًا.
- اختر الوضع: تشفير، أو فك التشفير، أو توقيع، أو تحقّق.
- ضع المفتاح الصحيح في حقل المفتاح وفقًا للوضع:
- تشفير → الصق المفتاح العام.
- فك تشفير → الصق المفتاح الخاص.
- توقيع → الصق المفتاح الخاص.
- تحقّق → الصق المفتاح العام.
- اكتب الرسالة. للتحقّق، الصق أيضًا التوقيع (base64) في حقل التوقيع.
- شغّلها. يُبلِّغ سطر الحالة النتيجة — فبالنسبة للتحقّق يصرّح صراحةً إن كان التوقيع صالحًا أم غير صالح.
الميزات الرئيسية#
- خوارزميتان، زوج مفاتيح واحد. يصلح ملف PEM نفسه لتشفير OAEP وتوقيع PKCS#1، لأنّ Web Crypto يأخذ الخوارزمية وقت الاستيراد.
- مخرج PEM معياري. المفاتيح العامة SPKI، والخاصة PKCS#8 — الصيغ التي تقرأها كلّ لغة ومنصةً أصليًّا.
- أُسّ عام 65537. القيمة المختارة عالميًّا؛ صغيرة بما يكفي للسرعة، كبيرة بما يكفي لتجنّب نقاط الضعف المعروفة.
- تواقيع متوافقة. RSASSA-PKCS1-v1_5 هو الصيغة التي تتوقّعها ملفات JWT وتوقيع الأكواد وسلاسل الشهادات في العالم الحقيقي.
- رفع صفري. توليد المفاتيح والتشفير والتوقيع كلّها محليّة في متصفحك؛ المفتاح الخاص لا يلامس خادمًا أبدًا.
مثال عملي#
انقر إنشاء زوج المفاتيح مع اختيار 2048. يَتموّل صندوق المفتاح العام بكتلة PEM على هذا الشكل:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyY7v...(lines of base64)
-----END PUBLIC KEY-----
ويَتموّل صندوق المفتاح الخاص بكتلة -----BEGIN PRIVATE KEY----- أطول. والآن بدِّل إلى تشفير، الصق المفتاح العام في حقل المفتاح، اكتب handshake: 0x4F2A كرسالة، وشغّلها. المخرج كتلة base64 واحدة بنحو 344 محرفًا — تمامًا 256 بايت من نصّ RSA-2048 المُشفَّر، مرمَّزةً بـ base64.
بدِّل إلى فك التشفير، الصق المفتاح الخاص في حقل المفتاح، أفلِت تلك الكتلة في حقل الرسالة، وشغّلها: يعود handshake: 0x4F2A الأصلي. أما التوقيع، فالتدفق نفسه مع توقيع يُنتج توقيع base64 بطول 344 محرفًا سيُؤكّده تحقّق كصالح مقابل المفتاح العام — ويُبلِّغ عنه كغير صالح إن غيّرت محرفًا واحدًا من الرسالة أولًا.
الأسئلة الشائعة#
لماذا يستطيع RSA تشفير الرسائل القصيرة فقط؟#
RSA يعمل على أرقام modulo حجم المفتاح. مع RSA-2048 لديك كتلة بحجم 256 بايت، ويستهلك حشو OAEP 2 * hashLen + 2 بايت منها (98 لـ SHA-256)، تاركًا 190 بايت للرسالة نفسها. هذا ب التصميم — RSA للأ keys والتوقيعات، لا للبيانات بالجملة. النمط المعياري «هجين»: شفِّر البيانات بالجملة بـ AES (استخدم أداة التشفير المتماثل)، ثم شفِّر مفتاح AES وحده بـ RSA.
2048 أم 3072 أم 4096 بت؟#
2048 هو الأساس الحالي وما زال يُعدّ كافيًا لمعظم الاستخدامات. 3072 يطابق قوّة متماثلة بحجم 128 بت تقريبًا؛ و4096 هو الخيار المحافظ لمفاتيح تريد أن تدوم عقدًا أو أكثر. كلّ خطوة أعلى تكلّف وقتًا حقيقيًّا في التوليد وكلّ عملية، مع عوائد أمنية متناقصة.
ما الفرق بين التشفير والتوقيع؟#
التشفير مسألة سرّية: المفتاح العام يُقفل، والمفتاح الخاص يفتح. والتوقيع مسألة صحّة: المفتاح الخاص يُنشئ التوقيع، والمفتاح العام يفحصه. يستخدمان زوج المفاتيح نفسه لكن بخوارزميتين مختلفتين (OAEP مقابل PKCS#1) ويُجيبان عن سؤالين مختلفين — «هل يستطيع أحد قراءة هذا؟» مقابل «هل مُنتِج هذا المفتاح حقًّا هو من أنشأه؟».
هل يُرسل مفتاحي الخاص إلى أيّ مكان حين أُنشئه أو أستخدمه؟#
لا. التوليد والتشفير وفكّ التشفير والتوقيع والتحقّق كلّها تُنفَّذ داخل الصفحة بـ Web Crypto. كتل PEM موجودة في تبويب متصفّحك فقط؛ ولا يُنقل أيّ شيء. إن كنت تتعامل مع مفتاح خاص للإنتاج، فأنشئه في بيئة تتحكّك بها بدلًا من لصقه في صفحة ويب من الأساس.