التشفير بالمفتاح المتناظر

تحدثت من قبل عن التشفير باتجاه واحد، وسأكمل الآن بالحديث عن التشفير بالمفتاح المتناظر.

التشفير بالمفتاح المتناظر (Symmetric Key Encryption) هو أسلوب من أساليب التشفير يستخدم فيه مفتاح سري لتشفير رسالة ما وفك تشفيرها، ويسمى بالتشفير بالمفتاح المتناظر لأن المفتاح الذي يستخدم لتشفير الرسالة هو نفسه المستخدم لفك تشفيرها، في مقابل التشفير الغير متناظر الذي سأتحدث عنه في المرة القادمة إن شاء الله.

وهنالك عدة خوارزميات للقيام بهذا النوع من التشفير، أشهرها على الاطلاق هي خوارزمية DES (Data Encryption Standard) التي لا تزال تستخدم على نطاق واسع لتحقيق الاتصال الآمن على الانترنت ضمن بروتوكول SSL ومجالات أخرى شبيهة، وهي أيضا الخوارزمية التي أعلنت كخوارزمية معتمدة لتشفير البيانات في الدوائر الحكومية في الولايات المتحدة الأمريكية منذ عام 1976.

لكن DES بدأت تظهر ضعفا خلال السنوات الأخيرة أمام أساليب كسر التشفير، وبدأت تستبدل في عدة أماكن بنسخ معدلة عنها مثل خوارزمية تسمى Triple DES، إلا أن DES استبدلت كليا كخوارزمية معتمدة في الحكومة الأمريكية في نهاية عام 2001 بالخوارزمية الأفضل AES (Advanced Encryption Standard).

وسنأخذ الآن أمثلة عملية على فوائد استخدام التشفير بالمفتاح المتناظر.

نقل البيانات عبر اتصال معرّض للتنصت

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

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

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

المشكلة الأولى هي أنه يجب أن يكون المفتاح موجودا لدى كل من الطرفين الذين يتبادلان البيانات، وهذا الأمر صعب تحقيقه، فكيف تستطيع أن تنقل المفتاح من الجهاز الأول إلى الجهاز الثاني بصورة آمنة؟ إذا كان الاتصال قابلا للتجسس، فإن هذا الأمر غير ممكن عمليا.

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

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

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

والحقيقة هي أن التشفير بالمفتاح المتناظر لا يملك حلا لهذه المشكلة، فالحل يحتاج لاستخدام تقنية التشفير بالمفتاح الغير متناظر، التي سأتحدث عنها في المرة القادمة إن شاء الله.

تخزين البيانات المشفرة

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

وآمن مكان في الواقع لتخزين مفتاح التشفير هو في رأسك! ويكون ذلك بأن تستخدم كلمة سرية تحفظها عن ظهر قلب لتشفير البيانات، لكن هذه الكلمة السرية عادة ما تكون أطول من الكلمات السرية التي تستخدمها للدخول إلى صندوق بريدك الالكتروني وما شابه ذلك، لأن خوارزميات التشفير تتطلب مفاتيح طويلة نسبيا لتتمكن من تخزين بياناتك بصورة آمنة، لهذا السبب فإنها تسمى أحيانا بجملة المرور (pass phase) بدلا من كلمة المرور (password).

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

ارسال كلمات المرور عبر الشبكة: التحقق بالتحدي والرد

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

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

الحل باستخدام تشفير المفتاح المتناظر يكون بأن يقوم المزود بارسال رسالة تحتوي على مفتاح جلسة للوصول إلى الخدمات (session key) إلى الزبون ويكون هذا المفتاح مشفرا بتشفير المفتاح المتناظر باستخدام كلمة المرور كمفتاح للتشفير، فإذا تمكن المستخدم من تقديم كلمة المرور الصحيحة للزبون فإنه الزبون سيتمكن من فك تشفير مفتاح الجلسة (session key) والوصول إلى الخدمات في تلك الجلسة (أي من نفس الجهاز وخلال فترة زمنية محددة)، أما إذا لم يعرف الزبون اسم المستخدم الصحيح فإنه لن يتمكن من فك هذه الشفرة والحصول على مفتاح الجلسة المطلوب.

والطريقة السابقة في الواقع نسخة مبسطة من بروتوكول كيربيروس.

