Saturday, January 16, 2016

مواقع ويب تستخدم قنوات اتصال مشفرة و أخرى غير مشفرة ، فما الفارق؟ (HTTP vs HTTPS)

العالم قد تغير ... نرى ذلك في كل شئ ... و عالم الإنترنت يتسع شيئا فشيئا و يتخطى حاجز أجهزة الكمبيوتر و الهواتف المحمولة إلى كل شئ بالمعنى الحرفي للكلمة حتى أصبحنا اليوم نتعامل مع مصطلح جديد ، هو إنترنت الأشياء Internet of  Things و مع تسارع وتيرة الحياة اليومية أصبح الاعتماد على شبكة الإنترنت في تزايد مستمر ، فنحن نقوم بشراء مستلزماتنا و نقوم بدفع فواتيرنا عبر الإنترنت و باستخدام تطبيقات الهواتف المحمولة ، ناهيك عن مواقع البريد الإلكتروني و مواقع التوصل الإجتماعي التي يتعامل معها الناس بشكل مستفز و كأنها مذكرات شخصية هذا بالإضافة إلى مواقع الجامعات و المواقع الحكومية و غيرها كثير مما لايمكن حصره ، فهناك كم هائل من البيانات يتم إرسالها و استقبالها في كل لحظة عبر الإنترنت ، و بغض النظر عن طبيعة أو نوعية أو شكل هذه البيانات فإنه يتم تبادلها عبر الإنترنت بواسطة مجموعة من البروتوكولات ، و يمكن التفكير في البروتوكول على أنه لغة التخاطب بين الأطراف المتصلة بالشبكة ، و يكون لكل بروتوكول مواصفات و قواعد و قدرات محددة يتم توثيقها و مراجعتها من خلال مجموعة من الوثائق تسمى Request For Comments - RFC و يكون لكل RFC رقم ، و تتولى مجموعة ال Internet Engineering Task Force - IETF إدارة و حوكمة هذا النظام الوثائقي ، و حيث أن البروتوكولات هي المسئولة عن نقل البيانات بين أطراف الشبكة كٌل حسب طبيعته فإنه يتم في البداية فتح قنوات اتصال لنقل البيانات من خلالها ، و هذه القنوات من الممكن أن تكون مشفرة أو غير مشفرة . و مع زيادة مخاطر سرقة البيانات و اختراق الخصوصية عبر الإنترنت فإن خبراء أمن المعلومات يؤكدون دائما على ضرورة استخدام خدمات و مواقع الويب و برامج الاتصال عبر الإنترنت التي تدعم و تستخدم قنوات اتصال مشفرة خاصة في حال استخدام بيانات خاصة أو كلمات المرور أو عند إجراء عمليات الشراء أو الدخول إلى الحسابات البنكية عبر الإنترنت و ذلك للحفاظ على أمن و خصوصية المستخدم.
بروتوكولات الويب  
من الطبيعي لأي مستخدم للإنترنت إذا أراد تصفح أحد مواقع الويب أن يقوم بكتابة عنوان الموقع المراد تصفحه في شريط العنوان الخاص بالمتصفح أو بالضغط على رابط الموقع في إحدى صفحات الويب. في النهاية يكون شكل عنوان المواقع كالتالي http://www.website.com أو https://www.website.com ، و ما يهمنا هنا هو الجزء الأول من عنوان الموقع والذي يوضح البروتوكول المستخدم في الاتصال بالإنترنت. و كما نلاحظ فإنه في العنوان الأول  البروتوكول المستخدم هو HTTP و في العنوان الثاني البروتوكول المستخدم هو HTTPS. 
بروتوكول HTTP 
HTTP تمثل الأحرف الأولى من HyperText Transfer Protocol أو بروتوكول نقل النص التشعبي. يعتبر بروتوكول HTTP هو أكثر البروتوكولات انتشارا و استخداما عبر الإنترنت ، و قد كان إنشاءه في البداية كوسيلة لنقل البيانات النصية و المتمثلة في صفحات HyperText Markup Language - HTML بين المتصفح و خادم موقع الويب ، و تتم عملية نقل و تبادل البيانات بين المتصفح و الخادم بأسلوب الطلب و الإستجابة Request and Response بمعني أن المتصفح يرسل طلبا إلى خادم الويب بلغة HTTP -إتفقنا من قبل أن البروتوكول ما هو إلا لغة تفاهم - كأن يطلب فتح صفحة ويب نصية أو صورة أو تشغيل فيديو فيرد عليه الخادم عن طريق إرسال استجابة على طلبه فيستقبلها المتصفح و يظهرها للمستخدم في هيئة مقروءة و مفهومة بالنسبة له ، فعلى سبيل المثال إذا حاولنا فتح موقع ويكيبيديا http://www.wikipedia.org فإن متصفح الإنترنت سوف يرسل الرسالة التالية إلى خادم موقع www.wikipedia.org :

