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

اختر الخوارزمية وحجم المفتاح، ثم ولّد الزوج. يظهر المفتاح الخاص بصيغة PKCS#8 PEM وJWK، والمفتاح العام بصيغة SPKI PEM وJWK. انسخ كلاً منها أو نزّله.

مجانية تعمل داخل متصفحك آخر مراجعة: الثلاثاء، 30 جمادى الأولى 1448 بعد الهجرة

تعمل هذه الأداة داخل متصفحك. ما تكتبه فيها لا يُرسل إلينا.

طريقة الاستخدام

  1. اختر الخوارزمية: RSA-OAEP للتشفير، أو إحدى خوارزميات التوقيع.
  2. اختر حجم المفتاح. 2048 بت هو الحد الأدنى المعتاد، والمفتاح 4096 بت يستغرق وقتاً أطول في التوليد.
  3. اضغط توليد زوج المفاتيح، ثم انسخ الحقول الأربعة أو نزّلها.
  4. احفظ المفتاح الخاص في مدير للأسرار، ولا تلصقه في موقع إلكتروني أو محادثة أو ملف يستطيع غيرك قراءته.

ما الذي يحتويه زوج المفاتيح

لزوج مفاتيح RSA جزء عام يحق لأي أحد امتلاكه، وجزء خاص لا يحتفظ به إلا مالكه. ويُكتب المفتاح الخاص بصيغة PKCS#8 (RFC 5958)، والمفتاح العام بصيغة SubjectPublicKeyInfo (RFC 5280). ويُغلَّف كلاهما بصيغة PEM، وهي نص Base64 بين سطري BEGIN وEND (RFC 7468). أما صيغة JWK (RFC 7517) فتحمل الأرقام نفسها بصيغة JSON.

المعامل n = p × q، وهما عددان أوليان طول كل منهما نحو نصف حجم المفتاح
الأس العام e = 65537 (0x010001)
الأس الخاص d، حيث d × e = 1 modulo (p - 1) × (q - 1)

الخوارزمية وحجم المفتاح

تُشفّر RSA-OAEP، وتوقّع RSA-PSS وRSASSA-PKCS1-v1_5. وتستخدم الخوارزميات الثلاث SHA-256 هنا. وحجم المفتاح هو طول المعامل n: فـ2048 بت هو الحد الأدنى المعتاد اليوم، و3072 و4096 بت للمفاتيح التي يجب أن تدوم أطول. والمفتاح الأكبر أبطأ في الاستخدام، لكن المفتاح العام لزوج بطول 4096 بت ما زال صغيراً.

يولّد المتصفح الزوج بمكتبته التشفيرية الخاصة (crypto.subtle.generateKey في Web Cryptography API). ولا تكتب الصفحة شيفرة RSA خاصة بها.

أين تكون المفاتيح آمنة وأين لا تكون

لا تغادر المفاتيح هذه الصفحة، فلا تُرسل ولا تُحفظ ولا تُسجَّل. والخطر في الصفحة نفسها: فأي شيء يعمل فيها، وأي إضافة في المتصفح، يستطيع قراءة المفتاح أثناء عرضه، ونسخة في الحافظة أو تنزيل تبقى على القرص حتى تُحذف.

أما المفتاح الذي يحمي مالاً أو هوية أو نظاماً إنتاجياً، فولّده حيث لا يمكن نسخ المفتاح الخاص: في وحدة أمان عتادية، أو خزنة مفاتيح، أو خادم تتحكم فيه.

مثال محلول: زوج RSA-OAEP بطول 2048 بت

اختيار RSA-OAEP و2048 بت، ثم الضغط على توليد زوج المفاتيح، يعطي مفتاحاً خاصاً بصيغة PKCS#8 يبدأ بالسطر -----BEGIN PRIVATE KEY-----، ومفتاحاً عاماً بصيغة SPKI يبدأ بالسطر -----BEGIN PUBLIC KEY-----. وفي JWK للمفتاح العام تكون kty بقيمة RSA وe بقيمة AQAB، وهي Base64url للعدد 65537. وقيمة n فيه طولها 256 بايتاً، لأن 2048 بت تساوي 256 بايتاً.

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

هل من الآمن توليد مفتاح لموقع حقيقي في هذه الصفحة؟

للتعلم والاختبار، نعم. أما للمفاتيح التي تحمي مالاً أو هويات أو نظاماً حياً فلا، لأن المتصفح وإضافاته تستطيع قراءة المفتاح أثناء عرضه. ولّد هذه المفاتيح حيث لا يمكن نسخ المفتاح الخاص.

لماذا يكون المفتاح الخاص بصيغة PKCS#8 وليس بصيغة RSA PRIVATE KEY القديمة؟

يسمّي PKCS#8 (RFC 5958) الخوارزمية داخل المفتاح، فيعرف القارئ لأي شيء يُستخدم المفتاح. وتقبله أغلب المكتبات. وإن كانت مكتبتك تريد الصيغة القديمة، فحوّله بأداة مثل openssl.

لماذا يكون الأس العام 65537؟

هو 2 مرفوعاً إلى القوة 16 مضافاً إليه 1، وهو عدد صغير فيه بت بقيمة 1 في موضعين فقط. يجعل العملية العامة سريعة، وهو القيمة التي تستخدمها المكتبات الشائعة، لذلك تستخدمه الصفحة في كل مفتاح.

هل أختار 2048 أم 3072 أم 4096 بت؟

الـ2048 بت هو الحد الأدنى المعتاد اليوم. اختر 3072 أو 4096 حين يجب أن يبقى المفتاح آمناً سنوات طويلة، واقبل أن التوقيع أو فك التشفير يستغرق وقتاً أطول مع المفتاح الأكبر.

لماذا يكون المفتاح الخاص أطول بكثير من المفتاح العام؟

لا يحمل المفتاح العام سوى المعامل والأس العام. أما المفتاح الخاص فيحمل العددين الأوليين والقيم التي تسرّع فك التشفير (RFC 8017، الملحق A.1.2)، فيكون أطول بعدة أضعاف.

هل تحتفظ الصفحة بمفاتيحي بعد أن أغلقها؟

لا. توجد المفاتيح في ذاكرة الصفحة المفتوحة فقط، ولا تحفظ الصفحة شيئاً في المتصفح، ولا حتى في التخزين المحلي. انسخ المفاتيح أو نزّلها قبل أن تغلقها.

المصادر

آخر مراجعة للأرقام والنص: الثلاثاء، 30 جمادى الأولى 1448 بعد الهجرة.

نستخدم ملفات تعريف ارتباط ضرورية لتشغيل الموقع. وبموافقتك، تستخدم Google أيضاً ملفات تعريف ارتباط للإعلانات، لعرض إعلانات مخصصة. وإذا رفضتها، فستظل ترى إعلانات، لكنها لن تكون مخصصة لك.