OpenVPN بدون CA: كيف يتحقق peer-fingerprint من الأقران
البصمة تُثبّت شهادة واحدة، لا سرًّا مشتركًا. تتبّع ما يشمله الملخّص، وكيف يبني كل طرف قائمة السماح، وما الذي تكلّفه إعادة التجديد.
ينتقل نشر صغير إلى البصمات لأن سلطة شهادة تبدو بنية تحتية لا يملك أحد وقتًا لتشغيلها. الغريزة معقولة، أما الطريق المختصر الذي يسلكه الناس بدلًا منها، وهو نسخ سر قناة بيانات واحدة إلى الطرفين، فليس كذلك. إعداد peer-fingerprint يُبقي بنية TLS سليمة: كل طرف لا يزال يحمل مفتاحه الخاص وشهادته، وكل طرف لا يزال يتحقق من الآخر. ما يتغير هو موضع تثبيت التحقق، من جهة إصدار موثوقة إلى قائمة قصيرة من الملخّصات المثبتة. ولأن الملخّص يغطي الشهادة كاملة لا اسمًا فقط، يتحول التجديد إلى العملية التي تستهلك وقتًا حقيقيًا.
ما الذي تلتزم به البصمة فعليًا
بصمة الشهادة هي ملخّص للشهادة كاملة بترميز DER، وليست ملخّصًا لمفتاحها العام ولا لاسم موضوعها. لذا فشهادتان لهما الاسمان نفسهما والمفتاح نفسه لكن تواريخ صلاحية مختلفة لهما بصمتان مختلفتان. هذا ما يجعل التثبيت دقيقًا، وهو أيضًا ما يجعل التجديد معطِّلًا. لا يمكن أن يعني التثبيت الثقة بمفتاح بشكل عام، لأنه يسمّي أثرًا واحدًا في لحظة واحدة من حياته. قد يعرف أي شخص الملخّص، ومعرفته به لا تثبت شيئًا بحد ذاتها.
openssl x509 -in server.crt -noout -fingerprint -sha256
openssl x509 -in client-07.crt -noout -fingerprint -sha256
حيازة المفتاح الخاص المطابق هي ما يثبت أن النظير يحمل تلك الشهادة، والملخّص هو كيف يقرر الطرف الآخر ما إذا كان يتوقع تلك الشهادة أصلًا. هذا الفصل هو سبب أن هذا التصميم ليس ترتيب السر المشترك القديم: المفتاح المشترك يوثّق أي شخص يعرف البايتات نفسها، بينما التثبيت يوثّق شهادة واحدة. الجهاز المختلف يحصل على مُدخل خاص به بدل نسخة من السر نفسه، وهو فرق صغير في الملفات وكبير في نطاق الضرر.
الخريطة تبادلية لا متماثلة
يحتاج كل طرف نهائي إلى شيئين: مفتاحه الخاص مع شهادته، وبيان عن شهادات الأقران التي سيقبلها. عند العميل ذلك البيان هو ملخّص شهادة الخادم؛ وعند الخادم هو قائمة ملخّصات العملاء المسجلين. مثال رسمي لإعداد صغير في Community 2.6 يُظهر الترتيب مع peer-fingerprint، ويستحق القراءة قبل اختيار نموذج الثقة هذا لنشر حقيقي. الاتجاهان ليسا قائمة واحدة معكوسة، وهما لا يفشلان في اللحظة نفسها.
| Verification direction | What is pinned | What never leaves that endpoint | How a wrong pin shows up |
|---|---|---|---|
| Client checks the server | One digest, for the server certificate | The server private key | The client aborts during the TLS handshake |
| Server checks the client | A digest per enrolled client | Each client private key | The server rejects the peer before a tunnel exists |
إضافة جهاز تعدّل قائمة سماح على الخادم، دون نسخ المادة الخاصة لعميل موجود ودون نقل مفتاح الخادم إلى أي مكان. كذلك يفشل الاتجاهان بشكل مستقل، وهو أمر مفيد أثناء التشخيص: أي طرف يغلق المصافحة هو الطرف الذي لم يُلبَّ توقعه. إذا رفض العميل الخادم، فالملخّص لا يطابق الشهادة المعروضة. وإذا رفض الخادم العميل، فملخّص ذلك العميل مفقود من القائمة، أو أن العميل يعرض شهادة غير التي سُجّلت.
التسجيل: كيف ينضم جهاز جديد
ولّد مفتاح الجهاز الجديد وشهادته حيث سيقيم المفتاح الخاص، ثم انقل الأثر العام فقط إلى الطرف الذي يحتاج إلى تثبيته. انقل الملخّص المتوقع عبر قناة تثق بها أصلًا، ثم قارن الشهادة كاملة بدل اسم يبدو مألوفًا. الملخّص المنسوخ من التنزيل غير المتحقق نفسه الذي جاءت منه الشهادة لا يثبت سوى أن الملفين يتفقان مع بعضهما. هذا فحص اتساق لا فحص هوية، وهو أهدأ طريقة يُضعَف بها هذا التصميم.
على الخادم، إضافة الملخّص تغيير في التهيئة يمر عبر المدير المعتاد ويتبعه إعادة اتصال. تأكد من أن الجهاز الجديد يتصل وأن جهازًا أُزيل ملخّصه لم يعد يتصل. الاختبار الذي يغطي الحالة الإيجابية فقط يترك قائمة السماح غير متحققة، وهي بالضبط الحالة التي ستكون فيها بعد ستة أشهر.
التجديد هو اللحظة المكلفة
كل شهادة تنتهي صلاحيتها، والشهادة الجديدة لها ملخّص جديد حتى إذا بقي المفتاح والأسماء كما هما. تحت جهة إصدار يكون التجديد شفافًا للأقران الذين يثقون بتلك الجهة؛ وتحت التثبيت يكون حدث تسجيل لكل نظير يثبّت الشهادة.
خطّط للترتيب قبل تاريخ الانتهاء لا بعده. وزّع الملخّص الجديد على الأطراف التي تتحقق منه، وطبّق التغيير، وبعد ذلك فقط استبدل الشهادة على الطرف النهائي. هذا الترتيب لا يترك نافذة يختلف فيها الطرفان حول أي شهادة سارية. أبقِ القائمة نفسها قيد المراجعة أيضًا، لأن القائمة المثبتة تتراكم فيها مُدخلات لأجهزة أُحيلت قبل أشهر. كل مُدخل قديم هو هوية لا تزال توثّق إذا نجا مفتاحها، لذا فإن حذف واحد إجراء أمني لا عمل منزلي.
ما لا تقرره خريطة الثقة
التحقق طبقة واحدة، والخريطة المثبتة لا تقول شيئًا عن مجموعة العناوين، ولا المسارات المدفوعة، ولا MTU المسار، ولا سياسة الجدار الناري. تبقى هذه تهيئة منفصلة بأنماط فشل منفصلة. النفق الذي يوثّق ولا يمرر أي حركة هو تحقيق مختلف عن نفق لا يقوم أبدًا.
الخريطة أيضًا لا تتوسع إلى ما لا نهاية، والنشر الأكبر ينتهي عند بنية PKI قائمة على جهة إصدار. هذا التفضيل يتعلق بالتشغيل لا بالتشفير، لأن إضافة الهويات وسحبها عبر سلطة واحدة أرخص من تعديل قائمة على كل نظير مع نمو الأسطول. وحين لا يدعم تنفيذ العميل هذا الخيار، فالجواب نموذج ثقة متوافق يوثّقه ذلك العميل، أو بديل مدعوم. كتم تحذير التحقق لا يضيف ذلك الدعم، وكل قيمة التصميم أن التحقق لا يزال يحدث.