الخلاصة
- ملح HKDF غير سري في العادة. يستطيع دعم استقلال الاستخلاص وتقوية أساسه التحليلي، لكنه لا يضيف إنتروبيا إلى المادة الأولية ولا يوثق مصدرها ولا يبطئ محاولات تخمين كلمات المرور.
- يدخل
infoفي مرحلة التوسيع لربط المخرجات ببروتوكول أو إصدار أو دور أو غرض. لذلك تتطلب المراجعة أربعة سجلات منفصلة: أصل IKM، وأصل الملح، وبايتات السياق المشفرة، ومسؤولية حفظ كل مخرج.
اتفاق الطرفين ليس شهادة أمان كاملة
ينجح اختبار التكامل عندما يشتق العميل والخادم البايتات نفسها. قد يكتب الفريق بعد ذلك أن «اشتقاق المفتاح تم التحقق منه». لكن إذا لم يدخل في الحساب ما يميز مفتاح التشفير عن متجه التهيئة أو مفتاح حماية الترويسة، فإن التطابق يثبت تنفيذ عملية واحدة فقط. ولا يثبت أن المخرج خُصص للعمل الصحيح.
لهذا يقسم HKDF الاشتقاق إلى مرحلتين. تستخلص المرحلة الأولى مفتاحاً وسيطاً شبه عشوائي من مادة قد لا يكون توزيعها منتظماً. ثم تنتج المرحلة الثانية مخرجات محددة الأغراض من ذلك المفتاح. قدّم Hugo Krawczyk الأساس التحليلي لهذا النموذج، وشارك Pasi Eronen في تأليف RFC 5869؛ فلا ينبغي نسب المعيار إليه منفرداً. كما يسجل IETF اسمه ضمن مؤلفي RFC 2104 الخاص بـHMAC، وهو البناء الذي يستخدمه HKDF. ويشير سجل جوائز ACM لعام 2025 إلى أثر عمله في الأسس النظرية والبروتوكولات العملية للاتصال الآمن.
المغزى العملي ليس سيرة تكريم، بل حد تصميمي انتقل إلى بروتوكولات كثيرة: السر الوسيط لم يحصل بعد على إذن بأن يكون مفتاح إرسال أو IV أو سراً للتصدير.
الاستخلاص يرتب الإنتروبيا الموجودة
تحسب HKDF-Extract القيمة التالية:
PRK = HMAC-Hash(salt, IKM)
قد تحتوي مادة المفتاح الأولية IKM على بنية معروفة جزئياً أو توزيع غير متساو. يستطيع Extract تركيز عدم اليقين الموجود فيها في مفتاح شبه عشوائي ثابت الطول يصلح لتغذية HMAC في المرحلة اللاحقة. لكنه لا يضاعف عدد الاحتمالات الحقيقية. إذا كانت IKM كلمة مرور بشرية من مجموعة صغيرة، يستطيع المهاجم تجربة المرشحين وتشغيل الحساب السريع نفسه.
ولهذا يعتمد تجاوز Extract على طبيعة المصدر. إذا كانت IKM مفتاحاً شبه عشوائي جيداً بالفعل فقد يجوز استخدام Expand مباشرة في بعض التطبيقات. أما قيمة Diffie–Hellman المشتركة فلا تُعامل تلقائياً كمفتاح HMAC منتظم؛ ويوصي RFC 5869 بعدم إسقاط الاستخلاص في هذه الحالة.
يستخدم NIST SP 800-56C Rev. 2 التقسيم نفسه بين الاستخلاص والتوسيع والاستخلاص المتبوع بالتوسيع في طرق إنشاء المفاتيح. ليست هذه أسماء دوال تجميلية، بل طريقة لتحديد الافتراض الذي تحقق عن المصدر قبل منح البايتات وظيفة تشغيلية.
العلني لا يعني المتروك للمهاجم
يصف RFC 5869 الملح بأنه قيمة اختيارية غير سرية. وإذا غاب استُخدمت سلسلة أصفار بطول ناتج دالة التجزئة. يمكن للبروتوكول إرسال الملح صراحة، أو اشتقاقه من nonces علنية موثقة، أو إعادة استعمال قيمة ثابتة عندما يسمح النموذج بذلك.
تأتي فائدته من دعم استقلال استعمالات دالة التجزئة والاستخلاص الأقل اعتماداً على المصدر وتقوية شروط التحليل، لا من إخفائه. ومع ذلك، يجب أن يكون الملح مستقلاً عن IKM. فإذا ساهم طرف في اختيار القيم التي تُكوّنه، وجب على البروتوكول منع المهاجم من فرضها بلا توثيق.
لذلك لا يكفي حقل مراقبة يقول salt=true. ينبغي الفصل بين الغياب الذي يؤدي إلى القيمة الصفرية الافتراضية، والملح الثابت المرتبط بإصدار بروتوكول، والملح العلني الحديث والموثق، والملح الذي يستطيع طرف غير موثق التأثير فيه. كل هذه القيم قد تكون مرئية، لكنها لا تحمل البرهان نفسه.
يقدم RFC 8188 مثالاً واضحاً في تشفير محتوى HTTP. يدخل ملح منقول في HKDF-Extract، بينما تدخل سلسلة ثابتة تسمي ترميز المحتوى في info خلال التوسيع. كلاهما علني، لكن الأول يشارك في تكوين PRK من المادة الأولية، والثاني يحدد استعمال المخرج.
ملح كلمة المرور يحتاج إلى كلفة
يمنع الملح الفريد في أنظمة كلمات المرور إعادة استخدام الجداول المحسوبة مسبقاً على حسابات كثيرة، ويجعل كلمتي مرور متساويتين تنتجان سجلات مختلفة. لكنه لا يزيل ضيق مساحة الاختيارات البشرية. مقاومة التخمين خارج الاتصال تحتاج أيضاً إلى كلفة مقصودة لكل محاولة، زمنية أو مرتبطة بالذاكرة.
لا يتضمن HKDF معامل عمل ولا مرحلة صعبة الذاكرة. يوضح RFC 5869 أن Extract يركز الإنتروبيا الموجودة ولا يضخمها، وأن البناء لا يحتوي آلية إبطاء مخصصة لكلمات المرور. يضع PBKDF2 عدد التكرارات ضمن مدخلاته. ويجعل Argon2 الذاكرة وعدد الممرات والتوازي جزءاً من التصميم. لا يحول أي منهما كلمة ضعيفة إلى سر قوي، لكنهما يرفعان ثمن اختبار قاموس كامل بطريقة لا تحققها دعوة HKDF سريعة.
ومن ثم فعبارة «استخدمنا ملحاً» لا تغلق التدقيق. يجب معرفة أي بناء استهلكه، وما فئة المادة الأولية، وما كلفة التخمين الواحد، وهل المطلوب تفرد الملح أم استقلاله، وأي جهة فرضت الشرط.
info يمنح المخرج عنوانه الوظيفي
تأخذ HKDF-Expand كلاً من PRK وinfo وطول المخرج. يمكن أن يحمل info رقم البروتوكول أو معرف الخوارزمية أو الهوية أو الدور أو الطول. مهمته ربط البايتات بالتطبيق والسياق، وخصوصاً عندما تظهر IKM نفسها في أكثر من نطاق.
لا يؤدي الملح هذه المهمة بدلاً منه. ينصح RFC 5869 أيضاً بعدم إخراج PRK مباشرة حتى إذا كان طولها كافياً، لأن ذلك يتجاوز info. كما لا ينصح بدفع معلومات السياق إلى Extract كحل بديل. PRK قدرة وسيطة على الاشتقاق، وليست مفتاحاً له صلاحية استعمال محددة.
يجعل TLS 1.3 العقد ظاهراً في البايتات. تضيف HKDF-Expand-Label السابقة tls13 إلى الوسم، ويمكن للسياق أن يتضمن تجزئة نص المصافحة. تدخل أسماء مثل finished وkey وiv في العملية المشفرة نفسها.
يشتق QUIC مفتاح AEAD وIV ومفتاح حماية الترويسة بواسطة quic key وquic iv وquic hp. وينص RFC 9001 على أن هذه الوسوم تفصل أيضاً مفاتيح QUIC عن مفاتيح TLS. إذا احتفظ السجل بجملة «نجح HKDF-SHA256» فقط، فقد حذف الدليل الذي يحدد وظيفة المخرج.
يدمج HPKE في LabeledExtract وLabeledExpand كلاً من HPKE-v1 ومعرف حزمة التشفير ووسم الغرض، فيربط السر بالمخطط والإصدار والخوارزميات المختارة. ويستخدم MLS السابقة الخاصة به MLS 1.0 وجدول مفاتيح يشتق أسراراً مختلفة لكل حقبة ووظيفة. لا يصنع النص المقروء هذا الفصل تلقائياً؛ يلزم ترميز غير ملتبس وفحص متسق للإصدار والحزمة عند كل تطبيق.
أربعة إيصالات لعملية واحدة
أولها إيصال مصدر IKM. اتفاق Diffie–Hellman موثق، ومفتاح عشوائي، وسر مشترك مسبقاً، وكلمة مرور، ومخرج KDF أخرى قد تتساوى في الطول وتختلف جذرياً في الإنتروبيا وسيطرة المهاجم.
الثاني إيصال مصدر الملح: قاعدة توليده وإصداره وحالة توثيقه وسياسة إعادة استعماله وأساس الحكم باستقلاله عن IKM. «غير سري» وصف للسرية وليس توثيقاً للأصل.
الثالث إيصال السياق المشفر. ينبغي الاحتفاظ ببصمة غير سرية للسابقة والإصدار والحزمة والوسم والدور وتجزئة المصافحة وترميز الطول كما وصلت فعلاً إلى Expand. اسم لطيف في لوحة التحكم لا يكشف ضم حقول ملتبساً أو اختلافاً في الترميز.
الرابع إيصال عهدة المخرج: هل هو مفتاح أم IV أم PRK أم سر تصدير أو استئناف، ومن يحق له استعماله، وفي أي حقبة يعيش، ومتى يُمحى. الاشتقاق الصحيح لا يصلح nonce معاد الاستخدام ولا سراً قديماً لم يُحذف.
بهذه الإيصالات يصبح تطابق المخرجات دليلاً في نطاقه الصحيح: يثبت توافق الحساب، ولا يثبت وحده توثيق الطرف أو جودة المصدر أو صحة الغرض أو إنهاء عمر المفتاح.
المصادر
- RFC 5869 — دالة HKDF للاستخلاص والتوسيع المبنية على HMAC
- Cryptographic Extraction and Key Derivation: The HKDF Scheme
- صفحة Hugo Krawczyk في IETF Datatracker
- دليل جوائز ACM لعام 2025
- NIST SP 800-56C Rev. 2
- RFC 8446 — TLS 1.3
- RFC 9001 — استخدام TLS لتأمين QUIC
- RFC 9180 — التشفير الهجين بالمفتاح العام
- RFC 9420 — أمن طبقة التراسل
- RFC 9106 — دالة Argon2 الصعبة على الذاكرة
- RFC 2898 — مواصفة PKCS #5 الإصدار 2.0
- RFC 8188 — ترميز المحتوى المشفر لـHTTP
إحاطة الأعضاء
سياق أعمق للملف الشخصي
سجّل الدخول بمستوى العضوية المناسب لفتح الإحاطة الكاملة وملاحظات المصادر.
للدائرة الاستراتيجية فقط
الدائرة الاستراتيجية
مفتوح لجميع القراء. افتح إحاطات الملف الشخصي بعد الانضمام وتسجيل الدخول.
انضم إلى الدائرة الاستراتيجيةلأعضاء تحالف القيادات فقط
تحالف القيادات
لأصحاب الأصول الفكرية المؤهلين وللإدارة؛ سجّل الدخول للوصول إلى إحاطات التحالف.
انضم إلى تحالف القيادات