طريقة أخرى للقيام بذلك أيضا تكون بأن يقوم المزود بارسال نص عشوائي غير مشفر ويطلب من المستخدم أن يشفره باستخدام كلمة المرور وإعادة ارسالة بعد تشفيره ليتأكد من أنه يملك كلمة المرور الصحيحة.

25 تعليق

  1. 5/08/2005 @ 12:45 am

    ربيع طيلمون قال:

    هذه احدى الطرق للتشفير انظرها

  2. 1/12/2005 @ 3:14 pm

    ربيع طيلمون قال:

    من قال لك قال عنك

  3. 3/12/2005 @ 8:23 am

    أحمد الهاشمي قال:

    الأخ العزيز ربيع ..

    أشكرك على الإضافة إلى الموضوع، لكن يبدو بأن هنالك خطأ ما، لأنني لا أجد وصلة أو موضوعا ما عن التشفير.

  4. 15/12/2005 @ 5:44 pm

    gin قال:

    نسال عن خوارزمية “twofish او خوارزمية السمكتين

  5. 15/12/2005 @ 7:18 pm

    أحمد الهاشمي قال:

    الأخ العزيز gin ..

    بالنسبة لخوارزمية twofish فهي من خوارزميات التشفير بالمفتاح المتناظر، وهي من الخوارزميات الجيدة والتي أثبتت جدارتها ومن التي تأهلت لتصبح خوارزمية AES بدلا من DES، لكن الحكومة الأمريكية اختارت خوارزمية أخرى في النهاية.

    على كل حال، يمكنك الحصول على المزيد من المعلومات عن الخوارزمية من موقع خبير التشفير الشهير بروس شنير على هذا العنوان:
    http://www.schneier.com/

  6. 12/01/2006 @ 10:34 pm

    ماجد بن سواد قال:

    السلام عليكم و رحمة الله و بركاته ..

    بارك الله فيك أخي أحمد و معلومات مفيدة استفدتها منك ..

  7. 13/01/2006 @ 2:02 am

    أحمد الهاشمي قال:

    الأخ العزيز ماجد ..

    وعليكم السلام ورحمة الله وبركاته ..

    سرني أن الموضوع أعجبك، وإن شاء الله أظل عند حسن ظنك.

  8. 20/07/2006 @ 6:50 pm

    ام منى قال:

    الاخ احمد
    شكرا لموضوعك المفيد جدا…وفعلا اوضح لي امورا كثيرا استخدمها الان في دراسة الماجستير
    لكن لدي تساؤل
    ماهو طول المفتاح الموصى به في هذا النوع من التشفير المتناظر؟
    وهل صحيح ان RSA هو الخوارزمية الموصى بها في التشفير غير المتناظر؟ وايضا ما هو طول المفتاح؟

    بارك الله فيك وجعله الله في ميزان حسناتك

  9. 21/07/2006 @ 3:45 am

    أحمد الهاشمي قال:

    الأخت الفاضلة أم منى ..

    خالص الشكر لك، أنا في الخدمة.

    بالنسبة للتشفير بنظام AES فطول المفتاح يمكن أن يكون 128 أو 196 أو 256 بت، وبالطبع كلما زاد كلما كان ذلك أفضل.

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

    على فكرة، لدي أيضا مقالة حول التشفير غير المتناظر تجدينها هنا:
    http://www.ahmadh.com/weblog/2005/06/27/asymmetric-key-encryption/

  10. 6/08/2006 @ 8:54 pm

    um mona قال:

    Dear Ahmed,
    Thank you so much for reply on my previous question
    I have another one..if you can answer it I will be grateful for you
    which contemporary application of cryptography known to operate securely and effectively?

    thanks in advance

  11. 30/08/2006 @ 4:24 pm

    خالد السطايفي قال:

    السلام عليكم
    امابعد.
    اريد منك تقديم طريقة فك شيفرة القنوات الفظائية بالتفصيل
    وشكرا

  12. 23/10/2006 @ 12:30 pm

    M.S قال:

    بسم الله الرحمن الرحيم

    السلام عليكم ورحمة الله وبركاته

    بارك الله فيك :) المعلومات مفيدة للغاية

  13. 23/10/2006 @ 3:37 pm

    أحمد الهاشمي قال:

    وعليكم السلام ورحمة الله وبركاته ..

    خالص الشكر لك أخي العزيز.

  14. 12/11/2006 @ 6:28 pm

    ali قال:

    هل يمكن فك تشفير لقناة مشفرة

  15. 12/11/2006 @ 6:33 pm

    أحمد الهاشمي قال:

    الأخ العزيز ali ..

    لا أعرف شيئا عن هذا الموضوع.

  16. 17/11/2006 @ 1:19 pm

    راما قال:

    السلام عليكم ..
    مشكور على الشرح
    لكن ممكن أعرف معلومات أكتر عن خوارزمية Rijndael
    و أين يمكنني أن أجد code عن هذه الخوارزمية ل 128 بت
    و لكم جزيل الشكر و الامتنان

  17. 23/11/2006 @ 10:33 am

    أحمد الهاشمي قال:

    الأخت راما ..

    وعليكم السلام ورحمة الله وبركاته ..

    بالنسبة لهذه الخوازمية، فقد وجدت صفحتين تحتويان على الكثير من المعلومات حول الخوارزمية بالبحث عنها في Google:
    http://csrc.nist.gov/CryptoToolkit/aes/rijndael/
    http://en.wikipedia.org/wiki/Advanced\_Encryption\_Standard

    في الموقع الأول بالذات، هنالك وصلة لملف PDF يشرح تفاصيل الخوارزمية.

  18. 22/12/2006 @ 1:11 am

    عمر قال:

    السلام عليكم….
    شكرا جزيلا اخي احمد، وددت لو تخبرنا شيئا عن طريقة عمل DES وإن كان باختصار ، شاكرا لك، وجزاك الله خيرا

  19. 23/12/2006 @ 11:11 pm

    samo قال:

    لمن يبحث عن عمل الخوارزمية (دعائكم)
    www.The DES Algorithm Illustrated.com
    or
    www.The DES Algorithm Illustrated.htm

  20. 24/12/2006 @ 7:19 pm

    أحمد الهاشمي قال:

    الأخ العزيز عمر ..

    وعليكم السلام ورحمة الله وبركاته ..

    طبعا هنالك الكثير من المعلومات حول هذه الخوارزمية في الانترنت، وهي تدخل أكثر في الجانب الأكاديمي من التشفير وهو ليس مجالي ولا أعرف فيه شيئا.

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

  21. 4/03/2007 @ 1:13 pm

    huda قال:

    بالنسبه لخوارزميه rijndael

    انصحك بالبحث عنها فى msn وايضا اختيار كلمة المفتاح المناسبه

    اذا اردتى معرفه اى شئ عن الخوارزميه راسلينى على الايميل

    سبق وان اشتغلت مشروع تخرجى عليها

  22. 26/04/2007 @ 2:27 pm

    احمد الباجوري قال:

    شكرا لك لهذا الشرح ولكن انا اريد منك ان تعرض لنا algorithm مع شرحه وطريقة برمجته باي من اللغات الموجوده الان وشكرا

  23. 8/06/2007 @ 7:15 pm

    Ahmed N. Musa قال:

    اخت منى السلام عليكم, الطول الموصى به و الستاندارد العالمي هو 128 بيت حيث يصعب اختراقه بواسطة هجوم البروت اتاك وهو تجريب جميع الاحتمالات و انا سامع انهم سوف يعتمدون ان يكون طول المفتاح 256 بيت و هو افضل و يستغرق ملايييييييييين السنين لفكه لاكن انا ما عارف كيف راح يحلون مشكلة البطء الكبير الي راح يظهر مع المفتاح بطول 256؟؟؟؟؟ المهم حبيت اشارك و انشالله نكون نفعنا احد و اتفضلوا واسألوا

  24. 26/08/2007 @ 2:14 pm

    3bir قال:

    اتمني شرح كيفيه عمل خوارزمية الaesمع التوضيح بمثال
    وشكرا

  25. 17/12/2007 @ 11:28 am

    احمد قال:

    هل من هناك طريقة لتقليل جودة الصورة عبر الانترنيت لتسريع التصفح من خلال ادوات الكمبيوتر وخيارات اخرى

بث RSS لتعليقات هذا الموضوع

ترك تعليق