26 Jun 2005
تحدثت من قبل عن التشفير باتجاه واحد، وسأكمل الآن بالحديث عن التشفير بالمفتاح المتناظر.
التشفير بالمفتاح المتناظر (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) والوصول إلى الخدمات في تلك الجلسة (أي من نفس الجهاز وخلال فترة زمنية محددة)، أما إذا لم يعرف الزبون اسم المستخدم الصحيح فإنه لن يتمكن من فك هذه الشفرة والحصول على مفتاح الجلسة المطلوب.
والطريقة السابقة في الواقع نسخة مبسطة من بروتوكول كيربيروس.
طريقة أخرى للقيام بذلك أيضا تكون بأن يقوم المزود بارسال نص عشوائي غير مشفر ويطلب من المستخدم أن يشفره باستخدام كلمة المرور وإعادة ارسالة بعد تشفيره ليتأكد من أنه يملك كلمة المرور الصحيحة.