الطلب الذي يظهر عند بدء عميل VPN يسهل إساءة قراءته. فهو ليس كلمة مرور حساب VPN، وليس كلمة مرور النفق، وإدخاله لا يثبت أن الاتصال آمن. إنه يفتح تمثيلاً مخزّناً واحداً لمفتاح خاص كي يتمكن العميل من قراءة مادة المفتاح واستخدامها للمصادقة. وكل ما يحدث بعد ذلك سؤال مختلف.

موضع الخطأ في الممارسة هو الحواف: يفترض الناس أن عبارة المرور تحمي النفق العامل، أو أن تغييرها يبطل نسخة من المفتاح تسرّبت بالفعل. يفشل الافتراضان معاً، وكلاهما يفشل بطريقة تترك بيانات اعتماد مكشوفة بينما يعتقد المشغّل أنه تعامل معها.

نافذة واحدة، وأسرار مختلفة عدة

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

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

ما يغطيه التشفير على القرص

يأتي مفتاح PEM المشفّر بشكلين، ويخبرك الترويسة بأي شكل لديك. يبدأ شكل PKCS#8 الحديث بـ -----BEGIN ENCRYPTED PRIVATE KEY-----؛ ويبدأ شكل PEM القديم، الشائع في إعدادات OpenVPN الأقدم، بـ -----BEGIN RSA PRIVATE KEY----- ويحمل Proc-Type: 4,ENCRYPTED وسطر DEK-Info تحته مباشرة. يحتفظ الملف بالمفتاح الخاص مشفّراً تحت مفتاح مشتق من عبارة المرور، عادة عبر KDF قائم على كلمة المرور مع عدد تكرارات أو معامل عمل معلن. وتغطي وثائق OpenSSL pkey الصيغ وخيارات عبارة المرور التي تنطبق عند قراءة أحدها.

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

head -3 vpn.key
openssl pkey -in vpn.key -noout -pubout
openssl pkcs12 -in bundle.p12 -info -noout

يعرض head -3 الترويسة، وفي ملف قديم يعرض سطري Proc-Type و DEK-Info اللذين يثبتان التشفير؛ وسطر واحد وحده ليس دليلاً في أي اتجاه. ويطلب سطر pkey عبارة المرور ويطبع النصف العام فقط، مما يثبت أن الملف وعبارة المرور يعملان دون كشف المفتاح الخاص. لا تستخدم -text لهذا الفحص: فهو يطبع المكوّنات الخاصة، privateExponent وprime1 وprime2 وما تبقى، ويجب ألا تُلصق تلك المخرجات في أي مكان، لا في تذكرة ولا دردشة ولا سجل. كما يخبرك أمر PKCS#12 ما إذا كانت الحزمة تحتوي كلمة مرور MAC أو تشفير منفصلة، وهذا يستحق معرفته قبل أن تسلّمها إلى زميل.

ما الذي يتوقف عن حمايته بعد تحميل المفتاح

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

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

لماذا يعود الطلب باستمرار

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

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

الفقدان والانكشاف ليسا الإصلاح نفسه

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

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

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