فيرد عليه خادم الويب  بالرسالة التالية:
فيقوم المتصفح بتحليل و إظهار الرد على الصورة التالية:

بروتوكول HTTP يعد أحد أهم البروتوكلات الأساسية المستخدمة عبر الإنترنت ، و قد خرج أول إصدار موثق له إلى النور في عام 1991 و هو الإصدار HTTP v.0.9 و في عام 1996 كان الإصدار المطور HTTP v.1.0 و مع بدايات عام 1997 ظهر الأصدار HTTP v.1.1 الذي خضع لعدة مراجعات و تحديثات كان آخرها منتصف عام 2014 و يعتبر الإصدار  HTTP v.1.1 هو الأكثرانتشارا و  استخداما في الوقت الحالي و من المفيد أن نعلم أنه في مايو 2015 تم نشر الوثيقة رقم RFC 7540 عن الإصدار الأحدث HTTP/2
بطبيعة الحال كان التركيز عند تصميم و إنشاء بروتوكول HTTP على كيفية عمل البروتوكول و على الإمكانات و الأداء و الإضافات و المميزات التي سوف يتسم بها  و لم يؤخذ  الجانب الأمني بعين الاعتبار ، و لهذا فإن بروتوكول HTTP يعاني من مشكلتين أمنيتين:
  1. البيانات التي يتم تبادلها بين المستخدم و موقع الويب تكون غير مشفرة و بالتالي يكون من السهل التجسس و الحصول عليها بواسطة المخترقين.
  2. لا يمكن التحقق من من هوية موقع الويب الذي يحاول المستخدم الوصول إليه و بالتالي يمكن بمنتهى السهولة خداع مستخدمي الموقع بواسطة موقع شبيه في الشكل و المحتوى و ربما أيضا جزء من العنوان للحصول على بياناتهم.

بروتوكول HTTPS 
HTTPS تمثل الأحرف الأولى من HyperText Transfer Protocol Secure أو بروتوكول نقل النص التشعبي الآمن و قد تم تطوير هذا البروتوكول عام 1994 بواسطة شركة نيتسكيب للإتصالات و يتكون بروتوكول HTTPS من جزأين ، الأول مسؤل عن نقل البيانات و هو بروتوكول HTTP المعتاد و الذي تحدثنا عنه في الفقرة السابقة و الثاني هو بروتوكول SSL - Secure Socket Layer سابقا و تم استبداله ببروتوكول TLS - Transport Layer Security حاليا و هو المسؤل عن إنشاء قناة اتصال مشفرة يمر من خلالها بروتوكول HTTP.

 و يهدف بروتوكول HTTPS إلى علاج القصور الأمني في بروتوكول HTTP عن طريق تشفير نقل البيانات و التحقق و المصادقة Authentication  على أن الموقع المزمع زيارته هو الموقع الحقيقي فعلا و ليس موقع مخادع. و قبل ذكر كيفية عمل بروتوكول HTTPS نود أن نستعرض مقدمة مختصرة عن التشفير لكي تساعدنا في فهم كيفية عمل بروتوكول HTTPS.
