أحمد الهاشمي طبيب · مبرمج · معلم

27 Jun 2005

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

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

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

ويسمى هذا النوع من التشفير أيضا بالتشفير بالمفتاح العلني (public-key encryption)، لأنك تستطيع أن تنشر أحد المفتاحين وهو يسمى المفتاح العلني (public-key)، وتحتفظ بالآخر سريا، ويسمى المفتاح الخاص (private-key).

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

وأشهر خوارزميات هذا النوع من التشفير هي خوارزمية RSA (Rivest, Shamir and Adleman) نسبة إلى العلماء الثلاثة الذين وضعوا هذه الخوارزمية.

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

تخزين البيانات على مزود معرّض للاختراق

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

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

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

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

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

تبادل البيانات عبر خط معرض للتنصت

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

التشفير بالمفتاح العمومي هو أفضل حل لهذه المشكلة.

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

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

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

لكن لا تزال هنالك مشكلتان في ذلك.

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

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

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

أما البيانات نفسها التي سيتم تبادلها فسيتم تشفيرها باستخدام التشفير المتناظر، أي باستخدام خوارزميات مثل DES وAES.

المشكلة الثانية في نظام التشفير هذا هي أنه لا يزال قابلا للاختراق بسهولة باستخدام هجوم يدعى هجوم الرجل الذي في الوسط (Man in the middle attack).

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

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

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

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

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

توثيق صحة البيانات ومصدرها (التوقيع الالكتروني والشهادات الالكترونية)

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

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

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

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

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

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

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

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

في النهاية، من أين سنحصل على المفتاح العلني لهذه الجهة authority.com؟ ومن الذي سيضمن لنا صحة مفتاحها العلني قبل أن تضمن هي لنا صحة المفتاح العلني للموقع الذي نزوره؟ المفتاح العلني لهذه الجهة سيكون في الواقع يكون مخزنا في المتصفح منذ أن حصلنا عليه وقمنا بتركيبه على الجهاز.

والجهات التي تقوم بذلك وتقدم هذه الخدمات عديدة، أشهرها هي Verisign/Thawte وهما الشركتان الأشهر وأصبحتا شركة واحدة قبل بضعة أعوام، وهنالك أيضا Geotrust وهي أيضا شركة معروفة، وعدة شركات أخرى.

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

خاتمة

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

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

→ عودة لقائمة المقالات