الكلمة الافتتاحية
منحت الإنترنتَ (the Internet) سكان العالم وصولًا غير مسبوق إلى المعلومات. وللأسف، فإنها أيضًا ربطت بين مجرمي العالم وأنظمة العالم الطرفية. ولم يمض وقت طويل بعدها حتى راحت الخدمات البعيدة (remote services) التي يعتمد عليها المستخدمون في مهامّ حرجة كالخدمات المصرفية والرعاية الصحية والحكومية تكدّس في خوادم موصولة بالإنترنت كمّاتٍ هائلة من المعلومات الشخصية. وإنّ التنقيط المتواصل طوالَ عقودٍ من الاختراقات التي يقع بها المهاجمون وانقطاع الخدمات يشهد بأنّ هذه الخدمات الجوهرية وبياناتها أهدافٌ جذّابة — وكانت أيضًا أهدافًا قابلةً للاختراق.
والاتصال السريع الواسع الانتشار والخدمات المتنوّعة المتطوّرة من أبرز إنجازات الإنترنت. أمّا أمن الإنترنت (Internet security) فلا يزال تحدّيًا استثنائيًّا في ديمومته. لم يكن أولويةً في التصاميم المبكرة لبروتوكولات الشبكة (network protocols) ولا للتطبيقات المتّصلة بالشبكة. كما أنّه تنافسيّ بطبيعته: فكلّما حسّن طرفٌ متانة نظامٍ ما في مواجهة الهجوم، تكيّف المهاجمون في «عبء عملهم» (workload) على استهداف ما تبقّى من نقصٍ أو إهمال. والأهمّ أنّ المستخدمين ومشغّلي الخدمات، وإن كانوا كثيرًا ما يقدّرون الوظائف الجديدة الظاهرة بوصفها «ميزات» (features) تبرّر ازدياد التعقيد أو التكلفة، فقد لا يدركون بالسرعة نفسها أنّ الأمن — وهو، تقريبًا، غياب العمليات غير المصرّح بها وغير المرغوبة — ميزةٌ من الميزات.
فكيف ينبغي أن يُنظر إلى بناء شبكات آمنة وتطبيقات متّصلة بالشبكة متينة وعملية للنشر؟ قد يتوقّع المبتدئ أنّ بناء الشبكات الآمنة مسألة «مجرد أن تُضيف التشفير» (cryptography). فلا بدّ من أنّه إذا اختار المرء مكتبة تشفير جيّدة، وحدّث تطبيقات بروتوكولات الشبكة القائمة لتشفير الرسائل وتوقيعها، فلا حاجة إلى شيءٍ آخر.
ولنجرّب، من بين الطرق العديدة التي لا تفتقر إليها هذه الرؤية البسيطة، عددًا قليلًا منها، لنرى كيف تقف عاجزة عن إدراك مدى تصميم الأنظمة المتّصلة الآمنة وتعقيده:
- يتطلّب التشفير (cryptography) مفاتيح (keys) ترتبط عادةً بمستخدمين وخوادم و/أو مشغّلي خوادم أفراد. فكيف يُوزَّع المرء المفاتيحَ الصحيحة توزيعًا متينًا وكفؤًا على مليارات المستخدمين والخوادم على الإنترنت التي لا تربطها علاقة ثقة ثنائية مُعلنة (مثل: أنّ متسوّقًا متصلًا لا يملك علاقة سابقة بإدارة المتجر أو بموظفيه)؟
- لنفترض أنّ خصمًا (adversary)، وإن عجز عن الاطّلاع على المحتوى الصريح (cleartext content) لرسالةٍ مشفّرة، سجّل الرسالة المشفّرة وأرسل نسخةً إضافية منها إلى مُرسِل الرسالة. وسيبقى أيّ توقيع (signature) من المُرسِل داخل الرسالة المكرّرة صالحًا. وإذا أدّت الرسالة المكرّرة إلى استدعاء عمليةٍ عند المُرسَل إليه (مثل: «اطلب سلعةً باهظة وأحمّل حساب العميل»)، فقد تكون نتائج تصرّف المُرسَل إليه بناءً عليها في غير موضعه وخيمة. فكيف يستطيع المُرسِل والمُرسَل إليه الأصليّان أن يُدبّرا الأمر بحيث يكتشف المُرسَل إليه هذه الرسائل المُعاد إرسالها ويتجاهلها؟
- في عصر الألياف الليزرية بسرعة الجيجابت (Gigabit) إلى المنازل واتصالات الهاتف الخلوي من الجيل الخامس، فإنّ زمن استجابة الإنترنت (Internet latency) في المساحات الواسعة (wide-area) غالبًا ما يحدّ من أداء تطبيقات الويب والسحابة، لا من سرعات الوصلات (link speeds). حتى رحلةٍ واحدة إضافية ذهابًا وإيابًا على الشبكة في اتصالٍ ما قد تُضعف تجربة المستخدم. فكيف نتجنّب إضافة رحلاتٍ ذهابًا وإيابًا على الشبكة، في خضمّ تأميننا لبروتوكولات الاتصال، كي لا يدّعي مشغّلو الخوادم والمستخدمون تراجعَ الأداء سببًا للتخلّي عن التصاميم الآمنة؟
سرعان ما يتبيّن أنّ تصميم أنظمةٍ تؤمّن بيانات المستخدمين وتحفظ توافر الخدمات في شبكاتٍ مثل الإنترنت مشروعٌ تقنيّ أبعدُ نطاقًا كثيرًا وأدقّ من «مجرد أن تُضيف التشفير». وفي أمن الشبكات — وليس أقلّ من ذلك لأنّ الخصم سيبحث بفعالية عن ثغرات التصميم (design lapses) في أيّ مكوّنٍ من مكوّنات النظام ويوظّفها — فإنّ المنهجية الفظيحية (systems approach) الحقيقية ضرورية: إذ يتعيّن على المرء أن يستنتج بدقّة خصائص الأمان (security properties) المطلوبة طرفًا إلى طرف (end-to-end) لتطبيقٍ متّصل بالشبكة، وأن ينظر في كيفية ظهور التهديدات (threats) لتلك الخصائص بشكلٍ معقول عبر مكوّنات النظام الشبكي طرفًا إلى طرف وطبقاته العديدة وتفاعلاتها (على المضيفات الطرفية، وعند الموجِّهات (routers)، وفي البنية التحتية الموزّعة للإنترنت، مثلًا من أجل نشر المسارات (route dissemination) وحلّ الأسماء (name resolution) وتوزيع شهادات TLS)، وأن يصمّم دفاعات متينة (robust defenses) ضدّ تلك المظاهر في كلّ تلك المكوّنات والطبقات.
يملأ هذا الكتاب ثغرةً حيوية: فهو يُقدّم للقارئ بشكلٍ شامل مدخلًا إلى منهجيةٍ فظيحية في الاستدلال حول أمن الشبكات بكلّ عمقها ودقّتها. وهذا ما يفعله بيترسون ودافي (Peterson and Davie) عبر تقديم مبادئ التصميم الأساسية وحقيبة أدواتٍ من لبنات التشفير (cryptographic building blocks) التي تقوم عليها الأنظمة الآمنة، ثمّ بيان تطبيقها في سلسلةٍ من أنظمة الشبكات الآمنة الواقعية واسعة الاستخدام. وفي كلّ خطوة يوضّحان بجلاء، انطلاقًا من المبادئ الأوّلية، لماذا أخذت هذه التصاميم هذا الشكل. وخصوصًا أنّ تعاملهما مع أحدث التطوّرات في أمن الشبكات — مثل استئناف الجلسات عند صفر رحلاتٍ ذهابًا وإيابًا (0-RTT session resumption) في TLS 1.3، وهو نمطٌ تقنيّ محوريّ لتقليص زمن المصافحة (handshake) في التطبيقات الحسّاسة للأداء، وقد شُرع به على نطاقٍ واسع أصلًا؛ ومفاتيح المرور (Passkeys) والمصادقة (authentication) عبر WebAuthn في المتصفّحات، وهي طرائق واعدة لنقل مصادقة المستخدم إلى ما وراء مآسي كلمات المرور، وقد شُرعت هي الأخرى على نطاقٍ واسع أصلًا؛ وASPA للتحقّق من المسارات (path validation) في توجيه BGP، وهو أمرٌ حديثٌ لدرجة أنّه لا يزال مسوّدة إنترنت (Internet-Draft) — هو أمرٌ ممتعٌ بشكلٍ خاص. أمّا استعراضهما اللاحق (retrospective) للعوامل التي أثّرت في تبنّي التصاميم الآمنة لحلّ أسماء الإنترنت (DNS) وتوجيهه (BGP)، فيضيف فقيرًا من الرؤية النادرة إلى التصميم الذي يراعي الدافع نحو التبنّي، إلى جانب الصواب التقنيّ للبروتوكولات.
وفي مجالٍ معقّدٍ ودقيقٍ كأمن أنظمة الشبكات، من غير المألوف أن يبدأ مجلّدٌ واحدٌ من مناقشة المبادئ الأولية ويسير كلّ الطريق حتى أحدث التطوّرات في المجال، دون أن يُضحي بتفصيلٍ جوهريّ أو بوضوح. وقد حقّق الشرحُ الدقيق لمجموعةٍ مختارة بعناية من تصاميم أنظمة الشبكات الآمنة المرتبطة بالواقع ذلك عند بيترسون ودافي، وهو ما يجعل هذا الكتاب مُثمِرًا إلى هذا الحدّ.
براد كارب (Brad Karp) — جامعة كوليدج لندن (University College London, UCL)