التشفير Cryptography
التشفير Encryption عملية استخدمت منذ فجر التاريخ بهدف إخفاء المعلومات الهامة عن الأعداء و الجواسيس و هو يعني تحويل البيانات من صورتها المقروءة والمفهومة PlainText إلى صورة غير مقروءة و غير مفهومة CipherText و ذلك باستخدام كل من خوارزمية خاصة بالتشفير Encryption Algorithm و أيضا مفتاح  تشفير Encryption Key. و عملية التشفير يمكن أن يتم عكسها بمعنى تحويل البيانات الغير مقروءة CipherText مرة أخرى إلى بيانات مقروءة PlainText فيما يسمى فك التشفير Decryption و ذلك بواسطة خوارزمية فك التشفير Decryption Algorithm و بمعلومية مفتاح فك التشفير Decryption Key.
التشفير
فك التشفير
التشفير المتماثل Symmetric Cryptography 
هو العملية التي تستخدم فيها خوارزمية التشفير (مثل AES and DES) نفس المفتاح في كل من عملية التشفير و عملية فك التشفير ، ويتتميز هذا الأسلوب بالسهولة و سرعة الأداء فعلى سبيل المثال إذا أردت تبادل بيانات مشفرة مع أحد الأطراف فكل ما تحتاجه هو الاتفاق معه على خوارزمية و مفتاح التشفير ثم تقوم بإرسال البيانات المشفرة بهذا المفتاح له ، و في الجانب الآخر يقوم هو باستخدام نفس المفتاح في فك التشفير ، و لكن ماذا لو أردت تبادل بيانات مشفرة مع عدة مئات أو عدة آلاف من الأشخاص ، هنا تظهر المشكلة وهي كيف ستتم عملية تبادل و توزيع مفتاح التشفيرفيما بينكم لكي يتمكن الجميع من فك التشفير؟ و ما هي المخاطر المحيطة بذلك مثل سرقة أو كشف مفتاح التشفير؟ و ماذا إذا أردتم تغيير المفتاح؟ و تزداد المشكلة تعقيدا إذا كان الهدف هو تبادل بيانات مشفرة مع عدد غير معلوم من الأطراف كأن تقوم بتبادل بيانات مشفرة عن طريق أحد مواقع الويب وأنت لا تعرف فعليا من سيقوم بزيارة هذا الموقع ، و بالتالي أصبحت عملية إدارة و توزيع مفتاح التشفير إحدى معوقات استخدام  التشفير المتماثل Symmetric Encryption على نطاق واسع  بالرغم من مميزاته. 

التشفير المتماثل
 التشفير الغير الغير متماثل Asymmetric Cryptography 
هو العملية التي تستخدم فيها خوارزمية التشفير (مثل RSA) مفتاحين مختلفين أحدهما يسمى المفتاح الخاص Private Key و الآخر يسمى المفتاح العام Public Key ، فعلى سبيل المثال إذا أردت تبادل بيانات مشفرة مع أحد الأطراف يكون لكل طرف زوجين من المفاتيح الأول خاص و الثاني عام ، و كما يتضح من الأسماء ، المفتاح الخاص يحتفظ به كل طرف لنفسه و لا يتبادله مع أحد أما المفتاح العام فإنه يتبادله مع أي طرف يريد التواصل معه أو مع جميع الناس ، و يتم العمل تحت سقف قاعدة بسيطة "ما يتم تشفيره بأحد المفتاحين لا يمكن فك تشفيره إلا باستخدام المفتاح الآخر" بمعنى أن البيانات التي يتم تشفيرها بالمفتاح الخاص لأي طرف لا يمكن فك تشفيرها إلا باستخدام المفتاح العام لنفس الطرف و البيانات التي يتم تشفيرها بالمفتاح العام لأي طرف لا يمكن فك تشفيرها إلا باستخدام المفتاح الخاص لنفس الطرف ولكن هدف التشفير يكون مختلفاً في الحالتين و لتوضيح هذا دعونا نأخذ المثال الموضح بالشكل التالي:
  • السيد (أ) و السيد (ب) كل منهما يريد تبادل بيانات مشفرة مع الآخر و سوف يستخدمان نظام تشفير غير متماثل Asymmetric Encryption.
  • السيد (أ) لديه مفتاحان (خاص-أ) يحتفظ به لنفسه  و (عام-أ) يعطيه لأي شخص و السيد (ب) لديه مفتاحان (خاص-ب)  يحتفظ به لنفسه  و (عام-ب) يعطيه لأي شخص.
  •  السيد(أ) يريد إرسال بيانات مشفرة إلى السيد(ب) فيقوم باستخدام المفتاح العام للسيد(ب) الموجود عنده ويشفر البيانات ثم يرسلها. السيد(ب) يقوم بفك تشفير البيانات باستخدام مفتاحه الخاص.
  • السيد (ب) يريد التحقق من شخصية السيد(أ) فيطلب توقيعه فيرسله السيد(أ) مشفرا بمفتاحه الخاص ، ثم يقوم السيد(ب) بالتحقق من صحة التوقيع باستخدام المفتاح العام للسيد (أ). 
