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

اكتشفت مؤخراً أن أحد مبادئ علم التشفير الحديث يدعى مبدأ كيركوف (Kerckhoffs Principle). وكيركوف هذا هو أستاذ جامعي هولندي، ويعتبر من الشخصيات المهمة في علم التشفير في القرن التاسع عشر. وقد قام بنشر مقالتين بعنوان “التشفير العسكري” وصّف من خلالهما المبادئ الأساسية لبناء نظام تشفير. وأحد هذه المبادئ -ويدعى مبدأ كيركوف- ينص على أن أمان النظام يجب ألا يعتمد على بقاء خوارزمية التشفير سرية، بمعنى أن اكتشاف الخوارزمية المستخدمة يجب ألا يؤثر إطلاقاً على أمان النظام. والواقع أن التشفير في العصر الحديث قائم على مبدأ نشر خوارزمية التشفير!

ولهذا المبدأ عدة مبررات منطقية وعملية. أولها أن نشر الخوارزمية سيؤدي إلى محاولة اختراقها من قبل عدد كبير من الخبراء. وبالتالي إذا نجت من هذه المحاولات فإنها ستكون محلاً للثقة. كما أنه من الممكن اكتشاف الخوارزمية المستخدمة في التشفير باستخدام تقنيات الهندسة العكسية (Reverse Engineering). وهذا ما حصل فعلاً في خوارزمية التشفير المستخدمة في الأجهزة الخلوية (GSM). فقد قامت الشركة المصنعة بتجاهل مبدأ كيركوف وأبقت خوارزمية التشفير سرية. ولم يستغرق الأمر وقتاً طويلاً حتى تمت عملية اكتشاف الخوارزمية وكسرها! وبالتالي وبالرغم من تشفير البيانات المرسلة عبر الأجهزة الخلوية العادية إلا أنها لا تعتبر آمنة لهذا السبب.

هذا المبدأ يوضح سبب أمان الأنظمة مفتوحة المصدر، فهذه الأنظمة لا تعتمد لتحقيق الأمان على سرية الخوارزمية. وهي بهذا الشكل أكثر أماناً من الأنظمة مغلقة المصدر. هذه الفكرة ذكرتني بمقالة قرأتها تتحدث أن الهند قررت بناء نظام تشغيل خاص بها من أجل مقاومة عمليات الاختراق وذلك بعدم كشف الشيفرة المصدرية لهذا النظام. ولا أعتقد أن هذا السبب كافي لبناء نظام تشغيل. لأن أمان نظام التشغيل لا يجب أن يعتمد على إبقاء شيفرته المصدرية مغلقة. وقد وقعت بالصدفة على رسالة طريفة مرسلة من مبرمج مشهور يدعى Eric Raymound إلى شركة سيسكو Cisco يحذرها فيه من أن عملية سرقة الشيفرة المصدرية لنظام التشغيل الموجود على راوترات الشركة ستؤدي إلى مخاطر عديدة (أرسل المبرمج هذه الرسالة إلى الشركة عقب عملية سرقة ونشر الشيفرة المصدرية التي وقعت في 15 أيار 2004). وأن هذه المخاطر ماكانت لتقع لو أن الشركة كشفت الشيفرة المصدرية التزاماً بمبدأ كيركوف!

وفي الختام أترككم مع القصة التالية. أحد أصدقائي كان مهتماً بتجميع البرامج ووضعها على أقراص ليزرية. وقد لاحظ إنتشار العديد من الأقراص التي تحوي الكثير من البرامج بالإضافة لبرنامج (Autorun) يسمح بعرض محتويات القرص بطريقة جذابة. أراد صديقي بناء برنامج (Autorun) لعرض البرامج الموجودة على القرص الخاص به وذلك على شاكلة الأقراص الأخرى. وبعد القليل من البحث توصل إلى البرنامج الذي يقوم ببناء برامج عرض المحتويات (Autorun). يمكن لهذا البرنامج أن يفتح الملفات الموجودة على الأقراص الأخرى، وبالتالي يمكن لصديقي أن يتعلم من خلالها كيفية استخدام وبناء برامج عرض المحتوى. المشكلة أنه عند محاولة فتح تلك الملفات تظهر نافذة لإدخال كلمة سر. تباً! هذه الملفات محمية. قررنا أن نحاول اكتشاف طريقة التشفير. قمنا بتشغيل البرنامج وأنشأنا من خلاله ملفاً بسيطاً ووضعنا له كلمة سر مكونة من عبارة معينة. ثم حاولنا أن نبحث عن هذه العبارة ضمن الملف. طبعاً باءت العملية بالفشل. قمنا بعد ذلك بوضع كلمة سر مكونة من حرف واحد فقط هو a وأنشأنا ملفاً اخراً بكلمة سر aa وثالثاً بكلمة aaa ثم قارنا الملفات. والمفاجأة كانت أن الملف الأول حوى الكلمة كحرف b والثاني bc والثالث bcd! وبهذه الطريقة تمكنا من فتح باقي الملفات!

