0%

كيف يعمل التشفير في الانترنت SSL؟

هذا الموضوع سيكون شرح مبسط عن طريقة عمل Secure Socket Layer او SSL المستخدمة في مواقع الانترنت المشفرة والتي يبدأ عنوانها بـ https. سبب حديثي عن هذا الموضوع هو اهميته واعجابي به وبطريقة عمله.

أولا يوفر نظام SSL ثلاث خصائص:

  1. تشفير البيانات المرسلة عبر الانترنت بحيث لا يستطيع احد فهم محتواها غير المرسل والمستقبل الرسمي Confidentiality.
  2. حماية البيانات المرسلة من العبث او التعديل قبل وصولها للمستقبل Integrity.
  3. التأكد من هوية المرسل حتى يتسنى للمستقبل تحديد اذا كانت البيانات مرسلة من جهه صحيحه او لا Authentication.

سوف اقوم في حديثي هذا بشرح الخاصية رقم 1 وترك باقي الخصائص لموضوع قادم ان تيسر الوقت.

يستخدم هذا النظام ثلاث انواع من الشفير:

  1. تشفير تثائي الاتجاه: يعتبر هذا اقدم سبل التشفير المعروفة وحاليا يعتبر تشفير AES هو التشفير المتفق عليه عالميا ويتميز بسرعته وقوته. وطريقة عمله تعتمد على اختيار مفتاح سري (Secret Key) من عدة احرف يتفق علية المرسل والمستقبل بشرط ان يكون طويل وصعب التخمين فيقوم المرسل باستخدام المفتاح السري لتشفير البيانات (Encryption) قبل ارسالها ثم يقوم المستقبل باستخدام نفس المفتاح لعكس عملية التشفير واستخراج البيانات (Decryption) الاصلية ولهذا يسمى ثنائي الاتجاه ويسمى كذلك بالتشفير التماثلي (Symmetric key cryptography). من الامثلة المشهورة لهذا النوع: DES و AES و RC4

SSL

  1. الاختزال (Hashing) (التشفير احادي الاتجاه) :وهو يعتبر نوع خاص من انواع التشفير حيث انه يقوم بتحويل البيانات الى شفرة غير مفهومة وتكون ذات حجم ثابت غالبا، ولكن من الصعب عكس العملية والتوصل الى البيانات الاصلية، كما يجب (قدر الامكان) ان لا توجد بيانات عند اختزالها تعطي نتيجة مشابهة لشفرة بيانات اخرى. ومن الامثلة: MD5 و SHA

SSL

  1. تشفير المفتاح العام والخاص (Public-key cryptography): ويسمى ايضا التشفير الغير متماثل (Asymmetric key cryptography) اذ يعتمد هذا النوع من الشفير على وجود مفتاحين مختلفين تماما يستخدم احدهما للتشفير ويستخدم الاخر لفك التشفير (او العكس) ولكن لايمكن استخدام نفس المفتاح لكلا العمليتنين. ومن الامثلة: RSA و Diffie-Hellman.

SSL

بعد هذا الشرح المبسط للتقنيات المستخدمة سوف أتحدث عن طريقة عملها مجتمعة في نظام SSL اذ ان كل واحدة منها لا تستطيع اداء المهمة بالشكل المطلوب لوحدها. فعلى سبيل المثال لو تحدثت عن التشفير ثنائي الاتجاة (مثلا AES) فان هذا التشفير هو المستخدم في كثير من ألأنظمة لانه سريع وقوي ولكن تكمن مشكلته في أن المفتاح السري يجب ان يكون معلوماُ لدي الطرفين المعنيين بالإرسال (المرسل والمستقبل) فاذا كنت تود ارسال رسالة مشفرة لزميل عن كريق الانترنت فيجب عليك مسبقا ابلاغة بالمفتاح السري لكي يتمكن من فك التشفير ولكن يجب عمل ذلك بطريق آمن اذ لو تم ارسال المفتاح عن طريق الانترنت فان اي متجسس سوف يحصل عليه وسيتمكن من فك التشفير. ففي السابق كانت طريقة تبادل المفتاح السري هي باستخدام وسيلة اتصال اخرى غير الانترنت واكثر امنا كأن يتم التقابل شخصيا والاتفاق على رقم سري او عن طريق الهاتف….الخ لكن هذا الخيار غير ممكن في جميع الاحوال وصعب التطبيق، ففي الحرب العالمية الثانية كانت المانيا تزود جيشها بقائمة من المفاتيح السرية بحيث يتم استخدام كل مفتاح لمدة زمنية معينه ثم يتم الانتقال للمفتاح الذي يليه، تكمن المشكلة في هذه الطريقة صعوبة تغيير القائمة في حال تم الوصول اليها من العدو وهو ما حصل بالفعل عندما تمكن الحلفاء من اختطاف غواصة والحصول على قائمة المفاتيح السرية منها. جاء الحل لهذة المشكلة مع اكتشاف تقنية تشفير المفتاح العام والخاص ففي هذه التقنية يقوم الشخص المعني باستقبال الرسالة بانشاء مفتاحين (باستخدام عملية حسابية تعتمد على ايجاد ارقام اولية كبيره جدا) يستخدم احدهما للتشفير ويسمى المفتاح العام والاخر لفك ذلك التشفير ويسمى المفتاح الخاص. فاذا اردت انا استقبال رسالة سرية منك فكل ما علي عملة هو انشاء هذين المفتاحين ثم اقوم بالاحتفاظ بالمفتاح الخاص ووضع المفتاح العام في مكان يسهل عليك الوصول اليه (اما ان ارسلة اليك او اضعه في صفحة في الانترنت) ولا يهم اذا تمكن شخص غيرك من الحصول عليه، ثم بعد ذلك تقوم انت باستخدام ذلك المفتاح (المفتاح العام) لتشفير رسالتك ثم ارسالها الي وفي هذه الحالة لايمكن فك ذلك التشفير إلا باستخدام المفتاح الخاص الموجود لدي وحدي ولا يمكن استخدام المفتاح العام لعمل ذلك.

