مولد زوج المفتاح RSA

حجم المفتاح (بت)
التالي

يتكوّن زوج مفتاح في نظام RSA من رقمين مترابطين رياضيًا: مفتاح عام توزّعه للآخرين، ومفتاح خاص تحفظه. يقوم هذا المولّد بإنتاج كلا المفتاحين باستخدام ترميز PEM القياسي، وذلك بالاعتماد على مصدر عشوائي آمن من الناحية التشفيرية. يمكن استخدامه لتشغيل خادم توقيع JWT، أو إصدار شهادة TLS لمجلد التحضير (staging box)، أو إنشاء هوية SSH دون الحاجة إلى اللجوء إلى سطر الأوامر.

كيفية إنشاء زوج مفتاح RSA

  1. 1

    اختيار حجم المفتاح

    اختر إحدى القيم التالية: 2048 أو 3072 أو 4096 بت. كلما كانت المفتاحات أطول، كانت أكثر أمانًا، لكن عملية التوقيع والتحقق منها تصبح أبطأ.

  2. 2

    توليد

    تنشئ الأداة معاملًا جديدًا وأُسًّا خاصًا باستخدام المكوّنات الأساسية لـ WebCrypto.

  3. 3

    قم بنسخه أو تنزيله.

    استخرج المفتاح الخاص المشفر باستخدام تقنية PEM (BEGIN PRIVATE KEY) والمفتاح العام المقابل له (BEGIN PUBLIC KEY).

  4. 4

    خزن المفتاح الخاص بشكل آمن

    أدخله في أداة إدارة الأسرار أو مفتاح التخزين؛ ولا تلصقه قط في محادثات الدردشة، أو رسائل البريد الإلكتروني، أو مستودعات نصية عامة.

ما هو حجم المفتاح الذي يجب استخدامه؟

ليس أكبر حجم دائمًا أفضل؛ فالحجم المناسب يعتمد على مدة استخدام المفتاح وعلى المبلغ الذي تستعد لإنفاقه من وحدة المعالجة المركزية لكل توقيع رقمي.

إرشادات المعهد الوطني للمعايير والتقنيات (NIST) بنظرة سريعة

حجم المفتاح مستوى الأمان الاستخدام النموذجي تكلفة التوقيع النسبية
2048 بت ~112 بت توقيع JWT، شهادات TLS قصيرة الأمد، معظم واجهات برمجة التطبيقات (APIs) 1x
3072 بت ~128 بت مراكز اعتماد جذرية طويلة الأمد، التزام بمعايير FIPS > 2030 ~3x
4096 بت ~140 بت جذور ذات موثوقية عالية، توقيع مستندات على المدى الطويل ~7x

أين يندرج PEM

تُلف المفاتيح بتنسيق PKCS#8/SPKI وتُرمَّز بترميز base64، وتوضع بين علامتي -----BEGIN----- و-----END-----؛ وهو التنسيق الذي تتوقعه جميع المكتبات الرئيسية: OpenSSL، وcrypto في Node.js، وcryptography في Python، وcrypto/rsa في Go، وKeyFactory في Java.

نصائح تشغيلية

  • قم بتدوير مفاتيح التوقيع ذات النطاق الواسع مرة واحدة على الأقل سنويًا.
  • يُفضَّل استخدام خوارزمية ECDSA (P-256) أو Ed25519 في الأنظمة الجديدة؛ فهي أسرع، والتواقيع الناتجة أصغر بكثير.
  • لا تعِد استخدام زوج المفاتيح عبر أنظمة غير مرتبطة؛ فإذا تسرّب أحدها، أصبح كل ما يعتمد عليه عرضة للخطر.
  • استخدم عبارة مرور عند تخزين المفتاح الخاص على القرص؛ ويُعد ملف PEM المشفَّر (BEGIN ENCRYPTED PRIVATE KEY) المعيار القياسي.

الأسئلة الشائعة

نعم، بالنسبة لمعظم عمليات توقيع واجهات برمجة التطبيقات (API) والجلسات. لا يزال كل من المعهد الوطني للمعايير والتقنيات (NIST) والجمعية البريطانية للتكنولوجيا (BSI) يعتبر خوارزمية RSA ذات البتية 2048 مقبولة حتى عام 2030 على الأقل، رغم أن خوارزمية RSA ذات البتية 3072 تُوصى بها في الحالات التي تتطلب متانة أطول من ذلك.

يعمل المفتاح الخاص لـ PEM مع ssh-keygen -y -f key.pem لإنتاج الخط العام ssh-rsa. وللاستخدام اليومي في بروتوكول SSH، يُفضل استخدام Ed25519؛ إذ تكون المفاتيح الصغيرة الحجم وأسرع في المعالجة.

الأول هو PKCS#1 (مخصص لخوارزمية RSA فقط)، والثاني هو PKCS#8 (غلاف غير محدد الخوارزمية)، وهو الخيار المفضّل لدى المكتبات الحديثة؛ حيث يقوم هذا الأداة بإنتاج بيانات بصيغة PKCS#8.

لا يحدث ذلك؛ فعملية إنشاء المفتاح تتم محليًا عبر واجهة برمجة التطبيقات WebCrypto، ويتم تجميع ملف PEM في الذاكرة قبل عرضه على الصفحة.

أدوات ذات صلة

الأداة متاحة بلغات أخرى