التشفير المتماثل مقابل تشفير المفتاح العام في شبكة VPN: ما الذي يفعله كل منهما
تصادق شبكة VPN على الأقران بالمفاتيح العامة، ثم تشفّر الحزم بمفاتيح جلسة مشتقة. تعامل مع الشهادات ومفاتيح حركة المرور ككائنين مختلفين.
يصف الناس شبكة VPN بأنها «تستخدم تشفير المفتاح العام»، ثم يتخيلون أن كل حزمة تُقفل بشهادة الخادم. هذه الصورة خاطئة بطريقة تهم عندما تقرأ ملف إعداد أو التقاط حزم. النصف العام من شبكة VPN يتعلق بإثبات هوية القرين والاتفاق على مادة سرية؛ والنصف المتماثل هو ما يحمي حركة المرور فعليًا، حزمة بعد حزمة، طوال عمر الجلسة.
للنصفين أعمار مختلفة وأنماط فشل مختلفة وأشياء مختلفة يمكنك نشرها بأمان. وبمجرد أن تفصلهما، تتوقف أسئلة مثل «هل RSA 2048 أضعف من AES-128» عن إثارة الارتباك، لأنهما لم يكونا قابلين للمقارنة من الأصل.
ثلاث عمليات تُخلط معًا
التشفير بالمفتاح العام مظلة تشمل ثلاث عمليات متمايزة على الأقل. التوقيع يثبت أن حامل المفتاح الخاص وافق على رسالة معينة. اتفاق المفاتيح يتيح لقرينين اشتقاق سر مشترك من قيم يتبادلانها علنًا. تشفير المفتاح العام يخفي البيانات تحت المفتاح العام لشخص ما بحيث لا يفتحها إلا المفتاح الخاص.
تستخدم مصافحات VPN أول العمليتين في الغالب. الشهادة ليست مفتاح تشفير؛ إنها بيان موقّع يربط اسمًا بمفتاح عام، ويتيح للطرف الآخر أن يقرر هل يثق بالمفتاح الذي استلمه للتو. إنشاء مفاتيح TLS 1.3، على سبيل المثال، يقوم على اتفاق مفاتيح (EC)DHE بالإضافة إلى توقيعات الشهادات، لا على تشفير الجلسة بالمفتاح العام للخادم.
ما ينتجه المصافحة فعليًا
في مصافحة حديثة، يولّد كل طرف زوج مفاتيح عابرًا، ويتبادل النصفين العامين، ويحسب سرًا مشتركًا لا يعبر السلك أبدًا. ثم يمر ذلك السر عبر دالة اشتقاق مفاتيح لإنتاج مفاتيح منفصلة لكل اتجاه، إضافة إلى الأرقام العشوائية ومواد IV التي تحتاجها طبقة السجلات. تفعل WireGuard ذلك ببنيتها القائمة على Noise؛ وتفعله TLS 1.3 بـ HKDF عبر سجل المصافحة.
البيان طويل الأمد — الشهادة والمفتاح الخاص، أو مفتاح WireGuard ثابت — يصادق على ذلك التبادل. إنه يوقّع أو يُدمج في السجل حتى لا يستطيع غريب إكمال المصافحة مكان القرين. بعد ذلك، لا يقوم البيان بعمل لكل حزمة. ولو فعل، لاحتاجت كل حزمة إلى عملية مفتاح خاص، ولاقتصر نفق مزدحم على أبطأ عملية في المكدس.
تتبع ذلك تأثيران جانبيان. أولًا، مفاتيح الجلسة جديدة في كل مرة، ولهذا لا يستطيع مهاجم يسرق المفتاح طويل الأمد لاحقًا فك تشفير جلسات سُجلت سابقًا، بشرط أن يكون الاتفاق عابرًا. ثانيًا، مفتاح جلسة مسرّب يخترق جلسة واحدة، لا الهوية.
لماذا تستخدم البيانات الضخمة مفاتيح متماثلة
تتعامل الأصفار المتماثلة مع الحجم جيدًا: يعالج AES-GCM أو ChaCha20-Poly1305 كل حزمة بمفتاح موجود بالفعل في الذاكرة، ويصادق على الترويسة، ويزيد عدّادًا. يفحص الطرف المستقبل الرقم العشوائي ووسم المصادقة، ويسقط أي شيء يفشل أو يُعاد إرساله. هذا رخيص بما يكفي للعمل بسرعة الخط على عتاد عادي، والبنية نفسها تمنح السرية والسلامة في تمريرة واحدة.
البنية هي أيضًا حيث تعيش معظم أخطاء التنفيذ. الرقم العشوائي المكرر في GCM يكسر السرية والأصالة دفعة واحدة، لذا تشتق البروتوكولات مفاتيح لكل اتجاه وتحافظ على عدّاد أو حقبة صريحة. إذا كنت تقرأ التقاط حزم وكان طول النص المشفر يطابق النص الصريح زائد حمل ثابت، فهذه الطبقة المتماثلة تعمل، وليست عملية مفتاح عام تحدث لكل حزمة.
أعمار المفاتيح وإعادة التوليد والسرية الأمامية
من المفترض أن تنتهي مفاتيح الجلسة. تتيح TLS 1.3 رسالة KeyUpdate لتدوير مفاتيح حركة المرور؛ وتعيد WireGuard توليد جلسة بعد وقت أو عدد رسائل مُعد، وتحتفظ بالقديمة لفترة وجيزة للحزم أثناء الطريق. OpenVPN تعيد التفاوض على مفاتيح قناة البيانات وفق جدول، مع reneg-sec الذي يتحكم في الفاصل الزمني.
لا شيء من ذلك التدوير يماثل تجديد شهادة. يمكن أن تكون الشهادة صالحة لمدة سنة بينما تتغير مفاتيح الجلسة كل بضع دقائق، ويمكن استبدال الشهادة دون لمس مفاتيح النفق الجاري. عندما تخطط لانتهاء صلاحية، اسأل أي كائن تدوّره؛ والجواب يحدد ما إذا كان العملاء سيعيدون الاتصال أم سيكتفون بتجديد المفاتيح.
قراءة الإعدادات والتشخيص دون خلط الكائنات
عمليًا، أنت تختار بروتوكولًا كاملًا وأولياته المدعومة، لا أن تجمّع بروتوكولك بنفسك. مفتاح --tls-crypt في OpenVPN يحمي قناة التحكم؛ وتستخدم قناة البيانات أصفارًا متماثلة متفاوضًا عليها. مدخلات PrivateKey و PublicKey في WireGuard هي مادة هوية، بينما تُشتق مفاتيح النقل داخليًا. قراءة تلك الحقول كأنها النوع نفسه من السر تؤدي إلى أخطاء مثل لصق مفتاح عام حيث ينتمي مفتاح خاص.
احفظ المادة العامة منفصلة عن الخاصة. الشهادة والمفتاح العام لـ WireGuard والبصمة آمنة للمشاركة في تذكرة. المفتاح الخاص والمفتاح المشترك مسبقًا ومفتاح الجلسة المُصدّر ليست كذلك. عندما تقارن القوة، قارن داخل النوع نفسه: معرف المنحنى الإهليجي وحجم معامل RSA وحجم مفتاح AES تقيس أشياء مختلفة في ظروف مختلفة. إن مواصفة TLS 1.3 مرجع مفيد لكيفية تركيب الطبقتين معًا، حتى عندما لا يكون نفقك TLS.