المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : شرح عمل التشفير في الانترنت ssl؟



En.Khaled Alfaiomi
09-29-2010, 08:28 PM
هذا الموضوع سيكون شرح مبسط عن طريقة عمل Secure Socket Layer او SSL المستخدمة في مواقع الانترنت المشفرة والتي يبدأ عنوانها بـ https.


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


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

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


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

النص الاصلي
المفتاح السري
النص المشفر
المفتاح السري
النص الاصلي


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


النص الاصلي
أي نص مشفر او غير مشفر ومهما كان حجمة
الشفرةAny clear text or encrypted text of any size ← a0dfa73889a0a38a884c483ef4f870b1
أي نص اخر مغاير سواء في الحجم او المحتوى ولو بفرق بسيط جدا
Any different text in size or content even with small changes ← 195903a5b0c33a81c10f1692fd5091ee

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

النص الاصلي
المفتاح الخاص
النص المشفر
المفتاح العام
النص الاصلي


بعد هذا الشرح المبسط للتقنيات المستخدمة سوف اتحدث عن طريقة عملها مجتمعة في نظام SSL اذ ان كل واحد منها لا يستطيع اداء المهمة بالشكل المطلوب لوحدة. فعلى سبيل المثال لو تحدثت عن التشفير ثنائي الاتجاة (مثلا AES) فان هذا التشفير هو المستخدم في كثير من الانظمة لانه سريع وقوي ولكن تكمن مشكلتة في ان المفتاح السري يجب ان يكون معلوماُ لدي الطرفين المعنيين بالارسال (المرسل والمستقبل) فاذا كنت تود ارسال رسالة مشفرة لزميل عن كريق الانترنت فيجب عليك مسبقا ابلاغة بالمفتاح السري لكي يتمكن من فك التشفير ولكن يجب عمل ذلك بطريق آمن اذ لو تم ارسال المفتاح عن طريق الانترنت فان اي متجسس سوف يحصل علية ويستمكن من فك التشفير. ففي السابق كانت طريقة تبادل المفتاح السري هي باستخدام وسيلة اتصال اخري غير الانترنت واكثر امنا كأن يتم التقابل شخصيا والاتفاق على رقم سري او عن طريق الهاتف….الخ لكن هذا الخيار غير ممكن في جميع الاحوال وصعب التطبيق، ففي الحرب العالمية الثانية كانت المانيا تزود جيشها بقائمة من المفاتيح السرية بحيث يتم استخدام كل مفتاح لمدة زمنية معينه ثم يتم الانتقال للمفتاح الذي يليه، تكمن المشكلة في هذه الطريقة صعوبة تغيير القائمة في حال تم الوصول اليها من العدو وهو ماحصل بالفعل عندما تمكن الحلفاء من اختطاف غواصة والحصول على قائمة المفاتيح السرية منها.
جاء الحل لهذة المشكلة مع اكتشاف تقنية تشفير المفتاح العام والخاص ففي هذه التقنية يقوم الشخص المعني باستقبال الرسالة بانشاء مفتاحين (باستخدام عملية حسابية تعتمد على ايجاد ارقام اولية كبيره جدا) يستحدم احدهما للتشفير ويسمى المفتاح العام والاخر لفك ذلك التشفير ويسمى المفتاح الخاص. فاذا اردت انا استقبال رسالة سرية منك فكل ما علي عملة هو انشاء هذين المفتاحين ثم اقوم بالاحتفاظ بالمفتاح الخاص ووضع المفتاح العام في مكان يسهل عليك الوصول اليه (اما ان ارسلة اليك او اضعه في صفحة في الانترنت) ولا يهم اذا تمكن شخص غيرك من الحصول عليه، ثم بعد ذلك تقوم انت باستخدام ذلك المفتاح (المفتاح العام) لتشفير رسالتك ثم ارسالها الي وفي هذه الحالة لايمكن فك ذلك التشفير إلا باستخدام المفتاح الخاص الموجود لدي وحدي ولا يمكن استخدام المفتاح العام لعمل ذلك. (ارجو ان يكون الشرح واضح ولا اكون لخبطتكم http://fadvisor.net/blog/wp-includes/images/smilies/icon_wink.gif )
المشكلة الموجودة حاليا في تقنية تشفير المفتاح العام هي كون العملية معقدة وتستغرق وقتا طويلا وطاقة حسابية من اجهزة الحاسب والشبكات فيصعب استخدامها في تشفير بيانات كثيرة وعلاوة على ذلك فانها لاتعتبر بالقوة التشفيرية التي تصل اليها تقنية التشفير التماثلي (او ثنائي الاتجاة) فلكي تحصل على تشفير تماثلي قوي تحتاج الى مفتاح سري بحجم 256 بت او اكثر اما في تشفير المفتاح العام فيجب ان يكون حجم المفتاح 1024 بت او اكثر.
ما هو الحل اذن؟؟ هل نستخدم التشفير التماثلي او المفتاح العام؟ http://fadvisor.net/blog/wp-includes/images/smilies/icon_confused.gif
الجواب هو باستخدامهما جميعا. 8O كيف؟ … الطريقة ببساطة هي وكما في المثال السابقة ان اقوم بارسال مفتاحي العام لك ثم بدلا من ان تقوم انت باستخدامة لتشفير الرسالة تستخدمة لتشفير المفتاح السري الذي سنقوم باستخدامة في التشفير التماثلي، حيث تقوم انت بانشاء مفتاح (بطول 256 بت مثلا) ويكون صعب التخمين (احرف وارقام عشوائية) ثم تستخدم مفتاحي العام لتشفير ذلك المفتاح السري وارسالة لي ومن ثم اقوم انا باستخدام مفتاحي الخاص لفك التشفير والحصول على ذلك المفتاح العشوائي والذي سنستخدمة جميعا في تشفير بقية الاتصال. فبهذه الطريقة نكون استخدمنا تقنية المفتاح العام (المكلفة حسابيا والبطيء) مرة واحده فقط وبعد ذلك نكمل بقية المراسلات باستخدام التشفير التماثلي (السريع والآمن)
لتبسيط شرح طريقة العمل تفضلوا هذا المثال المبسط:

http://img831.imageshack.us/img831/21/sslsmall.png (http://img831.imageshack.us/i/sslsmall.png/)

Uploaded with ImageShack.us (http://imageshack.us)



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

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