الخلاصة

  • مثّل RFC 3962 عدد دورات PBKDF2 بأربع ثمانيات غير موقعة بترتيب البايت الأعلى أولًا؛ فالقيمة الصفرية الموجودة صراحة تعني 4,294,967,296 دورة، بينما يعني غياب الحقل 4,096 فقط بعد أن تتاح لـKDC فرصة إرساله.
  • يمكن لقيمة مرتفعة مزورة أن تستنزف معالج العميل، ويمكن لقيمة منخفضة مزورة أن تخفض كلفة تخمين المهاجم؛ لذا كان مصدر المعلمة وحدودها المحلية جزءًا من الأمن مثل الرقم نفسه.

قبل تحويل أربع ثمانيات إلى عدد، يجب على المنفذ أن يجيب عن سؤال أسبق: هل وصلت هذه الثمانيات فعلًا؟ جعل RFC 3962 هذه المعلومة حاسمة. فملء حقل مفقود بالأصفار لا ينظف البيانات هنا، بل يبدل 4,096 عملية بأكثر من أربعة مليارات.

عرّف المستند معلمة تحويل السلسلة إلى مفتاح كعدد صحيح غير موقّع من أربع ثمانيات بترتيب big-endian. يمثّل العدد عادة دورات PBKDF2. لكن النمط 00 00 00 00 لا يعني صفر دورة؛ إنه يرمز إلى 4,294,967,296، أي (2^{32}). وبذلك يصبح واحد أصغر عدد قابل للتمثيل.

أما إذا لم تُرسل المعلمة بعدما أتيح لـKDC أن يرسلها، فالقيمة المستخدمة هي 00 00 10 00، أي 4,096. شدد النص على أن ذلك ليس توصية عامة لقاعدة Kerberos ولا قيمة افتراضية للمصادقة المسبقة المتفائلة. إنه تفسير للغياب في سياق محدد.

الوجود نفسه كان معلومة بروتوكولية

تميل لغات البرمجة وواجهات البيانات إلى جمع الصفر وnull والمصفوفة الفارغة والحقل المحذوف تحت معنى واحد. في هذا الموضع، يزيل ذلك الجمع دليلًا يغير الكلفة بمعامل 1,048,576. كان يجب أن تعبر حالة الوجود المحلل وذاكرة التخزين والطابور والسجل من دون أن تتحول إلى قيمة مفترضة.

صدر RFC 3962 في فبراير 2005 ليضع AES داخل الإطار الذي عرّفه RFC 3961. حدّد كتلًا من 128 بت ومفاتيح من 128 أو 256 بت ونمط CBC مع سرقة النص المشفر وHMAC-SHA1-96. وسجّل نوعي التشفير 17 و18 ونوعي الفحص 15 و16. ما زالت هذه الأرقام في سجل IANA لمعلمات Kerberos، لكن التسجيل يثبت تخصيص الاسم ومرجعه، لا تفعيله في نطاق أو اختياره في جلسة.

يأخذ PBKDF2 كلمة المرور والملح لينتج مفتاحًا مؤقتًا، ثم تطبق آلية RFC 3961 ثابت kerberos لاشتقاق المفتاح. كان RFC 2898 مرجع PBKDF2 في PKCS #5 آنذاك، ثم حدّثه RFC 8018. لا تجعل نتيجة AES-256 كلمة مرور بشرية تملك 256 بت من العشوائية. تزيد الدورات سعر كل تخمين، لكنها لا تخلق إنتروبيا لم تكن موجودة.

المضاعف أثقل الطرفين

لم تكن كلفة PBKDF2 سلاحًا أحادي الاتجاه. فكل زيادة تبطئ المهاجم الذي يجرب قاموسًا، وتبطئ بالقدر نفسه المستخدم الشرعي الذي يعرف كلمة المرور الصحيحة. لذلك تعامل RFC 3962 مع العدد كموازنة موارد، لا كدرجة أمن ترتفع دائمًا كلما كبر الرقم.

إذا استطاع مهاجم تزوير رد منسوب إلى KDC وإرسال عدد هائل، أمكنه إبقاء العميل مشغولًا بحساب مفتاح خاطئ. يجيز المستند حدًا أعلى لتقليل حجب الخدمة، ويقول إن هذا الحد، إن وُجد، ينبغي ألا يقل عن 50,000. وحتى مع عتاد سريع، تستغرق أربعة مليارات دورة وقتًا طويلًا، ولذلك كان السماح بإيقاف العملية إجراءً معقولًا.

وعند تزوير عدد صغير، يتغير هدف الهجوم. يراقب المهاجم رد العميل ثم يجرب كلمات المرور بكلفة أقل. لهذا تظهر الحاجة إلى حد أدنى أيضًا. لا تكفي قاعدة «اقبل ما يأتي من الشبكة»، ولا قاعدة «الأكبر أكثر أمانًا»؛ يلزم نطاق تديره المؤسسة مع حكم منفصل على أصالة المصدر.

سجل يقول iterations=4096 لا يكفي. قد يكون العدد آتيًا من رد موثّق، أو خطأ غير محمي، أو إعداد محلي، أو ذاكرة مؤقتة، أو قاعدة غياب الحقل. كما يجب معرفة هل فُحصت الحدود قبل بدء الحساب. من دون النسب، يمكن للعدد ذاته أن يكون سياسة مقصودة أو مسار توافق أو إدخالًا معاديًا.

التفاؤل استبدل الملاحظة الحديثة بالتخمين

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

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

ليست الرسالة أن 4,096 كان جواب الماضي أو أن 50,000 جواب المستقبل. تتغير قدرات العتاد وكلفة الهجوم. الرسالة أن المعلمة تحتاج مالكًا ووقت ملاحظة ومسار تحديث. حين يحذف تحسينٌ سؤالًا إلى KDC، فإنه يستبدل دليلًا حديثًا بسياسة، وعليه أن يعلن هذا الاستبدال.

اكتمال الاشتقاق لم يكن اكتمال المصادقة

ينتج PBKDF2 مادة مفتاح فحسب. يعرّف RFC 4120 تذاكر Kerberos V5 والمصادقات وحداثة الرسائل ومنع الإعادة. لا يثبت نجاح الاشتقاق وحده صحة كلمة المرور أو قبول KDC أو صلاحية التذكرة أو تفويض التطبيق أو تسليم الخدمة.

فصل RFC 4537 لاحقًا بين الأنواع التي يعرضها العميل والنوع الذي يختاره الخادم. وعمّم RFC 6113 المصادقة المسبقة ونقل المعلمات. وأضاف RFC 8009 ملفات AES مع HMAC-SHA2، بينما ألغى RFC 8429 التوصية بخوارزميات قديمة. غيّرت هذه النصوص أجزاء من السلسلة، لكنها لم تجعل رقمًا أو اشتقاقًا سلطة تطبيق.

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

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

تثبت صفحة RFC Editor وسجل Datatracker تاريخ الوثيقة، ولم يُظهر بحث الأخطاء نتائج مطابقة وقت الالتقاط. هذا وصف لسجل التصحيحات، وليس ضمانًا لكل تنفيذ.

لم تكن أهم وصية في RFC 3962 تنفيذ مليارات الدورات. كانت رفض مساواة مريحة: الصفر والغياب والقيمة الافتراضية ثلاث دعاوى مختلفة. إذا ضاعت هذه الفروق، ضاع معها تفسير من طلب الكلفة وبأي سلطة.

المصادر