التشفير الغير متماثل
 من المثال السابق يتضح أنه يمكن استخدام التشفير الغير متماثل Asymmetric Encryption في أمرين أساسيين و هما:
  • نقل البيانات المشفرة: و في هذه الحالة يتم التشفير بالمفتاح العام و فك التشفير بالمفتاح الخاص.
  • التحقق من الشخصية  أو المصادقة Authentication و في هذه الحالة يتم التشفير بالمفتاح الخاص و فك التشفير بالمفتاح العام و بما أن المفتاح الخاص لا يوجد إلا مع مالكه فقط فيكون هذا بمثابة توقيع رقمي منه.
 يتميز التشفير الغير متماثل Asymmetric Encryption بالأمور التالية:
  • مفتاح التشفير الخاص لا يتم تبادله أبدا و لكن يحتفظ به مالكه فقط.
  • مفتاح التشفير العام يمكن نشره و تبادله مع أي جهة و بأي وسيلة.
  • يمكن استخدام التشفير الغير متماثل Asymmetric Encryption في التحقق من شخصية مرسل البيانات من خلال التوقيع الرقمي Digital Signature و هوا مالا يوجد في التشفير المتماثل. 
و في النهاية و على الرغم من مميزات التشفير الغير متماثل Asymmetric Encryption إلا أن ما يعيبه هو أن سرعة أداءه أقل بكثير من التشفير المتماثل Symmetric Encryption. 
التشفير الهجين Hybrid Encryption 
هو عملية استخدام كل من التشفير المتماثل Symmetric Encryption و التشفير الغير متماثل Asymmetric Encryption معا للحصول على مميزات كل منهما ، فتبدأ العملية بإنشاء قنوات اتصال مشفرة باستخدام التشفير الغير متماثل Asymmetric Encryption يتم من خلالها تبادل مفتاح التشفير المتماثل Symmetric Encryption Key و تستمر عملية التشفير بعد ذلك باستخدام المفتاح المتماثل كعملية تشفير متماثلة Symmetric Encryption.
التشفير الهجين
كيف يعمل  HTTPS 
الآن و بعد أن أخذنا مقدمة سريعة عن التشفير نريد أن  نشرح كيف يعمل بروتوكول  HTTPS. كما قلنا سابقا أن HTTPS ما هو إلا بروتوكول HTTP و لكن ينتقل عبر قناة اتصال مشفرة تم إنشائها بواسطة بروتوكول SSL  أو بروتوكول TLS ، و كلا من البروتوكولين يستعملان نظام التشفير الغير متماثل Asymmetric Encryption
عندما يقوم المتصفح بطلب عنوان أو رابط ما لموقع ويب يستخدم HTTPS يحدث التالي:
  • يقوم خادم الموقع Web Server بإرسال شهادة رقمية Digital Certificate  لمتصفح المستخدم.
  • تحتوي الشهادة الرقمية على بيانات خاصة بموقع الويب مثل إسم الموقع و النطاق الذي ينتمي له و الجهة التي أصدرت الشهادة الرقمية Certificate Authority - CA و تاريخ صلاحية هذه الشهادة بالإضافة إلى معلومات أخرى. 
  • يستخدم المتصفح البيانات الموجودة في الشهادة  للتحقق من أن الموقع المزمع زيارته هو نفسه الموقع الصحيح  و سيتم التعرض لهذا الموضوع بتفاصيل أكثر في مقالة قادمة إن شاء الله.
  • تحتوي الشهادة الرقمية أيضا على مفتاح التشفير العام الذي يخص الموقع و هذا ما يهمنا هنا.
  • يقوم المتصفح باختيار مفتاح عشوائي (م) لاستخدامه كمفتاح تشفير متماثل ، ثم يقوم بتشفير هذا المفتاح العشوائي (م) باستخدام مفتاح التشفير العام الموجود في الشهادة الرقمية Digital Certificate  الخاصة بالموقع و من ثم يقوم بإرساله إلى خادم موقع الويب.
  • يقوم  خادم الموقع بفك تشفير المفتاح العشوائي (م) باستخدام مفتاح التشفير الخاص.
  • يستمر كل من المتصفح و الخادم في استخدام مفتاح التشفير (م) في تبادل البيانات بينهما من خلال عملية تشفير متماثلة Symmetric Encryption و بهذا يكون أسلوب عمل بروتوكول HTTPS تطبيقا عمليا لنظام التشفير الهجين Hybrid Encryption. 
متصفح الويب له دور هام جدا عند تصفح المواقع التي تستخدم بروتوكول HTTPS و سوف نتعرض له بتفصيل أكثر في مقال آخر إن شاء الله و ما نلاحظه هنا أن المتصفح يقوم بإظهار رمز القفل في شريط العنوان إذا كان موقع الويب يستخدم بروتوكول HTTPS و إذا كان الموقع يستخدم شهادة تحقق رقمية موسعة Extended Validation Digital Certificate فإن شريط العنوان أو رمز القفل يتحول إلى اللون الأخضر.  

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

No comments:

Post a Comment