سؤالان يحسمان مكان مفتاح VPN الخاص: هل يمكن نسخ مادة المفتاح من المضيف، وهل تستطيع عملية استخدامه دون أي شخص على لوحة المفاتيح. العلامة التسويقية للمخزن لا تجيب عن أي منهما. خادم النفق الذي يجب أن يعود بعد إعادة التشغيل يحتاج إلى استخدام بلا إشراف، وهذا يستبعد كل ما يعتمد على رقم PIN يكتبه إنسان.

اختر بين النسخ والاستخدام

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

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

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

طابق المخزن مع خادم النفق

الخادم يقيّد هذا أكثر من سياسة الأمان. يأخذ WireGuard مفتاحاً خاصاً بترميز base64 من ملف أو من إدخال wg set وليس له مسار إلى مخزن شهادات، لذا مفتاح واجهة مدعوم بـ TPM ليس مطروحاً. يستطيع OpenVPN المبني ضد OpenSSL 3 تحميل مفتاح عبر URI مزوّد، ويوفّر strongSwan إضافة TPM إلى جانب دعم PKCS#11، لكن كليهما يعتمد على طريقة ترجمة حزمتك.

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

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

اجرد المفتاح قبل نقله

سجّل ما هو المفتاح قبل تغيير مكان حياته، لأن الترحيل الذي يفقد subject alternative names يكسر النفق بطريقة تُقرأ كخطأ في التوجيه. استخرج الشهادة، وأكّد أن المفتاح الخاص مقروء حيث يتوقعه الخادم، وتحقّق من أن الزوج يتطابق فعلاً.

openssl x509 -in vpn.crt -noout -subject -ext subjectAltName
openssl pkey -in vpn.key -check -noout
openssl x509 -in vpn.crt -noout -pubkey | openssl sha256
openssl pkey -in vpn.key -pubout | openssl sha256

يجب أن يكون الملخّصان الأخيران متطابقين. إن لم يكونا كذلك، يُنهي الخادم إعداده ثم يفشل في كل محاولة بخطأ شهادة أو توقيع لا يشير إلى أي مكان قريب من السبب الحقيقي. مقابل WireGuard أقصر، لأن المفتاح العام يُشتق مباشرة من الخاص: يجب أن يطبع wg pubkey < /etc/wireguard/wg0.key مفتاح النظير الذي يحتفظ به خادمك أصلاً.

الأذونات تنتمي إلى الجرد نفسه. يجب أن يعيد stat -c '%a %U:%G' /etc/wireguard/wg0.key القيمة 600 root:root، وأي شيء مقروء للمجموعة أو للعالم يعني أن المفتاح كان متاحاً بالفعل لعمليات لم تقصدها قط.

افحص المخزن ومسار الاستخدام

للتحقق ثلاثة أجزاء، والثالث هو ما يُتجاهل. أكّد وجود المفتاح في المخزن الذي اخترته، وأكّد أن الخادم حمّل ذلك المفتاح لا نسخة متبقية، ثم أكّد أنه ما زال يبدأ بعد اختفاء أثر التصدير.

certutil -store -user My
certutil -csp "Microsoft Platform Crypto Provider" -key -user
certutil -verifykeys -user My
ipsec listcerts

في Windows تسرد الأمر الأول المخزن الشخصي وتطبع مزوّد المفتاح بجانب كل إدخال، وهناك يظهر شهادة تبدو مدعومة بالعتاد لكنها تقيم في المزوّد البرمجي. والثاني يسرد المفاتيح التي يحتفظ بها مزوّد التشفير في المنصة، لذا فإن هوية VPN غائبة هناك مع وجود شهادتها تعني أن النصف الخاص يعيش في مكان آخر. على بوابة Linux يبلّغ ipsec listcerts بما حمّله strongSwan، بما في ذلك المفاتيح القادمة من إضافة TPM. قارن البصمات أو تجزئات المفتاح العام بالجرد بدل الثقة بعدد الإدخالات.

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

اكتب التجديد والتراجع

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

افحص الانتهاء قبل أن يصبح انقطاعاً: ينتهي openssl x509 -in vpn.crt -noout -checkend 2592000 برمز غير صفري عندما تنتهي الشهادة خلال ثلاثين يوماً، لذا يدخل مباشرة في فحص مراقبة. التشغيل الأسبوعي لذلك السطر يلتقط التجديد الذي لم يخطط له أحد.

الإزالة تحدث على الخادم: احذف النظير أو أبطل الرقم التسلسلي، ثم أكّد فشل النفق، لأن عميلاً يحتفظ بجلسة مخزّنة قد يخفي إبطالاً نصف مكتمل لبعض الوقت. يجب أن يصل الإبطال أيضاً إلى مسار CRL أو OCSP للمركّز، لا إلى قاعدة بيانات CA فقط. الشهادة وثيقة عامة، ويغطي ملف تعريف RFC 5280 يغطي كيفية التحقق منها؛ ولا شيء في ذلك التحقق يحمي مفتاحاً خاصاً نُسخ قبل التدوير.

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

مقالات ذات صلة