HPKP عبارة عن رأس استجابة أمان ويب مهملة ، والاختصار يشير إلى دبابيس HTTP Public Key Pins. كان الهدف منه منع سلطة إصدار الشهادات المخترقة أو المارقة من إصدار شهادة HTTPS موثوق بها بشكل عام ، ولكن يتحكم فيها المتسللون ، لموقع ويب. في هذا السيناريو ، سيتمكن المتسللون من فك تشفير أي حركة مرور HTTPS تم اعتراضها إلى موقع الويب المتأثر.
نصيحة: رؤوس استجابة الويب هي أجزاء من البيانات الوصفية التي يتضمنها الخادم عند الاستجابة للطلبات. يشار إلى مجموعة فرعية صغيرة من هذه برؤوس الأمان ، لأنها تتيح وتكوين ميزات أمان متنوعة.
البنية التحتية لشهادة HTTPS
تستند البنية الأساسية للشهادة التي تم إنشاء HTTPS عليها إلى شبكة ثقة. يعمل عدد من الشركات كمراجع مصدقة (CA) تقوم بنشر شهادة جذر واحدة أو أكثر. يتم تضمين مجموعة من شهادات الجذر في جميع الأجهزة في متجر موثوق. عندما يطلب موقع ويب شهادة HTTPS خاصة به من CA ، يتم توقيع الشهادة بواسطة شهادة جذر. عندما يرى جهاز الكمبيوتر الخاص بك شهادة HTTPS ، فإنه يتحقق من التوقيع. إذا كانت الشهادة موقعة بشهادة جذر تثق بها ، فإن جهاز الكمبيوتر الخاص بك يثق أيضًا في شهادة HTTPS.
نصيحة: يمكن أن يكون لدى المرجع المصدق أيضًا شهادات وسيطة موقعة بواسطة شهادة الجذر. يمكن أيضًا استخدام هذه الشهادات الوسيطة لتوقيع شهادات HTTPS لمواقع الويب.
تتمثل مهمة المرجع المصدق في إصدار شهادة فقط عندما يتحققون من أن الشخص الذي يطلبها هو المالك الحقيقي لموقع الويب. الفكرة من هذه البنية هي أنه إذا قام أحد المتطفلين بإنشاء شهادة خاصة به لموقع ويب ، فلن يتم التوقيع عليها من قبل المرجع المصدق (CA) الذي يثق به جهاز الكمبيوتر الخاص بك ، وبالتالي سترى تحذيرًا.
ماذا فعل HPKP؟
يعتمد نظام الشهادات بأكمله على مصداقية سلطات إصدار الشهادات. في الأصل ، ومع ذلك ، لم تكن هناك حماية ضد تعرض CA للاختراق من قبل المتسللين أو المارقة واختيار إصدار الشهادات بشكل غير صحيح.
تم تصميم HPKP ليكون بمثابة حماية ضد هذا الاحتمال. يسمح لمواقع الويب بتحديد قائمة حصرية من الشهادات التي يمكن الوثوق بها لموقع الويب في عملية تسمى التثبيت. كان من الممكن تثبيت الجذر أو الشهادة الوسيطة ، مما يسمح أساسًا لمرجع مصدق واحد بإصدار شهادات لموقع الويب. كان من الممكن أيضًا تثبيت شهادة موقع الويب نفسه ، مما يمنع حتى المرجع المصدق (CA) الصحيح من إصدار شهادة صالحة أخرى.
من الناحية الفنية ، ليست الشهادة نفسها هي التي تم تثبيتها ، ولكن تجزئة مفتاح الشهادة. التجزئة هي وظيفة تشفير أحادية الاتجاه. هذا يعني أنه من الممكن التحقق من أن الشهادة المقدمة إلى المتصفح بواسطة موقع الويب تتطابق مع شهادة مثبتة ، ولكن لا يمكن استخدام التجزئة لإنشاء شهادة صالحة.
تطلب HPKP تثبيت مفتاحين على الأقل ، يجب أن يكون أحدهما على الأقل نسخة احتياطية وليس في سلسلة الشهادات الحالية. تسمح لك هذه النسخة الاحتياطية بتهيئة تسليم سلس لشهادة جديدة لا تمنع المستخدمين من الاتصال.
إذا كانت شهادة HTTPS المقدمة إلى المتصفح من خلال موقع الويب لا تتطابق مع تلك المثبتة الشهادات ، فالمتصفح مطلوب لرفضها ومنع المستخدم من تجاوز الشهادة رسالة خطأ.
هيكل HPKP
يحتوي رأس HPKP على ثلاثة أجزاء إلزامية واثنين من الأجزاء الاختيارية. يجب أن يكون العنوان بعنوان "Public-Key-Pins" ، يجب أن يكون للشهادتين التاليتين أو أكثر تجزئة SHA256 بترميز base64 مثبتة بالتنسيق "pin-sha256 ="
نصيحة: SHA256 هي خوارزمية التجزئة المستخدمة بواسطة HPKP. Base64 عبارة عن مجموعة أحرف تتكون من 64 حرفًا: 0-9 ، و a-z ، و A-Z ، والأحرف الخاصة "+" و "/". يتم استخدام "=" لتعبئة ما يصل إلى آخر حرفين إذا لزم الأمر.
الإعدادات الاختيارية هي "includeSubDomains" و "report-uri". يوجه "includeSubDomains" المتصفح لتطبيق حماية HPKP على أي مجال فرعي من موقع الويب الحالي طوال مدة جهاز ضبط الوقت "max-age". "report-uri" هي ميزة تسمح بتحديد موقع ويب حيث يمكن إرسال تقارير الأخطاء ، وهي مصممة للمساعدة في تحديد المشكلات وحلها.
هناك نوع آخر من العنوان بعنوان "Public Key-Pins-Report-Only". كل شيء هو نفسه ، ومع ذلك ، إذا تم العثور على خطأ ، فلن يتم اتخاذ أي إجراء بخلاف إعادة رسالة خطأ إلى المتصفح وإلى "report-uri" إذا تم تكوين أحدهما. تم تصميم المتغير الوحيد للتقرير لتمكين الاختبار الشامل للرأس قبل النشر ، حيث لا تسبب الأخطاء مشكلات للمستخدمين.
مشاكل مع HPKP
تم إهمال HPKP لسببين رئيسيين. كانت هناك طريقتان يمكن أن يتسبب فيهما العنوان في حدوث مشكلات خطيرة لموقع الويب الذي يستخدمه ، وقد تم تسميتهما HPKP Suicide و Ransom PKP.
HPKP Suicide هي مشكلة حيث يفقد المالكون الشرعيون لموقع الويب إمكانية الوصول إلى جميع المفاتيح المثبتة. يمكن أن يحدث هذا من خلال الحذف العرضي أو القرصنة أو الفيروسات أو تلف البيانات أو لأسباب أخرى كثيرة. نظرًا لتعقيد تنفيذ HPKP بشكل صحيح ، وخاصة إبقائه محدثًا أثناء تدوير الشهادات ، فمن السهل نسبيًا ارتكاب خطأ في التكوين. ومع ذلك ، مع HPKP ، إذا أخطأت في الأمور ، فسيتم منع جميع الزوار الجدد لموقعك على الويب من الوصول إلى موقع الويب الخاص بك طوال مدة جهاز ضبط الوقت "max-age". قام موقع smashingmagazine.com بنشر ملف مقالة - سلعة يشرح بالتفصيل تجربته مع هذه المشكلة بالضبط ، والتي أدت بشكل أساسي إلى جعل الموقع في وضع عدم الاتصال لمعظم الزوار لمدة أربعة أيام قبل نشر الإصلاح.
Ransom PKP هو هجوم نظري حيث يتمكن المتسلل من الوصول إلى خادم ويب ، ثم يسرق جميع الشهادات والمفاتيح الموثوقة ثم يطلب فدية لإعادتها. في الإعداد العادي ، يمكنك فقط إنشاء مفاتيح وشهادات جديدة وعمل نسخة احتياطية من موقع الويب وتشغيله في أقل من ساعة. مع تمكين HPKP ، يتم تثبيت هذه المفاتيح ، إذا لم تتمكن من تقديم شهادة مثبتة للمستخدمين ، فلن يتمكنوا من الوصول إلى موقع الويب طوال مدة مؤقت "max-age". اعتمادًا على التكوين وفي حالة وجود نسخ احتياطية ، قد يكون من المستحيل حل هذه المشكلة.
مع كلتا هاتين المشكلتين ، سيتمكن المستخدمون الجدد من الوصول إلى موقع الويب كالمعتاد ، كما يفعلون لم يسبق لهم أن رأوا رأس HPKP القديم يوجه متصفحهم إلى الوثوق بالمفقودين الآن فقط الشهادات. ومع ذلك ، سيتعين على جميع الزوار الجدد ، مثل العملاء والقراء المنتظمين ، الانتظار طوال مدة مؤقت "max-age".
نظرًا لخطورة هذه المشكلات وتعقيد التكوين والصيانة ، كان استخدام رأس HPKP منخفضًا جدًا. في النهاية ، وافقت المتصفحات الرئيسية على إسقاط الدعم لها تمامًا وفي غضون عامين ، تم إهمال رأس HPKP عالميًا.