4 ردود على “مبدأ كيركوف!”

  1. بس هو من باب الملاحظة بالنسبة لخوارزميّة تشفير كلمة السر ممكن تكون عكوسة أو غير عكوسة بمعنى ممكن أو من غير الممكن من ناتج خوارزمية التشفير أني أرجع استنتج كلمة السر الأصليّة. بعتقد أنّو المسألة واضحة أن ليس من الضروري تكون خوارزميّة تشفير عكوسة و في حال استدعى الأمر مقارنة كلمة سر مدخلة منطبق الخوارزميّة على الكلمة و في حال عطت نفس الشفرة المولّدة و المحفوظة سابقة معناها كلمة السر صحيحة.
    مثال على خوارزميّة عكوسة: استبدل كل حرف بحرف آخر من خلال جدول ثابت و معرف مسبقا), و بعتقد الخوارزميّة اللي كسرتوها (الله يلبسكم العافيّة) أيضاً عكوسة
    مثال على خورازميّة غير عكوسة: توليد كود عبارة عن رقم هو ناتج ضرب قيمة الأسكي لأحرف كلمة السر ببعضها البعض بطبيعة الحال الخوارزميّات الغير عكوسة أأمن من حيث أنك حتى لو عرفت بالضبط الخوارزميّة عن طريق التجريب ما شرط تحصل شو كلمة السر بسهولة و خطين تحت بسهولة. المثال اللي ذكرته تبع التشفير عن طريق ضرب قيمة الأحرف غير عكوس بس كتير مسألة بسيطة أنك تقدر تكتشف الخوارزميّة عن طريق التجريب مثل ما عملتو و بس عرفت الخوارزميّة و في حال كان قيمة كلمة السر المخزنة صغيرة نسبياُ ممكن سرد جميع احتمالات القيم اللي بتولد نفس القيمة في حال جداءها مع بعض و تجريب هالأحتمالات.

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

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

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

    1. بدايةً أود أن أشكرك على هذا التعليق الجميل، فقد أغنى سيادتكم المدونة! 🙂
      الواقع أني كنت فقط أريد التحدث عن مبدأ كيركوف في هذه التدوينة.

      بالنسبة لقضية الخوارزميات العكوسة، هذا الموضوع يدخل ضمن التعقيد الحسابي، فإذا كانت الخوارزمية “عكوسة” كانت ضمن الصف P. (يمكن مراجعة تدوينة فقاعات الصابون والحوسبة لمعرفة معنى الصف P)
      ولايوجد برهان حتى الآن على وجود خوارزميات “غير عكوسة” إن صح التعبير، وإنما هو مجرد افتراض.

      وبالنسبة للخوارزمية التي اقترحتها أنت، فهي طبعاً غير آمنة، وذلك لأنه يوجد عدد كبير من كلمات السر التي تعطي نفس النتيجة. والواقع أن تعقيد خوارزمية إيجاد الكلمة هي من درجة كثير حدود( O (n (بالرغم من أن فضاء البحث ذو حجم أسي). حيث يمكن أن نجد الكلمة حرفاً حرفاً (نبحث حتى نجد أول رقم بين 2 و255 يقسم الشيفرة الناتجة ثم نجد الرقم الثاني وهكذا).

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

      أما هدفي من سرد قصة الختام، فهو للإشارة بأهمية استخدام خوارزميات تشفير مجربة بدلاً من استخدام خوارزميات بسيطة أو غير مجربة بشكل كافي!

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

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

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

    المثال العملي على هذا الكلام هية الأنيغما يلي تم استخدامها بالحرب العالمية.
    http://en.wikipedia.org/wiki/Enigma_machine#Description
    على حسب علمي: الآلية يلي بتشتغل فيها هي الماكينة كانت السر.

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

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

      ولا تنسى أن جهاز إنغما بدأ أولاً كجهاز تجاري، وبعد التأكد من أمانه تم استخدامه عسكرياً (مع بعض التطويرات).

أضف تعليق

الأكثر رواجًا