OpenVPN tls-crypt-v2: ما الذي يفعله مفتاح العميل والكتلة المغلفة
يحتفظ ملف تعريف tls-crypt-v2 بمفتاح تحكم للعميل ونسخة مغلفة لا يفتحها إلا الخادم. أبقِ كل كائن، وكل خطوة إبطال، منفصلة.
يبدو لصق ملف تعريف tls-crypt-v2 في تذكرة أمرًا غير ضار حتى تحسب ما يحتويه الملف. مفتاح قناة التحكم الخاص بالعميل يجاور نسخة مشفرة من المفتاح نفسه، وكائن ثالث، هو مفتاح التغليف، لا يغادر الخادم المستقبل أبدًا. هذه الثلاثة تجيب عن أسئلة مختلفة تتعلق بالحيازة والمشاركة والإبطال. وفصلها يحسم معظم الخلافات حول السياسة قبل أن تبدأ.
ما الذي يحتويه ملف التعريف فعليًا
النصف الخاص بالعميل في tls-crypt-v2 هو مفتاح زائد نسخة مغلفة منه. يستخدم العميل المفتاح العادي لحماية قناة التحكم ويسلّم النسخة المغلفة إلى الخادم أثناء الإعداد، فيستعيد الخادم المفتاح نفسه دون تخزين نسخة نصية صريحة لكل عميل. مفتاح التغليف هو ما يجعل هذا الاسترجاع ممكنًا وهو ملك للجانب المستقبل وحده. وكل ما يلي يتفرع من موضع وجود هذه الكائنات الثلاثة.
| Object | Where it lives | What can open it | What a leak costs |
|---|---|---|---|
| Server wrapping key | accepting servers only | the unwrap step inside the server | every wrapped copy issued to that group becomes readable |
| Wrapped client key | inside the client profile | the server wrapping key | it names a client and exposes its metadata, but not the key inside |
| Client control key | inside the client profile, usable as-is | the client that owns it | someone can open handshakes as that client until the server refuses the key |
اقرأ الجدول بحسب الحيازة لا بحسب الاسم، وتظهر النتائج. فقدان مفتاح التغليف هو الحدث المكلف، لأن شيئًا في ملف التعريف لا يستطيع إعادة بنائه والاستعادة الصادقة هي إعادة إصدار المجموعة. أما تسرب ملف تعريف فأرخص لكنه أكثر شيوعًا بكثير، لأن الملفات تُلصق في التذاكر من أشخاص يعتقدون أن النسخة المغلفة تجعل الملف آمنًا للمشاركة. يحتاج الفشلان إلى استجابتين مختلفتين، ولهذا السبب تُبقى الكائنات منفصلة.
لماذا لا تمثل النسخة المغلفة القصة كاملة
يحمل ملف التعريف المادة القابلة للاستخدام الخاصة بالعميل مع نظيرها المغلف، لذا فإن حماية النسخة المخصصة للخادم لا تقول شيئًا عن حماية الملف. الكتلة آمنة للإرسال وغير آمنة للنشر. والبيانات الوصفية بداخلها مرئية لكل من يستقبل الكتلة، بمن فيهم من يقرأ لاحقًا التذكرة التي لُصقت فيها.
تعامل مع ملف التعريف كبيان اعتماد لا كعينة إعداد. الملف المسرب يمنح حامله هوية عميل صالحة حتى يتوقف الخادم عن قبول تلك الهوية، والتغليف لا يفعل شيئًا تجاه تلك النافذة. أصدر ملف تعريف واحدًا لكل عميل ليبقى السحب قرارًا بملف واحد، وانسخ مفتاح التغليف احتياطيًا بعيدًا عن إعداد الخادم الذي يمكّنه. لا عادة من الاثنتين تصلح ملفًا مخترقًا، لكنهما تحددان سرعة احتواء التالي.
أين يقع خطاف التحقق في المصافحة
يعمل خطاف التحقق قبل تعريض حزمة TLS، ومهمته فحص البيانات الوصفية المحمولة في الكتلة المغلفة. يتلقى تلك البيانات الوصفية إضافة إلى بيئة صغيرة موثقة، وله أقل مما لدى خطاف مصادقة للعمل به. افتراض أنه يرى أسماء المستخدمين أو حالة الجلسة أو متغيرات الإضافات هو الطريق المعتاد لكتابة هذا الخطاف بشكل سيئ. اقرأ قسم الدليل الخاص بالخطاف بدلًا من استعارة توقعات من خطاف آخر.
حالة خروجه هي القرار: نتيجة غير صفرية ترفض العميل ونتيجة صفرية تسمح باستمرار المصافحة. لذلك يجب أن تحدد السياسة ما يحدث عندما تكون البيانات الوصفية غائبة أو غير قابلة للتحليل أو غير متوقعة. اكتب مسار الرفض أولًا، ثم قرر أي القيم مقبولة.
tls-crypt-v2 /etc/openvpn/server/tcv2-server.key
tls-crypt-v2-verify /etc/openvpn/server/verify-client-metadata.shهذان السطران هما سطح السياسة على الخادم: أحدهما يسمي مفتاح التغليف والآخر يسمي البرنامج الذي يحكم على كل عميل. كل ما يهم يعيش في النص البرمجي، الذي يستحق التحكم في الإصدارات والمراجعة نفسها كأي قاعدة وصول أخرى.
الحساب والشهادة ومفتاح التحكم تُبطل كل على حدة
القبول المبكر لقناة التحكم ليس مصادقة، لأنه يحدث قبل فحص هوية TLS وقبل أي تخويل للحساب. تعطيل حساب وسحب شهادة ورفض مفتاح تحكم لعميل هي ثلاثة إجراءات بثلاث آليات. النشر الذي ينفذ واحدًا منها فقط لديه ثغرة لا سياسة. وفّق بين الثلاثة عن عمد، وسجّل أي خطوة تمارس أي سلطة.
التوقيت هو التمييز الثاني. قائمة القبول المتغيرة تنطبق على المصافحات الجديدة، أما الجلسات القائمة بالفعل فتستمر حتى ينهيها شيء. احتساب المدخلات في القائمة الجديدة كدليل على انتهاء الجلسات القديمة هو كيف يبقى عميل محذوف متصلًا لساعات.
السلطات غير الموفقة تترك ثغرتين يسهل إيجادهما عمليًا. يمكن تعطيل حساب بينما لا يزال مفتاح تحكمه يفتح مصافحة، ويمكن سحب شهادة بينما لا تزال سياسة البيانات الوصفية تقبل العميل نفسه. كلاهما الخطأ نفسه في موضعين مختلفين، لأن المشغل تعامل مع قائمة واحدة كأنها السلطة كلها. ضع القوائم الثلاث جنبًا إلى جنب عند الإزالة فيصبح الخطأ مرئيًا.
إصدار ملف تعريف وسحبه
الإصدار هو النصف السهل: أنشئ مفتاح العميل على الجانب المستقبل، وسلّم ملف التعريف لمالك واحد فقط، وأبقِ مادة التغليف مقيدة، وشغّل برنامج التحقق نفسه على كل خادم مستقبل. القبول الرخيص خاصية للمجموعة كلها لا لأحدث مضيف. الخادم الثاني الذي يستخدم نصًا أقدم أو أكثر تساهلًا يصبح بصمت أضعف مسار في النشر.
يحتاج السحب إلى الخطوات الثلاث بترتيب مدروس. ارفض العميل في خطاف التحقق لتفشل المصافحات الجديدة، واسحب شهادته إذا كانت بنية مفتاح عام قيد الاستخدام، وعطّل الحساب حتى لا يجد التخويل اللاحق ما يخوله. ثم أنهِ الجلسات التي أتاحها القبول القديم، لأنها لن تلاحظ أيًا من الثلاثة. تمرّن على التسلسل باستخدام عميل يمكنك تحمل تعطيله.
البيانات الوصفية في ملف التعريف مدخل لتلك السياسة، وليست دليلًا على أن التحكم في الوصول موجود بالفعل. تصف وثيقة تصميم OpenVPN 2.6 الكائنات والحدود التي ترسمها، بينما يبقى إنفاذها مسؤولية المشغل.