كيف تُولَّد مفاتيح API والأسرار وتُدار؟
قوة السر بقدر عشوائيته: ينبغي أن تأتي المفاتيح والرموز من مولّد آمن تشفيرياً بإنتروبيا لا تقل عن 128 بتاً (256 لمفاتيح HMAC)، لا من كلمة مرور أو طابع زمني. ينبغي أن تكون مفاتيح RSA بطول 2048 بت أو أكثر، محفوظة في ملفات PEM بأذونات مقيدة. مكان الأسرار خزنة أو إعدادات البيئة، مع تدويرها وفق جدول، وليس أبداً في الشيفرة أو السجلات أو عناوين URL.
ملاحظة أمنية: كل ما يُولَّد هنا يبقى خاصاً بقدر المكان الذي تلصقه فيه لاحقاً. ولّد المفاتيح محلياً، واحفظها في مدير أسرار، ودوّر أي مفتاح سبق أن أُودع في مستودع أو شورك في محادثة.
كيفية استخدام مولّد مفاتيح API
- أدخل بادئة واختر مجموعة الأحرف والطول.
- فعّل المجموع الاختباري إذا كان ينبغي لماسحاتك التحقق من صحة المفاتيح.
- حدّد عدد المفاتيح المراد توليدها وصيغة الإخراج.
- انقر «توليد» وخزّن تجزئة كل مفتاح فقط على جانب الخادم.
مزايا مولّد مفاتيح API
- بادئات مخصّصة مثل sk_live_ أو pk_test_ أو مساحة الأسماء الخاصة بك
- أجسام أبجدية رقمية أو بأحرف صغيرة أو سداسية عشرية أو Base64url أو Base32 أو UUID v4
- لاحقة اختيارية بمجموع اختباري CRC32 (على طريقة GitHub) للتحقق دون اتصال
- توليد دفعي (حتى 500) كأسطر أو JSON أو CSV أو .env
- تقدير الإنتروبيا مع تصنيف القوة ونصائح التخزين
مثال على مولّد مفاتيح API
خمسة مفاتيح سرية على طريقة Stripe
الإدخال:
Prefix: sk_live_ · Length: 32 · Charset: alphanumericالنتيجة:
sk_live_HO3L5urC0YTOvAScLnXuA31w6hcPrJ4i
sk_live_9Zm2kQeR8tVb4Xn7Jp1LcW6aYd3FgHs0
…الأسئلة الشائعة حول مولّد مفاتيح API
لماذا تُضاف بادئة إلى مفاتيح API؟
تجعل البادئات مثل sk_live_ أو pk_test_ المفاتيح قابلة للتمييز في السجلات وماسحات الأسرار، وتفرّق بين البيئات، وتتيح لك تحديد نوع المفتاح دون كشف الجزء السري.
ما خيار المجموع الاختباري؟
يُلحق CRC32 مكوّناً من 6 أحرف للجزء العشوائي، وهي التقنية التي يستخدمها GitHub حتى تتمكن ماسحات الأسرار المسرّبة من التحقق من مفتاح مرشّح دون اتصال قبل التواصل مع المزوّد.
كيف ينبغي أن أخزّن مفاتيح API على الخادم؟
خزّن تجزئة SHA-256 للمفتاح فقط (مع البادئة للبحث) واعرض المفتاح الصريح مرة واحدة فقط عند إنشائه. فإذا تسرّبت قاعدة البيانات، تبقى المفاتيح غير قابلة للاستخدام.
ما مقدار الإنتروبيا الكافي؟
استهدف 128 بتاً أو أكثر: 22 حرفاً أبجدياً رقمياً أو 32 حرفاً سداسياً عشرياً. أما UUID v4 فيحمل 122 بتاً عشوائياً، أي أقل قليلاً من هذا الهدف. وتعرض الأداة إنتروبيا الإعداد الذي اخترته.
ملاحظات تقنية
يُبنى الجزء العشوائي من crypto.getRandomValues. الإنتروبيا = الطول × log2(حجم الأبجدية): يحمل 32 حرفاً أبجدياً رقمياً نحو 190 بتاً، وهو ما يتجاوز بكثير التوصية البالغة 128 بتاً. أما المجموع الاختباري الاختياري فهو CRC32 للجسم العشوائي مرمَّزاً بـ base62، لذا فهو يضيف قابلية التمييز لا الأمان.
المراجع
- RFC 4086: Randomness Requirements for Securityلماذا تحتاج الأسرار والمفاتيح والرموز إلى عشوائية قوية تشفيرياً وما مقدار الإنتروبيا الكافي.
- NIST SP 800-57 Part 1 Rev. 5: Recommendation for Key Managementأحجام المفاتيح وقوة الخوارزميات وأعمار المفاتيح — لماذا RSA بطول 2048 بت والمفاتيح المتماثلة بطول 256 بت هي الحد الأدنى اليوم.
- OWASP Cheat Sheet Series: Secrets Managementكيف تُولَّد مفاتيح API والأسرار وتُخزَّن وتُدوَّر وتُبقى بعيدة عن الشيفرة والسجلات.