0Pricing
Cryptology Academy · درس

HS256 مقابل RS256: JWT متماثل مقابل غير متماثل

اختر خوارزمية التوقيع المناسبة لنظام المصادقة لديك

HS256 مقابل RS256: JWT متماثل مقابل غير متماثل درس مجاني في Cryptology Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cryptology Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cryptology Academy 4 دروس في المجموع.

عائلات الخوارزميات

يستخدم توقيع JWT خوارزميات متماثلة (HMAC) أو غير متماثلة (RSA وECDSA). ‏HS256 = HMAC-SHA256. ‏RS256 = RSA-PKCS1v1.5-SHA256. ‏ES256 = ECDSA-P256-SHA256. ويؤثر الاختيار في توزيع المفاتيح ونموذج الثقة.

HS256: ‏HMAC متماثل

يستخدم HS256 مفتاحًا سريًا مشتركًا واحدًا للتوقيع والتحقق معًا. ويجب أن يملك المُصدِر وكل متحقق المفتاح السري نفسه. وهذا سهل التنفيذ، لكنه يتطلب توزيع المفتاح بأمان على جميع المتحققين.

حالات استخدام HS256

يكون HS256 مناسبًا عندما تكون الجهة المصدرة والجهة المتحققة خدمة واحدة، مثل API أحادي البنية يوقّع رموزه الخاصة ويتحقق منها. لا تستخدموا HS256 إذا احتاجت خدمات مستقلة متعددة إلى التحقق من الرموز؛ إذ ستحتاج جميعها إلى المفتاح السري.

RS256: ‏RSA غير متماثل

يستخدم RS256 مفتاحًا خاصًا للتوقيع ومفتاحًا عامًا للتحقق. ولا يحتفظ بالمفتاح الخاص سوى خادم المصادقة. وتجلب جميع خوادم الموارد المفتاح العام من نقطة نهاية JWKS وتتحقق محليًا، من دون الحاجة إلى مشاركة سر.

حالات استخدام RS256

يُعد RS256 مثاليًا لبنى الخدمات المصغرة؛ إذ يوقّع موفر الهوية الرموز، وتتحقق كل خدمة لاحقة منها باستخدام المفتاح العام من دون الاتصال بـ IDP لكل طلب. ويسمح ذلك بالتوسع الأفقي من دون مخاطر توزيع المفاتيح.

ES256: بديل ECDSA

يستخدم ES256 خوارزمية ECDSA فوق P-256. ويبلغ حجم التوقيع 64 بايتًا، مقابل 256 بايتًا في RS256 لمفتاح حجمه 2048 بت. كما أن التحقق أسرع بنحو 10 مرات من RS256. ويُفضَّل عندما يكون عرض النطاق الترددي أو سرعة التحقق أمرًا بالغ الأهمية، كما في واجهات الأجهزة المحمولة وIoT.

تدوير المفاتيح

بالنسبة إلى RS256/ES256: دوّر المفاتيح بنشر المفتاح الجديد (kid جديد) في JWKS، وتوقيع الرموز المميزة الجديدة بالمفتاح الجديد، والسماح بفترة سماح لانتهاء صلاحية الرموز القديمة، ثم إزالة المفتاح القديم. يتطلب تدوير HMAC إعادة توزيع السر الجديد.

مقارنة الأداء

التحقق من HS256: ~1 µs. التحقق من RS256: ~100 µs (2048 بت). التحقق من ES256: ~50 µs (P-256). يُعد HS256 الأسرع، لكنه يتطلب مشاركة السر. يحقق ES256 أفضل توازن بين الأمان والأداء للأنظمة الموزعة.

معاينة هجوم ترويسة alg

ثغرة خطيرة: إذا وثق المتحقق بترويسة alg دون تحقق، فيمكن للمهاجم تغيير alg من RS256 إلى HS256 وتوقيع الرمز المميز باستخدام المفتاح العام للخادم (وهو عام) باعتباره سر HMAC. الإصلاح: لا تثق أبدًا بترويسة alg.

اختيار خوارزمية

القرار: خدمة واحدة → HS256. خدمات متعددة/خدمات مصغرة → RS256 أو ES256. تطبيقات جوّالة عالية الحجم → ES256. عند الشك، استخدم ES256 (P-256) أو RS256 مع مفاتيح بحجم 2048 بت أو أكثر. لا تستخدم RS512 مطلقًا في المسارات الحساسة للأداء.

المكتبات والمعايير

استخدم PyJWT (Python)، أو jose (Node.js)، أو auth0/java-jwt. ثبّت دائمًا الخوارزمية المتوقعة في استدعاء التحقق: jwt.decode(token, secret, algorithms=["HS256"]). لا تمرر algorithms=None أبدًا، ولا تحذف هذا المعامل.

تحقق سريع

لماذا يُفضَّل RS256 على HS256 في بنيات الخدمات المصغرة؟

خلاصة

يستخدم HS256 تشفيرًا متماثلًا (سرًا مشتركًا)، بينما يستخدم RS256/ES256 تشفيرًا غير متماثل (التوقيع بالمفتاح الخاص والتحقق بالمفتاح العام). استخدم الخوارزميات غير المتماثلة في الأنظمة متعددة الأطراف. التالي: استغلال ثغرات JWT.

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

هل درس «HS256 مقابل RS256: JWT متماثل مقابل غير متماثل» مجاني؟

نعم — نص درس «HS256 مقابل RS256: JWT متماثل مقابل غير متماثل» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cryptology Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Cryptology Academy 4 دروس في المجموع.

ماذا ستتعلم في «HS256 مقابل RS256: JWT متماثل مقابل غير متماثل»؟

اختر خوارزمية التوقيع المناسبة لنظام المصادقة لديك تتمرن على Cryptology Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Cryptology Academy؟

لا تُشترط خبرة سابقة. Cryptology Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «HS256 مقابل RS256: JWT متماثل مقابل غير متماثل»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Cryptology Academy هذا؟

نعم. كل درس في Cryptology Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. بنية JWT: الترويسة والحمولة والتوقيع
  2. HS256 مقابل RS256: JWT متماثل مقابل غير متماثل
  3. ثغرات JWT: alg=none والتباس المفاتيح
  4. أفضل ممارسات تنفيذ JWT الآمن
← العودة إلى Cryptology Academy