المشكلة الموجودة حاليا في تقنية تشفير المفتاح العام هي كون العملية معقدة وتستغرق وقتا طويلا وطاقة حسابية من اجهزة الحاسب والشبكات فيصعب استخدامها في تشفير بيانات كثيرة وعلاوة على ذلك فانها لاتعتبر بالقوة التشفيرية التي تصل اليها تقنية التشفير التماثلي (او ثنائي الاتجاة) فلكي تحصل على تشفير تماثلي قوي تحتاج الى مفتاح سري بحجم 256 بت او اكثر اما في تشفير المفتاح العام فيجب ان يكون حجم المفتاح 1024 بت او اكثر.

ما هو الحل اذن؟؟ هل نستخدم التشفير التماثلي او المفتاح العام؟ :? الجواب هو باستخدامهما جميعا. كيف؟ … الطريقة ببساطة هي وكما في المثال السابقة ان اقوم بارسال مفتاحي العام لك ثم بدلا من ان تقوم انت باستخدامة لتشفير الرسالة تستخدمة لتشفير المفتاح السري الذي سنقوم باستخدامة في التشفير التماثلي، حيث تقوم انت بانشاء مفتاح (بطول 256 بت مثلا) ويكون صعب التخمين (احرف وارقام عشوائية) ثم تستخدم مفتاحي العام لتشفير ذلك المفتاح السري وارسالة لي ومن ثم اقوم انا باستخدام مفتاحي الخاص لفك التشفير والحصول على ذلك المفتاح العشوائي والذي سنستخدمة جميعا في تشفير بقية الاتصال. فبهذه الطريقة نكون استخدمنا تقنية المفتاح العام (المكلفة حسابيا والبطيء) مرة واحده فقط وبعد ذلك نكمل بقية المراسلات باستخدام التشفير التماثلي (السريع والآمن)

لتبسيط شرح طريقة العمل قمت بعمل هذا المثال المبسط:

طريقة عمل الـ SSL

  1. يقوم المستخدم بالدخول على موقع البنك المشفر (https) او اذا استخدم الموقع العادي (http) فان البنك سيقوم يتحويلة مباشرة الى النمط المشفر.
  2. يقوم البنك بارسال شهادته الرقمية المصدقة وفيها مفتاح التشفير العام.
  3. يقوم متصفح الانترنت لدى المستخدم (مثلا فايرفوكس او انترنت اكسبلورر) بالتحقق من مصداقية وصلاحية تلك الشهادة واذا كانت تخص البنك او لا.
  4. يقوم المتصفح بانشاء رقم سري عشوائي يكون عادته بطول 128 او 256 بت (حسب مواصفات شهادة البنك الرقمية).
  5. يقوم المتصفح باستخراج المفتاح العام الموجود في شهادة البنك الرقمية ويستخدمة لتشفير الرقم السري العشوائي الذي قام بانشائه في خطوة رقم 4.
  6. يقوم المتصفح بارسال الرقم السري المشفر للبنك.
  7. بعد ان يصل الرقم السري المشفر للبنك يقوم البنك باستخدام مفتاحة الخاص لفك التشفير واستخراج الرقم السري.
  8. في هذة اللحظة يكون لدى المستخدم والبنك رقم سري معروف لديهما فقط وصعب الكسر يتم استخدامة لتشفير بقية المعاملات البنكية بين الطرفين.

في كل مرة يقوم المستخدم بالاتصال بالبنك تتم العملية السابقة وينشأ رقم سري جديد خاص بذلك الاتصال ولايتم استخدامة مره اخرى.

في ختام هذا الحديث اتمنى ان اكون قد وفقت في شرح الموضوع بشكل مبسط وسهل الفهم، وفي حال كانت هناك ملاحظات او استفسارات ارجو مراسلتي او التعليق على هذا الموضوع.